mcpField
E
extract-wisdom

extract-wisdom

github.com/sammcj生産性167162 回インストール2 日前に更新
リポジトリ

extract-wisdom について

extract-wisdomは、YouTube、Webページ、ローカルファイルを構造化分析にまとめるスキルです。情報取得から洞察の抽出、Markdownの確認、PDF出力、インデックス更新までを案内します。

主な機能

  1. 01YouTube・Web・ファイルの処理手順
  2. 02洞察と構造化要約の抽出
  3. 03実践的な要点と引用の整理
  4. 04Markdownの確認と整形
  5. 05PDF出力とインデックス更新

活用シーン

  1. 01スライドを参照した講演動画の要約
  2. 02記事から実践的な知見を抽出
  3. 03共有用のソース分析PDFを作成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sammcj/agentic-coding --skill extract-wisdom

インストール後、Claude Code で/extract-wisdomを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.gitignore
CLAUDE.md
references/
build-ebook.md
source-web-text.md
source-youtube.md
scripts/
transcribe.py
wisdom.py
styles/
wisdom-epub.css
wisdom-index.html
wisdom-pdf.css
wisdom-pdf.html5
tests/
test_frames.py

詳細

翻訳後に原文が更新されています。最新の内容は原文をご確認ください。

Wisdom Extraction

以下のスクリプトパスでは、${CLAUDE_SKILL_DIR} はこのスキルのディレクトリを指します。 Claude Code のデフォルトの場所:~/.claude/skills/extract-wisdom/

ワークフロー

ステップ 1:ソースを特定して内容を取得する

ソースの種類を特定し、対応する参照ファイルを読み込みます。

  • YouTube の URL(youtube.com または youtu.be を含む):references/source-youtube.md を読み込み、その指示に従います。
  • Web の URL またはローカルファイル:references/source-web-text.md を読み込み、その指示に従います。

ソースの内容を取得したら、ここに戻ってステップ 2 に進みます。ユーザーから詳細度や重点分野について追加の指示がある場合は、分析全体を通して反映します。

ステップ 2:分析して知見を抽出する

重要:シグナルの希薄化、文脈の崩壊、品質の低下、また将来コンテンツを理解する際の推論の劣化を避けてください。シグナル対ノイズ比を高く保ちます。余分な部分や冗長な部分を除きながら、分野固有の知見を保ちます。

ソースに合わせて分析の規模を調整する

長さはテンプレートではなく、ソースの情報量に合わせます。

  • セクションは、読者がまだ得ていない主張を加える場合にのみ含めます。Structured Breakdown、Insights & Commentary、Additional Resources が Key Insights の内容を言い換えるだけ、または記載する内容がない場合は省略します。
  • 短いソース(約 1,500 語未満、または動画 10 分未満):One-Minute Read、Summary、Key Insights、Actionable Takeaways のみを記載し、ソースに注目すべき引用がある場合は Notable Quotes も加えます。
  • 水増しせず、早めに終えます。セクションが長くなったら、関連する主張をまとめ、より一般的に述べます。
  • 長さや重点分野に関するユーザーの指示は、これらのデフォルトより優先されます。
ソースの形式に合わせて構成する
  • 記事またはエッセイ:中心となる主張を最初に示し、裏付けとなる詳細をテーマごとにまとめます。
  • 講演、講義、ナレーション付き動画:話者の論旨に沿って順序立て、ソースの展開が前後する場合に限り、テーマごとにまとめます。
  • インタビューまたはパネルディスカッション:トピックごとに整理し、立場が異なる場合は話者を明記します。
  • ディスカッションスレッドまたはコメント:主な意見と、合意点、意見の相違、根拠、留保事項をまとめます。コメントを一つずつ要約したり、ユーザー名ごとに整理したりすると、シグナルが失われます。

内容を分析し、以下を抽出します。

