关于 ebook-analysis
ebook-analysis 是面向非虚构电子书的知识提取技能,适用于需要整理书籍观点或构建跨书参考库的研究者。它支持概念与实体两种提取模式,并要求每项提取保留可追溯的引用来源。
主要功能
- 01按抽象层级提取概念
- 02提取研究、研究者与框架等实体
- 03保留原文引用与位置线索
- 04跨书关联和综合实体信息
- 05解析电子书并验证分析结果
适用场景
- 01整理一本书的论证结构与可行动观点
- 02建立跨书研究者和框架参考库
- 03核对提取内容的引用准确性
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jwynia/ agent-skills --skill ebook-analysis安装后在 Claude Code 中输入/ebook-analysis确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
data/tag-mapping-rules.jsontheme-vocabulary.jsonreferences/abstraction-layers.mdconcept-types.mdfunctional-axes.mdrelationship-types.mdscripts/bc-assemble-index.tsbc-classify-untagged.tsbc-list-books.tsbc-map-tags.tsbulk-preprocess.tscalibre-db.tsea-classify.tsea-extract.tsea-link.tsea-parse.tsea-validate.tskb-generate-index.tskb-resolve-entity.tstemplates/analysis-report.mdconcept-record.json详细介绍
电子书分析:非虚构知识提取
分析电子书,提取知识并确保引用可追溯。此技能支持两种互补的提取模式:
- 概念提取 - 按抽象层级分类提取观点(原则 → 策略)
- 实体提取 - 提取可在多本书之间持续追踪的命名事物(研究、研究人员、框架、轶事)
核心原则
每项提取内容都必须能追溯到确切的来源。 引用可追溯性不容妥协。宁可减少提取内容并确保来源完整,也不要增加内容却没有来源信息。
两种提取模式
模式 1:概念提取
用于提取按抽象层级组织的观点。
适用情形: 分析书籍以提炼可迁移的观点、构建概念分类体系,或理解抽象原则与具体策略之间的关系。
输出: JSON 文件(analysis.json、concepts.json)
示例: “间隔重复能提高记忆保持率”是第 2 层的机制。
模式 2:实体提取
用于提取可在不同书籍之间交叉引用的命名事物。
适用情形: 构建知识库,以便在多本书中追踪同一项研究、同一位研究人员或同一个框架。目标是进行实体消歧——识别出《Range》中的 “Hogarth 的框架” 与其他地方提到的 “良性/恶性环境” 是同一概念。
输出: 知识库结构中的 Markdown 文件
示例: “良性与恶性环境”是 Robin Hogarth 提出的一个框架。
选择模式
| 如果你想…… | 使用模式 |
|---|---|
| 理解一本书的论证结构 | 概念提取 |
| 构建跨书籍的参考资料库 | 实体提取 |
| 创建可执行的要点 | 概念提取 |
| 追踪研究人员在不同来源中的观点 | 实体提取 |
| 两者兼顾 | 依次运行两种模式 |
实体提取模式(详细说明)
实体类型
| 类型 | 捕获内容 | 示例 |
|---|---|---|
| 研究 | 研究发现、实验、数据 | 弗林效应、棉花糖测试 |
| 研究人员 | 人物及其贡献 | Anders Ericsson、Robin Hogarth |
| 框架 | 心智模型、分类体系、系统 | 良性与恶性环境、理想困难 |
| 轶事 | 用于阐释观点的故事 | 老虎与 Roger、挑战者号灾难 |
| 概念 | 不属于框架的观点 | 认知固化、匹配质量 |
扩展实体类型指南
有些实体无法明确归入这五种类型。请参考以下指南:
| 实体类别 | 使用类型 | 理由 |
|---|---|---|
| 模拟/游戏(Superstruct、EVOKE) | 轶事 | 用于阐释的事件,即使是虚构的 |
| 机构(IFTF、WEF) | 研究人员 | 组织像个人一样贡献观点 |
| 历史事件(挑战者号灾难) | 轶事 | 用于阐释原则的故事 |
| 假设情景 | 轶事 | 《Imaginable》等书中的未来情景 |
| 思想实验 | 框架 | 若具有系统性则归为框架;否则归为概念 |
无法确定时: 叙述/事件默认归为 anecdote,观点归为 concept,系统化方法归为 framework。
作者作为主体的模式
当书籍作者本身也是重要实体时(例如《Imaginable》中的 Jane McGonigal):
在以下情况下创建研究人员实体:
- 作者有值得注意的既往作品或机构隶属关系
- 作者出现在 Wikipedia 或其他参考资料中
- 作者的背景/资历对于理解本书很重要
- 你的藏书中的其他书籍可能会提到这位作者
在以下情况下跳过:
- 作者主要只因这本书而为人所知
- 没有外部来源可用于核实或丰富该实体信息
作者主体模板补充:
## Note
This researcher is the author of [Book] in our collection. Their frameworks and concepts are documented separately.
实体文件模板
# [Entity Name]
**Type:** study | researcher | framework | anecdote | concept
**Status:** stub | partial | solid | authoritative
**Last Updated:** YYYY-MM-DD
**Aliases:** alias1, alias2, alias3
## Summary
[2-3 sentence synthesized understanding]
## Key Findings / What It Illustrates
1. [Claim or finding with source]
— Source: [Book], Ch.[X]
2. [Another claim]
— Source: [Book], Ch.[X]
## Key Quotes
> "Quotable text here."
> "Another memorable quote."
## Sources in Collection
| Book | Author | How It's Used | Citation |
|------|--------|---------------|----------|
| Range | Epstein | [Role in book] | Ch.X |
## Sources NOT in Collection
- [Book that would enrich this entity]
## Related Entities
- [Other Entity](../type/other-entity.md) - Relationship description
## Open Questions
- [What we don't yet know]
知识库结构
/knowledge/
├── _index.md # Master registry
├── _entities.json # Searchable index (generated)
│
├── nonfiction/
│ ├── _index.md # Domain index
│ ├── _[book]-quotes.md # Book-specific quotes file
│ ├── studies/
│ │ ├── flynn-effect.md
│ │ └── chase-simon-chunking.md
│ ├── researchers/
│ │ ├── hogarth-robin.md
│ │ └── tetlock-philip.md
│ ├── frameworks/
│ │ ├── kind-vs-wicked-environments.md
│ │ └── desirable-difficulties.md
│ ├── anecdotes/
│ │ ├── tiger-vs-roger.md
│ │ └── challenger-disaster.md
│ └── concepts/
│ ├── cognitive-entrenchment.md
│ └── match-quality.md
│
├── cooking/ # Domain-specific structure
│ ├── techniques/
│ ├── ingredients/
│ └── equipment/
│
└── technical/
├── patterns/
└── technologies/
引语提取
值得引用的引语是一种独立的提取类型。对于每本书,都创建一个引语文件:
文件: _[book-slug]-quotes.md
结构:
# Quotable Quotes from [Book Title]
**Author:** [Author]
**Last Updated:** YYYY-MM-DD
## On [Theme 1]
> "Quote text here."
> "Another quote on same theme."
## On [Theme 2]
> "Quote on different theme."
优秀引语的特点:
- 表述令人难忘,能概括关键见解
- 内容完整(无需上下文也能理解)
- 表述出人意料或有违直觉
- 适用于演示、写作或参考
实体提取工作流
- 通读书籍 - 阅读时识别有名称的研究、研究人员、框架和示例故事
- 检查现有实体 - 使用
kb-resolve-entity.ts查看实体是否已存在 - 创建或更新 - 新实体 → 创建文件;现有实体 → 将其添加为来源
- 添加引语 - 将值得记住的引语提取到引语文件中
- 交叉链接 - 添加“相关实体”部分
- 重新生成索引 - 运行
kb-generate-index.ts
实体提取状态(KB0-KB5)
| 状态 | 特征 | 处理方式 |
|---|---|---|
| KB0 | 没有知识库 | 创建目录结构 |
| KB1 | 结构已存在,但没有实体 | 开始提取 |
| KB2 | 正在从书中提取 | 创建实体文件 |
| KB3 | 实体已创建,但尚未链接 | 添加“相关实体” |
| KB4 | 已链接,但没有索引 | 运行 kb-generate-index.ts |
| KB5 | 本书的提取已完成 | 继续处理下一本书 |
跨书籍综合工作流
触发条件: 已有 2 本或更多书籍提取到知识库中。
目标:
- 找出在多本书中出现的实体
- 识别书籍之间的概念联系
- 展现相互矛盾或互为补充的观点
- 使用多来源综合内容更新实体文件
流程:
-
检测实体重叠
# Find entities with 2+ sources grep -l "Sources in Collection" knowledge/nonfiction/**/*.md | \ xargs grep -l "| .* | .* |" | head -20或手动检查添加了新来源的实体。
-
绘制概念联系图
- 比较不同书籍中的框架(例如,Range 的“棘手环境” ↔ Imaginable 的“未来思维”)
- 识别共同的研究人员(例如,Tetlock 同时出现在 Range 和 Imaginable 中)
- 寻找互补主题(预测失误 → 尽管存在不确定性,仍做好准备)
-
记录综合内容 对于出现在 2 本或更多书籍中的实体,更新“摘要”部分:
## Summary [Synthesized understanding from BOTH sources, noting agreements and differences] -
跨书籍见解 在
context/insights/cross-book-{theme}.md中记录主题联系:# Cross-Book Insight: [Theme] ## Books Contributing - Range (Epstein) - [perspective] - Imaginable (McGonigal) - [perspective] ## Synthesis [How the books complement or contradict each other]
概念提取模式(详细)
概念类型(抽象 → 具体)
| 类型 | 定义 | 示例 |
|---|---|---|
| 原则 | 基础性真理或公理 | “社群围绕共同身份形成” |
| 机制 | 事物的运作方式 | “互惠关系创造社会纽带” |
| 模式 | 重复出现的结构或方法 | “社群生命周期模式” |
| 策略 | 为实现目标采取的高层方法 | “先建立信任,再请求贡献” |
| 技巧 | 可具体执行的方法 | “在 24 小时内发送欢迎邮件” |
抽象层次
| 层次 | 名称 | 抽象程度 | 示例 |
|---|---|---|---|
| 0 | 基础性 | 普遍原则 | “人类寻求归属感” |
| 1 | 理论性 | 特定领域的理论 | “社群需要共同目标” |
| 2 | 战略性 | 方法和框架 | “参与度漏斗模型” |
| 3 | 战术性 | 具体方法 | “新用户引导流程” |
| 4 | 具体性 | 具体实施方案 | “使用 Discourse 搭建论坛” |
关系类型
| 关系 | 含义 | 使用场景 |
|---|---|---|
| INFLUENCES | A 影响 B | 因果或相关联系 |
| SUPPORTS | A 为 B 提供证据 | 引用、示例、验证 |
| CONTRADICTS | A 与 B 冲突 | 相互对立的主张 |
| COMPOSED_OF | A 包含 B | 整体与部分的关系 |
| DERIVES_FROM | A 源自 B | 逻辑推论 |
概念提取状态(EA0-EA7)
| 状态 | 症状 | 干预措施 |
|---|---|---|
| EA0 | 没有输入文件 | 指导准备文件 |
| EA1 | 原始文件,尚未解析 | 运行 ea-parse.ts |
| EA2 | 已解析,尚未提取 | 由大模型提取概念 |
| EA3 | 已提取,尚未分类 | 分配类型和层级 |
| EA4 | 已分类,尚未添加注释 | 添加主题和关系 |
| EA5 | 单本书处理完成 | 导出或继续进行综合分析 |
| EA6 | 多本书已就绪 | 进行跨书综合分析 |
| EA7 | 分析完成 | 生成报告 |
概念提取工作流
- 解析 - 运行
ea-parse.ts,对书籍分块并跟踪位置 - 提取 - 将分块提供给大模型,以识别概念并摘录准确引文
- 分类 - 分配类型(原则→策略)和层级(0-4)
- 添加注释 - 添加主题和功能分析
- 关联 - 连接相关概念
- 导出 - 生成 analysis.json、concepts.json、report.md
可用工具
解析工具
ea-parse.ts
将电子书文件解析为带有元数据和位置跟踪信息的分块。
deno run --allow-read scripts/ea-parse.ts path/to/book.txt
deno run --allow-read scripts/ea-parse.ts path/to/book.epub --format epub
deno run --allow-read scripts/ea-parse.ts book.txt --chunk-size 1500 --overlap 150
**输出:**包含元数据、章节(如检测到)和带位置的分块的 JSON。
知识库工具
kb-generate-index.ts
扫描知识库并生成可搜索的实体索引。
deno run --allow-read --allow-write scripts/kb-generate-index.ts /path/to/knowledge
**输出:**创建包含所有实体、别名和元数据的 _entities.json。
kb-resolve-entity.ts
在创建重复实体之前,搜索现有实体。
deno run --allow-read scripts/kb-resolve-entity.ts "Flynn Effect"
deno run --allow-read scripts/kb-resolve-entity.ts "Hogarth" --threshold 0.5
deno run --allow-read scripts/kb-resolve-entity.ts "kind learning" --json
选项:
--threshold <0-1>- 最低匹配分数(默认值:0.3)--limit <n>- 最大结果数(默认值:5)--json- 以 JSON 格式输出
验证工具
ea-validate.ts
验证分析输出中的引文准确性和架构完整性。
deno run --allow-read scripts/ea-validate.ts analysis.json --report
反模式
提取泛滥
**模式:**提取所有可能有趣的短语。 **修正:**提取前先问“我会引用这个吗?”。质量重于数量。
引文黑洞
**模式:**提取时未保留准确引文或位置。 **修正:**务必记录:准确引文、章节引用和上下文。
重复实体
**模式:**未检查实体是否已存在,就创建新实体。
**修正:**务必先运行 kb-resolve-entity.ts。
孤立实体
**模式:**实体没有“相关实体”链接。 **修正:**每个实体至少应关联另外 2 个实体。
没有引文的实体
**模式:**实体包含观点,却没有令人印象深刻的表述。 **修正:**添加“关键引文”部分,其中包含作者的原话。
单书孤岛
**模式:**分析书籍时不进行交叉参照。 **修正:**分析 2 本或更多书籍后,运行综合分析以寻找关联。
工作流示例
完整实体提取(范围示例)
1. Scan book chapter by chapter
2. Identify all named studies, researchers, frameworks, anecdotes
3. Create inventory document listing all potential entities
4. For each entity:
a. kb-resolve-entity.ts "[entity name]" to check existence
b. Create markdown file in appropriate type directory
c. Fill in template with findings and citations
d. Add Key Quotes section
5. Create _range-quotes.md with all memorable quotes
6. Update _index.md with new entities
7. kb-generate-index.ts to rebuild _entities.json
快速概念扫描
1. ea-parse.ts book.txt --chunk-size 2000
2. For each chunk, extract top 3-5 concepts
3. Classify by type and layer
4. Generate concepts.json and report.md
输出持久化
实体提取输出
| 文件 | 位置 |
|---|---|
| 实体文件 | knowledge/{domain}/{type}/{entity-slug}.md |
| 引文文件 | knowledge/{domain}/_[book]-quotes.md |
| 实体索引 | knowledge/_entities.json |
| 领域索引 | knowledge/{domain}/_index.md |
概念提取输出
| 文件 | 位置 |
|---|---|
| 完整分析 | ebook-analysis/{author}-{title}/analysis.json |
| 仅含概念 | ebook-analysis/{author}-{title}/concepts.json |
| 引文 | ebook-analysis/{author}-{title}/citations.json |
| 报告 | ebook-analysis/{author}-{title}/report.md |
验证(Oracle)
此技能可验证的内容
- 引文位置存在 - 验证引用文本是否出现在所标注的位置
- 架构完整性 - 必需字段均已填写
- 交叉引用完整性 - 被引用的实体均存在
- 重复检测 - 实体尚不存在(通过 kb-resolve-entity.ts)
需要人工判断的事项
- 重要性 - 值得提取吗?
- 分类 - 这真的属于“框架”,而不是“概念”吗?
- 关系有效性 - A 真的会影响 B 吗?
- 引文质量 - 这真的令人印象深刻吗?
集成图
入站(来自其他技能)
| 来源 | 导向 |
|---|---|
| research | 可进行多书综合分析 |
| reverse-outliner | 用于概念提取的结构化数据 |
出站(流向其他技能)
| 来源状态 | 导向 |
|---|---|
| 实体提取完成 | dna-extraction(深入的功能分析) |
| 概念提取完成 | media-meta-analysis(跨来源综合分析) |
互补技能
| 技能 | 关系 |
|---|---|
| dna-extraction | 用于标注的 6 轴功能分析 |
| reverse-outliner | 用于小说的结构化方法 |
| voice-analysis | 作者风格指纹分析 |
| context-network | 知识库维护 |
校准数据(来自 Range + Imaginable 的提取)
按书籍信息密度划分
| 书籍类型 | 预期实体数 | 预计工作量 |
|---|---|---|
| 高密度非虚构作品(Range、Thinking Fast & Slow) | 60-100 | 4-6 小时 |
| 中等密度非虚构作品(大多数商业书籍) | 30-50 | 2-3 小时 |
| 低密度非虚构作品(大众科学读物) | 15-30 | 1-2 小时 |
| 技术类书籍 | 20-40 | 2-3 小时 |
按书籍子类型划分
不同的非虚构子类型会产生不同的实体特征:
| 子类型 | 示例 | 实体特征 | 预期数量 |
|---|---|---|---|
| 研究综合 | Range | 包含许多研究、研究人员和框架 | 60-100 |
| 方法论/教程 | Imaginable | 包含许多框架,研究较少 | 30-50 |
| 回忆录/叙事 | Educated | 框架较少,轶事较多 | 20-40 |
| 参考类 | 技术手册 | 概念较多,轶事较少 | 不定 |
研究综合类书籍会引用许多研究和研究人员,并将不同领域的观点联系起来。 方法论类书籍会教授技巧和框架,但引用的外部来源较少。 回忆录/叙事类书籍会通过个人故事阐述观点,而不是依赖研究。
元数据可靠性警告
书籍分类元数据(Calibre 标签、图书馆分类)通常存在以下问题:
- 错误 - 错误地将虚构类作品归为非虚构类,或反之
- 笼统 - 广泛使用“一般小说”或“自助”分类
- 不一致 - 同一本书在不同来源中的分类不同
提取前务必确认分类合理。方法论类书籍 Imaginable 被标为“小说”就是元数据错误。
推理要求
标准推理
- 提取单个区块中的概念
- 分类类型/层级
- 识别简单关系
- 创建单个实体
扩展推理(ultrathink)
以下情况使用扩展思考:
- 多书综合分析 - 需要同时梳理多个关系网络
- 矛盾检测 - 跨来源进行语义比较
- 主题涌现 - 识别大型集合中的模式
- 知识缺口识别 - 推理缺失的内容
触发短语:“跨书综合分析”“查找矛盾”“识别缺口”“全面分析”
不做的事
- 提取时不保留引文溯源信息
- 未检查重复项就创建实体
- 跳过关联阶段(孤立实体没有用处)
- 不为实体附上引文
- 将小说当作非虚构作品处理
- 使用正则表达式进行语义分析(只能由 LLM 判断)