mcpField
I
ingest

ingest

github.com/garrytan生産性31.4k248 回インストール今日更新
リポジトリ

ingest について

ingestは、会議、記事、メディア、文書、会話をGBrainに整理するエージェントスキルです。元データを保持し、記録した事実に出典を付け、リンクやタイムラインでエンティティページを関連付けます。

主な機能

  1. 01会議、メディア、文書、メッセージを処理
  2. 02元データと出典情報を保持
  3. 03ナレッジベースページの事実に引用を付与
  4. 04エンティティページとタイムラインを更新
  5. 05相互リンクとエンティティのバックリンクを作成
  6. 06メディアを専用の取り込み手順へ振り分け

活用シーン

  1. 01参加者の情報とともに会議記録を整理
  2. 02出典記録付きで記事や文書を保存
  3. 03動画、ポッドキャスト、SNS投稿を取り込み
  4. 04イベント情報を関連エンティティページに反映

MCP 対応

このスキルは、search、get、put、sync、タイムライン更新、リンク、元ファイル保存などのGBrain操作を使用します。入力では、MCPサーバーではなく専用取り込みスキルへのルーターとして説明されています。

インストール

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

$npx skills add https://github.com/garrytan/gbrain --skill ingest

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

詳細

取り込みスキル

会議、記事、メディア、ドキュメント、会話をブレインに取り込みます。

記録ルール: 新しいページを作成する前に、skills/_brain-filing-rules.md を読んでください。

契約

  • ブレインのページに書き込むすべての事実には、日付と出所を含むインラインの [Source: ...] 引用を付けます。
  • エンティティへの言及がある場合はすべて、そのエンティティのページから言及元のページへのバックリンクを作成します(絶対遵守事項)。
  • 出所を記録するため、生のソースは gbrain files upload-raw でサイズに応じて自動的に振り分けて保存します。
  • 状態セクションは、現在の最善の理解に基づいて書き直し、追記はしません。
  • ユーザーが明示的に自動キャプチャにオプトインした後(skills/signal-detector/SKILL.md を参照)は、実質的な受信メッセージごとにエンティティ検出を実行し、注目すべきエンティティのページを作成または更新します。オプトインがない場合は、ユーザーから保存を依頼された内容のみをキャプチャします。
  • 新しいエンティティページを作成する前に、注目度の基準を確認します。既存のページは更新し、新規ページは注目すべきエンティティに限り、ウェブ検索または既存のブレインのコンテキストから得られた有意義な内容がある場合にのみ作成します。空のページは作成しません。注目に値しない言及は、言及元のページにインライン参照として残します。

規約: 絶対遵守事項であるバックリンクの付与については、skills/conventions/quality.md を参照してください。

ブレインのページがある人物または企業への言及はすべて、エンティティのページから言及元のページへのバックリンクを作成する必要があります。リンクされていない言及は、ブレインの不備です。形式については skills/_brain-filing-rules.md を参照してください。

引用の要件(必須)

ブレインのページに書き込むすべての事実には、インラインの [Source: ...] 引用を付ける必要があります。

  • ユーザーの発言: [Source: User, {context}, YYYY-MM-DD]
  • 会議のデータ: [Source: Meeting "{title}", YYYY-MM-DD]
  • メール/メッセージ: [Source: email from {name} re: {subject}, YYYY-MM-DD]
  • ウェブコンテンツ: [Source: {publication}, {URL}, YYYY-MM-DD]
  • ソーシャルメディア: [Source: X/@handle, YYYY-MM-DD](URL)(リンクを含める)
  • 統合: [Source: compiled from {sources}]

フェーズ

ルーターの注記: このスキルはルーターです。専門的な取り込みについては、idea-ingest、media-ingest、meeting-ingestion を参照してください。

  1. ソースを解析します。 入力から人物、企業、日付、イベントを抽出します。
  2. 言及された各エンティティについて:
    • gbrain からエンティティのページを読み込み、存在するか確認します
    • 存在する場合:compiled_truth を更新します(新しい情報を使って State セクションを書き直し、追記はしません)
    • 新規の場合:注目度の基準を確認し、適切なタイプとスラッグを指定して gbrain にページを保存します
  3. タイムラインに追記します。 各イベントについて、日付、要約、引用を含むタイムラインの項目を gbrain に追加します。
  4. 相互参照リンクを作成します。 一緒に言及されたすべてのエンティティのペアについて、適切な関係タイプを使用して gbrain 内でリンクします。
  5. すべてのエンティティにバックリンクを付けます。 言及されたすべてのエンティティのページを更新し、このページへのバックリンクを追加します(絶対遵守事項)。
  6. タイムラインを統合します。 同じイベントは、言及されたすべてのエンティティのタイムラインに表示されます。Alice が Acme Corp で Bob に会った場合、そのイベントは Alice、Bob、Acme Corp の各ページに記録されます。