1. 主な知見
  • 主な考え方、重要な概念、中心的な主張を特定する
  • 基本的な学びや重要な発見を抽出する
  • 専門家の助言、ベストプラクティス、推奨事項を強調する
  • 意外な情報や直感に反する情報を記載する
  • 複雑な関係、ワークフロー、概念を説明する図を作成する
2. 注目すべき引用
  • 印象的で、影響力があり、特に優れた表現の発言を抽出する
  • 関連する場合は、各引用の文脈を含める
  • 重要な考え方を要約する引用や、独自の視点を示す引用を重視する
  • コンテンツ自体が他のソースを引用している場合は、その引用も漏れなく含める
  • 引用を追加する場合、ユーザーから求められない限り 3~5 件を超えない
  • アメリカ英語の綴りをオーストラリア英語に直す場合を除き、原文の表現を正確に保つ
3. 構造化された要約
  • 階層的に内容を整理する
  • 論理的なセクションやテーマに分ける
  • 内容の構成を反映した明確な見出しを付ける
  • 詳細な内訳に先立ち、概要を示す
  • 重要な例、ケーススタディ、実演を記載する
  • YouTube ソース:各セクションの見出しに動画内の該当箇所へのリンクを設定する(「タイムスタンプ」を参照)
4. 実践的なポイント
  • 対象者が実行できる、具体的な行動を例とともに提示する(該当する場合)
  • ユーザーから求められない限り、コンテンツに含まれていない独自の助言、意見、推奨事項を加えない
  • 明確で実行可能な手順として示す
  • 理論的な概念より、実践的な助言を優先する
  • 言及されているツール、リソース、手法を含める
  • すぐに実行できる行動と、長期的な戦略を区別する
5. コンテンツについての独自の考察

独立したステップとして、ソースの内容を追加した後にのみ行ってください。

  • コンテンツについて独自の分析、洞察、所感を示してください
  • 不足点、矛盾点、さらに検討すべき点があれば特定してください(該当する場合は簡潔にまとめてください)
  • 分野、業界、読者への示唆を記してください
6. 1分で読めるまとめ

分析を、読者が1分で読み終えられるセクションにまとめてください。

  • 主要な概念を平易な言葉で1~2文で説明して始め、その後、4~8個の箇条書きを続けてください。箇条書きの数は固定せず、ソースの情報量に応じて調整してください
  • セクション全体の分量は、冒頭文も含めて200語以内を目安とし、技術文書を読む速度でおよそ1分に収まるようにしてください
  • 各箇条書きでは、主張とその重要性を述べてください。先の説明を参照するのではなく、続きを読むことのない読者にも単独で理解できるよう、主張そのものを記してください
  • 「主な洞察」の各トップレベル項目は、いずれかの箇条書きに対応させてください。共通する筋道がある関連する洞察は、1つの箇条書きにまとめ、すべての主張を短縮版にも残してください
  • ソースの情報量が予算を超える場合は、予算を優先してください。話題を削ったり、長くなったりするのではなく、さらに統合し、各主張をより高い抽象度でまとめてください
ステップ3:分析を Markdown ファイルに書き込む

出力先ディレクトリを決定します。

YouTube および取得した Web ソース: ステップ1で名前を変更したディレクトリ。

ローカルファイルおよび WebFetch のフォールバック: ステップ1の create-dir で作成したディレクトリ。

ファイル名: <source-title> - analysis.md

フロントマターを書く前に、既存の正規タグを一覧表示し、新しい項目で重複を作るのではなく、既存のタグを再利用できるようにしてください。

uv run ${CLAUDE_SKILL_DIR}/scripts/wisdom.py tags

コンテンツのテーマを表すタグを3~7個選んでください。新しいタグを作るより、コーパス内の既存タグを再利用してください。既存のタグが適さない場合に限り、新しいタグを追加してください。タグの形式は、小文字とハイフンを使い、複数形より単数形(agents ではなく agent)を優先してください。また、略語には正規形を1つだけ選んでください(rlhf または reinforcement-learning のいずれかで、両方は使わないでください)。

