📄 文档处理 进阶 📦 社区

book-to-skill

把技术书或内部文档编译成 Agent 按需加载的技能包:SKILL.md 约 4K tokens + 每章约 1K,官方实测同一问题比整本塞上下文省 24–51 倍 tokens,MIT,支持 7 个 Agent 宿主

📄 相关文章

📊 评分明细

📦 打包完整度
2.2 2.2 / 2.5
🎯 实用性
2.2 2.2 / 2.5
📖 文档清晰度
1.7 1.7 / 2
👥 社区影响力
1.3 1.3 / 1.5
🔗 集成度
1.3 1.3 / 1.5

🎯 适用场景

开源免费办公文档Skill 系统

book-to-skill 快速入门:把一本书编译成「按需加载」的技能

这是什么?适合谁?

book-to-skill 是一个 MIT 许可的开源转换器(作者 virgiliojr94,Python 实现)。它做的事一句话能说完:你把一本技术书、一堆内部文档、或一个论文文件夹指给它,它把内容编译成一个结构化的 Agent 技能,之后你的 Agent 需要时按章加载。

它要解决的问题很具体,而且几乎人人遇过:书买了、读了一遍,三个月后连「第 7 章讲过这个」都想不起来。常见的三条退路都不好用——在 PDF 里搜关键词,得到的是页码列表而不是答案;直接问 Agent,它要么编,要么说没这份内容;自己记笔记,最后得到一份再也不会打开的 200 行文档。

区别在于编译发生在什么时候。把整本 PDF 塞进上下文,是每次对话都重新付一遍全文的 token 钱;book-to-skill 只在转换时付一次,把内容压成「核心心智模型 + 章节索引 + 术语表 + 模式表 + 速查表」,之后每次提问只加载「约 4K 的核心 + 约 1K 的那一章」。

它由两半组成,这一点决定了你该在哪一层排错:

  • 确定性的 Python 抽取器(scripts/extract.py):把各种格式的文档变成干净文本 + 元数据,不调用模型;
  • 规范驱动的生成器(仓库根目录的 SKILL.md,11 个步骤的生成规程):由你的 Agent 按规程把抽取结果编译成技能文件。

官方在性能页给出的实测结论是:回答一个针对性问题,book-to-skill 约花费 5,000 tokens,而把书整本塞进上下文分别是 119K / 175K / 256K tokens(Think Python 2 / Working Backwards / AI Engineering 三本书),也就是 24×–51× 的差距——注意这个差距是每一轮对话都要重付的那种成本。

适合谁:

  • 有一批要反复查的技术书、规范、RFC、内网 runbook,想要「问一句就得到这一章里的具体做法」的人;
  • 想把公司散落在 wiki、Notion、PDF 里的流程编译成一个「入职技能」,让新人第一天就能自己查的人;
  • 在读某一主题的论文/笔记,想把它们合成一个可增量更新的知识体(它支持把新资料 fold-in 到已有技能里)。

不太适合谁:

  • 想跨几十本书做「找出谁提过 X」的检索——那是 RAG 或 NotebookLM 的场景,官方 FAQ 也直说这类需求 NotebookLM 更合适;
  • 手里只有扫描件、又不愿意先做 OCR 的人(它不做 OCR,见踩坑 2);
  • 想拿它批量生产可直接公开分发的「书摘技能」的人——版权边界见踩坑 8。

和站内同类条目对照:markitdown(本站 8.5)做的是「任意格式 → Markdown」,转换完就结束了,不负责结构化和按需加载;anthropic-pdf(本站 8.4)是 PDF 的读写操作技能,管的是文件而不是知识;notebooklm-py(本站 8.0)走 NotebookLM 云端做多源问答,适合宽而浅。book-to-skill 的位置是「窄而深 + 产物落在本地文件系统里、可以进 git」。

核验日期:2026-11-01。依据官方仓库 README、docs/how-it-works.md、docs/performance.md、docs/install.md、docs/faq.md 与 GitHub API。仓库数据:36,664 stars / 3,882 forks / 23 个未关闭 issue / 最近推送 2026-10-28 / 最新发布 v1.4.0(2026-08-10)。

准备工作

  • 一个支持 Agent Skills 开放标准的宿主。官方列出 7 个:Claude Code、GitHub Copilot CLI、Amp、Codex、Hermes Agent、OpenCode、OpenClaw。它们读的都是同一份 SKILL.md。

  • Python ≥ 3.9(pyproject.toml 里 requires-python = ">=3.9")。抽取器是 Python 包 book_to_skill。

  • Node(只为 npx skills add 那一行命令)。手动 git clone 不需要 Node。

  • 按格式选装的抽取器,不装也能起步,缺了会告诉你装什么:

    格式首选安装
    PDF(散文类)pdftotext(poppler)sudo apt install poppler-utils
    PDF(散文类兜底)pypdf / pdfminer.sixpip3 install pypdf pdfminer.six
    PDF(代码/表格/公式)doclingpip3 install docling
    EPUBebooklib + beautifulsoup4(兜底用标准库 zipfile)pip3 install ebooklib beautifulsoup4
    DOCXpython-docx(兜底标准库 ZIP/XML)pip3 install python-docx
    HTMLbeautifulsoup4(兜底标准库 html.parser)pip3 install beautifulsoup4
    RTFstriprtf(兜底正则)pip3 install striprtf
    MOBI / AZW / AZW3Calibre 的 ebook-convert(外部程序,不是 pip 包)calibre-ebook.com/download
    TXT / Markdown / reStructuredText / AsciiDoc内置无需安装
  • 扫描件要先做 OCR:官方明确它不跑 OCR,ocrmypdf 是最省事的一条路(ocrmypdf input.pdf output.pdf)。

  • 预算:按官方实测表(Claude Sonnet 4.5,$3 / $15 每 MTok),一本书约 $1:244 页 $0.88、371 页 $0.96、501 页 $1.23、EPUB 301K tokens $1.42。这是「生成一次」的钱,不是订阅。

  • 时间预算:抽取速度取决于模式——散文类 pdftotext 基本瞬间(103 页 0.1 秒),技术模式 docling 约 1.5 秒/页(同样 103 页 164 秒)。生成阶段由你的 Agent 逐步完成,官方没有公布端到端总时长。

  • 版权前提:处理你自己买的书、公司自有文档、或你有权阅读的材料。生成的技能是「衍生的笔记」,不是原文复制(它的质量规则里有一条明确禁止抄长段原文)。