すべてのメッセージでのエンティティ検出(オプトイン後)

自動キャプチャはデフォルトでオフです。ユーザーがこのブレインの自動キャプチャに明示的にオプトインすると(書き込み前に、保存された選択内容を skills/signal-detector/SKILL.md で確認します)、本番環境のエージェントは、実質的な受信メッセージごとにエンティティへの言及を検出します。これは、ブレインを時間とともに充実させるシグナル検出ループです。オプトインがない場合は、ユーザーから保存を依頼された内容のみを書き込みます。

プロトコル
  1. メッセージをスキャンし、人物、企業、概念、独自の思考など、エンティティへの言及を検出します。オプトインが記録されたら、実質的な内容を含むすべてのメッセージで実行します(純粋に運用上のメッセージはスキップし、メッセージごとのより限定的な指示に従います)。
  2. 検出した各エンティティについて:
    • gbrain search "name" -- ページがすでに存在するか確認します。
    • 存在する場合: gbrain get <slug> でコンテキストを読み込みます。編集済みの情報を回答に反映します。メッセージに新しい情報が含まれている場合は、ページを更新します。
    • 存在しない場合: skills/_brain-filing-rules.md を参照して、注目に値するかを判断します。そのエンティティを記録する価値がある場合は、gbrain put <type/slug> で新しいページを作成し、把握している情報を記入します。
  3. ページを作成または更新した後: gbrain に同期します。
    gbrain sync --no-pull --no-embed
    
  4. 会話を妨げないでください。 エンティティの検出と情報の補足は、回答の前ではなく、回答と並行して行います。ユーザーが回答を得るために、ナレッジベースへの書き込みを待つ必要はありません。
注目に値するもの
  • ユーザーがやり取りする、または話題にする人物(偶然の言及は除く)
  • ユーザーの仕事や関心に関係する企業
  • ユーザーが参照または作成する概念やフレームワーク
  • ユーザー自身の独自の思考(アイデア、主張、考察)――最も価値が高いもの
  • 注目に値するかを判断する基準の詳細は、skills/_brain-filing-rules.md を参照してください
ユーザー自身の思考から記録するもの

独自の思考は、最も価値の高いシグナルです。正確な表現を記録してください。ユーザーの言葉そのものが洞察です。言い換えないでください。

  • 新しい考察や主張
  • フレームワーク、メンタルモデル、ヒューリスティック
  • 他の人が見落としているアイデア同士のつながり
  • 理由を伴う反対意見
  • 外部の刺激に対する強い反応(きっかけと理由)

メディアのワークフロー

ユーザーが目にしたコンテンツは、ナレッジベースに記録します。形式ではなく、主要な主題に基づいて分類してください(skills/_brain-filing-rules.md を参照)。

記事とウェブコンテンツ

入力: ユーザーが共有した URL、または会話で言及された記事。

手順:

  1. コンテンツを取得します(web_fetch または同等の手段)
  2. タイトル、著者、掲載媒体、日付、全文を抽出します
  3. 要約します:エグゼクティブサマリーと主な論点(単なる焼き直しではなく)
  4. エンティティを抽出します:言及された人物、企業、概念
  5. 出典確認のために元のソースを保存します(下記の「元ソースの保存」を参照)
  6. ユーザーに合わせて分析します。単に要約するだけではありません。ユーザーについて把握している情報を踏まえて、どこが興味深いでしょうか。関連性、矛盾、コンテンツの機会を示します。

保存先: 分類ルールに従った適切なディレクトリ(人物については people/、企業については companies/、再利用可能なフレームワークについては concepts/、生データについては sources/)

動画とポッドキャスト

入力: URL(YouTube、ポッドキャストなど)、またはローカルの音声/動画ファイル。

手順:

  1. 文字起こしを取得します。可能であれば話者を識別します(Diarize.io のようなサービスでは、話者ラベル付きの単語単位のタイムスタンプを取得できます)
  2. 生の文字起こしを保存します(JSON と、人が読める TXT の両方)
  3. 分析します:エグゼクティブサマリー、主なアイデア、話者を明記した重要な引用、注目すべきエピソードや逸話、言及された人物や企業
  4. 言及されたすべてのエンティティを抽出し、相互参照します
  5. 絶対遵守のルール: 動画/ポッドキャストのナレッジベースページには、必ず話者識別済みの生の文字起こしへのリンクを含めてください。文字起こしへのリンクがないページは不完全です。

