← 一覧に戻る

Second Brain スクリプト分離プラン

2026年3月2日 00:30 更新

一言でいうと

AI会話の自動保存スクリプトを dotfiles から切り出して、誰でも使える独立リポジトリにする。

背景

「Second Brain」とは、AI との会話を自動的にノートアプリ(Obsidian など)に Markdown ファイルとして保存する仕組みのこと。 Claude Code・Codex・ChatGPT、どの AI と話しても同じフォルダに蓄積されるので、あとから検索できる「外部記憶」になる。

現状、この仕組みを動かすスクリプトは yadm(dotfiles を Git で管理するツール)のリポジトリ(コードの保管庫)に入っている。 つまり自分の Claude Code 設定と一体化していて、スクリプトだけを他の人に渡せない。

Zenn の記事で紹介するにあたって、読者が git clone(リポジトリをダウンロードするコマンド)一発で使えるようにしたい。

方針:symlink で独立リポジトリ化

symlink(シンボリックリンク = ファイルへの透明なショートカット。アプリからは本物と区別がつかない)を使う。

なぜ symlink なのか

もう一つの候補として git submodule(リポジトリの中に別リポジトリを埋め込む Git の機能)も検討した。

submodule の利点は「どのバージョンを使っているか」を Git が記録してくれること。ただし今回は自分で書いたスクリプトで、常に最新版を使いたいので、バージョン固定の利点が活きない。

symlink なら:

全体像

BEFORE(今の状態)
~/.claude/scripts/ の中に同期スクリプトが直接置いてある
dotfiles リポジトリの一部 → 他の人に渡せない
AFTER(分離後)
~/ai-second-brain/ → 新しい独立リポジトリ(スクリプトの実体はここ)
~/.claude/scripts/sync-*.sh → 上記への symlink(ショートカット)
~/.claude/scripts/claude-stop.sh → 今まで通り dotfiles 側に残る

実行ステップ

1
GitHub に ai-second-brain リポジトリを作成する

空のリポジトリを作り、README と MIT ライセンスを追加する。

2
スクリプトを新リポジトリに移動する

以下のファイルを ~/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 以外の処理(音声通知など)も含んでいるため。

3
保存先パスを環境変数にする

今のスクリプトは保存先が直書きされている。これを環境変数 SECOND_BRAIN_DIR で設定可能にする。これにより Obsidian でも VS Code でも、好きな場所に保存できるようになる。

4
symlink を貼る(自分の環境用)

dotfiles 側の ~/.claude/scripts/ から、~/ai-second-brain/ 内の各スクリプトへ symlink を作成する。これにより今まで通りのパスでスクリプトが動作する。

5
claude-stop.sh のパスを修正する

セッション終了時に同期スクリプトを呼び出すパスを、symlink 先を指すように修正する。

6
README を書く

他の人がこのリポジトリだけで使えるように、セットアップ手順を記載する。(1)clone する(2)保存先パスを設定する(3)Stop フックに登録する — の3ステップ。

7
テストで動作確認する

既存の24件のテストが全て通ることを確認。symlink 経由での動作もチェックする。

他の人はどう使うのか

スクリプトは dotfiles に一切依存していないので、独立リポジトリを clone するだけで使える。symlink の話は自分の環境だけの話で、他の人には関係ない。

他の人の手順:

  1. git clone ai-second-brain でダウンロード
  2. 保存先パスを環境変数に設定(たとえば Obsidian のフォルダ)
  3. Claude Code の settings.json(設定ファイル)に Stop フックを1行追加

これだけで、セッション終了のたびに AI との会話が自動で Markdown に保存されるようになる。

ポイント

symlink の一番の利点:ファイルの実体が1箇所にしかないので、「独立リポジトリを編集したのに dotfiles 側に反映されてない」という事態が起きない。逆も同じ。常に同じファイルを見ている。

新しいマシンでの再現手順:yadm clone で dotfiles を取得した後、ai-second-brain を clone して symlink を貼り直す。この手順はセットアップスクリプトで自動化できる。

📝 質問モード — テキストを選択してね
✓ 質問を送信しました