book-to-skill
把技术书或内部文档编译成 Agent 按需加载的技能包:SKILL.md 约 4K tokens + 每章约 1K,官方实测同一问题比整本塞上下文省 24–51 倍 tokens,MIT,支持 7 个 Agent 宿主
评分明细
适用场景
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-utilsPDF(散文类兜底) pypdf/pdfminer.sixpip3 install pypdf pdfminer.sixPDF(代码/表格/公式) doclingpip3 install doclingEPUB ebooklib+beautifulsoup4(兜底用标准库 zipfile)pip3 install ebooklib beautifulsoup4DOCX python-docx(兜底标准库 ZIP/XML)pip3 install python-docxHTML beautifulsoup4(兜底标准库 html.parser)pip3 install beautifulsoup4RTF striprtf(兜底正则)pip3 install striprtfMOBI / AZW / AZW3 Calibre 的 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 | 表格 | 代码块 |
|---|---|---|---|---|
| pdftotext | 0.1s | 27K | 0 | 0 |
| Docling(技术模式) | 164s | 27K(+1.2%) | 48 | 36 |
也就是说:token 数几乎一样,丢掉的 48 个表格和 36 段代码才是差别。散文书用文本模式(快几个数量级),有代码、表格、参数表的技术书必须走技术模式。
第 3 步:跑转换(它会先做成本预估)
在支持技能的主机里:
/book-to-skill ~/books/designing-data-intensive-applications.pdf
流程是这样走的,你只需要回答几个问题:
- Step 1.5:问你「技术书还是散文书」→ 决定用 docling 还是 pdftotext;
- Step 2:抽取,合并成一个
full_text.txt+metadata.json(默认工作目录/tmp/book_skill_work/,正常结束会清理); - Step 2.5:给出成本预估(按章节数 × 每章预算 + 4K 的 SKILL.md + 4.5K 附属文件推算),等你确认;此时说「只分析」会自动切到只分析模式;
- Step 3–4:分析结构(书名、作者、章节、目录),再问一句「这本书你打算怎么用」——这句决定每章预算是「参考型」还是「学习型」(文本约 1,000 / 技术约 1,800 tokens 起步,学习型更高);
- Step 5–9:写章节文件、术语表、模式表、速查表、主
SKILL.md; - 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 里那条命令装到分类目录下。
初级用法
- 单本技术书:
/book-to-skill ~/books/ddia.pdf,走技术模式,产出后/ddia replication直接问。 - 一个项目的文档文件夹一起编译:把部署手册、架构决策记录、复盘纪要放进一个目录,一次转成一个统一技能——它的本意就是「任意结构化散文」,不只是书。
- glob 批量:
/book-to-skill "~/papers/*.epub" my-library,把同一主题的电子书合成一个技能。 - 按章深挖:
/slug ch05只加载第 5 章,比「整本塞进去再问」省得多;章节文件名在chapters/里能看到。
高级玩法
- 先分析、后生成:先只跑分析,看它挖出来的「作者核心框架 / 原则 / 反模式」清单是否靠谱,再决定要不要花那约 $1 生成。选错书的时候,这一步能省下一整本的钱;生成阶段也能从这份分析直接续跑。
- 增量折叠:新论文或新章节到了,把新文件指向已有技能目录:
/book-to-skill ~/papers/new.pdf ~/.agents/skills/project-knowledge——它走「更新与折叠」流程,只改受影响的章节并重写主SKILL.md,不用整本重来。 - 一个技能喂给全团队:生成的技能文件夹是纯文件,进 git 就是团队知识库;也可以按官方给的路径发到私有 GitHub 仓库,别人一条
npx skills add https://github.com/<你>/<slug> --skill <slug>装上(需要已登录的ghCLI)。 - 按宿主分别校验:
validate_skill.py --lens hermes与--lens copilot各跑一遍,同一份产物可以确认在多个宿主上符合各自的技能规则。
六个小技巧
- 先
--check再选书:抽取器缺哪个格式的依赖,一眼就能看到,比跑到一半失败快得多。 - 技术书用 docling,散文书用 pdftotext:判断标准不是「是不是 PDF」,而是「有没有代码、表格、公式、参数」。
- 把成本预估当刹车:Step 2.5 的预估是免费的;看到预估觉得贵,就说「只分析」,先拿到结构分析再决定。
- 固定工作目录(
BOOK_SKILL_WORKDIR):大书转换中途断了还能续,不然就是重新抽一遍。 - 产物目录名就是调用名:想好 slug 再跑,改名要连目录带索引一起改。
- 拿它当「读书的第一遍」:先让它编译,再用
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:看素材是谁的。第三方版权书生成的技能应当保持私有,公开发布或分享可能侵权;公司自有文档、你自己写的东西、开放许可材料,在许可范围内可以共享。官方一句话说得很直白:转换器是工具,怎么用在你。另外别把「书是公版」当成「衍生技能可以随便发」的理由。
进阶学习建议
- 读
docs/how-it-works.md的 Steps 0–10:那是整条流水线的权威描述(什么条件下换抽取器、每章预算怎么定、产物写到哪里),比 README 细一档;排错时按步骤号定位最快。 - 读仓库根的
SKILL.md(约 55KB):它不是普通说明文档,而是生成器的规范本体——Step 5 的命名规则、Step 7 的预算矩阵、Step 9 的模板、以及质量规则(含禁止抄长段原文那条)都在里面。想改生成风格,改的是它。 - 用
tools/discovery_tax.py在你自己的书上复算一次:python3 tools/discovery_tax.py --full-text /tmp/book_skill_work/full_text.txt --target-chapter 5,把「省了多少」从别人的表格变成你自己书的数字。 - 用
tools/validate_skill.py做宿主合规检查:--lens claude|copilot|amp|hermes|openclaw|opencode六种规则各跑一遍,做多宿主分发前先过这关。 - 读 book-to-skill-use-cases:用户自己写的真实案例(含一个 DevEx 书变成 300+ 工程师问卷的用法、以及一个扫描 PDF 卡住最终变成 PR #130 早期中止修复的故事),比宣传语有用。
- 盯 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,属官方自述或仓库元数据。
参考链接
- 官方仓库 README:定位、产物结构、宿主支持、抽取器矩阵、版权立场
- 简体中文 README:官方中文版(自注同步于 commit 907be50 / 2026-08-31,可能落后 master)
- docs/usage.md:单文件/文件夹/glob/列表四种输入、调用方式、发布到 GitHub
- docs/install.md:七个宿主的目录、
npx skills add、CLI 与技能的差别、未上 PyPI 的说明 - docs/faq.md:与整本上下文、1M 窗口、RAG、NotebookLM 的对比,扫描件处理,训练数据问题
- docs/performance.md:抽取基准、四种书的实测 token 与成本、Discovery Loop Tax 复算方法
- docs/how-it-works.md:Steps 0–10 全流程、抽取模式、章节切分限制
- SKILL.md:生成器规范本体(模式、预算矩阵、质量规则)
- Releases:最新 v1.4.0(2026-08-10)与变更记录
- Agent Skills 开放标准:
SKILL.md格式的规范来源 - skills CLI(skills.sh):
npx skills add的多宿主安装器 - book-to-skill-use-cases:用户案例索引
- ocrmypdf 文档:处理扫描版 PDF 的 OCR 前置步骤
- Calibre 下载页:MOBI / AZW / AZW3 需要其
ebook-convert - GitHub API 仓库元数据:stars / forks / 未关闭 issue / 创建与最近推送时间(本文数据核验于 2026-11-01)
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,000 tokens、技术书约 1,800 tokens 起步;再根据「你打算怎么用这本书」分到参考型与学习型两档。这个设计避免了「一本厚书压成一篇泛泛摘要」的最差结果。
- 速查表被明确要求是决策层,不是术语层。官方在
v1.0.0的对比里给过数字:旧规范下速查表有 9 行关键词与定义、0 条决策规则;新规范下是 32 条决策规则、0 行词条。这个改动方向说明作者理解「拿来用」和「读得懂」的差别。
三、实测数字怎么读
官方 docs/performance.md 有三张关键表,我认为它们是这个项目最可信的部分(都标了复算命令,用 tiktoken 的 cl100k_base 计数):
① 抽取模式的结构代价
| 方法 | 103 页技术 PDF 耗时 | Tokens | 表格 | 代码块 |
|---|---|---|---|---|
| pdftotext | 0.1s | 27K | 0 | 0 |
| Docling | 164s | 27K(+1.2%) | 48 | 36 |
结论很清楚:技术书别省这 164 秒。token 几乎一样,丢的是结构。
② 每本书的生成成本(Claude Sonnet 4.5,$3 / $15 每 MTok)
| 书 | 页数 | 抽取 tokens | 自动识别章节 | 约成本 |
|---|---|---|---|---|
| Think Python 2 | 244 | 119K | 19 | $0.88 |
| Working Backwards | 371 | 175K | 10 | $0.96 |
| Pro Git | 501 | 229K | 未自动切分 | $1.23 |
| Moby-Dick(EPUB) | — | 301K | 未自动切分 | $1.42 |
③ 「Discovery Loop Tax」:回答一个针对性问题的上下文开销
| 书 | 整本塞入 | 探索式检索 | book-to-skill | 对比整本 / 对比检索 |
|---|---|---|---|---|
| Think Python 2 | 119,264 | 12,152 | ~5,000 | 24× / 2.4× |
| Working Backwards | 175,253 | 33,444 | ~5,000 | 35× / 6.7× |
| AI Engineering | 256,287 | 77,866 | ~5,000 | 51× / 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 和一堆依赖。
五、六条边界与风险
- 章节自动切分依赖显式标题:官方文档写明要
Chapter N/Capítulo N这类标题。它自己举的两个反例很扎眼——Pro Git(501 页)和 Moby-Dick 都没有被自动分段。中文书「第 3 章」是否命中,官方未承诺,本站也未实测。 - 不做 OCR,也不抽图里的字:扫描件在抽取开头就被判死,这是刻意设计(避免跑完 400 页才得到空技能),但意味着扫描书必须先过
ocrmypdf。 - 没有 PyPI 包:2026-11-01 实测
pypi.org/simple/book-to-skill/为 404,官方 install 文档也写明 “not on PyPI yet”,只能从 git URL 装或git clone。CLI 与技能是两条不同的安装路径,混淆会得到「装上了但没有斜杠命令」的结果。 - 成本是「每本约 $1」量级,不是零:按 Sonnet 4.5 价目推算,换模型会变。一次转换失败重跑就是再付一次,所以「先分析后生成」这个中间档很值钱。
- 版权边界是硬的:产物是衍生笔记,第三方版权书的技能应当保持私有;发布时
gh repo create默认--private,「书是公版」不构成公开仓库的授权。 - 年轻项目 + 单人维护: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 增量补,不必整本重编。
七、结论
它是一个机制清晰、数字可复算、边界也写得诚实的项目:把「读过的书」变成「随时可加载的结构」,代价是一次性生成成本与几个明确的前提(章节标题规整、非扫描件、有对应抽取器)。真正要判断的只有一件事——你手上的资料是「反复查」还是「看一遍」;前者值得编译,后者直接丢上下文就行。
逐维度评分与理由、标签依据、以及本次未验证的范围,见本站该条目的独立评分文件。
参考资料
- 官方仓库 README
- docs/how-it-works.md(Steps 0–10 与章节切分限制)
- docs/performance.md(抽取基准、成本表、Discovery Loop Tax)
- docs/install.md(七宿主路径、CLI 与技能的区别、未上 PyPI)
- docs/faq.md(与 1M 窗口、RAG、NotebookLM 的分工)
- docs/usage.md(输入形态、调用方式、发布到 GitHub)
- Releases(v1.4.0 / 2026-08-10)
- Agent Skills 开放标准
- GitHub API 仓库元数据(36,664 stars / 3,882 forks / 23 open issues,核验于 2026-11-01)
📊 评分与标签
核验口径:已按现行口径通过,待按新证据契约复核
评分说明
总分 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 URLpip install。逐宿主写清目录:跨宿主~/.agents/skills、Claude Code~/.claude/skills、Copilot CLI~/.copilot/skills、Hermes${HERMES_HOME}/skills/<category>、OpenClaw 活动 state、OpenCode~/.config/opencode/skills。- 来源:docs/install.md。
- 扣分点有三处,都不是致命但会真实卡人:① 不在 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 进已有技能,等于给了知识库一个增量更新路径。质量规则明确禁止抄长段原文,产物是结构化衍生笔记而非复制。
- 来源:SKILL.md。
- 扣分点是场景边界:它不擅长「在几十本书里找出谁提过 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 创建,半年内到这个量级,属高速增长。
- 来源:GitHub API。
- 协作设施齐全: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 页,已改为项目仓库地址。