Vault doctor
ほとんどのObsidian vaultにはgitもundoもなく、iCloud、OneDrive、Dropboxを介してライブ同期されているものも多くあります。すべての書き込みは不可逆的であると想定してください。何かに触れる前にvaultの実際のバックアップ状況を確認し、上書きする前に読み取り、ファイル全体の書き換えよりも対象を絞った編集を優先し、高速書き込みループを決して実行しないでください。同期フォルダ上では競合コピーが生成されます。
スキャン
.mdファイルを走査し、node_modules、.git、.obsidian、およびvaultが蓄積したビルドディレクトリやスクラッチディレクトリをスキップします。すべてのファイルのベース名(.mdだけでなく、添付ファイルも含む)からリンクターゲットのセットを構築し、[[ターゲット]]を抽出し、|エイリアス、#見出し、^ブロックのサフィックスを除去します。
ベースライン(ノート数、個別の壊れたターゲット数、壊れた参照の総数、重複したベース名)を記録し、後続の実行で同じセンサスを繰り返すのではなく、変化を示せるようにします。
修復前の分類
生の壊れたリンク数は欠陥リストではありません。すべてのヒットを4つのバケットのいずれかに分類します。
1. システム間参照 — 「修正」しない。 一部のターゲットはvaultノートではありません:エージェントメモリID、チケットキー、または別のツールからの識別子で、たまたまwikilink構文で書かれているものです。これらは決して解決されません。プレーンテキストに変換することは許容範囲ですが、それらを満たすためにスタブノートを作成することは許容されません。
2. 壊れたリンクのドキュメント — 決して触れない。 一部のノートは、例として、または演習のためのグラウンドトゥルースとして、意図的に壊れたリンクを引用しています(「あなたのツールがこれを見つけられないなら、あなたのツールが間違っている」)。これらを編集すると、それらが教えているものを壊してしまいます。散文内で引用されたWikilink構文も同じクラスです。
3. 名前のずれ — ソースではなくターゲットで修正する。 多くの参照が短い名前を指しているのに、ノートがより長い名前でファイリングされている場合、すべての参照ファイルを編集するよりも、ターゲットのfrontmatterにaliases: [ShortName]を追加することを優先してください。 1回の編集で、Obsidianのネイティブメカニズムを使用し、周囲のコンテキストを壊すリスクはありません。
4. 本当に存在しないノート。 ターゲットは存在したことがありません。報告してください。自動生成はしないでください。空のスタブは、回答済みに見えるため、壊れたリンクよりも悪質です。
検索置換の禁止
スコープ指定されていない検索置換でリンクを修復しないでください。 vault全体にわたるブラインド置換は、検索文字列をたまたま含むフォルダ名、URL、コードブロック、タグ語彙を破壊し、元に戻せないため、被害は永続的です。ファイルごとに、周囲の行を最初に読んで修正してください。
その他のチェック
-
重複したベース名は、vault全体でリンクをあいまいにします。Obsidianはvault全体でファイル名によって
[[リンク]]を解決するためです。通常の原因は、vault内に存在するコードプロジェクトや依存関係ツリーで、数千の幽霊.mdファイルを寄与していることです。それをフラグしてください。修正方法は、プロジェクトをvaultの外に移動するか、除外を追加することです。尋ねずに何も削除しないでください。 -
Frontmatterは実際にパースできなければなりません。 すべてのブロックを実際のYAMLパーサーで実行してください。目視ではチェックしないでください。支配的な障害は、引用符で囲まれていないプレーンなスカラーに
:(コロン+スペース)が含まれていることで、その文字で失敗し、その下のすべてのキーも一緒に取り込み、ブロック全体がObsidianのプロパティパネルやDataviewから見えなくなります。2番目によくある障害は、引用符で囲まれていない値が|または>で始まることで、YAMLブロックスカラーを開きます。修正するには値を引用符で囲む必要があり、大きな負荷のかかるノートでは数百のキーに影響する可能性があります — 提案のみ行い、促されずに実行しないでください。また、事前にファイルをバックアップしてください。修正されるまでは、別のスタイルを導入するのではなく、既存の(壊れた)慣習に従ってください。無効なブロック内の孤立した有効なキーは何も得られません。
-
タグは、インラインのハッシュタグではなく、YAMLでリストとして属します — 理想化された語彙ではなく、vaultの実際の語彙と照合してください。ずれを報告し、一方的に再タグ付けしないでください。
-
古くなった状態 —
PAUSED/STALLED/TODOマーカーを保持しているが、プロジェクトがそれ以降に進んでいるノート。報告し、自分で解決しないでください。 -
コールドハブ — ハブノートの最新の状態セクションがプロジェクトの最新アクティビティより古い場合、それは最新ではありません。ギャップを報告してください。
出力
バケットごとに並べられたレポートで、カウントと正確なファイル:行の参照を含みます。修復を提案し、ユーザーが承認したものだけを実行します。
どの調査結果が確認済みで、どの調査結果が命名から推測されたものかを明確に述べてください — ずれのように見えるターゲットは、ユーザーがこれから書こうとしているノートである可能性があります。