
大家好,我是 Ai 学习的老章
买技术书的人分两种:一种买完就啃,啃完就忘;另一种买完就忘,省了啃的步骤。我属于第一种,但结果差不多——三个月后问我第七章讲了什么,我只记得"好像挺重要的"。
做笔记?做过。200 行 Markdown 存在 Obsidian 里,从此再没打开。丢给 Claude?它要么编一个不存在的章节标题,要么老实承认"我没有这本书的内容"。
今天聊一个思路完全不同的开源工具:book-to-skill——把技术书"编译"成 Claude Code 的 skill,装进你的日常工作流。
我简单玩了一下,给团队没有顶级模型的小伙伴开了一个前端
我感觉这个项目的潜力还不是市面上公开的书籍
而是工作中常用的手册、内部文档、产品说明书等,把这些变成Skills才算发挥最大价值

给它一本 PDF 或 EPUB,它在 ~/.claude/skills/<slug>/ 下生成一套结构化文件。之后在 Claude Code 里打 /designing-data-intensive-apps replication,Claude 就去读对应的章节文件,用书里的框架来回答——不是凭训练数据猜,是真的有据可查。
生成的文件长这样:
文件 | 内容 | 大小 |
|---|---|---|
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 |
重点在按需加载四个字。一本 400 页的技术书大约 200K tokens,全丢进上下文,每次对话都在烧钱。book-to-skill 平时只加载 SKILL.md 那 4000 tokens 的核心框架,你问到某个具体话题,它再去读对应的章节文件。
直接把 PDF 丢给 Claude,做的是检索——在原文里匹配关键词,告诉你"第 117 页到 135 页提到了 replication"。
book-to-skill 做的是提取——在编译阶段就把作者花几年构建的框架、命名、心智模型、反模式抽出来,整理成结构化格式。
日常使用里感受很明显:你问"分布式系统怎么做数据复制",拿到的是"这本书里有 3 种复制模型,分别适用于什么场景",而不是一堆页码。
RAG 在查询时工作:切片、向量化、相似度搜索、注入 prompt。它擅长"在 50 本书里找到和我的问题最接近的段落"。
book-to-skill 在编译时工作:一次深度分析,把整本书的框架提取出来,记下每个框架的名字、适用条件、反模式。
两件事解决的问题不一样。跨多本书搜索,RAG 更合适;跨多本书的图书馆搜索,NotebookLM 是更好的选择。深入一本书,在日常编程中随时调用书里的框架,book-to-skill 更合适。
book-to-skill 解决的是**"一本书的作者坐在你旁边陪你写代码"**。
整个工具就两个文件:SKILL.md(skill 定义,约 530 行)和 scripts/extract.py(文本提取脚本,约 830 行)。
文本提取支持的格式很全:PDF、EPUB、DOCX、TXT、Markdown、reStructuredText、AsciiDoc、HTML、RTF、MOBI/AZW/AZW3。
PDF 提取分两个模式:
官方给了一个 103 页技术书的对比数据:
方法 | 耗时 | Token 数 | 表格数 | 代码块数 |
|---|---|---|---|---|
pdftotext | 0.1s | 27K | 0 | 0 |
Docling | 164s | 27K (+1.2%) | 48 | 36 |
Token 数差不多,但 Docling 保留了 48 个表格和 36 个代码块的结构。技术书里表格和代码是核心信息载体,丢了就废了大半,所以技术类书籍走 Docling 是值得的。
编译阶段的流程:
文档文件
│
▼
用户选择:技术书 or 纯文字书
│
├── 技术 → Docling (保留表格和代码)
└── 文字 → pdftotext 降级链 (快速)
│
▼
extract.py 输出全文 + metadata
│
▼
Claude 分析结构(标题、作者、章节、目录)
│
▼
逐章生成摘要(每章 800–1,200 tokens)
技术书额外保留代码示例和参考表格
│
▼
生成 glossary + patterns + cheatsheet
│
▼
生成 SKILL.md(核心框架 + 章节索引)
│
▼
~/.claude/skills/<slug>/ 写入完成
有一个设计细节值得单独拎出来讲:对于大于 50K tokens 的书(大约 130 页以上),它不会一次性把全文读进上下文,而是用 grep + sed 按章节切片读取,只加载正在处理的那一章。
为什么这个设计很关键?一本 200 页的书大约 75K tokens,如果每章都重新读全文(比如 28 章),输入 token 就烧到了 2M。按章节切片后,成本和输出成正比,而不是和源文件大小成正比。同样的活,省了一个数量级的钱
mkdir -p ~/.claude/skills/book-to-skill/scripts
curl -o ~/.claude/skills/book-to-skill/SKILL.md \
https://raw。githubusercontent。com/virgiliojr94/book-to-skill/master/SKILL.md
curl -o ~/.claude/skills/book-to-skill/scripts/extract.py \
https://raw。githubusercontent。com/virgiliojr94/book-to-skill/master/scripts/extract.py
或者在 Claude Code 里直接说:
Install book-to-skill: https://raw。githubusercontent。com/virgiliojr94/book-to-skill/master/SKILL.md
装好之后:
# PDF,自动从文件名推导 skill 名
/book-to-skill ~/Downloads/designing-data-intensive-applications.pdf
# EPUB,指定自定义名称
/book-to-skill ~/books/clean-code.epub clean-code
# 指定完整路径和名称
/book-to-skill /tmp/ddd-evans.pdf domain-driven-design
编译完成后,像普通 skill 一样用:
/designing-data-intensive-apps # 加载核心框架
/designing-data-intensive-apps replication # 查某个话题
/designing-data-intensive-apps ch05 # 直接看第 5 章
PDF 提取的依赖:纯文字书装 pdftotext(poppler-utils)就够了,技术书需要 pip3 install docling。EPUB 推荐装 pip3 install ebooklib beautifulsoup4,不装也能跑。
翻了它的 SKILL.md,有几条值得抄走:
密度优于完整性。1,000 tokens 的提炼摘要比 10,000 tokens 的原文摘抄有用得多。这和我平时的体感一致——给 Claude 喂太多原文,它反而抓不住重点。
从业者视角。生成的内容写"当 X 时用 Y",而不是"本书第三章介绍了 Y 概念"。前者能直接拿来用,后者还得自己转化一遍。
前置加载 SKILL.md。Claude Code 的上下文压缩会从末尾开始砍,所以最重要的内容放在最前面。这个细节说明作者是真正用过 Claude Code 的人。
永不复制原文。所有章节文件都是提炼后的结果,不是复制粘贴。既尊重版权,也保证了信息密度。
编译前它还会给出 token 成本预估——输入输出 token 数和预估花费,让你先看价再决定。大部头技术书编译一次可能花几美元,但之后每次使用只消耗几千 token,长线来看很划算。
适合用的场景:
不太适合的场景:
要泼一盆冷水的话:这个工具的天花板取决于 Claude 的提取质量。如果一本书的逻辑链条特别深、上下文依赖特别强,1000 tokens 的章节摘要不一定能兜住。但对大多数"框架型"技术书——讲模式、讲原则、讲决策树的那种——效果是很好的。
book-to-skill 做的事不复杂:提取技术书的核心结构,按章节拆分,装进 Claude Code 的 skill 体系。但这个思路比"把 PDF 丢进上下文"精细得多——编译一次,按需加载,token 消耗可控,回答质量也更稳定。
两个文件,1300 行代码,2300+ star。你手边那本翻过就忘的技术书,可以试试让它活在你的终端里。
GitHub 址:/virgiliojr94/book-to-skill
#book-to-skill #ClaudeCode #Skills #技术书 #开源