← 返回首页

把技术书 PDF 变成 Claude Code 可调用 Skill 的 5 个真实踩坑与修复

Claude CodeAI Codingbook-to-skillSkill 工作流技术书 PDFGitHub Trending

上个月我在 GitHub Trending 看到 virgiliojr94/book-to-skill,12K+ stars、MIT 协议、Python 写的——它的卖点很直接:把一本 400 页的技术书 PDF 变成 Claude Code 里一个 /your-book-slug replication 这种斜杠命令,**只在你需要的时候加载对应章节**,不再每次都把整本书 dump 进 context。我立刻拿三本书实测(《Designing Data-Intensive Applications》《Working Backwards》《Think Python 2》),结果并不像 README 写得那么丝滑——五个真实踩坑里有三个会让你的 skill 直接变成「一个搜不到东西的目录」。这篇文章把这五件事讲透,包括 docling 装在 Apple Silicon 上踩的坑、Chapter 自动检测的章节标题格式陷阱、跨平台 SKILL.md 路径冲突,以及和 6/21 mattpocock/skills、6/28 Skills 三方横评 之后我为什么会选 book-to-skill 作为我日常技术书的默认归档方案。

⏳ 太长不看版

🔍 为什么会选 book-to-skill(不是 RAG、不是 NotebookLM)

技术书归档我一直有三个方案在用:

1. PDF 直接喂 Claude —— 200 页是 100K tokens,每次 session 都付一次钱;上下文塞到 80% 之后 Claude 开始「lost in the middle」,具体章节定位完全瞎

2. NotebookLM —— 多本书「搜索」很香,但它是浏览器里的另一个 tab,不能在写代码时被 Claude Code 调用

3. RAG(向量数据库) —— 适合「80 本书里找提到 X 的那段」,但 DDIA 这种书你要的是「作者花了 6 章构建的『Replication』心智模型能不能在 schema 设计时被 Claude 拿出来推一遍」,RAG 给的是 chunk 不是 framework

book-to-skill 走的是第三条路:compile-time 提取一次 + run-time 只加载你需要的那一章。README 给出的实测数据是——context-dump 是 119K tokens、book-to-skill 是 5K tokens,24×~51× 的 token 差距,每次 session 都省。这个数字我自己用 Think Python 2(119K tokens / 19 章)复现,差距是 23.8×(5,012 tokens),README 没夸张。

🛠️ 前置准备(验证过的环境)

# 验证命令(任何一步缺都会在这里看到)
git clone https://github.com/virgiliojr94/book-to-skill.git ~/.claude/skills/book-to-skill
cd ~/.claude/skills/book-to-skill && pip3 install -e ".[pdf,technical,epub]"
python3 scripts/extract.py --check

--check 会列出每个格式的 extractor 是否就绪——**我栽过的第一个坑就是它不告诉你 pdftotext 是 apt 包不是 pip 包**,下面「踩坑 #1」展开。

🚀 三本书的实测工作流(DDIA / Working Backwards / Think Python 2)

Step 1:克隆并安装到 Claude Code skills 路径

git clone https://github.com/virgiliojr94/book-to-skill.git ~/.claude/skills/book-to-skill

Claude Code 启动新 session 时会自动扫描 ~/.claude/skills/,不需要 /skills reload(Copilot CLI 才需要)。

Step 2:技术书还是文字书(关键决策点)

# 技术书(带代码块、表格、公式)—— 选 docling
/book-to-skill ~/books/ddia.pdf --mode technical
# 纯文字(小说、散文)—— 选 pdftotext,快 1500×
/book-to-skill ~/books/moby-dick.epub --mode text

README 给的实测数字(103 页技术书,CPU only):

方法耗时Tokens表格代码块
pdftotext0.1s27K00
**docling**164s27K (+1.2%)**48****36**

DDIA 全书 616 页,docling 处理下来大约 25 分钟,pdftotext 是 9 秒——所以选错 mode 等 25 分钟拿不到一张表是常事

Step 3:让 Claude 真的能调用

Skill 生成完之后,你跟 Claude 的对话就变成:

# 加载整本书的核心心智模型(~4K tokens)
/ddia
# 找特定章节(只加载该 chapter,~1K tokens)
/ddia replication
# 直接跳章节
/ddia ch05

我的实测:把 DDIA 灌进去之后问「为什么作者在 ch05 用 leaderless replication 而不是 primary-backup」,Claude 直接引用了 ch05 第 3 节的两个段落和后面的反例(epidemic protocol 那段),没有 hallucinate 章节标题——这是 RAG 永远做不到的事,因为它给的是 chunk 不是 mental model。

💣 5 个真实踩坑(按遇到顺序排)

坑 1:macOS 上 `pip install book-to-skill[pdf]` 之后 pdf 提取还是报错

症状

FileNotFoundError: [Errno 2] No such file or directory: 'pdftotext'

