🛠

Obsidian上でGeminiを使う理想環境の探求

に公開

はじめに

ObsidianとGemini CLIを組み合わせた知的生産の効率化手法が注目されています。
プロジェクト専用のGEMINI.mdを作成してVault直下に配置し、Gemini CLIを起動することで、ノート作成や情報整理のワークフローを大幅に改善できるというものです。

しかし、Obsidianでノートを書きながら別途ターミナルを開いてアプリを行き来するやり方は、思考の流れを分断しがちです。現状のObsidianのAI機能は発展途上であり、多くのユーザーがCursorやGemini CLIなどの外部ツールを併用しているのが実情でしょう。

理想的なのは、ノート作成や情報整理の流れの中でAIの力をシームレスに活用できる環境だと考えます。そこで本記事では、Obsidian上から直接Geminiを呼び出す方法を検証し、知的生産活動における理想的な環境を探求します。

今回はGeminiを題材していますが、どのモデルでも応用できるかと思います。

Obsidian上でAIを活用する主な方法

Obsidian上でAIを利用する方法としては、主に3つのパターンが考えられます。

1. Terminalプラグインを使う

最近以下の記事を見かけました。
これはすごい、Obsidian上でTerminalが開けるなら何でもできるじゃないか!

https://note.com/electrical_cat/n/n5db5f038a391

ということで結論、「Terminal」を使おう!!またな!!

冗談です。

冗談ですが、冗談抜きでTerminalが現状の最適解だと思えます。Obsidianとターミナルを行き来する必要がなく、Gemini CLIを使用できるのはとても実用的に思えます。

2. AI連携プラグインを使う

Obsidianには、AIと連携できるコミュニティプラグインが複数存在します。以下に一部抜粋して簡単にまとめました。

プラグイン名 主な機能・特徴
Copilot チャット、Vault内検索
Smart Composer チャット、Vault内検索、MCP
AI Assistant チャット、画像生成、音声入力
Text Generator 文章生成
Smart Connections ノート間の関連付け

これらのプラグインを使えば、ノート作成・編集フローの中にAIを直接組み込めます。

3. 自作スクリプトを組んで連携

より高度な使い方として、GeminiやOpenAIなどのAPIを呼び出すスクリプト自作し、Obsidian上から実行する方法も考えられます。スクリプトを実行できそうなプラグインを以下にいくつかまとめました。

プラグイン名 主な機能・特徴
Templater テンプレートの自動・動的生成
Shell Commands Obsidian上から直接コマンドを実行
Buttons ノート内にカスタムボタン配置
QuickAdd 作業を自動化する多機能ランチャー

これらのプラグインを使えば、自作スクリプトをObsidian上で実行できます。

実際に試してみよう

今回は以下の3つの方法を実際に試します。

  1. Terminalプラグイン
  2. AI連携プラグイン「Smart Composer」
  3. TemplaterでGemini CLIを呼び出す自作スクリプト

簡単なものからひとつづつ試してみましょう。

筆者の環境

  • MacOS
  • Obsidian v1.8.10
  • Gemini CLIインストール済み

Gemini CLIのインストール方法がわからない方は以下の記事が参考になるでしょう。

https://zenn.dev/schroneko/articles/gemini-cli-tutorial

1. Terminalを使う

Terminalプラグインを使うと、Obsidian内でターミナルを開いてコマンド操作ができるようになります。

https://github.com/polyipseity/obsidian-terminal

Terminal設定方法

コミュニティプラグインから「Terminal」をインストールして有効化

termianl

Profiles

使用するターミナルのタイプを設定します。Obsidian上で表示するには、「Integrated」と名前に含まれているターミナルを選びましょう。どれを選ぶかは好みによりますが、特にこだわりがなければデフォルトで表示されている「darwinIntegratedDefault」を選択するのが良いと思います。

termianl

また、PrependまたはAppendボタンを押すことで、ターミナルを追加できます。私は普段zshを使用しているため、zshを選択しました。

termianl

私は最終的に以下になりました。

termianl

使い方

サイドバーのターミナルアイコンをクリックし、設定したProfileを選択するすることでターミナルを開けます。

termianl
termianl

あとはgeminiコマンドを実行して、通常通りGeminiを使用できます。

termianl

使い勝手を向上させる工夫

デフォルトのままだとVSCodeやCursorのターミナルと操作感が異なるため、ショートカットや外観を自分好みにカスタマイズします。

ホットキー(ショートカット)

ショートカットはお好みで設定できますが、私は「⌘+J」でターミナルを開くように設定します。

下記のいずれかのホットキーにショートカットを割り当てましょう。私は両方に設定しました。これらは、Vault直下(プロジェクトルート)から開くか、現在開いているファイルのフォルダから開くかの違いがありますので、用途に応じて使い分けてください。

Terminal: Open current directory in terminal: Integrated
Terminal: Open root directory in terminal: Integrated

termianl

New instance behavior

ターミナルを開きたい場所を設定できます。自分は右側に開くのが好みだったので「New vertical split」を設定しました。

termianl

最終的には設定したショートカットで以下のように開けます。

termianl

2. Smart Composerを使う

Smart Composerは、VSCodeやCursorのAI機能に近い体験をObsidian上で提供してくれます。ただし、利用にはAPIキーの取得と設定が必要です。

Gemini CLIとAPIキーの違い

Gemini CLIはgemini-2.5-proモデルをデフォルトで利用できますが、API経由の場合はレート制限が異なります。

利用手段 RPM
1分あたりリクエスト数
RPD
1日あたりリクエスト数
TPM
1分あたりトークン数
Gemini CLI 60 1,000 不明
APIキー(無料枠) 5 100 250,000

