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

詳細

電子書籍分析:ノンフィクションからの知識抽出

電子書籍を分析し、出典を完全に追跡できる形で知識を抽出します。このスキルでは、相互に補完する次の2つの抽出モードをサポートします。

  1. 概念抽出 - 抽象度(原則 → 戦術)に基づいて分類したアイデアを抽出します
  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."

良い引用文の条件:

  • 重要な洞察を捉えた、記憶に残る表現
  • 単独で成立する(文脈がなくても理解できる)
  • 意外性のある、または直感に反する表現
  • プレゼンテーション、執筆、または参照に役立つ
エンティティ抽出のワークフロー
  1. 書籍を確認する - 読み進めながら、名前のある研究、研究者、フレームワーク、例示的なストーリーを特定する
  2. 既存のエンティティを確認する - kb-resolve-entity.ts を使って、エンティティがすでに存在するか確認する
  3. 作成または更新する - 新しいエンティティの場合はファイルを作成し、既存のエンティティの場合はソースとして追加する
  4. 引用文を追加する - 記憶に残る引用文を抽出し、引用文ファイルに追加する
  5. 相互リンクする - Related Entities セクションを追加する
  6. インデックスを再生成する - kb-generate-index.ts を実行する
エンティティ抽出の状態(KB0-KB5)
状態症状対応
KB0ナレッジベースがないディレクトリ構造を作成する
KB1構造はあるが、エンティティがない抽出を開始する
KB2書籍から抽出中エンティティファイルを作成する
KB3エンティティは作成済みだが、リンクされていないRelated Entities を追加する
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 セクションを更新します。

    ## 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解析済みですが、抽出されていませんLLM が概念を抽出します
EA3抽出済みですが、分類されていません種類とレイヤーを割り当てます
EA4分類済みですが、注釈が付いていませんテーマと関連性を追加します
EA51 冊の書籍の処理が完了していますエクスポートするか、統合に進みます
EA6複数の書籍を処理できる状態です書籍間で統合します
EA7分析が完了していますレポートを生成します
概念抽出のワークフロー
  1. 解析 - ea-parse.ts を実行し、位置情報を追跡しながら書籍をチャンクに分割します
  2. 抽出 - 正確な引用文とともに概念を特定できるよう、チャンクを LLM に提示します
  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 つの他のエンティティに関連付けます。

引用のないエンティティ

パターン: エンティティにアイデアは記録されていますが、印象に残る表現がありません。 対策: 著者の正確な言葉を含む「重要な引用」セクションを追加します。

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-1004-6 時間
中程度のノンフィクション(一般的なビジネス書)30-502-3 時間
情報量の少ないノンフィクション(一般向け科学書)15-301-2 時間
技術書20-402-3 時間
書籍のサブタイプ別

ノンフィクションのサブタイプによって、得られるエンティティの構成は異なります。

サブタイプ例エンティティの構成予想される件数
研究の統合Range多数の研究、研究者、フレームワーク60-100
方法論/ハウツーImaginable多数のフレームワーク、少数の研究30-50
回想録/物語Educated少数のフレームワーク、多数の逸話20-40
参考書技術マニュアル多数の概念、少数の逸話可変

研究を統合した書籍は、多数の研究や研究者を引用し、分野を越えてアイデアを結び付けます。 方法論の書籍は、手法やフレームワークを教えますが、外部の情報源を引用することは比較的少ないです。 回想録/物語は、研究ではなく個人的な話を使って論点を説明します。

メタデータの信頼性に関する警告

書籍の分類メタデータ(Calibre のタグ、ライブラリのカテゴリ)は、しばしば次のような問題があります。

  • 誤り - フィクションとノンフィクションが誤って分類されている
  • 汎用的 - 「一般フィクション」や「セルフヘルプ」が広く適用されている
  • 一貫性がない - 同じ書籍が情報源によって異なるカテゴリに分類されている

抽出を始める前に、分類が妥当かどうか必ず確認してください。Imaginable のような方法論の書籍に「フィクション」のタグが付いている場合、それはメタデータの誤りです。


推論の要件

標準的な推論
  • 単一チャンクからの概念抽出
  • タイプ/レイヤーの分類
  • 単純な関係の特定
  • 個々のエンティティの作成
拡張推論(ultrathink)

次の場合は拡張思考を使用してください。

  • 複数書籍の統合 - 複数のネットワークを同時に保持する必要があります
  • 矛盾の検出 - 情報源をまたいだ意味の比較が必要です
  • テーマの出現 - 大規模な集合にわたるパターンの特定が必要です
  • ナレッジギャップの特定 - 欠けているものについて推論する必要があります

トリガーフレーズ:「書籍を横断して統合する」「矛盾を見つける」「ギャップを特定する」「包括的に分析する」


行わないこと

  • 引用元を追跡できない状態で抽出する
  • 重複を確認せずにエンティティを作成する
  • リンク付けの段階を省略する(孤立したエンティティは役に立ちません)
  • 引用のないエンティティを残す
  • フィクションをノンフィクションとして扱う
  • 意味分析に正規表現を使う(LLM の判断のみを使用)

コメント