Community研究&データ分析github.com

MinorBaek/wiki-ingest

科学論文をマークダウン形式の知識Wiki(Obsidian互換)に取り込みます。論文ノートを作成・更新し、その知見をコンセプトノートやメソッドノートに伝播させ、ソースの忠実性をチェックします。

wiki-ingest とは?

このスキルは、科学論文をLLM駆動のWikiワークフローで取り込むためのツールです。ユーザーが「/wiki-ingest」や「この論文をWikiに追加して」と指示すると、論文のメタデータや本文を解析し、Obsidian互換のマークダウンノートを作成・更新します。特徴は、単なるメモ作成に留まらず、抽出した知見をWiki内のコンセプトノートやメソッドノートに自動的に伝播させる点です。これにより、知識が相互にリンクされ、蓄積・複合的に成長します。対応する論文の分野は、Wikiの`WIKI_SCHEMA.md`で定義されているあらゆる科学分野です。スキルはファイルシステムベースで動作し、特別なデータベースやプラグインは不要です。また、ソースの忠実性を検証するための確認モードも備えており、誤った情報の混入を防ぎます。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/MinorBaek/science-wiki-kit/tree/HEAD/skills/wiki-ingest

Installed? Explore more 研究&データ分析 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

wiki-ingest は何をしますか?

科学知識ベース向けのLLM-Wiki取り込みパターンを実装します。 取り込まれた論文はそれぞれ、単なる孤立したメモではなく、トレース可能で複合的に成長する知識を生み出します。

初回取り込みの前に、キット内の docs/GOTCHAS.md(取り込み、合成、リントにおける運用上の注意点)をお読みください。

モード

  • デフォルト(取り込み): /wiki-ingest <論文> は論文ノートを作成または更新し、コンセプトとメソッドに伝播します(デフォルトワークフロー参照)。
  • 確認モード: /wiki-ingest verify:<PaperNote> は既存のノートをその全文と照合して再検証し、差分を報告しますが、何も再生成したり上書きしたりしません(references/VERIFY-DIFF-MODE.md を参照)。ユーザーが各編集を確認しない限り、読み取り専用です。

役割と境界

行うこと: 論文ノートの作成・更新、コンセプトノートとメソッドノートへの伝播、インデックスとログの更新、すべての変更の報告。

行わないこと: 引用の捏造、単発のコンセプトのためのコンセプトノートの作成、データベースへの書き込み。すべての書き込みはホストのファイルツール(Read/Write/Edit)を通じて行われます。

ファイルの配置場所

パスは wiki.config.json(ボールトルート、Wikiルート、フォルダ名、言語、しきい値)から取得されます。デフォルト:

<vault_root>/
  <wiki_root>/            # デフォルト: wiki/
    papers/  concepts/  methods/  books/  fields/  debates/
    WIKI_SCHEMA.md        # フロントマター契約、命名規則、分類法、取り込みプロトコル
    index.md  log.md
  templates/              # paper.md, concept.md, method.md, book.md, chapter.md, submoc.md, synthesis.md

以下、<kit> は tools/(seal.py、pmc_tables.py)を保持する science-wiki-kit チェックアウトを指します。そのパスは wiki.config.json の kit_dir キーで、インストーラーによって書き込まれます。欠落している場合は、スキルがチェックアウトからリンクされている場合、このスキルのディレクトリの2つ上のフォルダです。

開始する前に必ず WIKI_SCHEMA.md を読んでください。 このWikiのフロントマター契約、命名規則、フィールド分類法が定義されています。

関連スキル

  • wiki-lint: wiki.config.json(インデックス更新で使用されるケバブケースからタイトルケースへのフィールドマップ)を共有します。各取り込み後に実行して、ドリフトが発生していないことを確認します。
  • wiki-ingest-book: 書籍と章のためのコンパニオンスキル。同じステータスルールとインデックスルーティングが適用されます。
  • wiki-synthesize: このスキルが生成したノートを消費します。

初期ステータス判定(すべての新しいノートに適用)

status は意図的に設定してください。テンプレートのデフォルトのままにしないでください。以下の N は設定ファイルの min_distinct_sources_for_final(デフォルト2)です。