Gemini CLIでは公式資料に「100万トークン」という記載がありましたが、TPMについては確認できませんでした。もしかすると、1リクエストに付き100万トークン利用でき、TPM自体の制限は設けられていないのかもしれません。APIキーを利用して同じモデルを使う場合はレート制限がより厳しく設定されています。ただし、Smart ComposerからはGemini CLIを直接操作できないため、APIキーを取得して同様のモデルを試してみます。

https://github.com/google-gemini/gemini-cli/blob/main/docs/quota-and-pricing.md

APIキーの取得

APIキーの取得方法は公式資料にも記載があります。

https://ai.google.dev/gemini-api/docs/api-key?hl=ja

Google AI Studioから「APIキーを作成」からAPIキーを作成できます。
画面真ん中にcurlコマンドがありますが、これはcurlでgeminiにリクエストを送る入力サンプルなので気にしなくて大丈夫です。

termianl

SmartComposer設定方法

コミュニティプラグインから「SmartComposer」をインストールして有効化

termianl

Providers

Providersのgeminiに対して、先程取得したAPIキーを設定します。

termianl

Models

gemini-2.5-progemini-2.0-flashがデフォルトであります。Model名が使用したいモデルと同じ場合は、Enableを有効にして使用できますが、私のバージョンではgemini-2.5-pro-exp-03-25が設定されています。使用したいモデルはgemini-2.5-proなので、カスタムモデルを追加します。

termianl

「Add custom model」でモデルを追加します。IDは任意です。

termianl

これで設定完了です。早速使ってみましょう。

使ってみる

サイドバーのアイコンをクリックすると、Smart Composerが開きます。操作感はGitHub CopilotやCursorとほぼ同じように使用できると思います。使用するモデルを先ほど設定したGeminiのモデルに切り替え、質問を入力して返答がくれば問題なく設定できています。

termianl

個人的に使用感はこちらのが好きですが、Gemini CLIのほうがパワーを感じます。

Geminiのレート制限の確認方法

先ほどAPIキーを作成したサイトで、モデルの使用状況を確認できます。

https://aistudio.google.com/app/usage

termianl

3. TemplaterでGemini CLIを呼び出す

Templaterとは、ノート内で変数や関数の結果を挿入したり、JavaScriptを実行できるテンプレートプラグインです。Geminiのレート制限は、APIよりCLIの方が緩いです。そこで、CLIをスクリプトから使えないかと考え、Templaterに行き着きました。Gemini CLI には対話モードと非対話モードがあります。ここでは非対話モード使うことで実現します。

Gemini CLI非対話モードの使い方

以下のように引数でプロンプトを渡してあげれば実行できます。

$ gemini --prompt "こんにちは"
こんにちは!何かお手伝いできることはありますか?

GitHub gemini-cli - configuration.md#command-line-arguments

Templater設定方法

まずはTemplaterをインストールして有効化します

termianl

Template folder location設定で、参照するテンプレートがあるフォルダを選択します。私は「00_Templates」というフォルダを用意しました。この後、このフォルダ内にスクリプトを配置します。

termianl

Templaterのサンプルスクリプト

Obsidian上で適当なファイルを作成しスクリプトを貼り付けます。今回は「gemini-query」という名前でファイルを作成しました。

スクリプト全文

<%* … %>でjavascriptを実行できます。

<%*
const { execSync } = require('child_process');
const path = require('path');

// which geminiを実行してパスを設定
const geminiPath = execSync('which gemini', { encoding: 'utf8' }).trim();
process.env.GEMINI_PATH = geminiPath;

// 作業ディレクトリ移動
const absoluteFilePath = await tp.file.path();
const folderPath = path.dirname(absoluteFilePath);
process.chdir(folderPath);

// プロンプトをユーザーに聞く
const prompt = await tp.system.prompt("Geminiへの質問を入力してください");

// Gemini CLIを呼び出す
const command = `gemini --sandbox --prompt "${prompt}"`;

let output;
try {
  output = execSync(command, { encoding: 'utf8' });
} catch (err) {
  output = "コマンドの実行中にエラーが発生しました:\n" + err.message;
}

// 出力をノートに追加
tR += `## Geminiへの質問\n${prompt}\n\n## Geminiの応答\n${output}`
%>

termianl

Templaterの実行

Geminiの結果を貼り付けたいファイルに移動し、以下のようにしてGeminiを実行できます。

termianl

やってみた感想

やりたいことはできましたが、実用化はしないでしょう。対話型ではないため、下手な操作をGeminiに依頼したとき、現状のままではキャンセルできません。決められた操作を実行したい場合には良いかもしれませんが、私にはここに時間を割くモチベーションはありません。

まとめ

Obsidian上でGeminiを使う方法を色々見てきました。

  • Terminal:Gemini CLIを使う場合は一番簡単
  • Smart Composer:CursorライクにAI機能を利用できる。レート制限には注意したい。
  • 独自スクリプト:実装・メンテナンスの負荷が大きく、実用性に欠ける。

Gemini CLIを使おうと思った場合、現時点ではTerminalプラグインが最も実用的に思えますが、これは過渡期的な解決策だと考えています。今後、ObsidianのAI機能が発展し、シームレスな統合が実現されることを期待したいです。

備考

私がObsidianを使い始めた理由については、以下の記事にまとめています。
現在はZettelkastenのような手法にはあまりこだわっておらず、シンプルにMarkdownで管理できる点が主な理由です。AI機能を重視する場合は、Obsidianに固執する必要はないでしょう。現時点では、メモ管理においてObsidianがCursorなど他のエディタより優れている点は、データベース機能くらいだと私は考えます。

https://zenn.dev/r4ynode/articles/obsidian-vs-other-note-apps

参考リンク

Discussion