最新版本 · v1.2.2

AI 智能体的
网页和文档层

输入任意 URL、文档、邮件、压缩包或源代码文件—— 输出干净的 Markdown 或结构化 JSON。一个自托管的 Rust 二进制:带 CLI、Firecrawl 和 Jina Reader API、MCP 服务器,以及 Python、Node.js、Go、Java、C#、Ruby、PHP 等语言的包。

★ 250+ stars 在 GitHub 上
2.4 ms
PDF → Markdown,每页
20.49 倍于次名 pypdf(50.0 ms)
0.24 ms
HTML → Markdown,每页
8.12 倍于 Turndown(1.9 ms)
1.0 ms
正文提取,每页
7.26 倍于 crw(7.4 ms)
91.7/s
Office 与电子书解析
3.40 倍于 xberg(27.0/s)
基准

用实测说话

取自已发布的 1.1 基准报告中每个领域的最强结果——与项目 README 相同的数字,方法和出处在完整报告里。

每页延迟——越低越好

单线程 · 每页毫秒数
PDF → Markdown2.4 vs 50.0 ms20.49×
PageSiftpypdf
HTML → Markdown0.24 vs 1.9 ms8.12×
PageSift · F1 保真度 1.000Turndown
Main-content extraction1.0 vs 7.4 ms7.26×
PageSift · p50,Firecrawl 597 页crw
发布日期搜索0.31 vs 2.0 ms6.45×
PageSifthtmldate (fast)

吞吐——越高越好

每秒文件数 · 除非注明,均为单个 worker
PDF → Markdown(常驻服务)176.5 vs 100.6 files/s1.75×
pdf_oxidePageSift
Office 与电子书91.7 vs 27.0 files/s3.40×
xbergPageSift · 结构保留 0.988

每 worker 峰值内存——越低越好

单位为 MB,来自同一份基准报告
PDF 处理32 vs 3,675 MB113.1× less
PageSiftDocling (CPU)
HTML 正文20 vs 1,200 MB60.8× less
PageSiftReadability + Turndown
爬取,200 站 × 100 页218 vs 5,500 MB25.2× less
PageSiftspider

基准测于 PageSift 1.1;xberg 1.3.9 测于 2026-11-04。完整方法: docs/benchmarks.md · 真实站点爬取覆盖 0.740 对 Crawl4AI 0.529(polite 模式,40 站 × 60 页)。

架构

一条流水线,所有输入

来自架构文档的请求流水线:各入口把请求送进同一个引擎,策略与网络防护在任何抓取之前运行,渲染决策挑选能增加内容的最便宜路径,所有来源最后都落到同一组输出。

输入 URLs · local files CLI · HTTP API MCP · SDKs · C ABI Engine pagesift-engine Policy robots · rate limits identity leases Fetch HTTP · SSRF guards validated tunnels Plan render only when it pays HTML · arena DOM PDF · own reader Office · e-books · email OCR · scans & formulas Syntax · 373 languages Content & Extract main content · metadata selectors · chunking Outputs Markdown · JSON · links · WARC pagesift-store cache · selector memory · records pagesift-itna · opt-in, off by default barrier recovery · one bounded browser fallback 从格式层起全部自研:零拷贝 HTML5 解析器、PDF 层、Office 读取器、神经网络推理与 Chrome DevTools 客户端——背后没有 Python、JVM 或 Node 运行时。
输入 URLs · files · CLI · API · MCP · SDKs Engine pagesift-engine Policy robots · rate limits · identity leases Fetch HTTP · SSRF guards · validated tunnels Plan render only when it pays PARSERS HTML · arena DOM PDF · own reader Office · e-books · email OCR · scans & formulas Syntax · 373 languages Content & Extract main content · metadata · selectors · chunking Outputs Markdown · JSON · links · WARC pagesift-store cache · selector memory · records pagesift-itna · opt-in barrier recovery · one bounded browser fallback 自研 Rust 代码,直达格式层 —— 背后没有 Python、JVM 或 Node 运行时。
功能

它能做什么

六个动词覆盖整个 API 表面——CLI、HTTP API 和 MCP 工具里是同一套操作。

scrape · 干净内容

正文检测,以及保留标题、列表、表格、代码和公式的 Markdown。只有在能增加内容时,才渲染 JavaScript。

crawl · 整个站点

站点地图、按查询的聚焦爬取(页面不再有帮助时停下)、陷阱处理、robots.txt 和每 host 限速。每次爬取都输出 WARC。

map · 站点地图

在花预算抓取之前,先发现一个站点的 URL 清单,再把清单喂给 crawl、batch 或 extract。

batch · 多个 URL,一个任务

