defuddle について
Obsidian vaultで外部コンテンツの取り込み範囲を管理するDefuddleワークフロースキルです。実行しないURLプランを作成し、既存のローカルファイルを生バイトで保存できますが、抽出器の実行やHTMLのクリーニングは行いません。
主な機能
- 01実行しないHTTPS URLプランの作成
- 02通信要件と依存状態の確認
- 03ローカルファイルを生バイトで保存
- 04確認済みプランによるファイル取得
- 05取得とwiki取り込みの分離
活用シーン
- 01URLを後の処理用に保留
- 02既存のHTMLやMarkdownをvaultに保存
- 03取得操作と変更パスの確認
- 04既知の出典情報と整形済みテキストの保持
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ agricidaniel/ claude-obsidian --skill defuddleインストール後、Claude Code で/defuddleを入力して読み込まれたか確認します。
詳細
Defuddle
Defuddle は任意の外部抽出ツールとして扱います。このパッケージがサポートするのは、不活性な URL プランとファイルシステムへの取り込みであり、ネットワークを強制的にクリーニングする機能は含まれていません。クリーニング、元データの取り込み、Wiki への取り込みは、それぞれ別の操作です。
選択した Vault やプロセスの作業ディレクトリではなく、このスキル自体の場所からインストール済みの製品ルートを解決してください。
PRODUCT_ROOT=/absolute/path/to/installed/claude-obsidian
CORE="$PRODUCT_ROOT/scripts/claude-obsidian.py"
test -f "$CORE"
このファイル内の ../wiki/references/ リンクはすべて、選択した Vault の wiki/ ディレクトリではなく、$PRODUCT_ROOT 配下にあるこのスキル自体のディレクトリを基準に、同じ方法で解決されます。
上流のフラグは、別途インストールされた kepano/obsidian-skills のリファレンスで確認してもかまいませんが、このパッケージのプライバシーとトランザクションの境界を上書きしないでください。
不活性な URL プラン
HTTPS URL のみ受け付けてください。認証情報、フラグメント、制御文字、機密性の高いクエリパラメーター、公開されていないホストまたは IP アドレスは拒否してください。URL をシェル文字列に埋め込んではいけません。プランの構築時には argv の要素を 1 つ使用してください。
python3 "$CORE" capture external-plan url "HTTPS_URL"
python3 "$CORE" contracts --verify --capability defuddle --vault "$VAULT"
このプランはネットワークリクエストを実行しません。正規化されたホスト、必要なネットワークの外向き通信、リダイレクトポリシー、任意の依存関係、および execute: false を報告してください。available 状態は、実行可能ファイルが見つからなかったことを意味します。configured 状態は、実行可能ファイルが見つかったものの、同梱された動作検証ツールがないことを意味します。手動実行する場合の実行可能ファイルと、報告された理由を特定してください。見つかったというだけで実行してはいけません。configured を verified と言い換えてはいけません。
ここで実行を停止する理由
コミット
556d74e8c8fd68c49912d4b11a4ae9ec04d7b2b5
で確認した上流 CLI は、リダイレクトに従い、非同期抽出を有効にします(確認日:2026-10-17)。
ローカル HTML ファイルを解析するだけでも、追加のリソースやサードパーティのフォールバックへのリクエストが発生する可能性があります。argv の確認や最初の URL に対する同意を得ても、最終的なすべての宛先が承認済みであることは証明できません。
このワークフローでは、URL またはローカル HTML に対して CLI をそのまま実行しないでください。ブラウザー、フェッチャー、プロキシ、Cookie、その他の実行手段に黙って置き換えてはいけません。将来、実行可能なアダプターを追加する場合は、DNS 解決後および各リダイレクト先で承認済みの宛先を強制し、制御されていない非同期通信やフォールバック通信を無効化し、プロキシの動作を制限し、バイト数、時間、サブプロセスの出力を制限する必要があります。元のロケーターと最終ロケーター、正確なバージョン、承認済みホスト、取り込み時のハッシュ、モードを保持してください。実行を提示する前に、動作テストでこれらの制限を証明する必要があります。強制機能を備えたアダプターを使用する場合も、宛先ごとの同意が必要です。
ツールをインストールしたり、クリーニング、抽出品質、トークン削減について主張したりしないでください。URL はキューに残すか、すでに利用可能なローカルファイルを受け入れてください。ローカルファイルは、HTML をレンダリングしたりスクリプトを実行したりせずに、バイト列として保持できます。
確認可能なファイルシステムへの取り込み
ユーザーから既存のローカル HTML ファイルまたは Markdown ファイルの保持を求められた場合は、まず選択した Vault の inbox/ に配置してください。固定したタイムスタンプと操作 ID を指定して、ファイルシステムのプランをプレビューし、適用してください。
python3 "$CORE" capture plan --vault "$VAULT" "$VAULT/inbox/source.md"
python3 "$CORE" capture apply --vault "$VAULT" "$VAULT/inbox/source.md" \
--generated-at "$GENERATED_AT" --operation-id "$OPERATION_ID"
# Set APPROVAL_SHA256 to the reviewed approved_plan_sha256 from the dry run.
python3 "$CORE" capture apply --vault "$VAULT" "$VAULT/inbox/source.md" \
--generated-at "$GENERATED_AT" --operation-id "$OPERATION_ID" \
--approved-plan-sha256 "$APPROVAL_SHA256" --apply
これにより、.raw/captured/ の新規作成専用ストレージにソースのバイト列が保持されます。HTML のクリーニング、ソースメタデータの検証、ページの合成は行いません。実際の結果を確認し、抽出の制限事項を記録してください。すでにクリーニング済みのテキストが提供された場合は、不明な項目を補わず、既知の抽出ツール/バージョンとロケーターを保持してください。操作 ID と、変更されたパスを正確に報告してください。同一のペイロードを再度適用した場合は何も変更されません。不変の元データを上書きしてはいけません。
独自の取り込みドラフトには operation-transactions.md を使用してください。保持が求められていない場合は、一時的に読み取りまたは分析を行ってください。wiki-ingest は、別個の操作として明示的に求められた場合にのみ実行してください。