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詳細
電子書籍分析:ノンフィクションからの知識抽出
電子書籍を分析し、出典を完全に追跡できる形で知識を抽出します。このスキルでは、相互に補完する次の2つの抽出モードをサポートします。
- 概念抽出 - 抽象度(原則 → 戦術)に基づいて分類したアイデアを抽出します
- エンティティ抽出 - 書籍をまたいで記録される固有の対象(研究、研究者、フレームワーク、逸話)を抽出します
基本原則
抽出する情報はすべて、正確な出典まで追跡できなければなりません。 出典の追跡可能性は譲れません。出典を完全に明示して少なく抽出するほうが、出典なしで多く抽出するよりも優れています。
2つの抽出モード
モード1:概念抽出
抽象度に応じて整理したアイデアを抽出します。
用途: 書籍を分析して応用可能なアイデアを見つける、概念の分類体系を構築する、抽象的な原則と具体的な戦術の関係を理解する場合。
出力: JSON ファイル(analysis.json、concepts.json)
例: 「間隔反復は記憶の定着を高める」は、レイヤー2のメカニズムです。
モード2:エンティティ抽出
書籍をまたいで相互参照できる固有の対象を抽出します。
用途: 同じ研究、研究者、フレームワークが複数の書籍に登場するナレッジベースを構築する場合。目標はエンティティ解決です。つまり、『Range』に登場する「Hogarthのフレームワーク」が、別の書籍で言及される「親切な環境/意地悪な環境」と同じものであると認識します。
出力: ナレッジベース構造の Markdown ファイル
例: 「親切な環境と意地悪な環境」は、Robin Hogarthによるフレームワークです。
モードの選択
| 目的 | 使用するモード |
|---|---|
| 書籍の論証構造を理解する | 概念抽出 |
| 書籍をまたいだ参考資料ライブラリを構築する | エンティティ抽出 |
| 実践的な要点を作成する | 概念抽出 |
| さまざまな出典における研究者の発言を追跡する | エンティティ抽出 |
| 両方 | 両方のモードを順番に実行する |
エンティティ抽出モード(詳細)
エンティティの種類
| 種類 | 抽出対象 | 例 |
|---|---|---|
| study | 研究結果、実験、データ | フリン効果、マシュマロ・テスト |
| researcher | 人物とその貢献 | Anders Ericsson、Robin Hogarth |
| framework | メンタルモデル、分類体系、システム | 親切な環境と意地悪な環境、望ましい困難 |
| anecdote | 要点を説明するために使われる話 | タイガー対ロジャー、チャレンジャー号事故 |
| concept | フレームワークではないアイデア | 認知的固定化、マッチクオリティ |
エンティティの種類に関する補足ガイダンス
5つの種類に明確に当てはまらないエンティティもあります。次のガイドラインに従ってください。
| エンティティの種類 | 使用するタイプ | 理由 |
|---|---|---|
| シミュレーション/ゲーム(Superstruct、EVOKE) | anecdote | 仮説上のものでも、説明に用いられる出来事です |
| 機関(IFTF、WEF) | researcher | 組織は個人と同様にアイデアを生み出します |
| 歴史的事件(チャレンジャー号事故) | anecdote | 原則を説明する物語です |
| 仮説的なシナリオ | anecdote | 『Imaginable』のような書籍にある未来のシナリオです |
| 思考実験 | framework | 系統立てられている場合。それ以外は concept |
判断に迷う場合: 物語や出来事には anecdote、アイデアには concept、系統立てられた手法には framework を使用します。
著者を対象とするパターン
書籍の著者自身が重要なエンティティでもある場合(例:『Imaginable』のJane McGonigal):
次の場合は researcher エンティティを作成します。
- 著者に注目すべき過去の業績や所属機関がある
- 著者が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を使って、エンティティがすでに存在するか確認する - 作成または更新する - 新しいエンティティの場合はファイルを作成し、既存のエンティティの場合はソースとして追加する
- 引用文を追加する - 記憶に残る引用文を抽出し、引用文ファイルに追加する
- 相互リンクする - Related Entities セクションを追加する
- インデックスを再生成する -
kb-generate-index.tsを実行する
エンティティ抽出の状態(KB0-KB5)
| 状態 | 症状 | 対応 |
|---|---|---|
| KB0 | ナレッジベースがない | ディレクトリ構造を作成する |
| KB1 | 構造はあるが、エンティティがない | 抽出を開始する |
| KB2 | 書籍から抽出中 | エンティティファイルを作成する |
| KB3 | エンティティは作成済みだが、リンクされていない | Related Entities を追加する |
| 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 セクションを更新します。
## 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 | 解析済みですが、抽出されていません | LLM が概念を抽出します |
| EA3 | 抽出済みですが、分類されていません | 種類とレイヤーを割り当てます |
| EA4 | 分類済みですが、注釈が付いていません | テーマと関連性を追加します |
| EA5 | 1 冊の書籍の処理が完了しています | エクスポートするか、統合に進みます |
| EA6 | 複数の書籍を処理できる状態です | 書籍間で統合します |
| EA7 | 分析が完了しています | レポートを生成します |
概念抽出のワークフロー
- 解析 -
ea-parse.tsを実行し、位置情報を追跡しながら書籍をチャンクに分割します - 抽出 - 正確な引用文とともに概念を特定できるよう、チャンクを LLM に提示します
- 分類 - 種類(原則→戦術)とレイヤー(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 つの他のエンティティに関連付けます。
引用のないエンティティ
パターン: エンティティにアイデアは記録されていますが、印象に残る表現がありません。 対策: 著者の正確な言葉を含む「重要な引用」セクションを追加します。
1 冊だけの孤立分析
パターン: 書籍を相互参照せずに分析します。 対策: 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 |
検証(オラクル)
このスキルで検証できること
- 引用位置の存在 - 引用されたテキストが、指定された位置に存在するか検証します
- スキーマの完全性 - 必須フィールドが存在するか確認します
- 相互参照の整合性 - 参照先のエンティティが存在するか確認します
- 重複の検出 - エンティティがすでに存在していないか確認します(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 の判断のみを使用)