😸

「Obsidian × Gemini CLI」で考え直した、知識管理の最適解

に公開

はじめに

「情報の整理と活用」をどうすればよいか?この課題と向き合って辿り着いたのが「Obsidian × Gemini CLI × GitHub」の組み合わせでした。

本記事では、Gemini CLIの利用にあたって自分の知識管理環境が抱えていた課題を振り返りつつ、Gemini CLIGitHubを導入した話を備忘録的に残そうと思います。


新ワークフローの全体像

ファイル管理の基盤をGoogle DriveからGitHubへと完全に移行し、新しいワークフローを考え直しました。

これまでの環境設定は [こちら](【個人向け】Notion × Obsidianで知識管理をとにかく楽に運用する.md)

ツール 役割
Obsidian Markdownファイルの作成・編集を行うプライマリなエディタ。日々の思考やメモはここから生まれる。
Obsidian Git (Plugin) Obsidian上での変更を検知し、自動でGitHubリポジトリにcommit & pushする連携役。
GitHub 全てのMarkdownファイルの原本を保管する中央リポジトリ。堅牢なバージョン管理の心臓部。
ローカルPC (Git Clone) GitHubリポジトリの完全なコピー。Gemini CLIによる一括処理は、このローカル環境で行う。
Gemini CLI ローカルにクローンされたファイル群に対し、一括でのリライト、要約、翻訳などのAI処理を実行する。

この環境における情報の流れは以下のようになります。

  1. 日々のメモ (Obsidian): Obsidianで新しいメモを作成したり、既存のメモを編集する。
  2. 自動バックアップ (Obsidian Git): 加えられた変更は、Obsidian Gitプラグインによって定期的に、GitHubに自動でコミット&プッシュされる。これにより、常に最新の状態がGitHub上でバージョン管理されます。
    • Obsidian Gitの設定: Split automatic commit and push を有効にし、Vault commit intervalVault push interval を適切に設定することで、自動コミットとプッシュの間隔を調整できる。
  3. AIによる一括処理 (ローカル):
    a. git cloneまたはgit pullコマンドで、GitHub上の最新のファイルをローカルPCに持ってくる。
    b. ローカルでGemini CLIを実行し、複数のファイルに対して一括処理を適用する。
    c. 処理が完了したら、変更内容をgit commitし、GitHubにpushする。
  4. レビューとマージ (GitHub): (オプション) AIによる変更が大規模な場合は、GitHub上でプルリクエストを作成します。変更箇所を視覚的にレビューして、問題がなければメインブランチにマージする。これにより、変更の品質を担保します。

Obsidian × Gemini CLI × GitHubのいいところ

1. Obsidianのいいところ

Obsidianは、マークダウンベースのナレッジマネジメントツール。単なるノートアプリではなく、情報同士を「リンク」で繋げることで、まるで第二の脳のような知識ネットワークを構築できる。

  • 双方向リンク:関連する情報が繋がる
  • グラフビュー:知識の関係性を視覚化
  • プラグインエコシステム:豊富な拡張機能

2. Gemini CLIのいいところ

Gemini CLIは、GoogleのGemini AIをコマンドラインから直接操作できるツール。これまでのAI活用とは一線を画す、プログラマブルなAI体験を提供する。

  • 生産性:ブラウザを開く必要がなく、コンテキストスイッチが減る
  • バッチ処理対応:大量データの一括処理
  • カスタマイズ性:用途に応じた設定調整

3. GitHubのいいところ

GitHubは、Gitをベースとしたバージョン管理サービス。Obsidianで作成したMarkdownファイルをGitHubで管理することで、以下のメリットが得られます。

  • 完璧な変更履歴: gitのコミット履歴により、「いつ、誰が、何を」変更したかが明確に記録される。AIによる変更も一つのコミットとして記録されるので、後から見返すのが非常に容易。
  • 安全なロールバック: AIによる編集が期待通りでなかった場合でも、gitコマンド一つで特定のコミット時点まで、あるいは特定のファイルだけを簡単に復元できる。
  • AIと人間の協業: 人間はObsidianで創造的な執筆を行い、AIはGemini CLIで定型的な処理や校正を行う、という理想的な分業が実現する。

やったこと

Step 1: Gemini CLIの導入と設定

1. Gemini CLIのインストール

# npm経由でのインストール
npm install -g @google/generative-ai-cli

# CLIの実行
gemini

自分は 公式GitHub の通り進めたら何も問題ありませんでした。
※Node.js のインストールもお忘れなく

2. Gemini CLIをお試しで触ってみる

# tag整理の案を考えさせてみる
tagが増えてきたので整理したいです。@01_Input/ のファイルを確認してtag整理のプランを `rules.md` にまとめてください。

# tagを一気に付け替える
@01_Input/ のファイルを1個ずつ読み込み、tagを修正してください。tag付けのルールは @rules.md に記載があるので、tag修正の前に毎回チェックしてください。

