Zettelkasten 運用記録 Part 1: 設計編
Zettelkastenを2年運用して落ち着いたフォルダ構造・タグ設計・MOCの運用方法を紹介
Obsidianでノートを管理していると、ファイル名の変更やノートの削除でリンク切れが発生することがあります。この記事では、Rust製の高速リンクチェッカー「lychee」を使って、リンク切れを自動検出する方法を紹介します。
lycheeは、Rustで書かれた高速なリンクチェッカーです。
特徴:
--offlineオプションでローカルリンクのみチェック可能lycheeを使う上で重要な点があります。Obsidianのデフォルトであるwikiリンク [[note]] はlycheeではサポートされていません。lycheeでリンクチェックを行うには、標準Markdownリンク形式を使う必要があります。
Obsidianの設定で「新しいリンクの形式」を「相対パス」に変更しておくと、新規リンク作成時に自動で標準形式になります。

| 形式 | 例 | lychee対応 |
|---|---|---|
| wikiリンク | [[note]] | ❌ 非対応 |
| 標準Markdown | [note](./note.md) | ✅ 対応 |
既存のwikiリンクを変換するには、obsidian-link-converterなどのプラグインが便利です。
brew install lycheecurl -sSfL https://github.com/lycheeverse/lychee/releases/latest/download/lychee-x86_64-unknown-linux-gnu.tar.gz | tar xzf - -C /usr/local/binObsidian vaultの内部リンクをチェックするには--offlineオプションを使います:
lychee --offline vault/リンク切れがある場合、以下のような出力が表示されます:

リンクがすべて正常な場合:

相対パスを使用することで、正確にリンク切れを検出できます。
[関連ノート](../03_PermanentNotes/related-note.md)ポイント:
../folder/file.md)%20など)は避ける実運用では、チェック対象から除外したいファイルやディレクトリが出てきます。
# 特定のパスを除外lychee --offline --exclude-path "vault/99_Archive" vault/
# 複数パスを除外lychee --offline \ --exclude-path "vault/99_Archive" \ --exclude-path "vault/.obsidian" \ vault/プロジェクトルートに .lycheeignore ファイルを作成して、除外パターンを記述できます:
# アーカイブは除外vault/99_Archive/
# テンプレートは除外vault/98_Templates/
# 特定パターンのファイルを除外**/draft-*.md設定をファイルにまとめておくと便利です:
exclude_path = [ "vault/99_Archive", "vault/.obsidian"]
# タイムアウト設定(外部URLチェック時)timeout = 10
# 同時接続数max_concurrency = 32コマンド実行時に設定ファイルを指定できます。
lychee --offline --config lychee.toml vault/コミット時に自動でリンクチェックを行うには、pre-commitを設定します。
repos: - repo: local hooks: - id: lychee-link-checker name: Check links with lychee entry: lychee --offline --config lychee.toml vault/ language: system files: '\.md' pass_filenames: falsepip install pre-commitpre-commit installこれでコミット時に自動でリンクチェックが実行され、リンク切れがあるとコミットが中断されます。
CIでもリンクチェックを実行することで、PRマージ前に問題を検出できます。
name: CI
on: push: branches: [main] pull_request: branches: [main]
jobs: link-check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4
- name: Install lychee run: | curl -sSfL https://GitHub.com/lycheeverse/lychee/releases/latest/download/lychee-x86_64-unknown-linux-gnu.tar.gz | tar xzf - -C /usr/local/bin
- name: Run link checker run: lychee --offline --config lychee.toml vault/よく使うコマンドはMakefileにまとめておくと便利です:
VAULT_PATH := vault
.PHONY: check-linkscheck-links: ## Check for broken links using lychee lychee --offline --config lychee.toml $(VAULT_PATH)/make check-linkslycheeを使うことで、Obsidian vaultのリンク切れを高速かつ自動的にチェックできます。
| 場面 | コマンド |
|---|---|
| ローカルで手動チェック | lychee --offline vault/ |
| コミット時 | pre-commitフックで自動チェック |
| CI | GitHub Actionsで継続的にチェック |
注意点として、lycheeは標準Markdownリンクのみ対応しています。 wikiリンク [[note]] を使用している場合は、事前に標準形式への変換が必要です。
リンク切れのない健全なナレッジベースを維持しましょう。
Zettelkastenを2年運用して落ち着いたフォルダ構造・タグ設計・MOCの運用方法を紹介
Makefileで自分の活動を可視化する。タグの偏り分析、曜日×時間のヒートマップなど
タスクの期限・見積もり時間・優先度から1日の作業時間上限を守りながらスケジュールを自動生成するCLI/TUIタスク管理ツールTaskdogを開発した話