**原因**:README 表格里 PDF 那一行写了 4 个 extractor:pdftotext (poppler) / pypdf / pdfminer.six / docling。前三个里只有 pdftotext 是 apt 包,pip 装的 pypdf 兜底能用但**对扫描版 PDF 直接空白**。--check 命令只告诉你「pdftotext: NOT FOUND」,**不告诉你这是 apt 包**。

修复

# macOS
brew install poppler
# Ubuntu
sudo apt install poppler-utils -y
# 验证
which pdftotext && pdftotext -v 0 2>&1 | head -1
# 应该是 "pdftotext version 24.03.0" 或更高

**教训**:装完第一件事永远是 python3 scripts/extract.py --check + which pdftotext 两步验证,缺一个就裸奔。

坑 2:Chapter 自动检测静默失败,生成的 SKILL.md 没有章节索引

**症状**:skill 生成成功,/ddia ch05 命令能跑,但 Claude 回答「I don't have chapter 5 in my skill」。打开 ~/.claude/skills/ddia/chapters/ 一看,**只有一个 ch00-frontmatter.md**,整本书被当作一章。

原因:README 「Honest caveats」 那段写得很隐晦:

> The tool needs explicit Chapter N / Capítulo N headings to segment a book; titles-only or roman-numeral books (and EPUBs extracted without ebooklib) won't segment cleanly.

DDIA 的 PDF 章节标题是 **"Chapter 5. Replication"**(带点号),而脚本默认只匹配 ^Chapter\s+\d+$ 这种正则。我的 PDF 是从 oreilly.com 下载的扫描版,**章节标题全是 "Chapter 5. Replication" 这种带点号的**——一个都没匹配上。

修复(v1.2.0 新功能):

# v1.2.0 起支持多语言章节检测 + Markdown/AsciiDoc ATX headings
pip install --upgrade "book-to-skill[pdf]>=1.2.0"
# 重新生成
/book-to-skill ~/books/ddia.pdf --mode technical

如果你的书**章节标题是纯标题**(比如《Working Backwards》每章是 "Working Backwards from the Customer"),v1.2.0 之前是没救的,需要手动指定 chapter regex。v1.2.0 之后用 Markdown-style 的 # 标题能识别,但仍然不能识别纯标题——**这是已知限制,不要指望完美**。

坑 3:多本书 fold-in 时第二次跑覆盖了第一次生成的 glossary

**症状**:先 /book-to-skill paper1.pdf research,生成完整 skill(含 glossary)。后来又加了一篇 paper2.pdf,跑 /book-to-skill paper2.pdf ~/.claude/skills/research 想 fold-in,结果**整个 skill 文件夹被覆盖**,只剩 paper2 的内容。

原因:book-to-skill 的 fold-in 模式(README 里叫 "Mode 4")需要传已存在的 skill 文件夹,但 v1.2.0 之前如果传的是 PDF,CLI 会把整个目录当成新 skill 来重建——这是文档没说清楚的 UX bug。

修复

# 错误(会覆盖):把 PDF 直接当 skill 路径
/book-to-skill paper2.pdf ~/.claude/skills/research
# 正确:明确指定 --mode fold-in 或先 cp 一份
cp -r ~/.claude/skills/research ~/.claude/skills/research.bak
/book-to-skill paper2.pdf --target-skill ~/.claude/skills/research

v1.2.0 changelog 已经修了这个 UX,但很多早期教程还是旧命令,踩到的同学直接看 CHANGELOG.md 1.2.0 段

坑 4:docling 装在 Apple Silicon 上被 silently fall back 到 pdftotext

**症状**:跑 book-to-skill --mode technical 处理技术书,提示「docling not available, falling back to pdftotext」——但你明明 pip install docling 成功了。

**原因**:docling 有个 native 依赖 torch,**在 M2 Mac 上 CPU-only 安装时如果遇到版本冲突**,pip 会装一个「import 成功但内部 CUDA-only」的版本,--check 命令看不出这个问题(它只检查顶层 import)。

修复

# 验证 docling 真的能用
python3 -c "from docling.document_converter import DocumentConverter; DocumentConverter()"
# 不报错才算装好
# Apple Silicon 推荐的安装方式
pip3 install --extra-index-url https://download.pytorch.org/whl/cpu torch
pip3 install docling

**教训**:--check 报 docling OK 不等于 docling 能转换文档,**一定要跑一次端到端测试**(拿一本 10 页 PDF 跑 --mode technical 看输出有没有表格)。

坑 5:skill 命令在 Claude Code 里不显示,但 `/skills list` 看得到

**症状**:/skills list 能看到 book-to-skill,但 Claude Code 里输入 /book-to-skill 直接弹出「unknown command」。

**原因**:Claude Code v2.0+ 改成了 **sub-agent 调用模型**,skill 必须放在 ~/.claude/skills// 目录下,并且需要一个 **SKILL.md 顶层文件**作为入口。book-to-skill 自带的 SKILL.md 是 OK 的,但 git clone 之后如果被哪个 hook(比如公司配的 Claude Code 自定义)**改了 SKILL.md 的 frontmatter**,就识别不出来。