装:先分清「技能」和「CLI」是两条路

这一步是官方 docs 里反复强调的,也是最多人卡住的地方:

  • 要 /book-to-skill 这个命令和完整转换流程 → 装成技能(git clone 或 npx skills add)。
  • 只要文本抽取引擎 → pip 装成 CLI。它不会注册 /book-to-skill 技能,只给你一个 book-to-skill 命令做抽取与体检。

路线 A:装成技能(推荐)

一条命令,多宿主通吃:

npx skills add virgiliojr94/book-to-skill

手动安装也可以,按宿主选目标目录:

# 跨宿主共享根(Copilot CLI / Amp / Codex / OpenCode 都会读)
git clone https://github.com/virgiliojr94/book-to-skill.git ~/.agents/skills/book-to-skill

# Claude Code(官方会在转换结束后尝试建软链并回读校验)
git clone https://github.com/virgiliojr94/book-to-skill.git ~/.claude/skills/book-to-skill

# GitHub Copilot CLI
git clone https://github.com/virgiliojr94/book-to-skill.git ~/.copilot/skills/book-to-skill

# Hermes Agent:装到自己的分类目录下(它不扫跨宿主根)
git clone https://github.com/virgiliojr94/book-to-skill.git \
  "${HERMES_HOME:-$HOME/.hermes}/skills/productivity/book-to-skill"

# OpenClaw(活动 state 目录)
git clone https://github.com/virgiliojr94/book-to-skill.git \
  "${OPENCLAW_STATE_DIR:-$HOME/.openclaw}/skills/book-to-skill"

装完先验证宿主认不认:Copilot CLI 里 /skills reload 然后 /skills info book-to-skill;OpenClaw 用 openclaw skills list;Claude Code、Codex、OpenCode 开一个新会话。

路线 B:装成 CLI(只装抽取器)

book-to-skill 目前不在 PyPI 上(2026-11-01 实测 pypi.org/simple/book-to-skill/ 返回 404,官方 install 文档也写明 “not on PyPI yet”),所以要直接从仓库装:

pip install "book-to-skill[pdf,epub,docx] @ git+https://github.com/virgiliojr94/book-to-skill.git"

book-to-skill --check                     # 逐格式报告装了什么、缺什么、该跑哪条命令
book-to-skill ~/books/x.pdf --mode text    # 只跑抽取

可选依赖里 [html] 会带来 trafilatura 那一整套(lxml、日期解析、时区库等 17 个包),官方提醒「机器受限时要知道这件事」;不装它也有 bs4 兜底,只是不做正文与样板区识别。

四步跑通第一本书

第 1 步:先体检抽取器,别等跑一半报错

python3 scripts/extract.py --check

它按格式打印「已装 / 未装 + 安装命令」,不碰任何文件。你自己机器上缺 docling、缺 poppler 都能在这里看出来。

第 2 步:决定走文本模式还是技术模式

这是全文最有价值的一次选择,因为两种模式的产出结构上不一样。官方对 103 页技术 PDF 的实测:

方法耗时Tokens表格代码块
pdftotext0.1s27K00
Docling(技术模式)164s27K(+1.2%)4836

也就是说:token 数几乎一样,丢掉的 48 个表格和 36 段代码才是差别。散文书用文本模式(快几个数量级),有代码、表格、参数表的技术书必须走技术模式。

第 3 步:跑转换(它会先做成本预估)

在支持技能的主机里:

/book-to-skill ~/books/designing-data-intensive-applications.pdf

流程是这样走的,你只需要回答几个问题:

  1. Step 1.5:问你「技术书还是散文书」→ 决定用 docling 还是 pdftotext;
  2. Step 2:抽取,合并成一个 full_text.txt + metadata.json(默认工作目录 /tmp/book_skill_work/,正常结束会清理);
  3. Step 2.5:给出成本预估(按章节数 × 每章预算 + 4K 的 SKILL.md + 4.5K 附属文件推算),等你确认;此时说「只分析」会自动切到只分析模式;
  4. Step 3–4:分析结构(书名、作者、章节、目录),再问一句「这本书你打算怎么用」——这句决定每章预算是「参考型」还是「学习型」(文本约 1,000 / 技术约 1,800 tokens 起步,学习型更高);
  5. Step 5–9:写章节文件、术语表、模式表、速查表、主 SKILL.md;
  6. Step 10:扫描产物、清理工作目录、报告写到了哪个绝对路径。

产出长这样(默认写在跨宿主根 ~/.agents/skills/<slug>/):

文件作用官方标注体积
SKILL.md核心心智模型 + 章节索引 + 主题索引约 4,000 tokens
chapters/ch01-*.md …一章一个文件,按需加载每个约 1,000 tokens
glossary.md术语表,按字母序带章节引用约 1,500 tokens
patterns.md技术、算法、设计模式约 2,000 tokens
cheatsheet.md决策表与速查规则约 1,000 tokens

