mcpField
E
ebook-analysis

ebook-analysis

github.com/jwynia生产力179393 次安装35 周前更新
代码仓库

关于 ebook-analysis

ebook-analysis 是面向非虚构电子书的知识提取技能,适用于需要整理书籍观点或构建跨书参考库的研究者。它支持概念与实体两种提取模式,并要求每项提取保留可追溯的引用来源。

主要功能

  1. 01按抽象层级提取概念
  2. 02提取研究、研究者与框架等实体
  3. 03保留原文引用与位置线索
  4. 04跨书关联和综合实体信息
  5. 05解析电子书并验证分析结果

适用场景

  1. 01整理一本书的论证结构与可行动观点
  2. 02建立跨书研究者和框架参考库
  3. 03核对提取内容的引用准确性

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jwynia/agent-skills --skill ebook-analysis

安装后在 Claude Code 中输入/ebook-analysis确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

data/
tag-mapping-rules.json
theme-vocabulary.json
references/
abstraction-layers.md
concept-types.md
functional-axes.md
relationship-types.md
scripts/
bc-assemble-index.ts
bc-classify-untagged.ts
bc-list-books.ts
bc-map-tags.ts
bulk-preprocess.ts
calibre-db.ts
ea-classify.ts
ea-extract.ts
ea-link.ts
ea-parse.ts
ea-validate.ts
kb-generate-index.ts
kb-resolve-entity.ts
templates/
analysis-report.md
concept-record.json

详细介绍

电子书分析:非虚构知识提取

分析电子书,提取知识并确保引用可追溯。此技能支持两种互补的提取模式:

  1. 概念提取 - 按抽象层级分类提取观点(原则 → 策略)
  2. 实体提取 - 提取可在多本书之间持续追踪的命名事物(研究、研究人员、框架、轶事)

核心原则

每项提取内容都必须能追溯到确切的来源。 引用可追溯性不容妥协。宁可减少提取内容并确保来源完整,也不要增加内容却没有来源信息。


两种提取模式

模式 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."

优秀引语的特点:

  • 表述令人难忘,能概括关键见解
  • 内容完整(无需上下文也能理解)
  • 表述出人意料或有违直觉
  • 适用于演示、写作或参考
实体提取工作流
  1. 通读书籍 - 阅读时识别有名称的研究、研究人员、框架和示例故事
  2. 检查现有实体 - 使用 kb-resolve-entity.ts 查看实体是否已存在
  3. 创建或更新 - 新实体 → 创建文件;现有实体 → 将其添加为来源
  4. 添加引语 - 将值得记住的引语提取到引语文件中
  5. 交叉链接 - 添加“相关实体”部分
  6. 重新生成索引 - 运行 kb-generate-index.ts
实体提取状态(KB0-KB5)
状态特征处理方式
KB0没有知识库创建目录结构
KB1结构已存在,但没有实体开始提取
KB2正在从书中提取创建实体文件
KB3实体已创建,但尚未链接添加“相关实体”
KB4已链接,但没有索引运行 kb-generate-index.ts
KB5本书的提取已完成继续处理下一本书
跨书籍综合工作流

触发条件: 已有 2 本或更多书籍提取到知识库中。

目标:

  1. 找出在多本书中出现的实体
  2. 识别书籍之间的概念联系
  3. 展现相互矛盾或互为补充的观点
  4. 使用多来源综合内容更新实体文件

流程:

  1. 检测实体重叠

    # Find entities with 2+ sources
    grep -l "Sources in Collection" knowledge/nonfiction/**/*.md | \
      xargs grep -l "| .* | .* |" | head -20
    

    或手动检查添加了新来源的实体。

  2. 绘制概念联系图

    • 比较不同书籍中的框架(例如,Range 的“棘手环境” ↔ Imaginable 的“未来思维”)
    • 识别共同的研究人员(例如,Tetlock 同时出现在 Range 和 Imaginable 中)
    • 寻找互补主题(预测失误 → 尽管存在不确定性,仍做好准备)
  3. 记录综合内容 对于出现在 2 本或更多书籍中的实体,更新“摘要”部分:

    ## Summary
    [Synthesized understanding from BOTH sources, noting agreements and differences]
    
  4. 跨书籍见解 在 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 搭建论坛”
关系类型
关系含义使用场景
INFLUENCESA 影响 B因果或相关联系
SUPPORTSA 为 B 提供证据引用、示例、验证
CONTRADICTSA 与 B 冲突相互对立的主张
COMPOSED_OFA 包含 B整体与部分的关系
DERIVES_FROMA 源自 B逻辑推论
概念提取状态(EA0-EA7)
状态症状干预措施
EA0没有输入文件指导准备文件
EA1原始文件,尚未解析运行 ea-parse.ts
EA2已解析,尚未提取由大模型提取概念
EA3已提取,尚未分类分配类型和层级
EA4已分类,尚未添加注释添加主题和关系
EA5单本书处理完成导出或继续进行综合分析
EA6多本书已就绪进行跨书综合分析
EA7分析完成生成报告
概念提取工作流
  1. 解析 - 运行 ea-parse.ts,对书籍分块并跟踪位置
  2. 提取 - 将分块提供给大模型,以识别概念并摘录准确引文
  3. 分类 - 分配类型(原则→策略)和层级(0-4)
  4. 添加注释 - 添加主题和功能分析
  5. 关联 - 连接相关概念
  6. 导出 - 生成 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-1004-6 小时
中等密度非虚构作品(大多数商业书籍)30-502-3 小时
低密度非虚构作品(大众科学读物)15-301-2 小时
技术类书籍20-402-3 小时
按书籍子类型划分

不同的非虚构子类型会产生不同的实体特征:

子类型示例实体特征预期数量
研究综合Range包含许多研究、研究人员和框架60-100
方法论/教程Imaginable包含许多框架,研究较少30-50
回忆录/叙事Educated框架较少,轶事较多20-40
参考类技术手册概念较多,轶事较少不定

研究综合类书籍会引用许多研究和研究人员,并将不同领域的观点联系起来。 方法论类书籍会教授技巧和框架,但引用的外部来源较少。 回忆录/叙事类书籍会通过个人故事阐述观点,而不是依赖研究。

元数据可靠性警告

书籍分类元数据(Calibre 标签、图书馆分类)通常存在以下问题:

  • 错误 - 错误地将虚构类作品归为非虚构类,或反之
  • 笼统 - 广泛使用“一般小说”或“自助”分类
  • 不一致 - 同一本书在不同来源中的分类不同

提取前务必确认分类合理。方法论类书籍 Imaginable 被标为“小说”就是元数据错误。


推理要求

标准推理
  • 提取单个区块中的概念
  • 分类类型/层级
  • 识别简单关系
  • 创建单个实体
扩展推理(ultrathink)

以下情况使用扩展思考:

  • 多书综合分析 - 需要同时梳理多个关系网络
  • 矛盾检测 - 跨来源进行语义比较
  • 主题涌现 - 识别大型集合中的模式
  • 知识缺口识别 - 推理缺失的内容

触发短语:“跨书综合分析”“查找矛盾”“识别缺口”“全面分析”


不做的事

  • 提取时不保留引文溯源信息
  • 未检查重复项就创建实体
  • 跳过关联阶段(孤立实体没有用处)
  • 不为实体附上引文
  • 将小说当作非虚构作品处理
  • 使用正则表达式进行语义分析(只能由 LLM 判断)

评论

支持 Markdown