批量抓取,带任务持久化、持久化 webhook 和按所有者隔离。可从 API 或 MCP 轮询或取消任务。

monitor · 变化监控

定时检查,把真实变化和日期、计数器、广告轮换区分开,真正有变化时通过 webhook 通知。

agent · 调研任务

POST /v2/agent 用你自己的模型从网页回答问题,并把答案的每个字段与来源页面核对。

文档与 OCR

全部自研的 Rust 读取器:PDF、Office、电子书、邮件、压缩包和数据库——连损坏文件和 CJK 字体都能处理。扫描页用 PP-OCRv6,行间公式用 PP-FormulaNet,在 CPU 或 NVIDIA GPU 上运行。

结构化提取

用 CSS 选择器取 JSON(站点改版时会自动重新定位),或用你的模型写一次、由 PageSift 缓存的 schema。页面需要时,还有浏览器操作——点击、打字、滚动和保持的会话。

安全与如实的结果

防护内网地址和 DNS rebinding。页面不完整、文件被截断或扫描被跳过时,返回警告码,而不是看起来完整。

输入

几乎什么都能进

一次调用处理全部——不用再去接一堆单独的转换器。

网页

URL 与 HTML,只在能增加内容时才渲染

PDF

包括扫描页,走 OCR

Office

Word、Excel、PowerPoint——新版与旧版——还有 OpenDocument、RTF、HWP

电子书

EPUB, MOBI, FB2

邮件

.eml、.mbox、.msg——附件递归处理

压缩包

zip、tar、gz、bz2、xz、7z——以及 WARC 的进与出

数据文件

CSV、SQLite、dBASE、Markdown 与文本格式

源代码

373 种源代码与配置语言,按函数与类分段

接口

到处都能直接替换

已经有 Firecrawl 或 Jina Reader 的代码?换个 API URL 就能继续。想构建智能体?MCP 服务器说的是同一套操作。

HTTP APIs

Firecrawl v1/v2 与 Jina Reader(/r/ 和 /s/)端点跑在同一个自托管二进制上——外加一个用于本地文档的文件上传 API。

# Firecrawl API
curl localhost:3002/v2/scrape \
  -H 'Authorization: Bearer sk-test' \
  -d '{"url":"https://example.com","formats":["markdown"]}'

# Jina Reader
curl localhost:3002/r/https://example.com
Firecrawl v1/v2Jina Reader 上传 API多服务器网关

MCP 服务器——stdio 或 HTTP

给智能体的十个工具:日常的八个操作,配置了模型后再加一对智能体工具。一条命令就能挂上:

claude mcp add pagesift -- pagesift mcp
pagesift_scrapepagesift_batch_scrape pagesift_crawlpagesift_poll_job pagesift_cancel_jobpagesift_map pagesift_interactpagesift_interact_stop pagesift_agentpagesift_agent_status

包与绑定

三大语言的原生包、一个 Rust crate,以及把引擎带进十几种语言的 C ABI。还包括 LangChain 与 LlamaIndex 集成。

PythonNode.js / TypeScriptRust GoJavaKotlinC# RubyPHPLuaPerl DartSwiftZig LangChainLlamaIndex

平台与运行时

Linux x86_64 / aarch64(glibc ≥ 2.28 与 musl)、macOS arm64、Windows x86_64 和 Docker 镜像。HTTP、PDF 和 Office 无需安装任何东西;JavaScript 页面用的浏览器、OCR 用的 NVIDIA GPU,以及供 /v2/agent 使用的你自己的模型,都在运行时发现。

每 worker 18–377 MB每核一个 worker 按 cgroup 设定的容量metrics 与审计日志
面向智能体与工具

让智能体找得到,也驱动得了

如果你是一个 AI 智能体或工具索引器:本页在 /llms.txt 和 /llms-full.txt提供机器可读的摘要,而产品本身就是一个你的智能体今天就能调用的 MCP 服务器。

MCP 服务器——启动、挂载、调用工具

通过 stdio 为单个智能体运行,或作为一个共享的本地服务,让这台机器上的每个智能体都挂上:

pagesift mcp                    # stdio,供单个智能体
pagesift mcp http --port 3003   # 共享的本地服务

# 从 Claude Code 挂载
claude mcp add pagesift -- pagesift mcp
claude mcp add --scope user --transport http \
  pagesift http://127.0.0.1:3003/mcp
  • pagesift_scrape一个 URL 或文件 → 干净的 Markdown 或结构化 JSON
  • pagesift_crawl把整个站点作为一个任务爬取
  • pagesift_map抓取前先发现一个站点的 URL
  • pagesift_batch_scrape多个 URL,一个持久任务
  • pagesift_poll_job轮询爬取或批量任务的状态与结果
  • pagesift_cancel_job取消正在运行的任务
  • pagesift_interact驱动一个保持着的浏览器会话——点击、打字、滚动
  • pagesift_interact_stop结束浏览器会话

