mcpField
W
wiki-synthesize

wiki-synthesize

github.com/ar9av生産性3.6k2.7k 回インストール1 日前に更新
リポジトリ

wiki-synthesize について

wiki-synthesize は、Obsidian wiki の分野横断的な統合不足を見つけて補うスキルです。複数ページを管理するユーザー向けに、統合ページのない共起概念を特定し、相互リンク付きのページを作成します。

主な機能

  1. 01ページのリンク・タグ・カテゴリを調査
  2. 02概念とエンティティの共起を集計
  3. 03既存の統合ページで扱う組み合わせを除外
  4. 04統合候補を評価して順位付け
  5. 05統合ページを作成して相互リンク

活用シーン

  1. 01繰り返し登場する未統合テーマを発見
  2. 02異なるカテゴリの関連概念を接続
  3. 03wiki に分野横断的な結論を記録

インストール

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

$npx skills add https://github.com/ar9av/obsidian-wiki --skill wiki-synthesize

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

詳細

Wiki Synthesize — ファーストクラスの統合機会の発見

Wikiを調査し、多くのページで共起しているものの、それらを結び付ける専用の統合ページがない概念を探します。こうした不足を明らかにし、価値の高いものから横断的な統合ページを作成することが目的です。

開始前に

執筆スタイル: 自然言語の Markdown を新規作成または書き直す前に、llm-wiki/SKILL.md の Writing Profile Resolution セクションを読んで、その指示に従ってください。フレームワークのスキーマ、出典情報、安全性、および操作固有の要件が優先されます。 WRITING.md の設定は、新規作成または書き直す自然言語の Markdown にのみ適用されます。元の内容と構造化レコードはそのまま保持してください。

  1. 設定を解決する — llm-wiki/SKILL.md の Config Resolution Protocol に従ってください(インラインの @name による上書き → CWD を上方向にたどって .env を探す → グローバル設定 → プロンプトでのセットアップ)。これにより、OBSIDIAN_VAULT_PATH と OBSIDIAN_LINK_FORMAT(デフォルト:wikilink)が得られます。
  2. index.md を読み、全ページの一覧を確認します。
  3. hot.md が存在する場合は読みます。最近の動きや進行中のスレッドが示されており、すでに統合の機会を示唆している場合があります。
  4. _meta/taxonomy.md を読み、タグの語彙を把握します。

統合ページに内部リンクを書くときは、OBSIDIAN_LINK_FORMAT の値を使用し、llm-wiki/SKILL.md のリンク形式に関するセクションの指示に従ってください。

ステップ 1:共起マップを作成する