# 関連記事を探して、記事を書かせてみる
Gemini CLIに関連する記事を作成したいです。@01_Input/ 配下のフォルダを確認して、`Note.md` に出力してください。

などなど

3. あれ…?この運用よくないな。

Google Driveのファイル一気に修正してくれるのはいいけど...バージョン管理しないとまずくないか?

つまり、「AIによる複数ファイルへの一括変更」を、いかに安全に管理するかという問題です。一度に多数のファイルがAIによって更新された場合、万が一意図しない変更が含まれていた時に、元の状態に戻したり、変更点を把握したりすることが難しくなりました。

Step 2: GitHub連携の構築

1. Obsidian Gitプラグインの導入
Obsidianのコミュニティプラグインから「Obsidian Git」をインストールし、有効化します。

2. GitHubリポジトリの作成と同期
ObsidianのVaultフォルダをGitリポジトリとして初期化し、GitHubにプライベートリポジトリを作成して同期します。

# Obsidian Vaultディレクトリで実行
git init
git add .
git commit -m "first commit"
git remote add origin [GitHubリポジトリのURL]
git push -u origin main

3. Obsidian Gitの設定
Split automatic commit and push を有効にし、Vault commit intervalVault push interval を適切に設定することで、自動コミットとプッシュの間隔を調整できます。

4. 今後抑えること

1. コマンドライン引数
引数 機能
-m, --model セッションで使用するGeminiモデルの指定
-p, --prompt 非対話モードでプロンプトを実行し、応答を標準出力に返す
-a, --all-files カレントディレクトリ以下のすべてのファイルを再帰的に読み込み、コンテキストとしてプロンプトに含める
-s, --sandbox ツールの実行を安全なサンドボックス環境内で行う
-y, --yolo 全てのアクション(ファイル書き込み等)を自動的に承認する
-c, --checkpointing ファイル編集前に自動でスナップショットを保存する機能を有効にする
-d, --debug デバッグモードを有効にし、詳細な動作ログを出力する
-v, --version Gemini CLIのバージョン番号を表示する
2. スラッシュコマンド
コマンド サブコマンド 機能
/help - 利用可能なスラッシュコマンドとキーボードショートカットの一覧を表示する
/quit, /exit - 対話セッションを終了する
/chat save, resume, list 会話履歴を管理する
/memory add, show, refresh GEMINI.md から読み込まれた記憶を管理する
/tools desc, nodesc エージェントが利用可能な組み込みツールの一覧を表示する
/mcp desc, nodesc, schema 設定されたMCPサーバーと、それらが提供する外部ツールの一覧、接続状態を表示する
/restore [tool_call_id] --checkpointing が有効な場合、ツール実行前の状態にプロジェクトファイルを復元する
/compress - それまでの会話履歴をAIに要約させ、その要約でコンテキストを置き換える
/stats - 現在のセッションにおけるトークン使用量、API呼び出し回数、時間などの統計情報を表示する
/theme - CLIの見た目のテーマを選択するダイアログを開く
/auth - 認証方法を変更するためのダイアログを開く
/editor - 差分表示などに使用するエディタを選択するダイアログを開く
/bug - バグ報告用のURLを生成し、ブラウザで開く
/about - バージョンやビルド情報などを表示する
3. その他
コマンド 機能
@<path_to_file_or_directory> 指定されたファイル(複数可)の内容を現在のプロンプトに挿入する
!<shell_command> システムのデフォルトシェルで指定されたコマンドを実行する
! ! 単独で 入力するとシェル モードが切り替わ
4. 反復タスクの自動化
  • Gitコミットメッセージの自動生成
#.bashrc や.zshrc に追加  
function aic() {  
  git diff --staged | gemini -p "このdiff内容に基づき、Conventional Commits仕様に準拠した簡潔なコミットメッセージを1つだけ生成してください。説明文は不要です。" | git commit -F -  
}
  • コードからのドキュメント生成
cat my_function.py | gemini -p "このPython関数のMarkdown形式のドキュメントブロックを生成してください。引数、戻り値、使用例を含めてください。" > my_function.md

などなど

ワークフローの自動化、プロンプト設計、MCP連携とかを考えていく。
(Notion MCPも要検討!!)


まとめ

Gemini CLIの登場をきっかけに、私の知識管理のあり方は、単なる「執筆と同期」から、ソフトウェア開発に近い 「開発とバージョン管理」 にシフトしたのかな?と思いました。

GitHubを知識のハブとして活用することで、AIによる強力な編集能力を安全に取り入れつつ、知的生産物の堅牢性を飛躍的に高めようと思っています。もしObsidianユーザーであり、AIの活用に興味があるならば、この**「Obsidian × Gemini CLI × GitHub」**という組み合わせは、あなたの知識管理を次のレベルへと引き上げる強力な選択肢になると思います。


Reference

Discussion