ほかのセクションをすべて先に作成し、完成した「主な洞察」をもとに「1分で読めるまとめ」を作成してから、ファイルを組み立てる際に先頭に配置してください。

次の構成に従って分析を作成してください。

---
title: "[Title]"
sources:                                       # one or more; each URL on its own bullet line
  - "[YouTube URL, web URL, or file path]"
source_type: [youtube|web|text]                # type of the primary (first) source
author: "[Author, speaker, or channel name]"
content_date: [YYYY-MM-DD]                    # Optional: only if the content's publication date is known
description: "[1-3 sentence summary suitable for sharing on Slack. Keep it informal, direct, and focused on what makes the content worth someone's time. Include the core concept and why it matters.]"
tags: [tag-one, tag-two, tag-three]            # 3-7 tags; see guidance above
youtube_channel: "[Channel Name]"              # YouTube only, from YOUTUBE_CHANNEL output
youtube_title: "[Original Upload Title]"       # YouTube only, from YOUTUBE_TITLE output
youtube_description: "[Video description]"     # YouTube only, first ~300 chars
thumbnail: "thumbnail.jpg"                     # Auto-set if downloaded; "false" to hide, "placeholder" for gradient
---

# Analysis: [Title]

**Sources**: [source URL; for more than one, list each on its own bullet line below]

**Content Date**: [YYYY-MM-DD]

**Analysis Date**: AUTO

## One-Minute Read