Vault 内の特別扱いされないすべてのページを調査します(index.md、log.md、hot.md、_insights.md、_meta/*、_archives/*、_raw/* は除外します)。

各ページから以下を収集します。

  • 含まれるすべての [[wikilinks]](発リンク)
  • frontmatter の tags
  • frontmatter の category

共起行列を作成します。概念/エンティティのページの各ペア(A、B)について、A と B の両方にリンクしている他のページ数を数えます。これを共起スコアとします。

すべてを網羅する必要はありません。共起スコア上位 20~30 ペアを目指してください。Grep を使うと、バックリンクを効率的に見つけられます。

rg -l --glob '*.md' "\[\[ConceptA\]\]" "$OBSIDIAN_VAULT_PATH"

上位候補の概念についてこれを実行し、検索結果を突き合わせます。

ステップ 2:すでに統合済みのペアを除外する

synthesis/ ディレクトリに既存のページがないか確認します。各既存の統合ページについて、以下を行います。

  • sources frontmatter、または本文にある [[wikilinks]] を読みます。
  • 該当する概念ペアはすでに扱われているものとして記録します。

候補リストから、すでに扱われているペアを除外します。

ステップ 3:候補を採点して順位付けする

残った各候補ペア(または 3 つ以上の概念のクラスター)に、統合価値スコアを割り当てます。

シグナルポイント
共起数 ≥ 5+3
共起数 3-4+2
共起数 1-2+1
概念が異なるカテゴリに属する(領域横断)+2
概念がタグを共有しているが、異なるフォルダーにある+1
一方または両方の概念が _insights.md でハブとしてタグ付けされている+1
統合によって、指摘されている矛盾が解消される+2

上位 5 件の候補を選びます。ユーザーが特定のトピック(「observability に関するすべてを統合」など)を指定している場合は、まず候補をその領域に絞り込みます。

ステップ 4:統合ページを作成する

上位候補ごとに、次のテンプレートを使って synthesis/ にページを作成します。

---
title: <Concept A> × <Concept B>
category: synthesis
tags: [<shared tags>, <domain tags>]
sources: [<all pages that link to both>]
created: TIMESTAMP
updated: TIMESTAMP
summary: "Cross-cutting synthesis of how <A> and <B> interact, with implications for <domain>."
provenance:
  extracted: 0.2
  inferred: 0.7
  ambiguous: 0.1
base_confidence: <min(base_confidence of all input pages)>
lifecycle: draft
lifecycle_changed: TIMESTAMP_DATE
---

# <Concept A> × <Concept B>

## The Connection

*What makes these two concepts worth synthesizing together — the non-obvious relationship that pages about each individually don't capture.*

## Where They Co-occur

*The pages and contexts where both appear. What situations bring them together.*

## Cross-cutting Insight

*The conclusion that only becomes visible when you look at both together. This is the point of the page — the thing you couldn't see from either concept page alone.*

## Tensions and Trade-offs

*Where the two concepts pull in opposite directions. Unresolved contradictions. Cases where applying one undermines the other.*

## Strongest Objection

*The best skeptical reading of THIS page's cross-cutting insight — the case a sharp critic would make that the connection is spurious, overstated, or an artifact of how the sources were written. Follow it with a testable search query (e.g. `> test: does X actually hold when Y is controlled for?`), never an invented citation. A synthesis that can't name its own strongest objection hasn't earned its conclusion.*

## Open Questions

*What this synthesis surfaces that the wiki doesn't yet have an answer for. Good candidates for future research.*

## Related

- [[<Concept A>]]
- [[<Concept B>]]
- [[<other related pages>]]

統合ページでは、ほとんどの記述に ^[inferred] を付けます。 出典を横断してつながりを導き出すことが、まさに統合だからです。横断的な結論には ^[inferred] を、出典間で意見が一致しない箇所には ^[ambiguous] を付けてください。

タイトルの形式は A × B です。これにより、どちらか一方の概念だけを扱うページではなく、統合ページであることを読者に示せます。

ステップ 5:出典ページからリンクを追加する

作成した各統合ページについて、統合対象となる 2 つ(またはそれ以上)の概念ページから、そのページへのリンクを追加します。概念ページの ## Related セクションに次の内容を追加します。

- [[Concept A × Concept B]] — synthesis

概念ページに ## Related セクションがない場合は、ページの末尾に追加してください。

ステップ 6:実施しなかった統合の候補を報告する

上位 5 件のページを作成した後、次の 10 件の候補を出力に一覧表示します。スコアは高かったものの、ページを作成しなかった組み合わせです。これにより、すべての統合を一度に強制することなく、Wiki が探索する価値があると判断した内容をユーザーが確認できます。

形式:

Skipped (consider next time):
- [[Caching]] × [[Consistency]] — co-occurs in 4 pages, cross-domain
- [[Testing]] × [[Observability]] — co-occurs in 3 pages, shares tags
...

ステップ 7:特別なファイルを更新する

1 回のロック付き呼び出しで、インデックス、ログ、ホットキャッシュを更新します。

obsidian-wiki memory sync WIKI_SYNTHESIZE \
  pages_scanned=<N> synthesis_created=<M> candidates_skipped=<K> \
  --takeaways "Synthesized 5 cross-cutting pages: Caching × Consistency, Testing × Observability, …"

統合によって明らかになった未解決の疑問は、結論ではなく検討事項です。それぞれを記録してください: obsidian-wiki memory todo add "<question>" --origin synthesis/<page>.md。

index.md、log.md、hot.md を手動で編集しないでください。このコマンドは、並行して書き込むプロセスが更新内容を失わせないようロックを取得します。

手順の詳細は .skills/llm-wiki/references/MEMORY.md を参照してください。

品質チェックリスト

  • すべての統合ページに summary: フィールドがある(200 文字以内)
  • すべての統合ページが元の概念へのリンクを含む
  • 元の概念ページが統合ページへのリンクを含む
  • 統合ページが元のページの内容を言い換えただけになっていない。分野横断的な洞察を加える必要がある
  • すべての統合ページで、検証可能な検索クエリ(作り上げた情報源ではない)とともに最も強い反論を示している
  • index.md と log.md を更新済み
  • hot.md を更新済み

ヒント

  • 情報源の要約にとどまる統合ページは役に立ちません。 価値はつながり、つまりどちらの元ページにも明示されていない内容にあります。
  • 統合すること自体を目的にしないでください。 2 つの概念が実質的な概念上のつながりがないまま、頻繁に一緒に登場するだけなら、対象から外してください。
  • 3 つの概念の統合は強力ですが、まれです。 3 つの概念が相互に影響し合う真の三角関係を形成している場合に限って作成してください。同じプロジェクトページに 3 つとも登場するというだけでは不十分です。
  • まず _insights.md を確認してください。 wiki-status スキルがすでに統合候補を示している場合があります。共起スキャンを最初から実行する前に、そこにある候補から始めてください。

Vault への書き込み後の QMD 更新

QMD は検索インデックスであり、信頼できる唯一の情報源ではありません。$QMD_WIKI_COLLECTION が空または未設定の場合は、この手順を省略してください。このスキルが Vault の Markdown を書き込むか書き換えた後に限り、実行してください。QMD の更新に失敗しても Vault の変更はロールバックせず、QMD の状態は別途報告してください。

$QMD_CLI が設定されていればそれを使用し、設定されていない場合は qmd を使用してください。

${QMD_CLI:-qmd} update

出力にベクトルが必要、または埋め込みが古い可能性があると示された場合は、次を実行してください:

${QMD_CLI:-qmd} embed

次のいずれかを使ってコレクションを検証してください:

${QMD_CLI:-qmd} ls "$QMD_WIKI_COLLECTION"

または、特定のページパスが分かっている場合は、次を使用してください:

${QMD_CLI:-qmd} get "qmd://$QMD_WIKI_COLLECTION/<page>.md" -l 5

次のいずれかを記録してください:

  • QMD refreshed: update + embed + verified
  • QMD refreshed: update only + verified
  • QMD skipped: QMD_WIKI_COLLECTION unset
  • QMD skipped: qmd CLI unavailable
  • QMD failed: <short error summary>

コメント