「Second Brain」とは、AI との会話を自動的にノートアプリ(Obsidian など)に Markdown ファイルとして保存する仕組みのこと。 Claude Code・Codex・ChatGPT、どの AI と話しても同じフォルダに蓄積されるので、あとから検索できる「外部記憶」になる。
現状、この仕組みを動かすスクリプトは yadm(dotfiles を Git で管理するツール)のリポジトリ(コードの保管庫)に入っている。 つまり自分の Claude Code 設定と一体化していて、スクリプトだけを他の人に渡せない。
Zenn の記事で紹介するにあたって、読者が git clone(リポジトリをダウンロードするコマンド)一発で使えるようにしたい。
symlink(シンボリックリンク = ファイルへの透明なショートカット。アプリからは本物と区別がつかない)を使う。
もう一つの候補として git submodule(リポジトリの中に別リポジトリを埋め込む Git の機能)も検討した。
submodule の利点は「どのバージョンを使っているか」を Git が記録してくれること。ただし今回は自分で書いたスクリプトで、常に最新版を使いたいので、バージョン固定の利点が活きない。
symlink なら:
~/.claude/scripts/ の中に同期スクリプトが直接置いてある~/ai-second-brain/ → 新しい独立リポジトリ(スクリプトの実体はここ)~/.claude/scripts/sync-*.sh → 上記への symlink(ショートカット)~/.claude/scripts/claude-stop.sh → 今まで通り dotfiles 側に残る
ai-second-brain リポジトリを作成する
空のリポジトリを作り、README と MIT ライセンスを追加する。
以下のファイルを ~/ai-second-brain/ に移す。
| 移動するファイル | 役割 |
|---|---|
sync-recall-to-obsidian.sh |
Claude Code の会話を Markdown に変換して保存 |
sync-codex-to-obsidian.sh |
Codex の会話を同様に変換して保存 |
convert_to_obsidian.py |
ChatGPT のエクスポートデータを一括変換 |
session-reminder.sh |
長時間セッション時にノート書き出しを促すリマインダー |
test-sync-recall.sh |
同期スクリプトの動作テスト |
移動しないファイル:claude-stop.sh(セッション終了時のフック本体)と settings.json(Claude Code の設定)は個人の環境ごとに内容が異なるため dotfiles に残す。claude-stop.sh は同期スクリプトを「呼び出す側」であり、Second Brain 以外の処理(音声通知など)も含んでいるため。
今のスクリプトは保存先が直書きされている。これを環境変数 SECOND_BRAIN_DIR で設定可能にする。これにより Obsidian でも VS Code でも、好きな場所に保存できるようになる。
dotfiles 側の ~/.claude/scripts/ から、~/ai-second-brain/ 内の各スクリプトへ symlink を作成する。これにより今まで通りのパスでスクリプトが動作する。
claude-stop.sh のパスを修正する
セッション終了時に同期スクリプトを呼び出すパスを、symlink 先を指すように修正する。
他の人がこのリポジトリだけで使えるように、セットアップ手順を記載する。(1)clone する(2)保存先パスを設定する(3)Stop フックに登録する — の3ステップ。
既存の24件のテストが全て通ることを確認。symlink 経由での動作もチェックする。
スクリプトは dotfiles に一切依存していないので、独立リポジトリを clone するだけで使える。symlink の話は自分の環境だけの話で、他の人には関係ない。
他の人の手順:
git clone ai-second-brain でダウンロードsettings.json(設定ファイル)に Stop フックを1行追加これだけで、セッション終了のたびに AI との会話が自動で Markdown に保存されるようになる。
symlink の一番の利点:ファイルの実体が1箇所にしかないので、「独立リポジトリを編集したのに dotfiles 側に反映されてない」という事態が起きない。逆も同じ。常に同じファイルを見ている。
新しいマシンでの再現手順:yadm clone で dotfiles を取得した後、ai-second-brain を clone して symlink を貼り直す。この手順はセットアップスクリプトで自動化できる。