Anydoc Skill:把任意 Office 文档秒变 Markdown 的 Agent 神器
把 PDF、Word、PowerPoint、Excel 这些”非结构化文档”喂给 AI 一直是老大难——同一份表格在 docx 和 pptx 里的列宽不一样,CSV 没有文件头就连格式都识别不了。Firecrawl 团队(开源爬虫引擎 firecrawl/firecrawl 背后的公司)刚开源的 Anydoc 专门解决这件事,并且直接把调用入口打成了标准 SKILL.md,可被 Claude Code / Codex / Cursor / OpenCode 一行命令装载,正成为本周 GitHub Trending 开发者工具榜上最热的文档类 Skill。
功能与原则
Anydoc 是一套”任意文档 → 干净 Markdown”的转换引擎,核心能力是把 Word / PowerPoint / Excel / OpenDocument / RTF / EPUB / CSV / PDF 八种格式解析成统一的中间文档模型,再经同一个 Markdown 序列化器渲染——也就是”一种输入、一个输出”,无论是 2003 年的老 doc 还是刚保存的 pptx,结果里表格、列表、引用、脚注的行为完全一致。
设计原则有三条:① 纯格式识别,不依赖 ML 模型与外部服务;② 内容探测格式,从 PDF 头、RTF 开组、OLE 流名、ZIP mimetype 等字节特征判别类型,文件后缀错误也能正确解析;③ 绑定主流语言,核心包是 Rust crate,同时发布 Python、Node.js、浏览器 WebAssembly 三套绑定,单文档转换中位数 < 5ms。
认可度
- GitHub Star:约 12K 星,截至 2026-08-10(首次进入 GitHub 周榜当周净增 7,214 星,居 OpenGithubs 2026.08.09 周榜第 4)
- 上榜记录:连续两周(2026.08.03 周榜、2026.08.10 周榜)登顶 GitHub Trending 开发者工具分类
- 包分发:crates.io/crates/anydoc · npm @firecrawl/anydoc · pypi firecrawl-anydoc,三端同步上线
- 已上线 skills.sh/firecrawl/anydoc 官方 Skill 收录,被 Firecrawl Parse 商业产品作为底层引擎调用
链接
- GitHub:https://github.com/firecrawl/anydoc
- 文档站点:https://firecrawl.dev
- 在线 WASM Demo:https://firecrawl.github.io/anydoc/
- Agent Skill 索引:https://skills.sh/firecrawl/anydoc
原作者
Firecrawl 团队(GitHub: @firecrawl)。团队主项目 firecrawl/firecrawl 累计 25.6K Star(截至 2026-05-29),是当前最主流的”网页 → LLM 数据”爬虫引擎,主打 search / scrape / crawl / extract 四件套;Anydoc 是其将”文档 → LLM 数据”做成对位产品的开源尝试。
介绍
Anydoc 的目标只有一个:让任何 Office/PDF 文档都能在单次 API 调用内变成 LLM 友好的 Markdown。它先把任意格式解析成统一的 Document 中间表示(带 heading、list、table、image、footnote、speaker notes 等完整语义),然后用统一的 Markdown serializer 输出。这意味着,无论你丢给它的是 .docx、.pptx 还是 .xlsx,结果里表格列宽、列表编号、heading 锚点的行为都完全一致,不会出现”同一份数据在两个格式里渲染不一样”的尴尬。
它同时被发布成标准的 Agent Skill:npx skills add firecrawl/anydoc 即可让 Claude Code / Codex / Cursor / OpenCode 在遇到 report.docx、slides.pptx、data.pdf 时自动调用 CLI 把它转成 Markdown 再喂给大模型,绕开”AI 看不懂二进制附件”的限制。
更关键的一点是 5ms 内单文档完成转换,纯 Rust 实现、不依赖任何 ML 模型——意味着本地部署、CI 流水线、低延迟批处理都能直接用,不需要云端 OCR、不需要把文件传出企业内网。
特点
- 统一中间表示:八种格式共享同一份
Document模型 + 同一套 Markdown 序列化器,转出来格式一致 - 内容级格式探测:从字节头判别 PDF/RTF/OLE/ZIP-mimetype,后缀错了也能正确解析
- 毫秒级性能:纯 Rust 实现,单文档转换中位数 < 5ms,比多数 Python 解析方案快一到两个数量级
- 三端绑定 + WASM:Node.js / Python / Rust / 浏览器 WASM 全部官方支持,可嵌 Web、可写 CLI、可作 Rust crate 直接调用
- 原生 Agent Skill 入口:
SKILL.md已写好,主流 IDE 与 CLI Agent(Claude Code / Codex / Cursor / OpenCode)开箱即用
使用方法
1) 安装(任选其一)
# 作为 Agent Skill 装载(推荐,给 Claude Code / Codex / Cursor 用)
npx skills add firecrawl/anydoc
# 全局 CLI
npm install -g @firecrawl/anydoc
# Python
pip install firecrawl-anydoc
# Rust
cargo add anydoc
2) CLI 调用
# 单文件转 Markdown 输出到 stdout
npx @firecrawl/anydoc report.docx
# 输出到文件
npx @firecrawl/anydoc slides.pptx -o slides.md
# 从 stdin 读(适合 CI)
npx @firecrawl/anydoc - --format csv < data.csv
3) Python 最小示例
import anydoc
markdown = anydoc.to_markdown("report.docx") # 文件路径
markdown = anydoc.to_markdown_bytes(data, "csv") # bytes + 显式格式
document = anydoc.to_document(data) # 拿结构化对象
使用场景与人群
典型场景
- 让 Claude Code / Codex / Cursor 自动读懂你丢进去的合同 PDF、产品 PPT、数据 Excel
- RAG 知识库批量预处理:把历史 docx / pptx / xlsx 一次性转 Markdown 入库
- CI 流水线里的文档质量检查(diff Markdown 输出,捕捉非预期改动)
- 离线 / 内网部署:纯 Rust、无 ML 依赖、不联网也能跑
目标用户
- Agent / Skills 开发者:想要一个开箱即用的”文档加载 Skill”
- RAG 工程师:要把企业里的 Office 文档批量送进向量库
- 安全合规团队:需要本地化解析,不能让文件上传到云端 OCR
- 文档自动化 / 数据迁移项目方:要做跨格式统一入库
输入与输出案例
案例 1:Agent 自动读懂 PPT
- Input:用户在 Claude Code 里说 “把
slides.pptx第 3 页那张产品对比表抽出来给我”;SKILL.md 触发 anydoc CLI - CLI:
npx @firecrawl/anydoc slides.pptx -o slides.md - Output(
slides.md片段):
## 产品对比表
| 维度 | Anydoc | 竞品 A | 竞品 B |
| ---------- | ------------- | ---------- | ---------- |
| 速度 | < 5ms | ~120ms | ~80ms |
| ML 依赖 | 否 | 是 | 是 |
| 输出格式 | 一致 Markdown | 各异 | 各异 |
| 部署方式 | 本地 / WASM | 仅云端 | 仅云端 |
Agent 直接拿到这张 Markdown 表继续总结,无需自己理解 pptx 二进制。
案例 2:Python 离线批量入库
import anydoc, pathlib
for p in pathlib.Path("inbox").glob("**/*"):
if p.suffix.lower() in {".docx", ".pptx", ".xlsx", ".pdf", ".csv", ".epub"}:
out = pathlib.Path("md_out") / (p.stem + ".md")
out.parent.mkdir(parents=True, exist_ok=True)
out.write_text(anydoc.to_markdown(str(p)))
输出 md_out/ 目录里每个文件都是统一结构的干净 Markdown,可直接灌进 LangChain / LlamaIndex / 任何 RAG 框架的 loader。
评论区
登录后可评论。