# Book Abridged Edition

> 原书简读版：把一本已 ingest 的大部头压成能读完的结构化简读稿 + 单文件标注阅读器 + 读书笔记导出。 口令：「做一版简读版」「原书简读版」「压成能读完的版本」「/abridged」。 产出在 图书馆/<分类>/<slug>/v<版本>-原书简读版/。 与 book-learn-distill 的区别：那条线做 Skill 和知识图谱，这条线做「能从头读到尾的书」。

- Skill: `muqian2026-rgb/book-abridged-edition` (Agent Skill, multi-file: 10 files)
- Install (CLI): `npx skillmds@latest add muqian2026-rgb/book-abridged-edition`
- Raw SKILL.md: https://api.skillmd.com/api/skills/muqian2026-rgb/book-abridged-edition/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: muqian2026-rgb (https://skillmd.com/u/muqian2026-rgb)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/muqian2026-rgb/book-abridged-edition

---


# 原书简读版 · Book → 可读完的结构化简读稿

> **上游**：[book-learn-distill](../book-learn-distill/SKILL.md) 已把原文放进 `图书馆/<分类>/<slug>/原文/`
> **产出目录**：`图书馆/<分类>/<slug>/v<版本>-原书简读版/`
> **首个成品**：`图书馆/<slug>/v2.0-原书简读版/`（20 章 · 16.9 万字 · 单文件阅读器）

## 何时启动

- 「做一版简读版」「原书简读版」「把这本压成能读完的」「/abridged <slug>」
- 原书太长读不完，但**不接受观点卡片**——要的是原书的精简，不是外部科普
- 已有知识图谱，仍然缺一个能从头读到尾的正文版本

## 不适用

- 只想要几页要义 → 走 `learn` 子 skill 的 2–3 小时要义课
- 只想要方法论调用 → 走 `book-learn-distill` 的 Skill 抽象
- 原文尚未 ingest → 先走 `docling-ingest`

---

## 两条铁律

**一、结构从书里读出来，不套模板。**

每本书有自己的叙述逻辑。哲学史按"时代 → 问题 → 理论 → 人物"走，方法论书按"问题 →
框架 → 步骤 → 案例"走，论证型专著按"论题 → 论证 → 反驳 → 结论"走。
拿哲学史的骨架去套一本方法论书，会把书拆坏——段名对不上内容，压缩时只能硬填。

所以阶段 1 先摸结构，把章节骨架写进 `abridged.json` 的 `chapterSections`，
后面的并行任务和验收脚本都以它为准。**脚本里没有写死任何段名。**

**二、先机械拆章，再逐章压缩。**

把整本书交给一个任务去"按时代整理"，会静默失败：任务不报错、不写文件，只是卡住。
西方哲学史 162 万字节、20 章，第一次按五个时代切五个并行任务，全部空转。
改成先切 20 个章文件、再一章一压，一次通过。

拆分是机械动作，必须用脚本，不能让模型"读一遍再分"。

---

## 七阶段

| 阶段 | 动作 | 产出 | 门禁 |
|------|------|------|------|
| 0 定版 | 定版本号、命名、保留比例 | `meta.json` | **确认版本名与信息量** |
| 1 读结构 | 摸清原书自己的叙述逻辑 | `abridged.json` 的 `narrative` + `chapterSections` | **确认骨架** |
| 2 拆章 | `split-chapters.py` 机械切分 | 临时 `章节原文/` | 章数与原书目录一致 |
| 3 压缩 | 每 1–2 章一个并行任务 | `章节/NN-*.md` | 骨架段名齐全 |
| 3.5 扳正 | `normalize-headings.py` | 层级与段名归一 | 先预演再 `--write` |
| 4 导航 | 每个分组一页导航 | `10/20/30/…-*.md` | 只导航不重复正文 |
| 5 收口 | 导读目录 + 全书总结 | `00-*.md`、`60-*.md` | 目录链接可跳 |
| 6 成品 | `build-reader.py` | 单文件阅读器 HTML | 占位符全部替换 |
| 7 验收 | `qa-abridged.py` | 通过即定稿 | **11 项硬门禁全绿** |