第 4 步:调用它,然后校验产物

装好之后就是普通技能:

/designing-data-intensive-applications              # 加载核心心智模型
/designing-data-intensive-applications replication  # 针对某个主题
/designing-data-intensive-applications ch05         # 直接进第 5 章

生成物可以先用仓库自带脚本按宿主规则校验一遍,再拿去用:

python3 tools/validate_skill.py ~/.agents/skills/<slug> --lens hermes
# --lens 可选:claude | copilot | amp | hermes | openclaw | opencode

常见踩坑

坑 1:pip install book-to-skill 装不上,或者装上了却没有 /book-to-skill

现象:pip install book-to-skill 报找不到包;或者装完在 Claude Code 里敲 /book-to-skill 没反应。 原因:两层。① 它没发布到 PyPI,只能从 git URL 装;② 就算装成功,pip 装的只是抽取器 CLI,官方文档明确写这条路径「不注册 Agent 技能」。 解决:要斜杠命令就 git clone 到对应宿主的 skills 目录(或 npx skills add);只要抽取就按路线 B 从 git URL 装。

坑 2:扫描版 PDF 一上来就停

现象:还没开始抽取就报错退出,说这份 PDF 没有文本层。 原因:扫描件是一堆页面图片,PDF 抽取链上每个工具读的都是文本层。官方在抽取开头就检查前几页并提前中止——这是设计,为的是不让你跑完 400 页才发现结果是空技能。 解决:先 OCR(ocrmypdf input.pdf output.pdf),再对输出做转换。图与表里的文字同样抽不出来,那是 OCR 与视觉识别的事,不是它的职责。

坑 3:技术书用了文本模式,表格和代码全没了

现象:生成的技能里「参考表」一片空白,代码示例缺失。 原因:pdftotext 会把表格拍平成流水文本。官方实测同一本书:文本模式 0 个表格、0 段代码,技术模式 48 个表格、36 段代码。 解决:含代码、参数表、公式的书一律走技术模式(docling)。代价是抽取从 0.1 秒变 164 秒(103 页),这个代价买的是结构,不是 token。

坑 4:章节没被切出来,变成一个巨大文件

现象:chapters/ 里没有按章分的文件,或只有寥寥几个。 原因:章节自动识别依赖显式的 Chapter N / Capítulo N 标题。官方自己举了两个反例:Pro Git(501 页)用小节标题当头,Moby-Dick 用章节名 + 罗马数字,两者都不会自动分段——抽取和转换照常,但章节要你手动指。 解决:选书时先看有没有规整的章标题;没有的话,把「第几章到第几章」当成独立输入分批转换,或在生成阶段明确指定章节边界。中文书用「第 3 章」这类标题是否命中,官方文档没有承诺,本站也未实测(见 FAQ Q4)。

坑 5:同一本书重跑,被重跑守卫拦住

现象:第二次跑同一份资料时它停下来问你三个选项。 原因:生成规程里有一条重跑守卫——它先用「作者概念式 / 书名式 / 你给的 slug」推导出目标技能名,发现目录已存在就停止,让你选:① 更新与折叠(增量)、② 只校验现有技能是否完整、③ 强制全量重生成。 解决:想补新资料选 ①(增量,便宜);只是怀疑上次没跑完选 ②;选 ③ 等于重付一次约 $1 的生成成本。

坑 6:中断之后想续跑,工作目录已经不在了

现象:网络断或会话中断后重来,它说要从头抽取。 原因:默认工作目录 /tmp/book_skill_work/ 在正常结束时会被清理;即使还在,续跑也要求 metadata.json 里每个来源在文件名与 sha256 内容指纹上都对得上、且抽取模式一致,否则判定不安全、重新抽取。 解决:大书先固定工作目录(BOOK_SKILL_WORKDIR),中断后保留它;换了文件、改了抽取模式就不用想着续跑了。

坑 7:让 Agent 一次读完 full_text.txt,上下文直接爆

现象:生成阶段开始没多久就报上下文超限,或质量明显下滑。 原因:一本 400 页书抽出来十几万到二十几万 tokens。生成规程为此专门写了「超过 5 万 tokens 的书用 REPL 式访问」——按行偏移分段读、用检索定位章节,而不是整篇读入。 解决:照它的规程走(分段读取、定点抽取);如果你在别的宿主里自己搭流程,也照这个约束来。

坑 8:把第三方书生成的技能推到了公开仓库

现象:一时的 public 回答,把整份衍生内容发布出去了。 原因:转换结束它会问要不要把技能发布成 GitHub 仓库,可见性单独问一句,gh repo create 默认 --private,只有你回答就是裸的 “public” 这个词才建公开库。而且「这本书是公版」描述的是书,不是你的仓库,不能当成公开的授权。 解决:第三方版权书生成的技能保持私有、不分享、不售卖;自有文档与开放许可材料可以在许可范围内共享。这是官方 README「版权与合理使用」一节的原文立场。

坑 9:装完在 Copilot CLI 或 Hermes 里找不到技能

现象:目录里有文件,宿主里就是没有。 原因:各宿主的发现机制不同。Copilot CLI 需要 /skills reload;Claude Code 与 Amp 下一次会话才加载;Hermes Agent 只扫自己的 ${HERMES_HOME}/skills/<category>/,不看跨宿主根 ~/.agents/skills。 解决:Copilot 先 reload;其余开新会话;Hermes 按路线 A 里那条命令装到分类目录下。

