dependabot[bot] 1542a67ba3 chore(deps): bump the production-dependencies group with 12 updates (#22)
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>
2026-03-30 01:15:59 +00:00
2026-03-29 21:39:05 +08:00
2026-03-29 21:39:05 +08:00
2026-03-29 21:39:05 +08:00

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+query and 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.

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: true enables automatic image alt-text generation.
  • x-set-cookie forwards cookies.
  • x-respond-with supports markdown, html, text, screenshot, and related formats.
  • x-proxy-url selects a custom proxy.
  • x-cache-tolerance adjusts cache tolerance in seconds.
  • x-no-cache: true bypasses cached content.
  • x-target-selector narrows extraction to a CSS selector.
  • x-wait-for-selector waits 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.

S
Description
Standalone fork of the Jina AI Reader, adapted for self-hosted use without the original internal dependency
Readme
743 KiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 91.4%
JavaScript 8.4%
Dockerfile 0.2%