```bash
SKILL=${CLAUDE_SKILL_DIR}
BOOK=图书馆/<分类>/<slug>
V=$BOOK/v2.0-原书简读版

# 2 拆章（--expect 卡住漏切）
python3 $SKILL/scripts/split-chapters.py "$BOOK/原文/<原文>.md" /tmp/<slug>-章节原文 --expect 20

# 3.5 扳正层级与段名（先看预演，再 --write）
python3 $SKILL/scripts/normalize-headings.py "$V"

# 6 编译阅读器
python3 $SKILL/scripts/build-reader.py "$V"

# 7 验收
python3 $SKILL/scripts/qa-abridged.py "$V" --source "$BOOK/原文/<原文>.md"
```

---

## 阶段细则

### 0 定版

版本号接在 book-learn-distill 的产出之后：原文与图谱是 v1.x，简读版从 **v2.0** 起。
写 `abridged.json`（字段见 [references/pipeline.md](references/pipeline.md)），同时在 `meta.json` 记 `targetInformationRetention`。

**默认保留原章约 50% 有效信息。** 这是"删重复表述和枝节"，不是"抽成提纲"。
判据：未读原书的人能读懂论证，而不是只认识人名。

### 1 读结构

**不要跳过这一步，也不要凭书名猜。** 先读原书的目录、序言、任意两章正文，回答三个问题：

1. 全书按什么推进？时间、问题、框架层级、论证步骤，还是案例序列？
2. 每一章内部的固定动作是什么？把三章对照着看，重复出现的才是骨架。
3. 章之上还有没有分组（部/篇/时代/阶段）？有则作为 `groups`，没有就按章分组。

结构原型与推导方法见 [references/chapter-template.md](references/chapter-template.md)。
定下来后写进 `abridged.json`。以西方哲学史为例——**这是那本书的答案，不是默认值**：

```jsonc
"narrative": "按时代正序推进；每章内部是问题—理论—人物",
"chapterSections": ["本章定位", "关键问题", "理论应对", "代表人物", "本章小结", "主要问题"]
```

**这一步要人确认。** 骨架一旦开压就很难改，20 章返工的代价远大于先聊清楚。

### 2 拆章

先用 `rg '^##\s+第' <原文>` 确认章标题层级，再决定 `--pattern`。
西方哲学史的坑：正文用 `## 第1章`（阿拉伯数字），书末参考文献用 `第一章`（中文数字）。
按中文数字匹配会切出 0 章。**匹配到 0 章或章数不符时不要往下走。**

### 3 压缩 · 按本书骨架逐章写

```
# 第N章 <章名>          ← 必须一级标题，这条与书无关
## <chapterSections[0]>
## <chapterSections[1]>
## …
```

段名用阶段 1 定的那套，顺序一致、不增不减。哲学史那套只是其中一个实例。

并行粒度**按源文字数切，不按篇数切**：一个任务 1 万汉字上下、最多 2 章。
共用的编写规范写成文件放在简读版目录下，任务提示只说「先读规范 + 读哪个 + 写哪个 +
源文多少字、目标多少字」。提示越短越不容易跑飞——毛选那次把完整规范塞进提示、
一次派 5 篇，跑了 8 分半一个文件没落盘。详见 [references/pipeline.md](references/pipeline.md)。

**这三条一定会被违反，别指望任务自觉。** 首版 20 章的实际情况：8 章主标题写成 `##`
（HTML 全显示"未命名章节"）、4 章整体层级下移一级、10 章段名夹带写作指令
（"理论应对（沿原书小节完整展开）""主要问题 list"）、3 处人物条目从 `##` 直跳 `####`。
所以下一步是机械扳正，不是人工逐章改。

### 3.5 扳正 · 层级与段名归一

```bash
python3 $SKILL/scripts/normalize-headings.py "$V"          # 预演，只报不改
python3 $SKILL/scripts/normalize-headings.py "$V" --write  # 确认后执行
```

它做四件纯机械的事，不碰正文一个字：把段名还原成 `chapterSections` 的写法、
按标题的**嵌套深度**重排层级（用栈算深度，跳级自然消失且同级兄弟仍同级）、
把分组导航页的段名对齐 `guideSections`、给指向章节的相对链接补上 `章节/` 前缀。