初级用法

  1. 单本技术书:/book-to-skill ~/books/ddia.pdf,走技术模式,产出后 /ddia replication 直接问。
  2. 一个项目的文档文件夹一起编译:把部署手册、架构决策记录、复盘纪要放进一个目录,一次转成一个统一技能——它的本意就是「任意结构化散文」,不只是书。
  3. glob 批量:/book-to-skill "~/papers/*.epub" my-library,把同一主题的电子书合成一个技能。
  4. 按章深挖:/slug ch05 只加载第 5 章,比「整本塞进去再问」省得多;章节文件名在 chapters/ 里能看到。

高级玩法

  1. 先分析、后生成:先只跑分析,看它挖出来的「作者核心框架 / 原则 / 反模式」清单是否靠谱,再决定要不要花那约 $1 生成。选错书的时候,这一步能省下一整本的钱;生成阶段也能从这份分析直接续跑。
  2. 增量折叠:新论文或新章节到了,把新文件指向已有技能目录:/book-to-skill ~/papers/new.pdf ~/.agents/skills/project-knowledge——它走「更新与折叠」流程,只改受影响的章节并重写主 SKILL.md,不用整本重来。
  3. 一个技能喂给全团队:生成的技能文件夹是纯文件,进 git 就是团队知识库;也可以按官方给的路径发到私有 GitHub 仓库,别人一条 npx skills add https://github.com/<你>/<slug> --skill <slug> 装上(需要已登录的 gh CLI)。
  4. 按宿主分别校验:validate_skill.py --lens hermes 与 --lens copilot 各跑一遍,同一份产物可以确认在多个宿主上符合各自的技能规则。

六个小技巧

  1. 先 --check 再选书:抽取器缺哪个格式的依赖,一眼就能看到,比跑到一半失败快得多。
  2. 技术书用 docling,散文书用 pdftotext:判断标准不是「是不是 PDF」,而是「有没有代码、表格、公式、参数」。
  3. 把成本预估当刹车:Step 2.5 的预估是免费的;看到预估觉得贵,就说「只分析」,先拿到结构分析再决定。
  4. 固定工作目录(BOOK_SKILL_WORKDIR):大书转换中途断了还能续,不然就是重新抽一遍。
  5. 产物目录名就是调用名:想好 slug 再跑,改名要连目录带索引一起改。
  6. 拿它当「读书的第一遍」:先让它编译,再用 cheatsheet.md 的决策表回看书里对应章节——比从头顺着读一遍快。

常见问题 FAQ

Q1:它和「把 PDF 直接丢进上下文」到底差在哪?1M 窗口不是够了吗?

A:差在付钱的时间点。整本塞进去是每一轮对话都重付全文;book-to-skill 只在转换时付一次,之后每次提问约 5K tokens(4K 核心 + 1K 章节)。官方实测同一问题的对比是 24×(119K 那本)、35×(175K)、51×(256K)。窗口变大只让「塞得下」成立,不改变「一直塞一直付」;而且上下文填得越满,模型捞一个具体事实的精度越差(lost in the middle),一篇精编的 1K 章节好过 200K 原文的情况是常态。

Q2:这不就是 RAG 吗?和 NotebookLM 怎么选?

A:RAG 在查询时工作:切片、向量化、找相似段落塞进 prompt,擅长「找出提到 X 的那段」。book-to-skill 在编译时工作:一次性抽出作者真正的框架、给它们命名、写清什么时候用、把反模式列出来,产物是可推理的结构而不是相似度命中。选型按活儿的形状分:宽而浅(几十本书里找一段)用 NotebookLM 或 RAG;窄而深(一两本要反复用、边工作边查)用 book-to-skill。官方自己也说这两者是互补的。

Q3:收费吗?一本书到底花多少钱?

A:转换器本身 MIT 免费。钱花在模型上——官方按 Claude Sonnet 4.5($3 / $15 每 MTok)实测估算:244 页 $0.88、371 页 $0.96、501 页 $1.23、EPUB 301K tokens $1.42,也就是一本书约 $1,付一次。换成更便宜的模型会更低,但换算率会变,官方数字只对 Sonnet 4.5 成立。

Q4:中文书支持吗?章节会自动切吗?

A:格式层面没有语言限制,中文 PDF 与 EPUB 都能抽取。但章节自动切分依赖显式的 Chapter N / Capítulo N 标题(官方文档只写了这两类),中文「第 3 章」这种标题是否命中,官方没有承诺,本站也没有实测。稳妥的做法是:转换时确认 chapters/ 里真的有分章文件;没有就手动指定范围、分批转换。术语与质量受原书排版影响,中文 PDF 的字体编码问题也可能让抽取结果错行,能拿 EPUB 就别用 PDF。

Q5:我的书或内部文档会被上传吗?

A:抽取与分析都在本机跑,官方明确「files are never uploaded by this tool」。但生成阶段是你的 Agent 在做——如果你的模型在云端,喂进去的文本就受那家 provider 的数据条款约束,和你平时发 prompt 一样。真正机密的文档,要么用本地模型跑生成,要么别用。

Q6:生成的技能可以分享或卖吗?

A:看素材是谁的。第三方版权书生成的技能应当保持私有,公开发布或分享可能侵权;公司自有文档、你自己写的东西、开放许可材料,在许可范围内可以共享。官方一句话说得很直白:转换器是工具,怎么用在你。另外别把「书是公版」当成「衍生技能可以随便发」的理由。