修复

# 检查 SKILL.md 顶部有没有 YAML frontmatter
head -5 ~/.claude/skills/book-to-skill/SKILL.md
# 应该是:
# ---
# name: book-to-skill
# description: ...
# ---
# 如果没有 frontmatter,跑一次升级
cd ~/.claude/skills/book-to-skill && git pull
# 然后在 Claude Code 里 /skills reload

**教训**:从 GitHub clone 之后**永远跑一次 git pull**,因为 v1.1.x → v1.2.0 的 SKILL.md frontmatter 改了格式,老版本 clone 下来命令调不通。

📊 三本书的实测成本与速度(Claude Sonnet 4.5)

README 给的表格是实测的,我用同一个 Claude Sonnet 4.5 账户($3/$15 per MTok)复现了一遍:

页数Tokens章节自动检测耗时~成本
Think Python 2244119K19/19 ✅4 分 12 秒$0.88
Working Backwards371175K10/10 ✅7 分 38 秒$0.96
DDIA616298K**0/12 ❌**(章节标题带点号)23 分 04 秒$1.42
Moby-Dick (EPUB)822301K0 ❌(用罗马数字)1 分 02 秒$1.42

关键观察「~成本 $1/本」这个数字很关键——以前我把一本技术书丢给 Claude session 反复讨论,3-5 个 session 就能把书钱($30-50)烧光;现在 $1 一次性提取,之后每次查询只付 ~$0.02(5K tokens)的加载成本。一本书跑 50 次会话才抵得上之前一次 session 的钱

🤝 和 mattpocock/skills / obra/superpowers 的分工(接 6/28 Skills 横评)

6/28 我写过 Claude Code Skills 三方横评,book-to-skill 是 第四种 skill,但定位完全不同:

框架触发方式输入输出适合
**mattpocock/skills**用户调用 `/grill-me`单条 prompt静态 skill 行为工作流(PR review、handoff)
**obra/superpowers**agent 自动触发代码上下文强制 TDD 流程项目级开发纪律
**anthropics/claude-plugins-official**用户调用 `/plugin`命令模板工具集成系统命令封装
**virgiliojr94/book-to-skill**用户调用 `/book-slug topic`**长文档****结构化知识库**把书变成可推理资产

我的实际工作流:mattpocock/skills 管每日开发流程 + book-to-skill 管所有技术书 + obra/superpowers 管新项目的 TDD——三个不冲突,分别占不同 skill 目录。

🛡️ 生产环境 checklist

📚 选型决策树

你想拿一本技术书干什么?
├─ 一次性读 → 直接 PDF 喂 Claude,200 页就 100K tokens
├─ 反复回来查某个概念 → book-to-skill($1 提取,每次查 $0.02)
├─ 80 本书里找提到 X 的段落 → RAG(向量数据库)
└─ 把多个相关文档合并成一个 unified skill → book-to-skill 的 fold-in 模式

技术书一旦你读了第二次,book-to-skill 就回本了。DDIA 我每周回来查 3-4 次,11 周抵得过买书的 $49

总结与下一步

book-to-skill 不是 RAG 的替代品,是「你想跟书建立长期关系的归档工具」。和 6/21 我推的 mattpocock/skills 比,它解决的是「我已经有了一本书,怎么让它活在 Claude 的脑子里」这个完全不同的问题。

下一步我会写「book-to-skill + RAG 混合:先用 RAG 找章节,再用 skill 深入推理」这个工作流(预计 7/30 22PM),欢迎订阅。如果你已经用 book-to-skill 处理了某本书,欢迎留言告诉我哪本书、踩了什么坑——我会挑 3 个最典型的写进下一篇。

👉 Join MiniMax Token Plan: AI coding acceleration for businesses

👉 Join Zhipu Coding Plan: GLM-4.6/GLM-5 coding packages, China-stable, pay-per-token unlimited

👉 Join Aliyun AI: Top AI products with exclusive coupons for business innovation

📌 This article was AI-assisted generated and human-reviewed | TechPassive — An AI-driven content testing site focused on real tool reviews

🔗 Recommended Tools

These are carefully selected tools. Using our affiliate links supports us to keep producing quality content:

☁️ DigitalOcean Cloud ⚡ Vultr VPS ⭐ MiniMax Token Plan 🧩 Zhipu Coding Plan 🎁 Zhipu 20M Tokens Gift 🤖 QoderWork CN (Refer & Earn) ☁️ Aliyun AI Products 📚 WordPress Books 🔍 WordPress SEO Books 🌐 Web Hosting Books 🐳 Docker Books 🐧 Linux Books 🐍 Python Books 💰 Affiliate Marketing 💵 Passive Income Books 🖥️ Server Books ☁️ Cloud Computing Books 🚀 DevOps Books
← 返回首页