Synthadoc

多様な資料を、出典・リンク・状態を持つローカル Markdown wiki へ編成する LLM knowledge compilation engine。

1 — 概要

Synthadoc は、PDF、表計算、スライド、Web ページ、画像、動画、Word、テキスト、AI セッション記録を読み、相互参照された wiki に編成する。検索時だけ断片を集めるのではなく、取り込み時に内容を統合するため、サーバーを止めても Markdown の知識成果物が残る。

Python 3.11+pip で導入する Python エンジン
Markdown編集・閲覧できるローカル成果物
5 statesページ品質を追跡するライフサイクル
v1.1.0参照した Community Edition
2 — 知識コンパイル

取り込み時に wiki を更新

新しい資料を要約するだけでなく、既存ページとの関係を調べ、[[wikilinks]]、出典、矛盾、ページ状態を更新する。wiki 自体が検索・編集・監査できる成果物になる。

質問時に断片を検索

保存したチャンクから質問に近い断片を取り出し、その場で回答を合成する。Synthadoc はこの query-time synthesis を主役にせず、先に知識を編成しておく。

保護境界: 人が確認して active にしたページは、矛盾する新規ソースで自動上書きしない。矛盾をレビュー対象として残す。
3 — 処理の流れ
01取り込むローカルファイル、URL、Web 検索、YouTube を受け付ける
02安全化する隠し文字や命令上書き表現を LLM 呼び出し前に除去
03編成する内容を統合し、ページ・wikilink・出典を生成
04検証する矛盾、孤立ページ、誇張、切れた引用を lint
05使うBM25 検索、ストリーミング回答、context pack、export

BM25 を基準にし、小規模コーパス向け TF fallback と任意の semantic re-ranking を組み合わせる。

質問を分解し、関連抜粋をトークン予算内へまとめた context pack を生成できる。

質問と wiki version で回答をキャッシュし、取り込みや状態変更時に無効化する。

4 — 構成
CLIinstall、serve、ingest、query、lint、export などを Typer から実行
Obsidian pluginvault 内で取り込み、質問、状態変更、出典確認、graph 表示
Web UI会話履歴、ストリーミング回答、knowledge graph をブラウザで操作
MCP clientsClaude Desktop、Claude Code などから tool として呼び出す
requests ⇄ events
Shared runtime
HTTP / SSE / MCP長い処理をジョブ化し、ストリーミングと外部連携を提供
Orchestratoringest、query、lint agent を調整し、retry、cost guard、cache を管理
Skills + providers資料形式ごとの抽出と複数 LLM provider を遅延選択
reads ⇄ writes
wiki/*.md本文、YAML frontmatter、wikilink、claim citation
audit.dbジョブ、コスト、状態遷移、監査イベント
config.tomlprovider、port、並列数、予算、候補 staging を wiki ごとに分離
indexes + cache検索、graph、再利用可能な LLM 応答を保持
5 — 品質とライフサイクル
draft→active→stale/contradicted→archived

lint と人のレビューで状態を動かし、変更履歴を immutable event log に残す。archived ページへの wikilink は関連ページから連鎖的に除去される。

  • 各 claim に元ファイルと行を示す citation を付ける
  • 矛盾、孤立、切れた citation を構造 lint で検出する
  • 別の LLM pass で誇張や根拠の弱い主張を確認する
  • token と cost を job 単位で記録し、hard gate を設定できる
ネットワーク境界: server の既定 bind は 127.0.0.1。外部 interface へ bind する場合、組み込み認証がないため別途保護が必要になる。
6 — 操作面
CLI自動化、batch ingest、status、backup、schedule に向く。
ObsidianMarkdown の編集、citation 確認、候補レビューに向く。
Web会話型 query、session history、graph 探索に向く。
MCP / HTTPagent、workflow、外部アプリから knowledge service として使う。
目的主要コマンド結果
wiki を作るsynthadoc install / use独立した config、port、audit、wiki directory
資料を編成するingest / scaffold出典付き Markdown pages と index
知識を使うquery / context buildcited answer または token-budget evidence pack
品質を管理するlint / lifecycle / auditfindings、状態変更、検証履歴
持ち出すexport / backupllms.txt、GraphML、JSON、OKF、portable zip
7 — 始め方

Python package を入れ、LLM 呼び出しなしで閲覧できる History of Computing demo を作る。server を起動したら CLI、Obsidian、Web UI が同じ wiki を参照する。

pip install synthadoc
synthadoc install history-of-computing --target ~/wikis --demo
synthadoc use history-of-computing
synthadoc serve

domain を指定して空の wiki を作り、provider を設定してから資料を取り込む。

synthadoc install market-notes \
  --target ~/wikis \
  --domain "Market research"
synthadoc use market-notes
synthadoc serve
synthadoc ingest report.pdf
synthadoc query "What changed?"

Source snapshot: Synthadoc Community Edition v1.1.0. 機能名と既定値は参照時点の公式リポジトリに基づく。