进阶学习建议

  1. 读 docs/how-it-works.md 的 Steps 0–10:那是整条流水线的权威描述(什么条件下换抽取器、每章预算怎么定、产物写到哪里),比 README 细一档;排错时按步骤号定位最快。
  2. 读仓库根的 SKILL.md(约 55KB):它不是普通说明文档,而是生成器的规范本体——Step 5 的命名规则、Step 7 的预算矩阵、Step 9 的模板、以及质量规则(含禁止抄长段原文那条)都在里面。想改生成风格,改的是它。
  3. 用 tools/discovery_tax.py 在你自己的书上复算一次:python3 tools/discovery_tax.py --full-text /tmp/book_skill_work/full_text.txt --target-chapter 5,把「省了多少」从别人的表格变成你自己书的数字。
  4. 用 tools/validate_skill.py 做宿主合规检查:--lens claude|copilot|amp|hermes|openclaw|opencode 六种规则各跑一遍,做多宿主分发前先过这关。
  5. 读 book-to-skill-use-cases:用户自己写的真实案例(含一个 DevEx 书变成 300+ 工程师问卷的用法、以及一个扫描 PDF 卡住最终变成 PR #130 早期中止修复的故事),比宣传语有用。
  6. 盯 CHANGELOG 与 releases:v1.0.0 起增加了「自适应深度」(同一章从 473 tokens 提到 1,219,并给学习型章节补了 worked example),说明产物质量规范仍在演进;升级后旧技能不会自动重编,重要资料值得按新规范重跑一次。

免责声明

本文基于官方文档和公开资料整理,AI辅助生成,MagicNetWorld 尚未完成独立实测。

本次没有安装 book-to-skill,没有实际执行 extract.py、/book-to-skill 或任何生成流程,因此不验证:抽取器在各格式上的成功率、生成产物的实际质量、每本书的真实 token 消耗与费用、中文书的章节切分效果。文中的性能数字、成本表、格式支持、宿主路径、模式与限制,均转述自官方 README、docs/ 下五个文档页、pyproject.toml 与 GitHub API,属官方自述或仓库元数据。

参考链接

book-to-skill 多维度简评

来源:virgiliojr94/book-to-skill(MIT,Python) 类别:文档处理 / 知识编译

说明:本文基于官方 README 与 docs/ 五个文档页整理,MagicNetWorld 未安装运行,性能与成本数字均为官方实测口径转述。


一、核心定位:把「知识」编译成「结构」

大多数「AI 读书」工具在做检索:切片、向量化、按相似度找段落。book-to-skill 做的是编译——它要求 Agent 读完一份资料后,输出的是被命名过的框架、原则、决策规则、反模式,而不是原文的压缩版。

这个差别在产物形态上很直观:它不产出一个「摘要文档」,而是产出一个技能目录——一个约 4K tokens 的核心文件(放最该记住的东西)、若干按章节拆开的小文件(约 1K 一个,用到才加载)、一张术语表、一张模式表、一张决策速查表。Agent 回答问题时加载的是「核心 + 那一章」,而不是整本书。

所以它的价值主张不是「帮你读懂」,而是摊销:一次性的编译成本,换后续每一次对话的上下文节省。官方把这笔账算得很清楚,也是我在这个条目里最看重的一段。

二、产物解剖

文件内容官方标注体积
SKILL.md核心心智模型、章节索引、主题索引、使用说明约 4,000 tokens
chapters/chNN-*.md一章一个文件;技术书含代码示例与参考表,学习型章节含 worked example每章约 1,000 tokens
glossary.md术语 + 章节引用,按字母序约 1,500 tokens
patterns.md技术、算法、设计模式汇总约 2,000 tokens
cheatsheet.md决策表与阈值规则(不是词条表)约 1,000 tokens

两点值得注意,因为它们决定了产物好不好用:

  1. 每章预算按内容类型和用途分配:散文书约 1,000 tokens、技术书约 1,800 tokens 起步;再根据「你打算怎么用这本书」分到参考型与学习型两档。这个设计避免了「一本厚书压成一篇泛泛摘要」的最差结果。
  2. 速查表被明确要求是决策层,不是术语层。官方在 v1.0.0 的对比里给过数字:旧规范下速查表有 9 行关键词与定义、0 条决策规则;新规范下是 32 条决策规则、0 行词条。这个改动方向说明作者理解「拿来用」和「读得懂」的差别。

三、实测数字怎么读

官方 docs/performance.md 有三张关键表,我认为它们是这个项目最可信的部分(都标了复算命令,用 tiktoken 的 cl100k_base 计数):

① 抽取模式的结构代价

方法103 页技术 PDF 耗时Tokens表格代码块
pdftotext0.1s27K00
Docling164s27K(+1.2%)4836

结论很清楚:技术书别省这 164 秒。token 几乎一样,丢的是结构。

② 每本书的生成成本(Claude Sonnet 4.5,$3 / $15 每 MTok)

书页数抽取 tokens自动识别章节约成本
Think Python 2244119K19$0.88
Working Backwards371175K10$0.96
Pro Git501229K未自动切分$1.23
Moby-Dick(EPUB)—301K未自动切分$1.42

③ 「Discovery Loop Tax」:回答一个针对性问题的上下文开销

书整本塞入探索式检索book-to-skill对比整本 / 对比检索
Think Python 2119,26412,152~5,00024× / 2.4×
Working Backwards175,25333,444~5,00035× / 6.7×
AI Engineering256,28777,866~5,00051× / 15.6×

怎么读这张表:24–51× 是「对比整本上下文」的倍数,这个优势最强,因为它每一轮对话都要重付;而 2.4–15.6× 是「对比探索式检索」的倍数,那是一次性成本,且随章节变大而变大。把两个倍数混着用会得出过分乐观的结论——官方自己在页面上也做了这个区分,值得给它一个肯定。

想验证你自己的书:python3 tools/discovery_tax.py --full-text /tmp/book_skill_work/full_text.txt --target-chapter 5。

四、和四种常见做法的对比

1. 把 PDF 整本丢进上下文(含 1M 窗口) 差距不在「装不装得下」,而在每次对话都重付。另外窗口填满时模型定位具体事实的精度会下降(lost in the middle),这也是「1K 精编章节有时好过 200K 原文」的原因。适合一次性、不再回看的材料;要反复查的,编译更划算。

2. RAG / 向量检索 RAG 擅长「找出提到 X 的那一段」,book-to-skill 擅长「这本书对 X 给出的规则是什么」。前者的产物是片段,后者的产物是结构。宽而浅用 RAG,窄而深用它。两者不冲突,可以叠(技能做主干、RAG 兜长尾)。

3. NotebookLM 官方 FAQ 里少见地直接认输了一句:几十本书里跨书搜索,NotebookLM 更合适。这不是客气话——NotebookLM 是托管服务、多源、带引用;book-to-skill 是本地文件、单簇主题、可进 git。选型看你要「在浏览器里问」还是「在工作流里用」。站内另有 notebooklm-py(本站 8.0)走 API 路线可作对照。

4. 手工记笔记 同样能得到结构,但人工整理一本 400 页技术书是十几个小时的事;而且笔记通常只覆盖你当时觉得重要的部分。编译的边际价值在于「覆盖整本 + 可重跑 + 可增量 fold-in」。反过来说,如果你只关心书里的两章,手工摘就行,不必为两章付 $1 和一堆依赖。

五、六条边界与风险

  1. 章节自动切分依赖显式标题:官方文档写明要 Chapter N / Capítulo N 这类标题。它自己举的两个反例很扎眼——Pro Git(501 页)和 Moby-Dick 都没有被自动分段。中文书「第 3 章」是否命中,官方未承诺,本站也未实测。
  2. 不做 OCR,也不抽图里的字:扫描件在抽取开头就被判死,这是刻意设计(避免跑完 400 页才得到空技能),但意味着扫描书必须先过 ocrmypdf。
  3. 没有 PyPI 包:2026-11-01 实测 pypi.org/simple/book-to-skill/ 为 404,官方 install 文档也写明 “not on PyPI yet”,只能从 git URL 装或 git clone。CLI 与技能是两条不同的安装路径,混淆会得到「装上了但没有斜杠命令」的结果。
  4. 成本是「每本约 $1」量级,不是零:按 Sonnet 4.5 价目推算,换模型会变。一次转换失败重跑就是再付一次,所以「先分析后生成」这个中间档很值钱。
  5. 版权边界是硬的:产物是衍生笔记,第三方版权书的技能应当保持私有;发布时 gh repo create 默认 --private,「书是公版」不构成公开仓库的授权。
  6. 年轻项目 + 单人维护:2026-05 创建、最新发布 v1.4.0(2026-08-10)、23 个未关闭 issue,最近一次推送 2026-10-28。活跃度没问题,但不要假设它有机构级的长期维护承诺;用在关键流程前先固定版本(git checkout <tag>)。

另外提醒一个容易搞错的事:GitHub 上还有一个同名但无关的项目 apple-ouyang/book-to-skill(2026-02 创建、177 stars、独立仓库而非 fork)。两者不是同一份代码,装之前看清 owner 是 virgiliojr94。

六、三个值得用的落地场景

  • 团队内网文档:把 runbook、ADR、入职流程编译成一个技能,放进仓库随代码走。它是「任意结构化散文」,不限书。
  • 要反复查的规范:RFC、API 契约、合规条款这类「读过但记不住」的材料,编译器比 RAG 更贴近「我要那条规则」的问法。
  • 个人主题书库:同一主题的几本书 + 自己的笔记合并成一个技能,新材料用 fold-in 增量补,不必整本重编。

七、结论

它是一个机制清晰、数字可复算、边界也写得诚实的项目:把「读过的书」变成「随时可加载的结构」,代价是一次性生成成本与几个明确的前提(章节标题规整、非扫描件、有对应抽取器)。真正要判断的只有一件事——你手上的资料是「反复查」还是「看一遍」;前者值得编译,后者直接丢上下文就行。

逐维度评分与理由、标签依据、以及本次未验证的范围,见本站该条目的独立评分文件。

参考资料

📊 评分与标签

核验口径:已按现行口径通过,待按新证据契约复核

评分说明

总分 8.6/10 · P_优选

核验日期:2026-11-01。依据仓库元数据、官方 README、docs/ 下 usage / install / faq / performance / how-it-works 五个文档页与 pyproject.toml 重新评定。本条目不采信旧版评分文件的「站内 7.9k stars 无法核验」判断——2026-11-01 已通过 GitHub API 取得实测值。本次未安装、未执行抽取或生成流程,分数不含实测产物质量。

📊 可观测社区指标(采集日期:2026-11-01)

  • GitHub:virgiliojr94/book-to-skill ★36,664 · 🔱3,882 · 未关闭 issue 23 · 语言 Python · 许可证 MIT。
  • 活跃度:创建于 2026-05-01,最近推送 2026-10-28(距核验日 4 天);最新发布 v1.4.0(2026-08-10),pyproject.toml 版本号 1.4.0。
  • 分发渠道:未发布到 PyPI(2026-11-01 实测 https://pypi.org/simple/book-to-skill/ 返回 404,官方 docs/install.md 亦写明 “not on PyPI yet”),安装走 npx skills add 或 git clone。
  • 数据来源:GitHub API、Releases、raw pyproject.toml。

📦 可安装性 2.1/2.5

  • 官方给出两条清晰路径并明确区分:要 /book-to-skill 命令就装成技能(npx skills add virgiliojr94/book-to-skill,或 git clone 到宿主目录),只要抽取引擎就从 git URL pip install。逐宿主写清目录:跨宿主 ~/.agents/skills、Claude Code ~/.claude/skills、Copilot CLI ~/.copilot/skills、Hermes ${HERMES_HOME}/skills/<category>、OpenClaw 活动 state、OpenCode ~/.config/opencode/skills。
  • 扣分点有三处,都不是致命但会真实卡人:① 不在 PyPI,pip install book-to-skill 直接失败,只能用 @ git+https://… 形式;② PDF 技术模式依赖 docling(约 1.5 秒/页),MOBI/AZW 依赖外部 Calibre,属额外安装面;③ 装了 CLI 不等于装了技能(官方原话:这条路径「does not register the agent skill」),混淆会得到「装上了但没命令」的结果。缓解手段是 scripts/extract.py --check 一条命令体检全部格式依赖。
  • 对比 MarkItDown(本站 8.5):markitdown 是 pip install 即用的库,装上就有 markitdown 命令,但它只做「格式 → Markdown」,不涉及宿主技能目录;book-to-skill 的安装面更宽,换来的是产物能直接被宿主发现。
  • 对比 anthropic-pdf(本站 8.4):anthropic-pdf 由 Anthropic 官方套件按自己的分发方式安装,能力聚焦 PDF 读写;book-to-skill 是第三方项目,安装步骤要自己照文档走,但对「多宿主」这件事写得更细。

🎯 实用性 2.3/2.5

  • 解决的是一个普遍且真实的问题:读过的书/内部文档要在工作中反复查。产物是「约 4K tokens 的 SKILL.md 核心 + 约 1K 的章节文件 + 术语表 + 模式表 + 决策速查表」,Agent 按需加载章节,不必每轮重付全文。
  • 官方给出的可复算数字支撑了价值主张:回答一个针对性问题约 5,000 tokens,对比整本上下文 119K / 175K / 256K tokens(三本书),即 24× / 35× / 51×;对比「探索式检索」则为 2.4× / 6.7× / 15.6×。官方自己区分了这两个倍数,没有把一次性优势混成常驻优势。
  • 输入不限于书:内部文档、ADR、品牌规范、RFC、论文合集都能编译;Mode 4 支持把新材料 fold-in 进已有技能,等于给了知识库一个增量更新路径。质量规则明确禁止抄长段原文,产物是结构化衍生笔记而非复制。
  • 扣分点是场景边界:它不擅长「在几十本书里找出谁提过 X」,官方 FAQ 自己承认这类需求 NotebookLM 更合适;另外章节切分依赖 Chapter N / Capítulo N 这类显式标题(官方举了 Pro Git 与 Moby-Dick 两个未自动分段的反例),遇到不规整的书要人工指章节。
  • 对比 notebooklm-py(本站 8.0):notebooklm-py 走 NotebookLM 云端做多源问答,宽而浅的场景更强;book-to-skill 的产物落在本地文件系统里、可进 git、可版本化,窄而深的场景更强。两者是互补而非替代。
  • 对比 SkillsMP(本站 8.8):skillsmp 是技能目录与检索,本身不生产技能;book-to-skill 生产技能,但没有目录能力。

📖 文档质量 1.9/2.0

  • 文档结构完整到「按角色分层」:README 给定位与产物结构,docs/usage.md 给四种输入形态与调用方式,docs/install.md 给七宿主路径与 CLI/技能的区别,docs/faq.md 直接回应「为什么不直接塞 PDF」「是不是 RAG」「1M 窗口够不够」「NotebookLM 更快」四个质疑,docs/performance.md 给三张带复算命令的实测表,docs/how-it-works.md 给 Steps 0–10 全流程与已知限制。
  • 还有两个加分项:仓库根的 SKILL.md(约 55KB)本身就是可读的生成规范(含每章预算矩阵与质量规则),出问题时能顺着步骤号定位;另提供简体中文与俄文 README。
  • 扣分点:① 中文 README 自注「同步于 commit 907be50(2026-08-31)」,可能落后 master;② 成本表按 Claude Sonnet 4.5 价目推算,属估算而非账单实测,换模型即失效;③ 官方未公布端到端总时长,只有抽取阶段的实测。
  • 对比 MarkItDown(本站 8.5):markitdown 以 README 为主、扩展点说明较少;book-to-skill 的文档量明显更大,代价是阅读成本也更高。
  • 对比 notebooklm-py(本站 8.0):notebooklm-py 的文档偏 API 用法;book-to-skill 的文档同时覆盖「怎么装到七个宿主」与「产物为什么这么设计」,对多宿主使用者更友好。

👥 社区活跃 1.3/1.5

  • 实测数据:★36,664、🔱3,882、未关闭 issue 23、最近推送 2026-10-28、最新 release v1.4.0(2026-08-10)。项目 2026-05-01 创建,半年内到这个量级,属高速增长。
  • 协作设施齐全:CI、CodeQL、SECURITY.md、CONTRIBUTING.md、CHANGELOG、GitHub Sponsors、Trendshift 上榜;另设 book-to-skill-use-cases 收集用户案例,官方举了一个真实反馈闭环——扫描 PDF 卡住的报告最终变成 PR #130 的早期中止修复。
  • 扣分点:维护者个人主导、项目不足 7 个月,长期维护承诺无法由历史证明;社区贡献集中在 bug 修复与多语言文档,尚无大型生态。
  • 对比 trailofbits-skills(同类技能仓库):trailofbits-skills 有机构与多人维护、审计业务背书;book-to-skill 是单人主线但迭代频率更高(半年 1.0 → 1.4.0)。
  • 对比 anthropic-pdf(本站 8.4):anthropic-pdf 的社区体量来自 Anthropic 品牌与官方仓库聚合;book-to-skill 的 star 数来自单一工具的独立增长,含金量不同但天花板也不同。

🔗 兼容性 1.0/1.5

  • 产物遵循 Agent Skills 开放标准,官方明确列 7 个宿主共用同一份 SKILL.md:Claude Code、GitHub Copilot CLI、Amp、Codex、Hermes Agent、OpenCode、OpenClaw;仓库自带 tools/validate_skill.py,可按 --lens claude|copilot|amp|hermes|openclaw|opencode 分别校验生成物是否符合各宿主规则。
  • 扣分点集中在「发现机制」与「输入前提」:① Hermes Agent 不扫跨宿主根 ~/.agents/skills,必须装到 ${HERMES_HOME}/skills/<category>/;Copilot CLI 需要 /skills reload,其它宿主需新会话才能看到;② 章节自动切分依赖显式 Chapter N / Capítulo N 标题,官方自举 Pro Git(501 页)与 Moby-Dick 未能自动分段;③ 不做 OCR,扫描件在抽取开头即中止;④ OpenClaw 在非默认 OPENCLAW_STATE_DIR 时不索引 ~/.agents/skills。
  • 对比 MarkItDown(本站 8.5):markitdown 的产物是 Markdown,任何模型、任何工具都能读,兼容性最强但不管「加载与调用」;book-to-skill 的产物是宿主规范文件,兼容性受宿主发现机制约束,换来的是真正能按需加载。
  • 对比 anthropic-pdf(本站 8.4):anthropic-pdf 的能力围绕单一文档类型;book-to-skill 覆盖 PDF/EPUB/DOCX/HTML/RTF/MOBI/TXT/Markdown 等格式,但每种格式都要对应的抽取器在位,兼容性成本转移到依赖上。

评分依据可追溯至公开来源,每项分数均有明确理由和数据支撑。

🏷️ 标签说明

  • 开源免费: MIT 许可证,代码公开可审计;转换器本身不收费,模型费用另计。来源:GitHub API 许可证字段、LICENSE.md。
  • 办公: 可把内部 runbook、ADR、入职流程编译成随仓库走的技能,属办公知识管理场景。来源:官方 README「Beyond books」。
  • 文档: 支持 PDF、EPUB、DOCX、HTML、RTF、MOBI/AZW/AZW3、TXT、Markdown、reStructuredText、AsciiDoc 输入。来源:docs/install.md。
  • Skill 系统: 产物即 Agent Skills 标准技能目录(SKILL.md + chapters/ + 附属文件),供 7 个宿主按需加载。来源:官方 README「What it generates」。

局限与声明

MagicNetWorld 尚未完成独立实测:未安装 book-to-skill,未执行 scripts/extract.py、/book-to-skill 或任何生成流程,因此不验证抽取器在各格式上的成功率、生成产物的实际质量与可用性、每本书的真实 token 消耗与账单金额、中文书章节切分的命中情况。性能、成本、格式支持、宿主路径、模式与限制均转述自官方文档与仓库元数据,属官方自述。

评分口径说明:本次已将旧版 7.5 分上调至 8.6,依据是三点可复核的变化——① 社区指标从「无法核验的 7.9k」变为 API 实测 36,664 stars / 3,882 forks / 4 天内有推送;② 文档从「README 较完整」升级为六份分层文档 + 带复算命令的性能页 + 中俄双语 README;③ 兼容性从「主要服务 Claude Code / Amp」升级为官方逐宿主列明 7 个宿主并附 --lens 校验工具。扣分项保持实质:未上 PyPI、章节切分依赖显式标题、不做 OCR、维护者单人且项目年轻。

📋 来源核实

  • ✅ 已核对 GitHub API 仓库元数据:stars / forks / 未关闭 issue / 创建与最近推送时间 / 许可证(2026-11-01)。
  • ✅ 已核对 Releases API:最新版本 v1.4.0、发布时间 2026-08-10。
  • ✅ 已读取 raw pyproject.toml:版本 1.4.0、requires-python >=3.9、可选依赖分组。
  • ✅ 已读取 README、docs/usage.md、docs/install.md、docs/faq.md、docs/performance.md、docs/how-it-works.md、SKILL.md 与 README.zh-CN.md。
  • ✅ 已核实 PyPI 无此包:https://pypi.org/simple/book-to-skill/ 返回 404,与官方 install 文档的 “not on PyPI yet” 一致。
  • ⚠️ 未验证:官方性能与成本表的原始测量、生成产物质量、各格式抽取成功率、中文书章节切分;另有一个同名独立项目 apple-ouyang/book-to-skill(177 stars,非 fork),与本条目不是同一份代码,评分只针对 virgiliojr94 版本。
  • ❌ 已剔除旧版依据:旧评分文件把 pip install book-to-skill、--use-docling、--max-chapter-tokens、7.9k stars 当作事实,均经核实不存在或已过时(CLI 参数实际为 --mode / --check / --install-missing),不再作为评分证据;旧版 officialUrl 指向宽泛的 GitHub Topics 页,已改为项目仓库地址。