导航页是**按位置**对齐的：「关键问题」与「本时代关键问题」、「三、理论应对与接续」
与「理论应对的接续」彼此既非子串也无共同词根，只能靠顺序。所以段数对不上时它拒绝改，
直接报出来。同理，导读与全书总结不受 `guideSections` 约束——它们收的是全书，各有各的结构。

修完若某章的二级段名仍对不上骨架，它也会**跳过并报出来**——那是内容缺段，得回去补写。

### 4 导航 · 每个分组一页

导航页只做四件事：本组的推进线索、本组要处理的核心问题、内部如何接续、条目索引 + 逐章入口。
**不复制正文**，控制在 6000–11000 字节。分组的性质随书而变：时代、部、阶段、主题都可以。

### 5 收口

- `00-导读与目录.md`：这是什么版本、全书主线、贯穿全书的问题线、完整目录、建议读法
- `60-全书总结与主要问题.md`：概述、各分组之间如何接续、问题线、主要问题 list、**原书边界**

原书边界这一节别省：它写清楚原书省略了什么、选材如何不均衡、不能直接当引证来源。

### 6 成品 · 单文件阅读器

`build-reader.py` 套 `templates/reader-template.html`，产出离线可用的单文件 HTML。
能力清单与标注设计见 [references/reader-html.md](references/reader-html.md)：

- 分组 / 章节目录、全文搜索、阅读进度、明暗主题、字号、续读记忆
- 四色语义标注：黄=重点 蓝=概念/观点 红=疑问/不同意 绿=启发/关联
- 批注、章节总结、完成勾选、标注 JSON 备份与恢复
- 一键导出结构化读书笔记 Markdown

**可选脑图**：放 `片段/00-导读与目录.html`，编译时自动追加到该篇末尾。
脑图要画出**分组之间的因果**（前一步留下什么缺口 → 下一步为何出现），不是几张并列卡片。

### 7 验收

`qa-abridged.py` 十一关，每一关都对应一次真实返工：

**Markdown**
1. 主标题是 `# ` 且只有一个
2. 二级段名与 `chapterSections` **逐字一致、顺序一致**（旧版用子串匹配，`###` 也算通过，放行了 6 章）；
   分组导航页同样按 `guideSections` 校验——首版 5 个导航页写出了 3 种段名
3. 标题不跳级，且每个标题下有正文或更深小节
4. 无 TODO / 待补充 / 未命名 这类占位残留
5. 相对链接指向真实存在的文件
6. 篇幅在区间内：导航页不膨胀成第二份正文，章节没被压成提纲
7. 原书每个编号小节都出现（需 `--source`）

**HTML**
8. 无模板占位符、无占位文字、无重复篇 id
9. 目录与正文条目一一对应，目录名与正文标题一致
10. 站内锚点都能跳到存在的篇，不残留 `.md` 死链
11. 脑图片段的分组标题够短，不在卡片里折行

阈值可在 `abridged.json` 的 `qaLimits` 里按书调整。

**改了任何 Markdown 主标题，必须重新 `build-reader.py`**，否则左侧目录仍是旧标签——
首版就是只改了正文、忘了目录，"未命名章节"看上去像没修好。

QA 的取舍：**只收纯占位词**。「同上」「见上文」这类曾被列为占位残留，结果把
"人同上帝的关系"判成了问题——门禁一旦开始误报，就会被当噪音忽略，等于没有门禁。

---

## 交付物

| 文件 | 说明 |
|------|------|
| `章节/NN-*.md` | 逐章简读正文，全书主体 |
| `<数字>-<分组名>.md` | 分组导航页（时代 / 部 / 阶段 / 主题，随书而定） |
| `00-导读与目录.md` / `60-全书总结与主要问题.md` | 入口与收口 |
| `abridged.json` | 本书骨架 + 装配说明，编译与验收都读它 |
| `<slug>-v<版本>-原书简读版.html` | 单文件阅读器成品 |
| `<书名>-v<版本>-读书笔记.md` | 读完后由阅读器导出，放书籍根目录 |

---

## 约束

- 简读版是**原书的精简**：不引入原书没有的事实与判断，不用模型自身知识替换原文
- 保留论证链、概念差异、人物关系与必要例子；被删的是重复表述和枝节
- 不改动 `原文/`、`knowledge-graph.html` 和 `skills/<slug>/`
- 读书笔记由使用者读完后导出，Agent 不代写个人批注

