Changelog

New features, improvements, and fixes — everything we ship, as we ship it.

Subscribe via RSS
Clear Pick a year to narrow by month; a date range overrides both pickers.
New

EnConvert integration for Zapier #

The EnConvert Zapier integration is built and running. It is a private integration for now, so you join it through an invite link while the public App Directory listing goes through review. Twelve operations are available: eight actions covering convert to PDF, convert to markdown, convert an image, compress an image, perceive a URL, distill structured data, start an ingest job and create a watcher, three searches covering web search, URL discovery and ingest job lookup, and one trigger that fires when a watched page changes. The connection takes your private sk_ key and its Test button calls /v1/whoami. A private integration draws on one shared throughput pool, so treat the invite as early access rather than production capacity.

New

EnConvert skill for OpenClaw #

The EnConvert skill is on ClawHub, so an OpenClaw agent installs it with clawhub install enconvert. The skill hands the agent the v2 perception endpoints and file conversion behind a single ENCONVERT_API_KEY environment variable, with a routing guide naming which call to reach for rather than leaving the agent to guess from tool names. It is bring your own key: the skill ships no credentials and calls api.enconvert.com directly.

New

EnConvert plugin for Dify #

The EnConvert plugin is in the Dify Marketplace, listed under Tools as enconvert/enconvert. It adds six tools to any Dify agent or workflow: perceive a URL into markdown, HTML, a screenshot or a PDF, discover a site's URLs, search the web, distill structured data against a schema, convert a file to PDF, and convert a file to markdown. It is bring your own key. The plugin ships no credentials and calls nothing but api.enconvert.com, so each user pastes their own private sk_ key when adding the tool and EnConvert bills that key directly. Dify does not meter or charge for the plugin itself.

New

SDKs for eight languages on public package registries #

The SDKs are on public package registries, so you install one with the package manager you already use instead of vendoring a file or pinning a git URL: npm install @enconvert/node-sdk, pip install enconvert, go get github.com/enconvert/go-sdk, cargo add enconvert, gem install enconvert, composer require enconvert/enconvert-php, dotnet add package Enconvert, and the Swift package at github.com/enconvert/swift-sdk. All eight cover the same surface, the v2 perception endpoints and the v1 conversions, with the same job fallback and the same error mapping, each one written to read as ordinary code in its own language rather than one generated client reshaped eight times. Java and Kotlin are built and tested but not yet on Maven Central.

Improved

Blocked pages now return a scored 200, not a 502 #

When a site serves an anti-bot challenge with no page content behind it, POST /v2/perceive used to fail with 502. It now completes with 200, is_blocked: true, the render_quality score, the named deductions (for example anti_bot_challenge, empty_body), the origin status_code, and outputs: {} because there is no page to deliver. The same shape comes back from GET /v2/perceive/{operation_id} and from batch items. allow_degraded is deprecated: it is still accepted but ignored, and sending it adds a note to warnings. With direct_download: true a blocked read returns this JSON verdict instead of an empty file.

Improved Fixed

Cleaner ingest chunks #

Ingest now builds its markdown with the same pipeline perceive uses and renders pages in a real browser, so JavaScript-rendered docs sites arrive complete and page titles, standfirsts and link-only table cells stop disappearing while cookie banners, "Was this page helpful?", icon-font glyphs and empty ## headings stay out of the chunks.

  • Nothing fails quietly any more. A text/plain or JSON URL such as llms.txt keeps its line structure instead of collapsing onto one line and chunking to nothing, a document made entirely of headings is chunked rather than shipped as an empty file, a page with no extractable text is reported as skipped instead of completing silently, and two URLs that redirect to the same page are ingested and billed once.
  • Uploaded files improved alongside. PDFs no longer turn a rotated margin stamp into a heading, extract a figure as a table of reversed one-letter cells, or promote prose to headings in documents that mix type sizes, and landscape pages are extracted rather than dropped; Word heading styles no longer leak ** into chunk metadata, embedded images no longer inline megabytes of base64, PowerPoint soft line breaks no longer leave control characters, and a saved page uploaded as HTML gets the same treatment as crawling it.
  • Two new options, matching perceive's: only_main_content and truncate_data_arrays.
