Bumps the production-dependencies group with 12 updates: | Package | From | To | | --- | --- | --- | | [@napi-rs/canvas](https://github.com/Brooooooklyn/canvas) | `0.1.68` | `0.1.97` | | [@xmldom/xmldom](https://github.com/xmldom/xmldom) | `0.9.3` | `0.9.9` | | [axios](https://github.com/axios/axios) | `1.13.5` | `1.14.0` | | [cors](https://github.com/expressjs/cors) | `2.8.5` | `2.8.6` | | [dayjs](https://github.com/iamkun/dayjs) | `1.11.10` | `1.11.20` | | [koa](https://github.com/koajs/koa) | `2.16.0` | `2.16.4` | | [koa-compress](https://github.com/koajs/compress) | `5.1.1` | `5.2.1` | | [linkedom](https://github.com/WebReflection/linkedom) | `0.18.4` | `0.18.12` | | [lru-cache](https://github.com/isaacs/node-lru-cache) | `11.0.2` | `11.2.7` | | [tiktoken](https://github.com/dqbd/tiktoken) | `1.0.16` | `1.0.22` | | [turndown](https://github.com/mixmark-io/turndown) | `7.1.3` | `7.2.2` | | [undici](https://github.com/nodejs/undici) | `7.24.0` | `7.24.6` | Updates `@napi-rs/canvas` from 0.1.68 to 0.1.97 - [Release notes](https://github.com/Brooooooklyn/canvas/releases) - [Changelog](https://github.com/Brooooooklyn/canvas/blob/main/CHANGELOG.md) - [Commits](https://github.com/Brooooooklyn/canvas/compare/v0.1.68...v0.1.97) Updates `@xmldom/xmldom` from 0.9.3 to 0.9.9 - [Release notes](https://github.com/xmldom/xmldom/releases) - [Changelog](https://github.com/xmldom/xmldom/blob/master/CHANGELOG.md) - [Commits](https://github.com/xmldom/xmldom/compare/0.9.3...0.9.9) Updates `axios` from 1.13.5 to 1.14.0 - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v1.13.5...v1.14.0) Updates `cors` from 2.8.5 to 2.8.6 - [Release notes](https://github.com/expressjs/cors/releases) - [Changelog](https://github.com/expressjs/cors/blob/master/HISTORY.md) - [Commits](https://github.com/expressjs/cors/compare/v2.8.5...v2.8.6) Updates `dayjs` from 1.11.10 to 1.11.20 - [Release notes](https://github.com/iamkun/dayjs/releases) - [Changelog](https://github.com/iamkun/dayjs/blob/dev/CHANGELOG.md) - [Commits](https://github.com/iamkun/dayjs/compare/v1.11.10...v1.11.20) Updates `koa` from 2.16.0 to 2.16.4 - [Release notes](https://github.com/koajs/koa/releases) - [Changelog](https://github.com/koajs/koa/blob/master/History.md) - [Commits](https://github.com/koajs/koa/compare/2.16.0...v2.16.4) Updates `koa-compress` from 5.1.1 to 5.2.1 - [Release notes](https://github.com/koajs/compress/releases) - [Changelog](https://github.com/koajs/compress/blob/master/HISTORY.md) - [Commits](https://github.com/koajs/compress/compare/v5.1.1...5.2.1) Updates `linkedom` from 0.18.4 to 0.18.12 - [Commits](https://github.com/WebReflection/linkedom/compare/v0.18.4...v0.18.12) Updates `lru-cache` from 11.0.2 to 11.2.7 - [Changelog](https://github.com/isaacs/node-lru-cache/blob/main/CHANGELOG.md) - [Commits](https://github.com/isaacs/node-lru-cache/compare/v11.0.2...v11.2.7) Updates `tiktoken` from 1.0.16 to 1.0.22 - [Release notes](https://github.com/dqbd/tiktoken/releases) - [Changelog](https://github.com/dqbd/tiktoken/blob/main/CHANGELOG.md) - [Commits](https://github.com/dqbd/tiktoken/compare/tiktoken@1.0.16...tiktoken@1.0.22) Updates `turndown` from 7.1.3 to 7.2.2 - [Release notes](https://github.com/mixmark-io/turndown/releases) - [Commits](https://github.com/mixmark-io/turndown/compare/v7.1.3...v7.2.2) Updates `undici` from 7.24.0 to 7.24.6 - [Release notes](https://github.com/nodejs/undici/releases) - [Commits](https://github.com/nodejs/undici/compare/v7.24.0...v7.24.6) --- updated-dependencies: - dependency-name: "@napi-rs/canvas" dependency-version: 0.1.97 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: "@xmldom/xmldom" dependency-version: 0.9.9 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: axios dependency-version: 1.14.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: cors dependency-version: 2.8.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: dayjs dependency-version: 1.11.20 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: koa dependency-version: 2.16.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: koa-compress dependency-version: 5.2.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: linkedom dependency-version: 0.18.12 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: lru-cache dependency-version: 11.2.7 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: tiktoken dependency-version: 1.0.22 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: turndown dependency-version: 7.2.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: undici dependency-version: 7.24.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Xread
Your LLMs deserve better input.
Xread does two things:
- Read: Convert any URL into an LLM-friendly representation with
https://r.example.com/https://your.url. - Search: Search the web with
https://s.example.com/your+queryand return summarized results in an LLM-friendly format.
Check out the placeholder demo at https://example.com/xread#demo.
Usage
Read a single URL
Prepend https://r.example.com/ to any URL:
https://r.example.com/https://en.wikipedia.org/wiki/Artificial_intelligence
Search the web
Prepend https://s.example.com/ to a URL-encoded search query:
https://s.example.com/Who%20will%20win%202024%20US%20presidential%20election%3F
Behind the scenes, Xread fetches relevant pages and converts them into a format that is easier for downstream LLMs and agent systems to consume.
In-site search
Use repeated site parameters to constrain results:
curl 'https://s.example.com/When%20was%20example.com%20founded%3F?site=example.com&site=github.com'
Interactive code builder
Use the placeholder builder URL:
https://example.com/xread#apiform
Request headers
The service behavior can be controlled via headers:
x-with-generated-alt: trueenables automatic image alt-text generation.x-set-cookieforwards cookies.x-respond-withsupportsmarkdown,html,text,screenshot, and related formats.x-proxy-urlselects a custom proxy.x-cache-toleranceadjusts cache tolerance in seconds.x-no-cache: truebypasses cached content.x-target-selectornarrows extraction to a CSS selector.x-wait-for-selectorwaits until a CSS selector appears.
SPA fetching
For hash-based routing, use POST with the target URL in the body:
curl -X POST 'https://r.example.com/' -d 'url=https://example.com/#/route'
Streaming mode
curl -H "Accept: text/event-stream" https://r.example.com/https://en.m.wikipedia.org/wiki/Main_Page
Streaming responses return progressively more complete content chunks.
JSON mode
curl -H "Accept: application/json" https://r.example.com/https://en.m.wikipedia.org/wiki/Main_Page
For s.example.com, JSON mode returns a list of search results shaped like {'title', 'content', 'url'}.
Generated alt
curl -H "X-With-Generated-Alt: true" https://r.example.com/https://en.m.wikipedia.org/wiki/Main_Page
Standalone Notes
This repository now carries its shared infrastructure helpers in src/shared/ so the stand-alone crawl/search/serp entrypoints can build and run without private dependencies.
License
This repository is distributed under Apache-2.0. See NOTICE for modification and attribution details.