reader
只需给任意 URL 加上 r.jina.ai/ 前缀,即可将网页转换为 LLM 可读的干净 Mark
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
只需给任意 URL 加上 r.jina.ai/ 前缀,即可将网页转换为 LLM 可读的干净 Mark
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
r.jina.ai/ 前缀,立刻得到干净、结构化的 Markdown 内容:bash# 将任意网页转换为 LLM 可读的 Markdowncurl https://r.jina.ai/https://github.com/trending这就是 Jina Reader 的核心价值——把网页内容提取这件脏活累活,彻底封装成一个简单至极的 API 调用。---## 背景:Jina AI 的开源基础设施愿景Jina AI 是一家专注于 AI 搜索基础设施的科技公司,旗下产品涵盖 Embedding 模型、Re-Ranker、Search API 等多个品类。在 2024 年 4 月推出 Reader API 之前,Jina 的产品线主要面向企业级付费用户。而 Reader API 的出现,让普通开发者也能零成本享受高质量的网页内容提取服务。Jina Reader 的开源版本托管在 GitHub,采用 Apache-2.0 许可证,完全免费且代码透明。Jina 官方在其云服务 r.jina.ai 上托管了一个生产级实例:无需注册即可使用(限速 20 次/分钟),注册获取免费 API Key 后可提升至 500 次/分钟,并附带 1000 万免费 token。项目由 Jina AI 团队维护,在 GitHub 上获得了超过 11,000 颗 Stars,证明了开发者社区对这一工具的高度认可。它被广泛用于 RAG 系统构建、AI Agent 网页搜索、代码文档自动抓取、竞品监控等多种场景。---## 技术原理:多层次内容提取流水线### 核心处理流程Jina Reader 的技术架构建立在一套精心设计的处理流水线之上。根据 architecture.md 文档,项目支持以下内容格式的处理:| 输入格式 | 处理方式 | 输出格式 ||----------|----------|----------|| HTML 网页 | Puppeteer(Chrome 无头浏览器)渲染 + Readability.js 提取主体内容 + Turndown 转为 Markdown | Markdown / JSON || PDF 文件 | PDF.js 原生解析 或 LibreOffice 转换 | Markdown / JSON || Microsoft Office 文档 | LibreOffice 转换引擎 | Markdown || 图片 | VLM 模型生成描述 Alt 文本 | 含描述的 Markdown || SPA(单页应用)| Chrome 完整 JS 渲染,等待动态内容加载 | Markdown |这套流水线的设计理念是尽可能让机器代替人工。传统的网页抓取需要针对每个网站单独调试选择器规则,而 Jina Reader 通过 Readability 算法自动识别页面主体内容,通过 Turndown 将 HTML 结构转换为语义完整的 Markdown,通过 ReaderLM-v2 小语言模型进一步提升复杂页面的转换质量。### 浏览器引擎与渲染策略项目使用 Puppeteer 驱动无头 Chrome(Chromium)来执行 JS 渲染。对于现代 SPA(单页应用),传统的 curl 抓取只能拿到空壳 HTML,而 Puppeteer 可以等待 JS 执行完毕、动态 DOM 构建完成后再提取内容。用户可以通过请求头精细控制渲染行为:- x-engine: browser — 强制使用 Chrome 渲染(适合 SPA)- x-engine: curl — 轻量级无 JS 模式(适合静态页面,速度更快)- x-engine: auto — 默认模式,智能自动选择- x-wait-for-selector — 等待特定 DOM 元素出现后再提取- x-respond-timing — 控制页面加载判定时机(network-idle、mutation-idle、vlm 等)### ReaderLM-v2:端到端的小语言模型优化2024 年底,Jina AI 发布了 ReaderLM 系列小语言模型(0.5B 和 1.5B 参数),专门用于将原始 HTML 转换为干净的 Markdown。项目在 2025 年初将 ReaderLM-v2 整合进 Reader 流水线,显著提升了复杂结构页面(新闻网站、文档站、论坛等)的提取质量。ReaderLM 消耗更多 token,但输出质量更高,适合对准确性要求苛刻的场景。---## 核心功能:超越基础抓取的实用工具集### Read API(r.jina.ai)将任意 URL 转换为 LLM 可读内容:bash# 基础用法(返回 Markdown)curl https://r.jina.ai/https://en.wikipedia.org/wiki/Artificial_intelligence# 指定输出格式curl -H 'x-respond-with: markdown+frontmatter' \ https://r.jina.ai/https://news.ycombinator.com# 仅提取特定内容(CSS 选择器)curl -H 'x-target-selector: .article-content' \ https://r.jina.ai/https://example.com/article# VLM 自动生成图片描述curl -H 'x-with-generated-alt: true' \ https://r.jina.ai/https://example.com/with-images### Search API(s.jina.ai)执行网络搜索并返回每个结果的完整内容(而非仅标题摘要):bashcurl https://s.jina.ai/Who%20will%20win%202024%20US%20presidential%20election# 返回前 5 条搜索结果,每条附带完整页面内容这对于构建 AI 搜索助手极为有用——传统方案需要先搜索获取 URL 列表,再逐个抓取,流程繁琐且延迟高。s.jina.ai 将这一流程压缩为一次 API 调用。### MCP Server(mcp.jina.ai)Jina Reader 还提供了 Model Context Protocol(MCP)服务器接入方式,可以直接集成到 Cursor、Claude Desktop 等 AI 编程工具中,让 AI 助手能够实时抓取网页内容来回答用户问题:bash# 在 Claude Desktop 配置中接入 MCP# 即可让 AI 直接"上网搜索并读取网页"### 高级内容控制- Token Budget:x-max-tokens 控制输出 token 上限,x-token-budget 拒绝超限请求- 缓存控制:x-no-cache 绕过缓存,x-cache-tolerance 设置陈旧容忍度- 代理支持:x-proxy 指定地区代理(美国、欧洲等),x-proxy-url 使用自定义代理- 结构化提取:通过 x-json-schema 和自然语言指令,从页面中提取结构化 JSON 数据---## 部署方式:Docker 一键启动,完全自托管Jina Reader 提供了完整的 Dockerfile 和 docker-compose.yml,支持完全本地化部署,这是许多同类闭源服务(如 Firecrawl Cloud、Mendable)所不具备的优势。### 一键部署(docker compose)bashgit clone https://github.com/jina-ai/reader.gitcd readerdocker compose up# 服务在 8080(HTTP)和 8081(h2c)端口启动Dockerfile 采用了四阶段多架构构建:| 阶段 | 基础镜像 | 用途 ||------|----------|------|| base | Node 24 | 依赖安装、公共文件准备 || build-amd64 | Node 24 + Chromium amd64 | amd64 架构编译 || build-arm64 | Node 24 + Chromium arm64 | arm64 架构编译(如 Apple Silicon) || final | Node 24 slim | 最终运行时镜像 |docker-compose.yml 中还包含了一个 MinIO 对象存储服务(S3 兼容),用于支持持久化缓存层。在生产环境中,可以将 MinIO 配置指向 AWS S3、阿里云 OSS 等外部 S3 兼容存储,实现分布式缓存。### 缓存模式选择- 无状态模式(默认):不启用缓存,每次请求实时抓取,适合开发调试- S3 缓存模式:配置 S3_ENDPOINT、AWS_ACCESS_KEY_ID 等环境变量,启用分布式缓存### 私有化部署的优势1. 数据隐私:所有抓取请求完全在本地处理,数据不经过第三方服务器2. 无速率限制:自托管实例不受 Jina 官方 API 限速约束3. 定制化:可修改源码添加自定义处理逻辑、企业 SSO 认证等4. 合规性:满足数据不出境、内部网络访问等企业合规要求---## 上手门槛:开发者友好,学习成本极低Jina Reader 的设计哲学是"零配置即用"。对于大多数场景,开发者甚至不需要阅读文档:bash# 最简单用法:一个 curl 命令curl https://r.jina.ai/https://github.com/jina-ai/reader这种极简的接入方式极大地降低了使用门槛,也是项目能在短时间内获得大量 Stars 的重要原因之一。对于有更高需求的用户(如 AI 应用开发者、RAG 系统架构师),项目提供了 architecture.md 详细架构文档、cookbooks.md 烹饪书(含 RAG 构建、语义搜索、深度研究等多个场景的示例代码),以及 README.md 中的完整 API 参考。本地开发环境需要 Node.js >= 18 和 pnpm,配合 VS Code 的内置调试器(F5),可以单步调试 TypeScript 源码。不过需要注意的是,构建阶段需要下载 GeoLite2 地理位置数据库、SourceHanSans 中文字体、gsa_useragents UA 库等外部授权资产(./download-external-assets.sh)。---## 争议与局限:开源不等于完美### 1. ReaderLM 模型非完全开源虽然 Jina Reader 的核心代码完全开源(Apache-2.0),但其背后的 ReaderLM-v2 模型使用了 CC-BY-NC 4.0 许可证(仅限非商业用途)。这意味着如果你在商业产品中使用了 ReaderLM 模型生成的增强内容,可能会面临许可证合规风险。对于商业使用场景,建议仅使用开源代码部分(基础提取流程),或购买 Jina 官方付费服务。### 2. 无法绕过反爬机制Jina 官方文档明确声明:Reader API 尊重 网站的 robots.txt 和反爬机制,不会尝试绕过。这既是合乎道德的设计,也意味着对于启用了 Cloudflare、PerimeterX 等高级反爬系统的网站,提取可能会失败。这并非 bug,而是有意的设计选择。### 3. 登录态页面无法访问Reader API 无法访问需要登录的页面(不转发 Cookie)。虽然可以通过 x-forward-cookies 头转发 Cookie,但 Cookie 本身不会被缓存,且该功能可能因网站安全策略而受限。这意味着 Reader 只能处理公开可访问的内容。### 4. 高度动态页面的延迟对于复杂的 SPA(如 React/Vue 构建的大型应用),Chrome 渲染时间可能长达 10-30 秒。虽然提供了 x-max-tokens 等限流机制,但超长渲染时间仍会影响实时性应用的体验。---## 行业意义:从工具到基础设施的跃迁Jina Reader 的出现标志着 LLM 应用开发中的一个关键范式转变:数据获取这件原本需要大量工程投入的工作,被抽象成了一个像函数调用一样简单的 API。这一变化的影响是深远的:1. RAG 系统的民主化:任何人都可以用几行代码构建一个具备实时网络知识检索能力的 RAG 助手,而无需维护复杂的抓取基础设施。2. AI Agent 的眼睛:Cursor、Claude 等 AI 编程工具通过集成 Jina Reader MCP,让 AI 能够主动搜索和读取网页来回答用户问题,显著提升了 AI 的时效性和准确性。3. 搜索体验的重构:s.jina.ai 的"搜索即抓取"模式,为传统搜索引擎提供了一种结构化、LLM 友好的替代方案。从增长曲线看,Jina Reader 在发布后迅速获得了超过 11,000 颗 Stars,并被纳入 LangChain、LlamaIndex 等主流 AI 开发框架的官方文档。这一切表明,URL 转 Markdown 不是一个边缘需求,而是 LLM 应用生态中的基础设施级需求。---本报告基于 GitHub jina-ai/reader 仓库源码(v0.5.0)和 Jina 官方文档生成,分析时间 2026-07-07。