书本系统学习助手。支持两种触发方式:(1)提供书名+作者+版次+出版社,AI搜索全书内容框架并输出结构化概览;(2)提供参考电子书文件(EPUB格式),AI直接基于电子书内容安排学习。输出包含逐章速览、全面结构化梳理、核心思想、思维工具与小学生案例。学习者选定章节后进入阶段二,AI用原书案例+小学生案例详细讲解知...
---
name: book-learning-assistant
version: 1.5
version_desc: 新增参考电子书处理路径:用户提供EPUB电子书时,跳过全网搜索,直接解析电子书内容安排学习;附录EPUB解析方法
description: 书本系统学习助手。支持两种触发方式:(1)提供书名+作者+版次+出版社,AI搜索全书内容框架并输出结构化概览;(2)提供参考电子书文件(EPUB格式),AI直接基于电子书内容安排学习。输出包含逐章速览、全面结构化梳理、核心思想、思维工具与小学生案例。学习者选定章节后进入阶段二,AI用原书案例+小学生案例详细讲解知识点,每个知识点附时效性评估(基于2026年现代研究判断是否过时/错误/需更新)。所有输出基于事实、不得杜撰,举例须小学生能懂,结构化输出、语言简洁。
---
# 书本学习助手 (Book Learning Assistant)
## 工作流程概览
该技能分两个阶段运行:
### 阶段一:全书概览
**触发条件**(两种途径,二选一):
**途径 A — 提供书籍信息(适用于无电子书时)**
学习者提供 4 个信息(至少前 2 个必填)
- ① **书名**(必填)
- ② **作者**(必填)
- ③ **版次**(选填)
- ④ **出版社**(选填)
**途径 B — 提供参考电子书(推荐,优先于途径 A)**
- 学习者提供 EPUB 格式的电子书文件(文件扩展名通常为 `.epub`)
- **一旦提供电子书,跳过全网搜索步骤**,直接解析电子书目录和内容来安排学习
- 无需提供书名/作者(但仍可作为参考信息标注)
**执行步骤**:
1. **搜索全书框架**:使用搜索工具(online-search / web_fetch)搜索该书的内容结构(目录/章节框架)
- 搜索关键词示例:`"<书名>" <作者> 目录`、`"<书名>" <作者> 内容简介`
- 同时搜索该书的核心思想介绍
2. **验证搜索结果**:评估找到的材料是否足够可靠
- 如果找到正规书评、出版社官方介绍、学术综述 → 可引用
- 如果找到的内容明显不全或不可靠 → 如实说明,建议学习者提供更多信息
3. **结构化输出全书概览**,包含四个模块,按以下顺序输出:
```
━━━ 📖 《书名》· 全书概览 ━━━
【作者】作者名
【版次】第X版(如有)
【出版社】出版社名(如有)
━━━ 一、全书内容框架(速览)━━━
快速摸清全书脉络,每一行就是一章:
第1章 [章节标题] — [一句话核心]
第2章 [章节标题] — [一句话核心]
...
━━━ 二、全面结构化梳理 ━━━
对每章做详细拆解,帮助学习者了解每个章节到底讲了什么内容。
📁 第一部分:[主题名称](如果全书有明确的分组/分篇)
📂 第1章 [标题]
├ 本章讲什么:2-3句话概述本章内容
├ 核心论点/主线:这一章的核心逻辑脉络
├ 关键概念:列出本章最重要的概念
├ 书中案例/论据(如有):书里用了什么例子或证据
├ ⚠️ 时代局限性(如有):该章中至今已过时或有局限的知识,以及对应的现代更新
└ ⚡ 一句话记住:用一个比喻或一句话概括本章
📂 第2章 [标题]
├ 本章讲什么:
├ 核心论点/主线:
├ 关键概念:
├ 书中案例/论据(如有):
├ ⚠️ 时代局限性(如有):
└ ⚡ 一句话记住:
📁 第二部分:[主题名称](分组2)
📂 第X章 ...
...(逐章拆解,直到全书完)
━━━ 三、核心思想 ━━━
用 3-5 段简明阐述全书最核心的思想。避免学术套话,用最直白的语言说清楚:
- 这本书到底想讲什么?
- 它和普通人的关系是什么?
- 为什么这些思想值得了解?
━━━ 四、思维工具(如有)━━━
对书中介绍的每个思维工具/方法论/分析框架:
📐 工具1:[工具名称]
┣ 一句话说明
┣ 【小学生案例】一个生活中孩子能完全理解的例子
┗ 【应用场景】什么情况下可以用这个工具
📐 工具2:[工具名称]
┣ 一句话说明
┣ 【小学生案例】
┗ 【应用场景】
...(逐个工具说明)
```
> 📌 **全面结构化梳理的关键**:
> - 结构化梳理不是编造内容,所有细节必须来自搜索到的可靠材料
> - 如果某章的内容在搜索结果中找不到,如实标注「未找到详细资料」
> - 可以用书的分篇/分组结构来组织,让学习者看到全书的逻辑脉络
> - 「一句话记住」是对该章最精炼的概括,帮助学习者建立记忆锚点
> - **⚠️ 时代局限性不是可选项**:每章都必须评估,即使结论是「无重大时代局限性」,也必须写出来
4. **找不到材料时的处理**:明确告知学习者
- "搜索了 XX 个来源,未能找到该书的可靠内容框架"
- 如果可以,建议:更换更通用的书名关键词、确认作者拼写、考虑相近替代书
#### 途径 B 执行步骤(有参考电子书时,替代上面 1-4 步):
1. **识别电子书格式**:检查文件是否为 EPUB 格式(EPUB 实际上是 ZIP 压缩包,内含 HTML 文件和元数据)
- 确认 `.epub` 扩展名(或通过文件头 `PK` 识别 ZIP 格式)
- 如果文件是 `.txt` / `.pdf` / `.mobi` 等其他格式,告知当前只支持 EPUB,建议用户转换
2. **解析电子书内部结构**:
- 用 ZIP 解压方式打开 EPUB
- 读取 `META-INF/container.xml` → 找到 OPF 文件(包描述文件)的路径
- 读取 OPF 文件 → 获取 Manifest(所有内容文件列表)和 Spine(阅读顺序)
- 读取 `toc.ncx`(或 `toc.xhtml`)→ 获取 TOC 映射:章节标签 → 对应的内部 HTML 文件路径
3. **输出章节目录给用户确认**:
```
📖 [书名] 章节目录
├ 第1章「标题」→ 内部文件: text/part0006.html
├ 第2章「标题」→ 内部文件: text/part0007.html
└ 第3章「标题」→ 内部文件: text/part0008.html
```
4. **提取并处理章节内容**:
- 从 EPUB 压缩包中提取对应章节的 HTML 文件
- 解析 HTML,提取正文纯文本(过滤导航标记、页码、页眉页脚)
- 注意编码问题:中文 EPUB 可能使用 UTF-8 或 GBK 编码;优先尝试 UTF-8,失败后回退 GBK
5. **基于提取内容输出全书概览**:格式同下方「结构化输出全书概览」模板,但内容全部从电子书原文提取,**不得杜撰**任何书中不存在的内容。来源直接标注为「电子书原文(EPUB)」而非搜索来源。
> 📌 **注意**:EPUB 内部 HTML 文件名通常不按章节顺序命名(如 `part0006.html` 可能对应第 1 章),必须依赖 `toc.ncx` 来建立正确的章节映射。不要根据文件名猜测章节编号。
### 阶段二:聚焦学习
**触发条件**:学习者从阶段一的输出中,选定要学习的具体章节或内容范围。
**执行步骤**:
1. **确认学习范围**:学习者提供章节编号或内容描述
2. **针对性讲解**,输出格式如下:
```
━━━ 📘 第X章:章节标题 ━━━
━━━ 核心论题 ━━━
一句话概括本章的核心主张。
━━━ 核心问题 ━━━
**问题**:这一章试图回答的核心问题是什么?
**说明**:为什么这个问题重要?它和我们有什么关系?
**例子**:用一个例子帮助理解这个问题
---
━━━ 一、书中内容(按原书顺序)━━━
按原书叙述逻辑梳理,保留作者的论证顺序。
可以使用标题/列表/缩进保持可读性。
---
━━━ 二、知识点与例子 ━━━
### 【知识点1】[名称]
**说明**:一句话解释这个知识点
⚠️ **知识时效性评估**:
> 该知识点在出版时是否成立?按照当前(2026年)该领域的研究进展,它是否仍然有效、已有修正、或已被推翻?
> - 如果仍然有效 → ✅ 标注「无重大过时」
> - 如果已被修正/补充 → ❗ 说明具体更新了什么
> - 如果已被推翻或发现错误 → ❌ 明确指出错误并给出当前正确知识
> 评估须引用现代研究、公认结论或最新行业实践
🧒 **小学生例子**:
> 一个生活中孩子能完全理解的例子(买菜找零、分零食、排队、运动比赛、养宠物、上学等场景)
**例子2**:
> 日常生活中或书中已有的第二个例子
**例子3**:
> 第三个例子(可以是书中的核心案例,也可以用扩展类比)
---
### 【知识点2】[名称]
...(同上的3个例子格式)
---
━━━ 三、关键概念链(可选)━━━
展示知识点之间的逻辑连接
━━━ 四、与前几章的关联(可选)━━━
━━━ 五、本章小结 ━━━
- 3-5 个要点
```
**格式要点**:
- 每个知识点必须配**3个例子**,缺一不可
- 第1个例子必须是🧒 **小学生能懂的例子**(买菜找零、分零食、排队、运动比赛、养宠物、上学等场景)
- 第2个例子建议用日常/生活或书中已有案例
- 第3个例子可以用书中核心案例、扩展类比,或更深刻的跨领域联想
- ⚠️ 时代局限性标注:如果某知识点在出版后已被修正,在「说明」行末尾标注并补充新的正确知识
- 所有例子必须基于真实内容,不得杜撰书中不存在的内容
## 核心约束(必须遵守)
### 🔴 铁律一:不得杜撰
- 所有内容必须基于搜索结果中的真实材料
- 如果搜索不到,必须如实报告,绝对不能编造书的内容、章节标题、核心思想
- 引用时要区分"搜索到的内容"和"基于知识的合理推断",后者需标注"(推测)"
- **证据强度**:A=官方来源/出版社/学术书评;B=读书平台/书友笔记;C=个人博客/论坛
### 🟣 铁律五:过时知识必须标注并更新
- 出书时间越早,知识过时的可能性越大。**每次输出知识时,必须主动评估其时效性**,不能默认书中的内容仍然正确
- 如果书中某个知识点在出版后已被新研究修正、颠覆,或在实际应用中被证明有重大局限,必须同时输出以下三部分:
1. ⚠️ 明确标注该知识有时代局限性
2. 说明局限在哪里、为什么不再完全正确
3. 提供最新的正确知识或现代修正版本(引用更新内容时同样标注证据强度)
- **对于阶段一**:在每章拆解中增加「⚠️ 时代局限性」字段,标注该章中最重要的过时内容
- **对于阶段二**:在每个知识点的讲解中增加「⚠️ 知识更新」字段,精确到每个具体知识点的更新
- 需要特别关注时效性的领域(但不限于):
- 💹 经济金融类(市场结构、监管、工具已巨变)
- 🔬 科技/医学/生物学类(知识迭代快)
- 🧠 心理学类(部分早期结论已被重复性危机修正)
- 🌍 地理政治类(国际格局已变化)
- 📊 统计数据类(书中的数据距今已久)
- 如果整本书的知识几乎没有过时,也应写「无重大时代局限性」,不能跳过不评估
### 🟡 铁律二:案例必须小学生能懂
- 所有举例如下标准:
- ✅ 买菜找零、分零食、排队、运动比赛、零花钱、养宠物、种花等日常生活场景
- ✅ 孩子在学校会遇到的事(分组、考试、交朋友)
- ❌ 不要用经济学案例解释经济学(同义反复)
- ❌ 不要用专业术语解释专业术语
- ❌ 不要举需要中学以上知识背景的例子
- 举例时要清晰标明【小学生案例】
### 🟢 铁律三:结构化输出
- 使用上面的模板格式
- 善用层级缩进(├ └ 符号或缩进)
- 每个层级内容控制在可读长度(单条不超过 5 句)
- 避免段落式长篇文字
### 🔵 铁律四:语言简洁
- 能用一句话说清楚就不用两句
- 避免"值得注意的是"、"不可否认的是"、"从某种意义上说"等废话开头
- 避免华丽辞藻和过度修辞
- 结论先行,解释在后
## 使用示例
### 阶段一示例
```
用户:我想学《思考,快与慢》,作者丹尼尔·卡尼曼
你:(搜索该书目录和核心思想后输出结构化概览)
```
### 阶段二示例
```
用户:我想了解第3章的内容
你:(输出该章节的详细讲解,包含原案例+小学生案例)
```
## 搜索策略
为提高搜索成功率,推荐依次尝试:
1. **精确搜索**:`"思考,快与慢" 卡尼曼 目录`(书名加引号)
2. **平台搜索**:`豆瓣 思考,快与慢`、`得到 思考,快与慢`
3. **英文搜索**(如果书名是译作):`Thinking Fast and Slow Kahneman table of contents`
4. **宽泛搜索**:`思考快与慢 核心思想 章节目录`
5. **失败时**:告知学习者搜索结果不足,建议更换关键词、确认书名拼写、或提供出版社/版次信息缩小范围
## 参考文件
- [输出示例](references/output-examples.md):阶段一和阶段二的完整输出示例,含格式参考
---
## 附录:EPUB 电子书读取方法
以下记录在《无穷的开始》学习过程中实际验证的 EPUB 解析技术方案。
### 1. EPUB 文件本质
EPUB 是一个 **ZIP 压缩包**,内部包含 HTML 文件、CSS、图片和元数据 XML 文件。可以直接用 Python 的 `zipfile` 模块读取。
### 2. 关键内部文件结构
```
book.epub
├── mimetype # 固定内容 application/epub+zip
├── META-INF/
│ └── container.xml # 入口文件,指向 OPF
└── OEBPS/ (或任意名称)
├── content.opf # 包描述文件:manifest + spine
├── toc.ncx # 目录映射(NCX格式,XML)
├── toc.xhtml # 另一种TOC格式(较新版EPUB)
└── text/
├── part0001.html # 正文内容(HTML格式)
├── part0002.html
└── ...
```
### 3. 读取流程(Python 实现)
```python
import zipfile
import xml.etree.ElementTree as ET
# 第1步:打开 EPUB(视为 ZIP)
with zipfile.ZipFile('book.epub', 'r') as z:
# 第2步:读取 container.xml 找到 OPF 路径
container = ET.fromstring(z.read('META-INF/container.xml'))
# 解析出 OPF 文件路径(如 OEBPS/content.opf)
# 第3步:读取 OPF 获取 manifest 和 spine
# manifest 列出所有文件
# spine 给出阅读顺序
# 第4步:读取 toc.ncx 获取 TOC 映射
ncx = ET.fromstring(z.read('OEBPS/toc.ncx'))
# navMap/navPoint 标签,label = 章节标题,content/@src = 内部HTML文件
# 第5步:提取具体章节的 HTML
html_content = z.read('OEBPS/text/part0006.html')
# 第6步:解析 HTML 提取纯文本
# 可以用 BeautifulSoup 或简单正则/html.parser
```
### 4. 关键注意事项
| 问题 | 解决方案 |
|------|---------|
| **章节顺序与文件名无关** | 文件名(part0006.html)不一定是第6章。必须通过 toc.ncx 的 navPoint 顺序确定 |
| **编码问题** | 中文 EPUB 可能使用 UTF-8(常见)或 GBK。先试 `decode('utf-8')`,捕获异常后回退 `decode('gbk')` |
| **HTML 含大量无意义标记** | 使用 `html.parser` 或 `BeautifulSoup` 提取纯文本,过滤 `<script>`、`<style>`、导航链接 |
| **TOC 可能不完整** | 如果 toc.ncx 条目不足,可回退到 OPF 的 spine 顺序(按阅读顺序排列) |
| **文件读取路径** | EPUB 内路径是正斜杠 `/`,不是反斜杠 `\` |
### 5. 实际验证案例
在《无穷的开始:世界进步的本源》学习过程中:
- 共 18 章,全部通过 EPUB 解析方式提取
- 通过 `toc.ncx` 建立了完整的章节-HMTL 映射表
- 脚本:`extract_chapter.py`(从 EPUB 提取指定章节的 HTML)→ `extract_text.py`(从 HTML 提取纯文本)→ 手动整理为结构化笔记
- 提取的每个章节内容约 1-2 万字(中文),用于生成 Obsidian 结构化学习笔记
don't have the plugin yet? install it then click "run inline in claude" again.