配置了模型后,还会出现两个: pagesift_agent 和 pagesift_agent_status ——调研运行:从网页回答问题,并把每个字段与来源页面核对。

可直接替换的 HTTP 兼容

现有的 Firecrawl v1/v2 代码只需改 API URL 就能用;Jina Reader 的路径 /r/ 和 /s/ 由同一个二进制提供。没有按页收费,数据也不离开你的机器。

curl localhost:3002/v2/scrape \
  -H 'Authorization: Bearer sk-test' \
  -d '{"url":"https://example.com","formats":["markdown"]}'
curl localhost:3002/r/https://example.com

机器可读文档

托管 API——准备中

托管版 PageSift API 正在准备中, api.pagesift.tech 端点已为它预留,但尚未上线。目前 PageSift 是自托管的:上面的 Firecrawl 与 Jina Reader API 都跑在你自己的机器上——见下方的 安装选项 。

文章

来自作者的笔记

dev.to、Zenn 和 Qiita 上的发布文章与工程深挖——那些放不进发行说明的设计思路。

dev.to · 发布

PageSift 1.2: ITNA, an access-barrier recovery engine — plus the 1.1 roundup

1.2 的发布帖:itna 障碍恢复,以及从未单独发过帖的 1.1 系列补记。

Zenn · 深度解析

壁にぶつかったら、まず分類する —— PageSift 1.2 のアクセス障壁リカバリ「itna」の設計

itna 如何在花掉一次浏览器尝试之前,先把障碍分类——1.2 背后的设计。

Zenn · 发布

PageSift 1.2:アクセス障壁リカバリ「ITNA」と、1.1 のまとめ

1.2 的日文发布帖,附 1.1 系列补记。

Qiita · 发布

PageSift 1.2:アクセス障壁リカバリ「ITNA」と、1.1 のまとめ

1.2 的日文发布帖,在 Qiita 上。

dev.to · 发布

PageSift 1.0: the Rust web content engine is feature-complete

1.0 的发布帖:功能完成——OCR、选择器记忆、监控和智能体 API。

安装

一分钟跑起来

选你的界面——它们跑的都是同一个引擎。

方式安装第一次调用
CLIcargo install pagesift --lockedpagesift scrape https://example.com
Pythonpip install pagesiftpagesift.scrape("https://example.com").markdown
Node.jsnpm install @pagesift/node(await new Scraper().scrape("https://example.com")).markdown
服务器docker run -p 3002:3002 ghcr.io/yolow92/pagesift:1.2.2curl localhost:3002/r/https://example.com
MCP—claude mcp add pagesift -- pagesift mcp
1.2 新增 · itna

访问障碍恢复,可选开启

  • 默认关闭。 通过 [itna] enabled 开启——你不要求,就什么都不会变。
  • 先分类,再设界。 障碍先被分类;被拦截或被挑战的页面最多得到一次浏览器回退,重定向与子请求共用一份网络预算。
  • 不该升级的,从不升级。 限速(429)和登录墙从不触发浏览器路径。
  • 隔离的会话。 会话按所有者、来源、出口和指纹租用;HTTP Cookie 只能通过精确 origin 的交接进入浏览器。
  • 人始终在环中。 交互式 CAPTCHA 会报告为需要人工处理——从不求解。
更新日志

1.2.2 新增

  • crawl、batch 和 extract 任务 仅限其所有者访问。
  • search 和 extract 的页面抓取现在会 计入每日配额。
  • 缓存的页面 会对照 robots.txt 检查 后才复用。
  • 不受支持的快照与 base64 图片选项现在会 被明确报错,而不是静默忽略。

全部版本 → · CHANGELOG

适合的场景——以及什么时候选别的

把页面和文档喂给 LLM、RAG 索引或智能体;自托管一个 Firecrawl 风格的服务、没有按页收费;在小机器上处理混合输入。独立图像文件、托管云服务,或者 AGPL 不适合你且商业授权也不可行时,选别的。

许可证与联系

开源,也可商业授权

在 AGPL 下免费自托管——同时为专有部署留了商业路线,和一位可以写信的真人。

AGPL-3.0——免费

在 GNU AGPL v3 下使用、修改和自托管 PageSift,完整源码在 GitHub,自托管没有按页收费。

查看许可证 →

商业授权

如需专有链接或私有部署、免除 AGPL 义务,可购买商业授权。直接写信给维护者:

联系获取授权

商业条款 →