Improved Fixed

Cleaner perceive markdown #

Perceive's markdown now reflects what a reader sees rather than how the page was built, and it does so on every page instead of only the ones a particular extractor happened to win. Interface furniture is gone under only_main_content: buttons and tab strips, "Copy page" and "On this page" actions, keyboard shortcut hints, "Was this page helpful?" rating widgets, screen-reader-only labels such as the "Section titled ..." link many docs themes attach to every heading, skip links, breadcrumbs, and blocks a site marks data-nosnippet or data-pagefind-ignore. Structure holds up too: code fences keep their language whichever convention a site uses, so ```python arrives instead of a bare fence; a card link becomes a linked title followed by its description instead of one run-together [DatabaseXYZ provides...] link, with the destination URL preserved; headings stay on one line rather than emitting a bare ## with the text stranded below; and adjacent elements spaced by CSS no longer concatenate into YesNo or EvaluationDeploymentProduction. Zero-width spaces, icon-font glyphs and empty elements that rendered as stray __ are dropped, and duplicate blocks from responsive desktop/mobile twins are collapsed. Inactive tab panels are now kept, so a page's Python and JavaScript samples both reach the markdown instead of only whichever tab was selected at render time. Two new options: truncate_data_arrays collapses long numeric runs such as raw embedding vectors printed in notebook output cells to a leading sample plus a count, following only_main_content unless you set it explicitly, and allow_degraded controls whether an anti-bot challenge with no page content behind it is returned as-is or fails with 502 instead of passing the interstitial off as the page.

Measured across fourteen live documentation and marketing pages, output shrank 67% overall, with one notebook page dropping 94% once its embedding vectors were truncated; the two pages that grew did so because content had previously been lost, regaining a dropped H1, twelve section headings and a table.

New Improved Fixed

Perceive returns main content by default #

The markdown_fit output is gone. Perceive's markdown now strips navigation, headers, footers, sidebars and cookie banners on its own, controlled by only_main_content, which defaults to true; send false for the untouched page, and a strip that removes too much falls back to the full page with a warning. direct_download is new on single-URL perceive and returns the artifact bytes in the same response instead of a signed URL round trip, as long as exactly one artifact output was requested. Results now carry status_code, deductions and options_echo, so a 404, a soft 404 or a login wall shows up as the reason a render scored low, and those pages no longer reach tier 3 extraction. Unknown request keys return 422 naming the field instead of being quietly ignored. Shipped in CLI 1.1.0, MCP server 0.5.0, the n8n node 1.1.0 and nine SDKs.

New Improved Fixed

MCP server 0.3.1 ships a routing guide #

@enconvert/mcp 0.3.1 includes SKILL.md, a routing table telling an agent which of the 24 tools to reach for. It exists because agents were calling convert_document on web pages and looping perceive_url one URL at a time instead of using perceive_batch. It also names the failures that are hard to diagnose from an error message alone: file paths must be absolute, a pk_ key authenticates but 403s on all 18 web tools, quota errors are not worth retrying, and watchers cannot run more often than every 60 minutes. The file ships inside the npm tarball, so it arrives with the install. Listing in the MCP Registry works again as well, after the server description was cut to the 100 character limit that had rejected 0.3.0 with a 422.

New

EnConvert node for n8n #

@enconvert/n8n-nodes-enconvert 1.0.0 is on npm as an n8n community node. One node covers 16 operations across files, images, web pages, whole websites, search and jobs, with an EnConvert API credential whose Test button calls /v1/whoami. An unsupported conversion fails in the editor with a list of what that file can be converted to, instead of a server error. Scrape results are inlined, so a screenshot arrives as a real binary field and markdown as {{ $json.markdown }} with no second HTTP Request node, and anything too big for n8n Cloud's 16 MB item limit can come back as a link that expires after 15 minutes. PDF page options an office input cannot honor are dropped with a warning on the item rather than erroring. Crawl output can be emitted one chunk per item straight into a vector store. The node attaches to an AI Agent node as a tool, and it ships zero runtime dependencies, which is what n8n Cloud requires.