ノートタイプ条件初期 status
論文抄録 + 少なくとも2つのソース付き知見が抽出されたread
論文DOI/タイトルのメタデータのみ、全文なしstub + > [!warning] Stub: pending ingest. コールアウト
コンセプトN 以上の異なるソース作品から少なくとも2つのソース付き知見final
コンセプトすべてが単一のソース作品からの少なくとも2つのソース付き知見draft(単一ソース統合)
コンセプト定義 + 1つのソース付き知見draft
コンセプト定義のみ、Key Findings なしstub + > [!warning] Stub: no sourced findings yet. コールアウト
メソッド定義 + N 以上の異なるソース作品が「このメソッドを使用する論文」に含まれるfinal
メソッド定義と1つのソース作品のみdraft(単一ソース)
メソッド定義があるがソース引用なしdraft
メソッド骨組みのみstub

final への昇格には N 個の異なるソース作品が必要です。 「異なる」とは独立した論文または書籍をカウントします。書籍の親ノートとその章ノート(Author_2025 と Author_2025_Ch01 と Author_2025_Ch02)は1つの作品にまとめられます。同様に、同じ書籍の複数の章も同様です。単一のリッチなソース(系統的レビュー、教科書の章)はコンセプトを作成し複数の知見をもたらす可能性がありますが、2番目の独立したソースがそれを裏付けるまで、ノートは draft のままです。draft ノートに知見を追加する場合、編集後に異なる作品をカウントし、カウントが N に達した場合のみ昇格させ、昇格を取り込みレポートに記録します。単一ソースの draft ノートには、「単一ソース統合、2番目のソースが取り込まれたら裏付けてください」という短い一文を本文に含めます。

デフォルトワークフロー

1. スキーマを読む

WIKI_SCHEMA.md を読みます。

2. 論文ソースを解決する

以下を順に試し、環境が提供するものを使用してください:

  • 参考文献管理ツール (Zotero MCP がサポートされるアダプター): 検索、メタデータ、全文の順。シーケンスと検索の注意点は references/INGEST-WORKFLOW.md を参照。
  • 出版社XMLテーブル (PMC のオープンアクセス): DOI に PMCID がある場合、Europe PMC JATS からセルごとにテーブルを取得できます。PDF のテキストレイヤーに依存しません: python <kit>/tools/pmc_tables.py <DOI> --out _temp/<stem>_pmc.md --body (終了コード2はPMCIDがないことを意味します)。ページ画像を開く前に、JATS に対してテーブル番号を確認してください。JATS と PDF で矛盾がある場合、印刷された PDF が優先され、矛盾が注記されます。PMCID なし: PDF を使用します。
  • PubMed MCP (論文が参考文献管理ツールにない場合): キーワードで検索し、PMID で取得します(DOI は空の full_text を返す可能性があります)。PMID を論文ノートの notes: フィールドに保存します。生物医学論文にのみ使用し、ユーザーがライブラリにないことを確認した後に使用します。
  • DOI のみ: それをメモします。メタデータを捏造しないでください。
  • ウェブ記事 (オープンアクセスの HTML/URL): 最初にウェブからマークダウンへのツール(例:defuddle スキル)でクリーンなマークダウンに変換し、その後出力を抄録と本文として扱います。DOI がない場合は、引用ソースとして URL を使用します。
  • 手動: ユーザーが抄録またはテキストを貼り付けます。メタデータを抽出し、不明な点をフラグします。

PDF の場所は重要です。ノートは、後でクリーンアップされるワーキングフォルダ(Downloads/、スクラッチディレクトリ)を決して引用してはいけません。ノートを書く前に、グループが使用するライブラリの場所に PDF を整理し、source_verification に記録します。論文がライブラリにない場合、または適切なコレクションが不明な場合は、何かを移動する前にユーザーに確認してください。

3. 論文ノートのファイル名を決定する

形式: FirstAuthor_Year_Keyword.md

  • FirstAuthor = 最初の著者の姓(ASCII のみ、アクセント記号なし、スペースなし)
  • Year = 4桁
  • Keyword = 1~3語の記述子(CamelCase またはアンダースコア、スペースなし)
  • 例: Smith_2023_Eccentric_Training.md