保存先: media/videos/ または media/podcasts/。すべてのエンティティへのバックリンクを付けます。

品質基準:

  • 魅力的な見出し(「この動画では……について説明しています」のようなものではなく)
  • 視聴したくなるエグゼクティブサマリー
  • 話題のラベルではなく、実際の洞察としての「主なアイデア」
  • 実際の話者名を付けた逐語的な引用(「speaker_0」ではなく)
  • すべてのエンティティをコンテキストとともに抽出し、バックリンクを付ける
PDF とドキュメント

入力: ファイルパスまたは URL。

手順:

  1. テキストを抽出します(スキャンされた PDF や画像形式の PDF では OCR を使用)
  2. 出典確認のために元のソースを保存します
  3. 要約します:エグゼクティブサマリー、主なセクション、注目すべきデータ
  4. エンティティを抽出します
  5. エンティティのページから相互参照します

保存先: 分類ルールに従います(形式ではなく、主要な主題に基づいて分類してください)。

スクリーンショットと画像

入力: 画像ファイル。

処理:

  1. 内容を分析します(テキストが多い画像は OCR、写真は説明を作成)
  2. ツイートのスクリーンショットの場合:テキスト、投稿者、日付を抽出し、ソーシャルメディアのワークフローに回します
  3. 記事のスクリーンショットの場合:テキストを抽出し、記事のワークフローに回します
  4. データ/グラフの場合:データポイントを抽出し、調査結果を説明します

保存先: 内容に応じて、上記の適切なワークフローに回します。

会議の議事録

入力: 会議録音サービスから取得した議事録、または手動で作成したメモ。

処理:

  1. 議事録全体を取得します(一次情報源として扱います。AI による要約の信頼度は中〜低です)
  2. 出典の証明のため、未加工の議事録を保存します
  3. 会議ページを作成し、区切り線より上に自分の分析、下に未加工の議事録を記載します
  4. エンティティへの反映(必須): 出席者と話題に上がった各企業について、次の処理を行います。
    • 新しい情報が明らかになった場合、その人物または企業の brain ページの State セクションを更新します
    • 会議ページへのリンクを付けて、その人物または企業の Timeline に追記します
    • その人物または企業が注目に値し、まだページがない場合はページを作成します
  5. すべてのエンティティページを更新するまで、会議の取り込みは完了していません

保存先: meetings/YYYY-MM-DD-short-description.md

質の高い会議ページの条件:

  • 箇条書きを並べるだけでなく、本質的な論点を明らかにしている
  • 既存の brain ページ(人物、企業、案件)とつながっている
  • 変化した点(状況、決定事項、新情報)を示している
  • 緊張関係や、あえて語られなかったことを明示している
  • 形式的な要約ではなく、実際のやり取りの様子を捉えている
ソーシャルメディアのコンテンツ

入力: ツイート、スレッド、またはソーシャルメディアの投稿。

処理:

  1. 全コンテンツ(スレッド、引用ツイート、文脈)を取得します
  2. 画像がある場合:ビジョンモデルを使って OCR を行い、テキスト全体を抽出します
  3. 要約します。何が述べられているか、なぜ重要なのか、誰が関与しているかをまとめます
  4. エンティティを抽出し、brain ページを更新します
  5. 元の投稿への直接リンクを記載します(引用のため必須)

保存先: 日次集約の場合は media/x/、投稿が主に特定の人物/企業についての内容であれば、そのエンティティ専用のディレクトリに保存します

未加工のソースの保持

取り込んだすべての項目について、出典の証明のため未加工のソースを保持する必要があります。

サイズに応じた自動振り分けには gbrain files upload-raw を使用します:

gbrain files upload-raw <file> --page <page-slug> --type <type>
  • < 100 MB のテキスト/PDF:git 内に保存されます(brain リポジトリの .raw/ サイドカーディレクトリ)
  • >= 100 MB、またはメディア(動画、音声、画像):クラウドストレージにアップロードされます TUS 再開可能アップロードを使用し、brain リポジトリには .redirect.yaml ポインターが残されます

.redirect.yaml ポインターの形式:

target: supabase://brain-files/page-slug/filename.mp4
bucket: brain-files
storage_path: page-slug/filename.mp4
size: 524288000
size_human: 500 MB
hash: sha256:abc123...
mime: video/mp4
uploaded: 2026-04-11T...
type: transcript

保存済みファイルへのアクセス:

  • gbrain files signed-url <storage-path> -- 閲覧/共有用の1時間有効な署名付き URL を生成します
  • gbrain files restore <dir> -- クラウドストレージからローカルにダウンロードします

gbrain の put_raw_data を使用して、未加工の API 応答とメタデータを保存します(バイナリではなく JSON を使用)。

一括処理の前にテストする

複数の項目を処理する場合(動画の一括取り込み、会議の一括処理など):

  1. まず3〜5件でテストします。 テストモードがあれば実行します。
  2. 実際の出力を確認します。 品質は十分ですか? タイトルは魅力的ですか(「この動画では……について説明しています」のようなものになっていませんか)? エンティティが抽出され、相互リンクされていますか? 形式は整っていますか?
  3. 問題があれば、その場しのぎの修正ではなく、アプローチ/スキルを修正します。
  4. その後に限り、一括実行します。 処理を制限し、5〜10件ごとにコミットします。

最初に3件をテストする追加コストはほぼゼロです。質の低いページを100件クリーンアップするコストは膨大です。

品質ルール

  • compiled_truth のエグゼクティブサマリーを更新します。タイムラインへの追記だけでは不十分です
  • State セクションは追記ではなく、書き直します。現在の最善の理解のみを記載します。
  • Timeline の項目は新しい順に並べます
  • 言及された人物/企業は、注目に値する場合、すべてページを作成します(ファイリングのルールを参照)
  • リンクの種類:知り合い、勤務先、投資先、創業、面会先、議論
  • 出典の明記:すべての Timeline 項目に [Source: ...] の引用を含めます
  • バックリンク:すべてのエンティティへの言及にバックリンクを作成します(鉄則)
  • ファイリング:形式や出典ではなく、主題に基づいてファイルを分類します(ファイリングのルールを参照)

失敗した場合

gbrain のエラー code、終了コード、[AGENT] ブロック、または通知ブロックについては、エージェントオペレータープロトコルに従ってください。このスキル固有の対応は次のとおりです。

  • このスキルが振り分けたサブスキルが失敗した場合は、そのサブスキル名と失敗理由を、そのスキル固有の失敗時の指示に従って報告してください。汎用のページ書き込みに黙って振り分け直してはいけません。
  • put_page が write_pending(終了コード 10)または revision_conflict を返した場合は、gbrain write-request <request_id> をポーリングするか、再読み込みしてマージしてください。ページを重複して書き込んではいけません。
  • gbrain files upload-raw がサイズまたはパスを理由に拒否された場合は、参照先を保存し、元ファイルがアップロードされなかったことをユーザーに伝えてください。

アンチパターン

  • State セクションへの追記。 更新のたびに、State は現時点での最善の理解に基づいて書き直します。追記のみの State セクションは古くなり、矛盾が生じます。
  • バックリンクなしでの取り込み。 リンクのない言及は、壊れた脳です。言及されたすべてのエンティティについて、そのページから言及元のページへのバックリンクが必要です。
  • 元ソースの保存を省略する。 取り込むすべての項目について、元ソースを保存する必要があります。出典情報のない脳のページは検証できません。
  • サンプルテストなしでの一括処理。 まず 3~5 件でテストしてください。品質上の問題は、その都度のパッチではなく、アプローチを修正して解決してください。
  • ユーザーの元の考えを言い換える。 ユーザーの正確な表現こそが洞察です。アイデア、主張、フレームワークは、原文の表現どおりに記録してください。

出力形式

INGESTED: [title]
==================

Page: [slug]
Type: [person / company / meeting / media / concept]
Source: [source description]

Entities detected: N
- [entity] -> [created / updated] ([slug])

Back-links created: N
Timeline entries: N
Raw source: [preserved at path / uploaded to cloud]

使用ツール

  • gbrain からページを読み取る(get_page)
  • gbrain のページを保存/更新する(put_page)
  • gbrain にタイムライン項目を追加する(add_timeline_entry)
  • gbrain でエンティティをリンクする(add_link)
  • ページのタグを一覧表示する(get_tags)
  • ページにタグを付ける(add_tag)
  • gbrain に元データを保存する(put_raw_data)
  • バックリンクを確認する(get_backlinks)

コメント