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が開けるなら何でもできるじゃないか!
ということで結論、「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つの方法を実際に試します。
- Terminalプラグイン
- AI連携プラグイン「Smart Composer」
- TemplaterでGemini CLIを呼び出す自作スクリプト
簡単なものからひとつづつ試してみましょう。
筆者の環境
- MacOS
- Obsidian v1.8.10
- Gemini CLIインストール済み
Gemini CLIのインストール方法がわからない方は以下の記事が参考になるでしょう。
1. Terminalを使う
Terminalプラグインを使うと、Obsidian内でターミナルを開いてコマンド操作ができるようになります。
Terminal設定方法
コミュニティプラグインから「Terminal」をインストールして有効化
Profiles
使用するターミナルのタイプを設定します。Obsidian上で表示するには、「Integrated」と名前に含まれているターミナルを選びましょう。どれを選ぶかは好みによりますが、特にこだわりがなければデフォルトで表示されている「darwinIntegratedDefault」を選択するのが良いと思います。
また、PrependまたはAppendボタンを押すことで、ターミナルを追加できます。私は普段zshを使用しているため、zshを選択しました。
私は最終的に以下になりました。
使い方
サイドバーのターミナルアイコンをクリックし、設定したProfileを選択するすることでターミナルを開けます。
あとはgeminiコマンドを実行して、通常通りGeminiを使用できます。
使い勝手を向上させる工夫
デフォルトのままだとVSCodeやCursorのターミナルと操作感が異なるため、ショートカットや外観を自分好みにカスタマイズします。
ホットキー(ショートカット)
ショートカットはお好みで設定できますが、私は「⌘+J」でターミナルを開くように設定します。
下記のいずれかのホットキーにショートカットを割り当てましょう。私は両方に設定しました。これらは、Vault直下(プロジェクトルート)から開くか、現在開いているファイルのフォルダから開くかの違いがありますので、用途に応じて使い分けてください。
Terminal: Open current directory in terminal: Integrated
Terminal: Open root directory in terminal: Integrated
New instance behavior
ターミナルを開きたい場所を設定できます。自分は右側に開くのが好みだったので「New vertical split」を設定しました。
最終的には設定したショートカットで以下のように開けます。
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キーの取得方法は公式資料にも記載があります。
Google AI Studioから「APIキーを作成」からAPIキーを作成できます。
画面真ん中にcurlコマンドがありますが、これはcurlでgeminiにリクエストを送る入力サンプルなので気にしなくて大丈夫です。
SmartComposer設定方法
コミュニティプラグインから「SmartComposer」をインストールして有効化
Providers
Providersのgeminiに対して、先程取得したAPIキーを設定します。
Models
gemini-2.5-pro
やgemini-2.0-flash
がデフォルトであります。Model名が使用したいモデルと同じ場合は、Enableを有効にして使用できますが、私のバージョンではgemini-2.5-pro-exp-03-25
が設定されています。使用したいモデルはgemini-2.5-pro
なので、カスタムモデルを追加します。
「Add custom model」でモデルを追加します。IDは任意です。
これで設定完了です。早速使ってみましょう。
使ってみる
サイドバーのアイコンをクリックすると、Smart Composerが開きます。操作感はGitHub CopilotやCursorとほぼ同じように使用できると思います。使用するモデルを先ほど設定したGeminiのモデルに切り替え、質問を入力して返答がくれば問題なく設定できています。
個人的に使用感はこちらのが好きですが、Gemini CLIのほうがパワーを感じます。
Geminiのレート制限の確認方法
先ほどAPIキーを作成したサイトで、モデルの使用状況を確認できます。
3. TemplaterでGemini CLIを呼び出す
Templaterとは、ノート内で変数や関数の結果を挿入したり、JavaScriptを実行できるテンプレートプラグインです。Geminiのレート制限は、APIよりCLIの方が緩いです。そこで、CLIをスクリプトから使えないかと考え、Templaterに行き着きました。Gemini CLI には対話モードと非対話モードがあります。ここでは非対話モード使うことで実現します。
Gemini CLI非対話モードの使い方
以下のように引数でプロンプトを渡してあげれば実行できます。
$ gemini --prompt "こんにちは"
こんにちは!何かお手伝いできることはありますか?
Templater設定方法
まずはTemplaterをインストールして有効化します
Template folder location設定で、参照するテンプレートがあるフォルダを選択します。私は「00_Templates」というフォルダを用意しました。この後、このフォルダ内にスクリプトを配置します。
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}`
%>
Templaterの実行
Geminiの結果を貼り付けたいファイルに移動し、以下のようにしてGeminiを実行できます。
やってみた感想
やりたいことはできましたが、実用化はしないでしょう。対話型ではないため、下手な操作をGeminiに依頼したとき、現状のままではキャンセルできません。決められた操作を実行したい場合には良いかもしれませんが、私にはここに時間を割くモチベーションはありません。
まとめ
Obsidian上でGeminiを使う方法を色々見てきました。
- Terminal:Gemini CLIを使う場合は一番簡単
- Smart Composer:CursorライクにAI機能を利用できる。レート制限には注意したい。
- 独自スクリプト:実装・メンテナンスの負荷が大きく、実用性に欠ける。
Gemini CLIを使おうと思った場合、現時点ではTerminalプラグインが最も実用的に思えますが、これは過渡期的な解決策だと考えています。今後、ObsidianのAI機能が発展し、シームレスな統合が実現されることを期待したいです。
備考
私がObsidianを使い始めた理由については、以下の記事にまとめています。
現在はZettelkastenのような手法にはあまりこだわっておらず、シンプルにMarkdownで管理できる点が主な理由です。AI機能を重視する場合は、Obsidianに固執する必要はないでしょう。現時点では、メモ管理においてObsidianがCursorなど他のエディタより優れている点は、データベース機能くらいだと私は考えます。
Discussion