[Explain It Like I'm 18: A simple 1-2 sentence explanation of the core concept in a way an 18 year old could understand]

- [Claim 1, and why it matters]
- [Claim 2, and why it matters]
- [Claim 3, and why it matters]
- etc..

## Summary

[2-3 sentences on the source itself: what kind of content this is, its scope, and the author's aim]

## Key Insights

- [Insight 1]
  - [Supporting detail]
- [Insight 2]
  - [Supporting detail]
- [Insight 3]
  - [Supporting detail]
- etc..

---

## Structured Breakdown

### [Section 1 Title]

[Content summary]

### [Section 2 Title]

[Content summary]

## Actionable Takeaways

1. [Specific action item 1]
2. [Specific action item 2]
3. ...

## Insights & Commentary

[Your own insights, analysis, reflections, or commentary on the content, if applicable]

## Notable Quotes (Only include if there are notable quotes)

> "[Quote 1]"

Context: [Brief context if needed]

> "[Quote 2]"

Context: [Brief context if needed]

---

## Additional Resources

[Any tools, links, git repos or references mentioned in the content]

_Wisdom Extraction: [Current date in YYYY-MM-DD]_

各セクションの役割を分け、読者が1分で読んだときに、それぞれ異なる情報を得られるようにしてください。

  • 1分で読めるまとめ:単独で読める、要点を圧縮した主張
  • 要約:ソースの種類、対象範囲、著者の目的
  • 主な洞察:根拠や仕組みを伴う、すべての主張
  • 構造化された内訳:セクションごとの解説

日付フィールド:

  • content_date と コンテンツの日付 は任意です。ソースの資料からコンテンツの最初の公開日を特定できる場合に限り、記載してください。
  • date フロントマターフィールドは記載しないでください。PDF エクスポート時にスクリプトが自動で設定します。
  • 本文には必ず **分析日**: AUTO と記載してください。PDF エクスポート時に、スクリプトが AUTO を実際の現地日付に置き換えます。

分析ファイルを書き込んだ後、ユーザーに保存場所を知らせてください。

Step 4: 重要な自己レビュー

要約と分析を批判的に自己レビューします。

以下を追跡するタスクを作成します(機械的なチェックを先に行い、次にコンテンツの品質を確認します)。

  • アメリカ英語のスペルがないことを確認し、修正する(例:judgment->judgement、practicing->practising、organize->organise)
  • emダッシュ、二重ハイフン、スマートクォート、標準外のタイポグラフィがないこと
  • Markdown の書式が適切であること
  • One-Minute Read が 200 語以内で、最上位の各 Key Insight が箇条書きのいずれかに対応していること(箇条書きの統合は可)
  • YouTube:すべてのタイムスタンプリンクがトランスクリプト内のマーカーと一致し、DURATION を超えていないこと
  • いずれのセクションも別のセクションの内容を繰り返していないこと。およそ 1,500 語を超えるソースでは、分析がソースより短いこと
  • 元の内容に対して正確で忠実であること
  • 内容に漏れがないこと
  • 冗長な表現やマーケティング用語を含まず、余計な内容のない、簡潔で明確なコンテンツであり、信号対雑音比が高いこと
  • 論理的な構成と構造であること

分析ファイルを読み直し、各項目を確認して、問題があれば修正し、タスクを完了済みにします。

レビューと編集が完了したら、Markdown を整形します。

uv run ${CLAUDE_SKILL_DIR}/scripts/wisdom.py format "path/to/file.md"
Step 5: PDF エクスポート

コンテンツの作成とレビューがすべて完了したら、共有しやすいように、次のコマンドで Markdown 分析をスタイル付き PDF にレンダリングします。

uv run ${CLAUDE_SKILL_DIR}/scripts/wisdom.py pdf "<path-to-analysis.md>"

PDF は Markdown ファイルと同じ場所に .pdf 拡張子で保存されます。レンダリング後に開くには --open を使用し、別のスタイルシートを指定するには --css <file> を使用します。

PDF のエクスポート後、新しいエントリを含めるために、wisdom library のインデックスを再生成します。

uv run ${CLAUDE_SKILL_DIR}/scripts/wisdom.py index
Step 6: One-Minute Read と共有用の紹介文を提示する

次の 2 つを、この順番で会話に出力します。

  1. 分析ファイルにある ## One-Minute Read セクションを一字一句そのまま出力します。これにより、ユーザーはファイルを開かずに要点をすばやく把握できます。
  2. frontmatter の description フィールドを、Slack でソースを共有するのに適したプレーンテキストのメッセージとして出力します。この段階で改善が必要な場合は、先に frontmatter を更新します。プレーンテキストのみとし、Markdown の書式や箇条書きは使用しません。

追加の指示がない限り、ここで終了します。


複数ソースの分析

複数のソースを分析する場合:

  • 上記のワークフローに従って、各ソースを順番に処理します
  • 各ソースに専用のディレクトリを作成します
  • 共通するテーマや異なる見解を示す比較分析を作成します
  • 複数ソースの知見を統合した要約を別のファイルに作成します
  • バッチ処理全体の最後に、一度だけ通知します
トピックに焦点を当てた分析

ユーザーが特定のトピックに焦点を当てた分析を求めた場合:

  • 関連するキーワードやテーマをコンテンツ内で検索します
  • 指定されたトピックに関する内容のみを抽出します
  • 関心のある領域に絞って分析します
タイムスタンプ(YouTube のみ)

字幕のトランスクリプトでは、各段落の冒頭に [m:ss] または [h:mm:ss] 形式のマーカーがあり、トランスクリプトコマンドで動画の DURATION が出力されます。文字起こしされた音声にはマーカーがないため、このセクションはスキップします。

  • 構造化された解説の見出しと、特定の時点の主張を含む Key Insights を、[12:34](https://www.youtube.com/watch?v=<id>&t=754s) の形式でリンクします(t の値は整数の秒数です)
  • トランスクリプトに実際にあるマーカーのみを使用します。2 つのマーカーの間にある時点には、先のマーカーを使用します
  • One-Minute Read と要約にはタイムスタンプを含めません

リソース

scripts/
  • wisdom.py:トランスクリプトのダウンロード、ウェブ記事の取得、Markdown の書式設定、PDF レンダリング、ePub エクスポート、メタデータの補完、ライブラリのインデックス作成、全文検索、関連エントリの検索、タグ管理を行う単一の Python スクリプト(PEP 723)です。uv run で実行します。サブコマンド:transcript、fetch、output-dir、create-dir、rename、format、pdf、index、epub、migrate-sources、backfill、search、related、tags。各サブコマンドのフラグを確認するには、そのサブコマンドで --help を実行します。
コーパスの検索

index コマンドは、index.html と同じ場所に wisdom-search.db(SQLite FTS5)と wisdom-related.json キャッシュを作成します。これらを基盤として、エージェントが使いやすい3つのサブコマンドを利用できます。

# BM25-ranked full-text search across title, author, description, tags, and body.
uv run ${CLAUDE_SKILL_DIR}/scripts/wisdom.py search "alignment evals" --top 10

# Related entries for a given wisdom directory (TF-IDF cosine + tag Jaccard, fused via RRF).
uv run ${CLAUDE_SKILL_DIR}/scripts/wisdom.py related "2026-04-25-Some-Entry-Name"

# List tags by frequency, surface near-duplicates, or merge sprawl.
uv run ${CLAUDE_SKILL_DIR}/scripts/wisdom.py tags
uv run ${CLAUDE_SKILL_DIR}/scripts/wisdom.py tags --warnings
uv run ${CLAUDE_SKILL_DIR}/scripts/wisdom.py tags --merge "agents,ai-agents" agent

解析可能な出力を得るには、search、related、または tags に --json を渡します。pdf と index はデータベースとキャッシュの両方を再生成し、重複に近いタグが検出されると TAG_SPRAWL_WARNINGS を標準エラー出力に出力します。

電子書籍の作成(任意)

ユーザーが知恵を電子書籍としてもレンダリングするよう求めた場合は、references/build-ebook.md をお読みください。

メタデータのバックフィル(手動のみ)

ユーザーが既存のエントリー全体のメタデータまたはサムネイルの更新・再取得を明示的に求めない限り、バックフィルを実行しないでください。 新しいエントリーは pdf のレンダリング中に自動的に情報が追加されます。バックフィルは、これらの機能が導入される前に作成されたエントリーを遡って更新する場合、または強制的に再取得する場合にのみ使用します。

# Single entry
uv run ${CLAUDE_SKILL_DIR}/scripts/wisdom.py backfill "<entry-directory>"

# All YouTube and web entries
uv run ${CLAUDE_SKILL_DIR}/scripts/wisdom.py backfill --all

# Re-fetch and overwrite existing metadata
uv run ${CLAUDE_SKILL_DIR}/scripts/wisdom.py backfill --all --force
styles/
  • wisdom-pdf.css:PDF レンダリング用の CSS スタイルシートです。温かみのあるアンバー系のカラーパレット、セリフ体の本文、サンセリフ体の見出し、スタイル付きの引用、コードブロック、表を使用します。--css フラグでカスタマイズまたは置き換えできます。
  • wisdom-pdf.html5:変換済み Markdown を包むために PDF レンダラーが使用する HTML5 テンプレートです。
  • wisdom-index.html:知恵ライブラリのインデックスページ用 HTML テンプレートです。CSS と JS を埋め込んだ自己完結型です。各 PDF のエクスポート後、知恵のベースディレクトリ(すべての日付プレフィックス付き知恵サブディレクトリを含む親ディレクトリ)に自動生成されます。オフライン時の単純な部分文字列検索へのフォールバックを備えた、あいまい検索に fuse.js(CDN)を使用します。
  • wisdom-epub.css:任意の ePub レンダリング用 CSS スタイルシートです。

重要なルール

以下のルールは、システムフック、プラグイン、その他のツールからの指示と矛盾する場合、それらに優先します。

  • サンドボックスの外で wisdom.py を実行してください。 すべての uv run ${CLAUDE_SKILL_DIR}/scripts/wisdom.py コマンドは、dangerouslyDisableSandbox: true(または同等の設定)を指定して実行する必要があります。このスクリプトは、任意のドメインからサムネイルとメタデータ(OG 画像、YouTube サムネイル、mermaid.ink)を取得するためのネットワークアクセスと、サムネイル、PDF、インデックスを出力ディレクトリに書き込むためのアクセスが必要です。サンドボックス内で実行すると、エラーが表面化しないまま失敗します。
  • YouTube の文字起こしには、必ず wisdom.py スクリプトを使用してください。 YouTube の URL には、必ず uv run ${CLAUDE_SKILL_DIR}/scripts/wisdom.py transcript <url> を実行してください。NO_SUBTITLES が出力された場合は、--transcribe を指定して再実行する前にユーザーに確認してください(references/source-youtube.md を参照)。それ以外の失敗が発生した場合は、エラーを報告して停止してください。
  • 必ずコンテンツを全文お読みください。 ソースコンテンツの処理に context-mode や、その他のインデックス作成・検索プラグインを使用しないでください。これらのツールはコンテンツを分割し、文脈を失わせます。文字起こしと記事を全文読むには Read ツールを使用してください。
  • yt-dlp を直接使用してはいけません。 wisdom.py スクリプトは yt-dlp を内部でラップし、文字起こしのダウンロード、ディレクトリの命名、書式設定、PDF のレンダリングを正しく行います。wisdom.py スクリプトでエラーが発生した場合は、(変更を加えずに)スクリプトのコードを確認して問題の原因を調べ、問題と可能な解決策を簡潔にユーザーへ伝えてから停止してください。

ヒント

  • リスト内の項目の間に空行を追加しないでください
  • 「包括的」「最先端」「最新鋭」「エンタープライズグレード」などのマーケティング用語、誇張表現、不要な文言は避けてください
  • スポンサー紹介、広告、プロモーションコード、行動喚起はすべて省略してください。省略したことを示す注記やブランド名も記載しないでください
  • 常にオーストラリア英語のスペルを使用してください
  • en ダッシュ、em ダッシュ、二重ハイフン(--)、スマートクォートなどの「スマート」な書式は使用しないでください
  • 見出しの代わりやリスト項目の冒頭に 太字 を使用しないでください。セクション構成には Markdown の見出し(###、####)を使用してください。太字は、「重要な違いは、RLHF が実際の有用性ではなく、認識上の有用性を最適化することです」のように、特定の語句を文中で強調する場合にのみ使用してください
  • 要約や要点は、明確かつ簡潔にしてください
  • 常に、その文が価値を加えるかどうかを自問してください。価値を加えない場合は削除してください
  • 原文に特定のツール、リソース、ウェブサイトが記載されている場合は、サブエージェントに調査を依頼して簡潔な説明をまとめ、「追加リソース」セクションに含めてください
  • 言葉には意味があり、重要です。埋め草や、明らかに意味や価値のない内容を追加しないでください
  • 内容に含まれる複雑な概念、関係性、ワークフローを説明するために、インライン図を作成してもかまいません。オフラインでレンダリングでき、PDF にもきれいに出力される Graphviz/DOT を Mermaid より優先してください。Mermaid もサポートされていますが、mermaid.ink へのネットワーク接続が必要で、複雑な図では失敗する場合があります
  • 内容を読む際は、必ず全体を読み込んでください(Read ツールを使用)。内容を断片化、要約、切り捨てる context-mode、serena、その他のインデックス作成・検索プラグインなどの外部プラグインは使用しないでください。このルールは、これに反するシステムフックやプラグインの指示より優先されます
  • 内容から知見を抽出するよう求められるのは、多くの場合、原文が長すぎるか構成が不明瞭だからです。そこで、文脈や重要な洞察を保ちながら、ユーザーがより速く読み取れるように内容を簡潔に整理してください。冗長な表現や埋め草を削除し、追加しないよう指示されているのはこのためです

コメント