重複と同一性のチェック(書き込みの前に実行します。データのサイレントロスを防ぎます):

  1. ベースネームのコンテンツ検索、または test -f "<wiki_root>/papers/{filename}.md" で存在を確認します。単一のグロブが「ファイルが見つかりません」を返すのを信頼しないでください。ファイルグロブツールは存在するノートに対して偽陰性を返すことがあり、その後に盲目的な Write を行うと、完全に伝播されたノートを上書きする可能性があります。Write が「ファイルがまだ読み取られていません」というエラーを返した場合、それはノートが存在する証拠です。それを読み取り、その場で更新し、決してゼロから書き直さないでください。
  2. 既存のノートが status: stub の場合、それが同じ論文であると仮定しないでください。 別の論文の引用コンテキストから作成されたスタブは暫定的なメタデータを持ち、時には別の論文(年が間違っている、論文と書籍の章、2つの関連論文が混同されている)であることがあります。最初に実際のソースを解決し、著者、年、ジャーナルをスタブと引用ノートの参照リストの両方と比較します。別の論文の場合は、新しいノートとして取り込み、スタブを維持するか改善します。
  3. 同じ論文であることが確認された場合は、その場で更新し、決して重複を作成しないでください。全文を入手した後、ファイル名がより説明的なキーワードに正当に変更される場合があります。その場合は、すべての [[OldName]] を再リンクし、孤立したスタブを削除し、wiki-lint を再実行して壊れたリンクが残っていないことを確認します。
  4. Citekey 同一性ガード。 同じ論文の2つのノートは異なるファイル名を持つ可能性があるため、クリーンなベースネームプローブは同一性について何も証明しません。参考文献管理ツールがアイテムを解決したら、書き込もうとしている正確な citekey を papers/ 内で検索します(grep -l '^citekey: "\?{citekey}"\?$' papers/*.md)。異なるファイル名でヒットした場合、その論文はすでに取り込まれています。そのノートを更新してください。完全一致のため、誤検出はありません。

4. 論文ノートを作成または更新する

<wiki_root>/papers/{filename}.md を templates/paper.md から書き込みます。解決されたメタデータからすべてのフロントマターフィールドを埋めます。last_verified を今日の日付に設定します(取り込みは検証イベントです)。WIKI_SCHEMA.md の分類スラッグから research_lines を割り当てます。

5. 抽出と評価

抄録、結果、考察を一度に処理し、すべてを同時に行います:

  • 特定: 3~8個のドメインコンセプト(実証的構成概念、変数)と1~4個の主要メソッドを特定します。ヒューリスティックについては references/INGEST-WORKFLOW.md を参照。
  • evidence_level の分類: 研究デザインを、WIKI_SCHEMA.md の管理された語彙(SR-MA、RCT、cohort、...)から分類します。これは生合成レイヤーが重み付けするデザイン軸です。測定品質軸は、関連する場合は各知見にインラインで((MRI)、(anthropometric estimate))残り、フロントマターには決して入れません。
  • 研究ラインルーティング: 論文を WIKI_SCHEMA.md の研究ラインにマッチさせます。関連する内容にマッチするラインがない場合は、伝播する前にスキーマにラインを追加します(スラッグ + ラベルペアを追加。既存のラインの名前変更や削除は行わないでください)。境界線上の場合は、最も近いラインを使用し、レポートでフラグを立てます。
  • コンセプト対メソッドルーティング: 実証的知見は concepts/ へ。統計ツール、研究デザイン、測定プロトコルは methods/ へ。ここで決定します。
  • 純粋に方法論的なショートカット: 論文が実証的主張を行わない場合、ステップ6をスキップし、ステップ7に進みます。

5b. 伝播前のエビデンステーブル

concepts/ または methods/ のノートに到達するすべての知見(「このメソッドを使用する論文」の下の主張を含む)について、スクラッチファイル(Wiki内には決して書きません)に1行を書き込みます:

| ターゲットノート | 書き込まれる知見 | ソースからの逐語的な引用 | ページ(PDF/印刷) | セクション、テーブル、または図 |

  • ソースはPDF(テーブルセルの場合はJATS)です。抄録のみまたはPDFなし: 知見のテキストに abstract only とマークし、レポートにその旨を記載します。
  • 具体的な内容にはそれぞれ引用が必要です: 各図、母集団、デバイス、メカニズム、名前付きエンティティ、強弱の動詞。すべてがカバーされるまで、知見を分割するか、複数の引用を使用します。
  • ヒットの周囲の段落全体またはテーブル行全体を読んでください。マッチした数字だけではありません。
  • テーブル、図、記号、信頼区間、±: ページをレンダリングして見てください。テキスト抽出は仮説であり、画像が証拠です。一部のPDFはテキストレイヤーでマイナス記号を失います(-5.2% が 25.2% と抽出される)、もっともらしい間違った数字を生成します。
  • 欠如は積極的な検索が必要です。レイアウトテキストと非レイアウトテキストの両方で、スペルバリエーションも含めて検索し、何かを「論文は...していない」と書く前に行います。

5c. 書き込み前にテーブルをチェックする

ノートに触れる前に、すべての行をその引用に対して読み直します。サブエージェントが論文を抽出した場合は、PDF内のすべての行を、図や記号のある行だけでなく読み直します。判断すべき欠陥クラス: ソースを超えた推論、帰属エラー、間違った数字、ヘッジの喪失、サポートされていない最上級、間違ったエンティティ、捏造された詳細、省略。

  • 引用がサポートしていない行は、引用が言っていることまで言い換えるか、削除します。ソースノートは証拠ではありません。同じ抽出から来ています。
  • ソースのヘッジ(「かもしれない」、「そう思われる」、「~による可能性がある」)とその母集団を保持します。
  • Wiki自身の解釈はWikiのものとしてラベル付けします。決してソースの行為や結論として書かないでください。

生き残った行のみがステップ6と7に進みます。

6. コンセプトノートに伝播する

ステップ5の各コンセプトについて:

  1. concepts/{Concept_Name}.md が存在するか確認します。
  2. 存在する: 「Key Findings」の下に [[paper_note]] バックリンクとともに知見を追加します。新しいリンクが発生した場合は related_concepts を更新します。
  3. 存在しない: 最初に references/CONCEPT-PROPAGATION.md の作成ルールを適用します。

7. メソッドノートに伝播する

ステップ5の各メソッドについて:

  1. methods/{Method_Name}.md が存在するか確認します。
  2. 存在する: 「このメソッドを使用する論文」の下に論文を追加します。
  3. 存在しない: templates/method.md から作成します。

8. 論文ノートのフロントマターを更新する

concepts_touched に作成または更新されたコンセプトノートとメソッドノートを入力します。

書き込み後の確認: concepts_touched 内のすべての名前は、concepts/ または methods/ の既存のノートに解決されなければなりません。書き込み後、各ベースネームを再確認します。解決しないものがあれば、不足しているスタブを今作成するか、名前を削除します。ぶら下がり参照はサイレントなリントドリフトになります。

8b. ソースノートを封印する

論文ノートの source_verification に検証を記録します(1行: 参考文献管理ツールのキー、日付、何を何と照合したか)。次に、知見を受け取り、その行が5cを通過した各(ノート、作品)ペアを封印します。小さなJSONスペックを書き、python <kit>/tools/seal.py spec.json --dry-run を実行し、次に --dry-run なしで実行します(形式とルールは docs/SEALS.md にあります)。抄録のみに対してチェックされた作品は封印されません。日付はシステムクロック(date +%F)から取得し、決して推定しないでください。

9. クローズアウト

3つの編集と、それに続くレポート。wiki.config.json の field_titlecase_map を使用して、新しいコンセプトまたはメソッドの正しいサブセクションを見つけます。セクションの最後にある日付が入ったキャッチオールブロックに決して追加しないでください。

  • index.md: インデックスが Obsidian Bases ビューを埋め込んでいる場合(設定で index_mode: bases)、ノートごとのリストは維持しないでください。厳選された ## Quick Stats カウントと関連する ## Coverage by Field 行のみを更新し、その後テーブルを再読み込みします(新しいWikiにはどちらのセクションもありません。追加するまで何もドリフトしないのでスキップします)。manual モードでは、ノートを正しいアルファベット順のスロットに追加します。凍結されたレガシーインデックスには決して触れないでください。
  • サブMOCルーティング(WIKI_SCHEMA.md、サブMOCアーキテクチャを参照): ノートの field + subfield を解決し、fields/{field-slug}/MOC_{Title_Case_Underscore(subfield)}.md を計算します(ケバブケースからタイトルケースへ、決定論的、マップ不要)。存在しない場合は、templates/submoc.md から作成し、フィールドMOCのサブMOCインデックスに行を追加します。ノートをサブMOCの適切なセクション(コンセプトノート、メソッドノート、論文、書籍)の下に追加します。

…[翻訳のために切り詰められています]

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

関連スキル