GoogleがGemini API CLIを公開:既存のAgentから画像・動画生成、音声合成、リサーチを直接実行可能に

CodexやClaude CodeなどのAgentにGoogleのマルチモーダル機能を連携:メディアをプロジェクトへ直接保存し、長時間タスクはIDで後から追跡。

著者:Google AI Studio / Dmitry Lyalin10-24

Googleがコマンドラインツール Gemini API CLI(コマンド名は gemini-api)を公開しました。CodexやClaude Codeなどの既存のAgentが、ターミナルからGoogleのマルチモーダルモデルやマネージドAgentを呼び出せるようになります。現在はプレビュー段階にあり、インターフェースは将来変更される可能性があります。

本ツールは、いくつかの作業を1つのバイナリに統合しています:

  • クロスプラットフォーム対応:macOS、Linux、Windows向けの単一バイナリとして提供され、Node.jsやPythonのインストール、複雑な言語環境のセットアップは不要です。
  • アセットの生成と理解:1つのコマンドラインツールで、テキスト推論、画像の生成・編集、複数話者による音声合成、BGM生成、動画作成、さらには長い文書や音声・動画の理解、字幕の文字起こしまで幅広くカバーします。
  • ファイルをプロジェクトへ直接保存:生成された画像、動画、音声はローカルファイルとして書き込まれ、ターミナルにはデフォルトでパスのみが返されるため、Agentがそのまま後続の処理に利用できます。
  • 使い方の事前確認とリクエスト検証:Agentはオフラインでコマンドやパラメータを確認でき、--dry-run を使ってリクエストの記述形式を事前検証できます。
  • バックグラウンドリサーチタスクの委託:GeminiのマネージドAgent(Deep Researchなど)を非ブロッキング方式で起動し、即座にインタラクションID(Interaction ID)を受け取ることができます。ホストAgentは任意のタイミングでステータスをポーリングし、構造化された結果を取得できます。
  • タスク継続情報の自己管理:CLIはローカルに対話履歴を保存しないため、ホストAgent側でコンテキストを保持するか、サーバー側のインタラクションIDを通じて会話を継続する必要があります。
Gemini API CLI 公式発表デモ動画。
45秒の公式プロモーションデモ:ターミナルから画像、動画、音声、バックグラウンドリサーチ機能を呼び出します。

既存のAgentはそのまま活用し、Geminiはその呼び出し機能を提供

CodexやClaude Codeにランディングページの作成を依頼する場合でも、ページの構造決定、必要なアセットの判断、コマンドの実行、生成されたファイルのページへの組み込みは、引き続きそのAgentが担当します。この一連のタスク全体を主導するAgentを「ホストAgent」と呼びます。モデルの機能をバックエンドのビジネスロジックに組み込む場合は通常SDK(各プログラミング言語向けのクライアントライブラリ)を使用しますが、Agentがターミナルから一時的にアセットを生成する場合は、CLI(コマンドラインツール)を直接利用できます。

Gemini 開発者向けスタックのアーキテクチャ図
Gemini 開発者向けスタックの階層構造。
基盤となる統合Gemini API(モデルおよびマネージドAgent)の上に、バックエンド開発向けのGen AI SDKと、ターミナル/Coding Agent向けの依存関係ゼロのCLIが並列で配置されています。

図が示すのは、単一の共通基盤と、2つの並列するエントリポイントです:

  • Gemini API とマネージドAgent(基盤):推論モデル(Gemini 3.8 Flash)、画像生成(Gemini Nano Banana 2.1)、動画生成(Gemini Omni 1.1 Flash)、音楽合成(Lyria 3.5)、音声合成(Gemini 3.8 Flash TTS)、マネージドリサーチサービス(Deep Research)を網羅する、統一されたマルチモーダルモデルおよびサーバーエンドポイント群です。
  • Google Gen AI SDKs(コード向けエントリ):本番環境のバックエンドやマイクロサービスコード向けに、Python、TypeScript、Go、Javaの型定義付きクライアントライブラリを提供します。
  • Gemini API CLI(コマンドライン向けエントリ):今回公開された gemini-api 単一バイナリであり、ターミナル操作やCoding Agentのシェルループからの呼び出しに特化して、APIとの直接通信およびメディアファイルのディスク保存を担当します。

利用時は、正式名称である Gemini API CLI およびコマンド名 gemini-api を確認し、Gemini CLI と混同しないよう注意してください。

自律コーディングの典型的なシナリオにおける各コンポーネントの役割分担は以下の通りです:

  • ホストAgent(Codex、Claude Code、Google Antigravity、Cursor、OpenClaw など):構築タスク全体の計画(例:Webページのコーディング)、どのアセットをいつ生成するかの判断、ターミナルでのコマンド実行、生成されたファイルの統合を担当します。
  • Gemini API CLI(gemini-api):シェルからパラメータを受け取ってAPIを呼び出し、生成されたメディアファイルを直接ディスクへ書き込み、標準出力にファイルパスまたはインタラクションIDを返します。
  • Gemini モデルおよびプラットフォームサービス:個々のリクエストを処理し、画像の描画、音声合成、クロスモーダルな理解、バックグラウンドでの高度なリサーチを実行します。

連携スクリプトの作成を減らし、生成ファイルをそのまま次の工程へ

ランディングページの作成などの実務タスクにおいて、Coding Agentが一般的なHTTPリクエスト経由でマルチモーダルAPIを直接呼び出すと、生成された画像や音声データがBase64などのエンコード形式でそのままターミナルの標準出力に吐き出される場合があります。これをホストAgentが会話コンテキストへ読み込んでしまうと、貴重なコンテキストウィンドウが無駄に消費されてしまいます。

Agent自身にAPIをリクエストしてローカルファイルへ書き出すスクリプトを書かせることも可能ですが、レスポンスのパース、データの抽出、ファイル保存などのコードを都度生成する必要があり、依存関係やデータ形式の処理でエラーが発生するリスクもあります。gemini-api はこの一連の流れを標準の挙動としてカプセル化しています。画像、音声、動画を生成する際、CLIが自動的に指定されたローカルパスへファイルを書き込み、ターミナルの標準出力には生成されたファイルのパスのみを出力します。これにより、アドホックな連携・保存スクリプトを記述する負担を解消し、巨大なメディアエンコードがターミナルへ流れ込んでAgentのコンテキストを圧迫する事態も防止できます。

1枚の図で役割分担を把握する

Agentが指示を出し、CLIがファイルを渡し、モデルが生成を担う

同一の画像タスクにおいて、ドライランと実際の生成を切り替えてリクエストの流れを確認できます。ここではプロセスの図解のみを行い、コマンドは実行しません。

1

ホスト Agent

例:Codex や Claude Code

ページ用の画像を生成するため、プロンプトと保存先ディレクトリを指定してコマンドを実行します。

2

gemini-api

リクエストとファイルの連携ツール

リクエストを送信し、返された画像をプロジェクト内に書き込みます。ターミナルにはデフォルトでファイルパスのみを出力します。

3

Gemini API / モデル

ネットワーク呼び出しが発生

プロンプトに従って画像を生成します。権限とクォータはAPI側で検証され、結果はCLIに渡されて保存されます。

gemini-api image "Isometric icon of a distributed database" --out ./assets/

Agentに返される結果:画像ファイルのパス。Agentはそのファイルをページに組み込みます。パスが返されたことは、画像の品質が検証済みであることを意味しません。

ドライラン:--dry-run ローカルでパラメータの検証とリクエストのプレビューのみを行い、ネットワーク通信は発生せず、ファイルも生成されません。API keyの有効性やモデルの利用可能クォータを証明するものではありません。

生成:オプション --dry-run を外して初めてAPIに結果を要求します。ファイルはディスクに保存され、ターミナルのデフォルト出力はパスのみとなるため、メディアのエンコードデータを会話に読み込ませる必要がありません。

バックグラウンドリサーチが返すのはタスクID

  1. 開始:コマンド agent run --agent deep-research-preview-04-2026 --background --stream=false でリサーチタスクを投入します。
  2. 保持:interaction ID を取得後、ホストは他の作業を継続できます。
  3. 問い合わせ:コマンド agent status "$INTERACTION_ID" --stream=false --output-format json で進捗を確認し、完了後に結果を取得します。

CLIはローカルに対話履歴を保存しないため、ワークフロー側でIDを保持する必要があります。バックグラウンド実行自体は完了を自動通知するものではありません。

具体的なフローとして、ホストAgentがランディングページのメイン画像を生成する場合、コマンドを1行実行するだけで済みます。CLIが画像をディスクへ書き込んで標準出力にパスを返し、ホストAgentはプロジェクトのアセット構成に合わせて <img> タグなどにそのファイルパスを指定し、ページの実装を続行します。構造化データが必要な場合も、--output-format json と組み込みの --jq を併用して必要なフィールドのみを抽出できます。

gemini-api のインストールと設定が完了したら、以下のタスクプロンプトをそのまま Codex、Claude Code、Antigravity などの対話画面に渡して指示できます。英語原文または日本語訳のいずれかを選択して送信してください:

# 英語プロンプト原文 / English prompt
Build a landing page for this app. Use Gemini to create a mascot image and a welcome voiceover, and launch a managed research agent to investigate competing products. Incorporate the assets and findings into the page.
# 日本語プロンプト訳文(英語版か日本語版のどちらかを選んでホスト Agent に送信)
このアプリのランディングページを作成してください。Geminiを使ってマスコット画像と歓迎のナレーション音声を生成し、マネージドリサーチAgentを起動して競合製品を調査してください。生成されたアセットと調査結果をページ内に組み込んでください。

全体的なゴールを指定すれば、ホストAgentが呼び出すべきコマンドを自律的に決定します。アセット生成後はページに組み込まれ、競合リサーチが完了次第、その考察もページに統合されます。

画像生成からナレーション、字幕作成、バックグラウンドリサーチまで

実際にAPIを呼び出す前に、まずインストールと認証情報の設定を完了させてください。オフラインでの使い方の確認やドライランにはAPI呼び出しは発生しません。Windows向けのインストールコマンドを除き、以下のコマンド例はmacOS、Linux、またはWindows上のBash環境(WSLなど)を前提としたBash構文で記載しています。パスは実際のファイルパスに置き換えて実行してください。

1. 画像生成と二次編集

gemini-api image はデフォルトで gemini-nano-banana-2.1 モデルを使用します。--out パラメータで出力ファイル名または保存先ディレクトリを指定できます。ディレクトリを指定した場合、CLIはAPIから返されたMIMEタイプに基づいて自動的に拡張子(.jpg など)を付与します。

# 英語の例
gemini-api image "Isometric icon of a distributed database" --out ./assets/database-icon.jpg
# 日本語訳(英語版か日本語版のどちらかを選んで実行)
gemini-api image "分散データベースのアイソメトリックアイコン" --out ./assets/database-icon.jpg

実行後、標準出力にはファイルの絶対パスまたは相対パス(例:./assets/database-icon.jpg)のみが出力されます。

分散データベースのアイソメトリックアイコン生成例
公式に提示された分散データベースのアイソメトリックアイコンのサンプル。
上記のデータベースアイコン生成コマンドに対応しています。

既存の画像をベースに二次編集を行う場合、公式READMEではロボットマスコットの生成と編集を行う完全な2ステップの例が紹介されています(-i または --input で元画像のパスを渡します。英語または日本語のいずれかのセットを選択して実行してください):

# 英語の例(2ステップを完全に実行):
# ステップ1:初期ロボット画像を生成して出力パスを取得
MASCOT_PATH=$(gemini-api image "A friendly robot mascot, soft studio lighting" --out ./assets/mascot.jpg)

# ステップ2:-i で元画像を渡して編集
gemini-api image "Add a winter scarf and snowy background" -i "$MASCOT_PATH" --out ./assets/mascot-winter.jpg
# 日本語の例(2ステップを完全に実行、英語版か日本語版のどちらかを選択):
# ステップ1:初期ロボット画像を生成して出力パスを取得
MASCOT_PATH=$(gemini-api image "親しみやすいロボットのマスコット、柔らかなスタジオ照明" --out ./assets/mascot.jpg)

# ステップ2:-i で元画像を渡して編集
gemini-api image "冬用のマフラーと雪景色の背景を追加" -i "$MASCOT_PATH" --out ./assets/mascot-winter.jpg

2. 動画生成

gemini-api video はデフォルトで gemini-omni-1.1-flash モデルを使用し、対話型の動画生成機能によってテキストを動的な映像に変換します。

# 英語の例
gemini-api video "A slow camera move through a sunlit workshop" --out ./assets/workshop.mp4
# 日本語訳(英語版か日本語版のどちらかを選んで実行)
gemini-api video "日差しの差し込む工房をゆっくりと移動するカメラワーク" --out ./assets/workshop.mp4
木工工房に日差しが差し込む静止フレーム
公式動画サンプルの静止フレーム。
gemini-api video で生成された工房の映像クリップに対応しています。

3. 複数キャラクターの音声合成と背景音楽

ナレーションや効果音が必要なシナリオ向けに、gemini-api tts は複数話者による対話音声合成(バックエンドには Gemini 3.8 Flash TTS を使用)を提供し、gemini-api music は Lyria 3.5 音楽生成モデルをベースにBGMを作成します。

# 複数話者による対話音声合成(英語の例)
gemini-api tts "Alice: Deployment succeeded! Bob: Let's ship it." \
  --multi-speaker "Alice=Kore,Bob=Puck" \
  --out ./assets/dialogue.wav
# 複数話者による対話音声合成(日本語訳、英語版か日本語版のどちらかを選んで実行)
gemini-api tts "Alice: デプロイが成功しました! Bob: リリースしましょう。" \
  --multi-speaker "Alice=Kore,Bob=Puck" \
  --out ./assets/dialogue.wav

コマンド内の Alice と Bob はセリフの登場人物名であり、Kore と Puck は割り当てられたボイスです。セリフの話者名とマッピングの左辺は一致させる必要があります。合成された音声全体が1つの対話音声ファイルとして保存されます。

# 背景音楽の生成(英語の例)
gemini-api music "Lo-fi ambient background track for a focus app" --out ./assets/focus-bg.mp3
# 背景音楽の生成(日本語訳、英語版か日本語版のどちらかを選んで実行)
gemini-api music "集中力向上アプリ向けのローファイ・アンビエントBGMトラック" --out ./assets/focus-bg.mp3
公式の複数話者 TTS サンプル。
公式の Lyria BGM サンプル。

4. マルチモーダルドキュメント分析と音声の文字起こし

gemini-api analyze と gemini-api transcribe は既存の素材を理解するために使用され、デフォルトの基盤モデルはいずれも gemini-3.8-flash です。ローカルのPDF、画像、音声・動画、テキストファイルに加え、gemini-api analyze にはYouTubeのリンクを直接渡して分析させることも可能です。

# ローカルPDFの分析(英語の例)
gemini-api analyze -i architecture.pdf "Summarize the key bottlenecks"
# ローカルPDFの分析(日本語訳、英語版か日本語版のどちらかを選んで実行)
gemini-api analyze -i architecture.pdf "主要なボトルネックを要約して"

この種の分析コマンドはデフォルトでテキストをターミナルへ出力するため、ホストAgentがそのまま後続の処理に活用できます。ファイルとして保存したい場合は、READMEの例のように > plan.md でリダイレクトして保存できます。

ホストAgentがWebページを修正した後、修正前後のスクリーンショット2枚を同時にGeminiに渡して、視覚的なデザイン変更点を要約させることも可能です。--input は複数回指定できます。before.png と after.png を実際のスクリーンショットのパスに置き換えて実行してください:

# 2枚のスクリーンショットから視覚的デザイン変更を比較(英語の例)
gemini-api analyze --input before.png --input after.png "Summarize the visual design changes"
# 2枚のスクリーンショットから視覚的デザイン変更を比較(日本語訳、英語版か日本語版のどちらかを選んで実行)
gemini-api analyze --input before.png --input after.png "視覚的なデザインの変更点を要約して"
# 会議やインタビューの音声をタイムスタンプ付きSRT字幕に書き起こす
gemini-api transcribe -i earnings_call.mp3 --format srt --out earnings_call.srt
公式の文字起こしサンプルで使用された入力音声。

公式の文字起こしサンプルでは、生成された earnings_call.srt の例として以下が提示されています:

1
00:00:03,000 --> 00:00:07,000
Speaker 1: Welcome to the third quarter earnings call.

2
00:00:16,000 --> 00:00:20,000
Speaker 1: Revenue grew 20% year-over-year.

各字幕には順にシーケンス番号、表示・非表示のタイムスタンプ、字幕テキストが含まれます。2つの文の意味はそれぞれ「第3四半期の決算説明会へようこそ」と「売上高は前年同期比で20%増加しました」であり、タイムコードと照らし合わせることで、録音内の該当箇所の位置を把握できます。

READMEでは、サイズの大きいメディアファイル(元ファイルでおよそ14 MB以上、Base64エンコード後で約20 MB以上)を処理する場合、事前にFiles APIを利用することが推奨されています。files upload --wait を用いて大容量ファイルをFiles APIのマネージドストレージへアップロードし(Files APIは48時間保持)、返されたURIを再利用します:

# 大容量ファイルをアップロードして一時URIを取得し、分析を実行(英語の例)
FILE_URI=$(gemini-api files upload interview.mp4 --wait --output-format json --jq '.name')
gemini-api analyze --input "$FILE_URI" "List the key action items with timestamps"
# 大容量ファイルをアップロードして一時URIを取得し、分析を実行(日本語訳、英語版か日本語版のどちらかを選んで実行)
FILE_URI=$(gemini-api files upload interview.mp4 --wait --output-format json --jq '.name')
gemini-api analyze --input "$FILE_URI" "タイムスタンプ付きで主要なアクションアイテムを一覧にして"

5. バックグラウンドマネージドAgent(Deep Research)による長時間タスクの継続

長時間を要し、多段階のWeb検索やクロス検証を含む複雑なタスク向けに、CLIは非ブロッキングのバックグラウンド実行モードを備えています:

# バックグラウンドでDeep Researchタスクを開始(英語の例)
INTERACTION_ID=$(gemini-api agent run "Research battery recycling approaches and cite sources" \
  --agent deep-research-preview-04-2026 \
  --background \
  --stream=false \
  --jq '.id')

echo "Started interaction: $INTERACTION_ID"
# バックグラウンドでDeep Researchタスクを開始(日本語訳、英語版か日本語版のどちらかを選んで実行)
INTERACTION_ID=$(gemini-api agent run "バッテリーのリサイクル手法を調査し情報源を明記して" \
  --agent deep-research-preview-04-2026 \
  --background \
  --stream=false \
  --jq '.id')

echo "Started interaction: $INTERACTION_ID"

ここでの開始コマンドと照会コマンドを実行しただけでは、完了通知は自動的には届きません。ホストAgentは返されたインタラクションID(INTERACTION_ID)を自身で保持する必要があります。タスク実行中、ホストAgentは他の作業を並行して進めることができ、agent status を使ってアクティブにステータスや進捗をポーリングします。ステータスを確認し、タスクが完了したら構造化された調査結果を読み出します:

# タスクの現在のステータスを確認;完了後に構造化JSON結果を取得
gemini-api agent status "$INTERACTION_ID" --stream=false --output-format json

Agentが使い方に迷ったときは、ツール自身に仕様を説明させる

現在、Google Antigravity 内ではワークスペースのShellから gemini-api を呼び出すことが可能となっており、ネイティブな統合も計画中とされています。今回の発表におけるプロモーション動画の一部も、Antigravity 2.0 から gemini-api video を呼び出して制作されました。下図はワークスペース内でのコマンド実行と生成ファイルのプレビュー画面です。

Antigravity ワークスペース内で gemini-api video コマンドを実行する様子
Google Antigravity ワークスペース内で Shell 経由で gemini-api を呼び出す様子。
同一ワークスペース内でAgentが発表プロモーション動画のクリップを生成し、プレビューしています。

プロジェクト内でAgentに利用方法を指示する

Claude Code、Codex、Cursor、Antigravity、またはカスタムAgentに gemini-api をスムーズに呼び出させたい場合は、プロジェクトルートの設定ファイル(AGENTS.md、CLAUDE.md、.cursorrules など)に以下の指示ブロックを追加します(英語原文および日本語訳を提供します。いずれか一方を選択して設定ファイルに記述してください):

# 英語指示文原文 / English instructions
You have access to gemini-api through the shell.
Use it to call Gemini models, generate or edit media, analyze files, or launch managed agents.
1. Inspect --help or --usage to choose a command, and --schema when building a --body JSON payload.
2. Preview API calls with --dry-run (or --dry-run --output-format json).
3. For discrete JSON output or --jq filtering on streaming/background commands (generate, agent run, agent status), pass --stream=false --output-format json.
4. Capture returned file paths (from media commands) and interaction IDs (from agent/model runs) to continue multi-step tasks.
# 日本語指示文訳文(英語版か日本語版のどちらかを選んで設定ファイルに記述)
シェル経由で gemini-api にアクセスできます。
Gemini モデルの呼び出し、メディアの生成・編集、ファイルの分析、またはマネージド Agent の起動に利用してください。
1. コマンドを選択する際は --help または --usage を確認し、--body の JSON ペイロードを構築する際は --schema を参照してください。
2. --dry-run(または --dry-run --output-format json)を使用して API 呼び出しをプレビューしてください。
3. ストリーミングやバックグラウンドのコマンド(generate、agent run、agent status)で個別の JSON 出力や --jq フィルタリングを行う場合は、--stream=false --output-format json を渡してください。
4. 複数ステップのタスクを継続するために、メディアコマンドから返されるファイルパスや、モデル/Agent 実行から返されるインタラクション ID(interaction ID)を保持してください。

パラメータ調査、事前検証、結果取得の各コマンド

  1. 自己記述型インターフェースとモデルの照会: gemini-api --help はコマンドやパラメータの確認に使用し、--usage は機械可読なコマンドツリーを出力します。例えば、Agentが画像を生成したいものの現在のモデル名を思い出せない場合、引数なしで gemini-api models を実行して組み込みのオフラインモデル一覧を確認するか、gemini-api models list --all を実行して現在のAPIキーで利用可能なモデルの最新一覧を照会し、-m で特定のモデルを明示的に指定できます。リクエストボディを受け取るコマンド(image、agent run など)では、gemini-api <command> --schema を実行することで組み込みのリクエスト構造スキーマをエクスポートし、正確なペイロードを構築できます。

  2. オフライン検証(Dry-run): ネットワークリクエストを正式に送信する前に、コマンドの末尾に --dry-run を追加できます。CLIはローカルでパラメータの妥当性を検証し、マスキングされたHTTPリクエストのプレビューを出力します。この間、ネットワークリクエストは送信されず、OSのキーチェーンも読み取られません。なお、--dry-run はローカルでのパラメータの記述やリクエスト構造が妥当であるかを検証するだけであり、リモートのAPIキーが有効であること、該当モデルの呼び出し権限があること、クォータの残量が存在すること、生成結果の品質が十分であることを保証するものではありません。

  3. 出力規約とAgentモード: --agent-mode を有効にする(または環境変数 GEMINI_CLI_AGENT_MODE=1 を設定する)と、CLIはエラー発生時に stderr へ標準的なJSONエラーエンベロープを出力し、stdout のデフォルト出力をコンパクトなフォーマットにまとめます。また、明確な終了コードをサポートしています(0 は成功、1 はランタイム/APIエラー、2 はパラメータ検証失敗、3 は認証または認可の失敗)。

  4. シンプルなFlagからカスタムペイロードへ(--schema から --body へ): 日常的な高頻度リクエストには簡易フラグで十分ですが、基盤となる生成パラメータを細かく調整したい場合は、--body を使って完全なJSONペイロードを注入できます。例えば、特定のアスペクト比(16:9)と高解像度(2K)を指定してアセットを生成する場合、以下のリクエストボディ(英語または日本語のいずれかを選択)を使用できます:

    英語リクエストボディ hero-image.json を表示(README 完全原文)
    cat > hero-image.json <<'JSON'
    {
      "model": "gemini-nano-banana-2.1",
      "input": "A friendly robot mascot in a sunlit workshop, composed on the right with uncluttered space on the left for a landing page headline. No text or watermark.",
      "response_format": {
        "type": "image",
        "aspect_ratio": "16:9",
        "image_size": "2K"
      },
      "store": false,
      "stream": false
    }
    JSON
    
    日本語リクエストボディ hero-image.json を表示(英語版か日本語版のどちらかを選んで実行)
    cat > hero-image.json <<'JSON'
    {
      "model": "gemini-nano-banana-2.1",
      "input": "日差しが差し込む工房にいる親しみやすいロボットのマスコット。構図は右側に配置し、左側にはランディングページの見出し用のすっきりとしたスペースを確保。テキストや透かしはなし。",
      "response_format": {
        "type": "image",
        "aspect_ratio": "16:9",
        "image_size": "2K"
      },
      "store": false,
      "stream": false
    }
    JSON
    
    # ペイロードの妥当性をオフライン検証
    gemini-api image --body @hero-image.json --out ./assets/hero.jpg --dry-run --output-format json
    
    # 実際に生成を実行
    gemini-api image --body @hero-image.json --out ./assets/hero.jpg --output-format json
    

    ここでの --out はファイルの保存先を決定し、response_format は生成する画像の仕様を定義します。--output-format json を指定すると、デフォルトの単一行パスとは異なり、ファイルパスなどのフィールドを含む生成物のメタデータがターミナルに返されます。

  5. ステートレス設計と複数ターンにわたるセッションの連携: CLIはローカルに対話履歴を一切保存しませんが、これはサーバー側がステートレスであることを意味するわけではありません。サーバー側のインタラクション記録はAPI自体がライフサイクルを管理しており、ホストAgentは前回のターンで返されたインタラクションIDを保持し、--body 内の previous_interaction_id を明示的に指定することで会話を継続できます:

    # 英語の例
    # ターン1:推論を実行し、サーバーから返された interaction ID をキャプチャ
    TURN1_ID=$(gemini-api generate "Propose 3 database indexing strategies for a time-series log table." \
      --stream=false --jq '.id')
    
    # ターン2:previous_interaction_id を参照して対話を継続
    gemini-api agent run "Compare strategy #2 and #3 for write-heavy workloads." \
      --body "{\"previous_interaction_id\": \"$TURN1_ID\"}" \
      --stream=false
    
    # 日本語訳(英語版か日本語版のどちらかを選んで実行)
    # ターン1:推論を実行し、サーバーから返された interaction ID をキャプチャ
    TURN1_ID=$(gemini-api generate "時系列ログテーブル向けのデータベースインデックス戦略を3つ提案して。" \
      --stream=false --jq '.id')
    
    # ターン2:previous_interaction_id を参照して対話を継続
    gemini-api agent run "書き込み負荷が高いワークロードにおける戦略2と戦略3を比較して。" \
      --body "{\"previous_interaction_id\": \"$TURN1_ID\"}" \
      --stream=false
    

インストールと利用開始手順

1. インストール手順

公式からワンクリックのインストールスクリプトとソースからのビルド手順が提供されています:

  • macOS および Linux (Bash):
    curl -fsSL https://raw.githubusercontent.com/google-gemini/gemini-api-cli/main/scripts/install.sh | bash
    
  • Windows (PowerShell):
    iwr -useb https://raw.githubusercontent.com/google-gemini/gemini-api-cli/main/scripts/install.ps1 | iex
    
  • Go によるビルドインストール(Go開発環境が構築済みの場合。現在のmainブランチのビルドにはGo 1.26.10以降が必要):
    go install github.com/google-gemini/gemini-api-cli/cmd/gemini-api@latest
    

2. 認証情報の設定とオフライン検証

インストール完了後、gemini-api バイナリがシステムの PATH 環境変数に含まれており、ホストAgentが起動するサブプロセスから同一の環境と設定にアクセスできることを確認してください。Google AI Studio で API key を取得し、CLIに提供します。

CLIは複数の認証情報保存方式をサポートしています(環境や選択したパラメータに応じて、OSのキーチェーンに保存される場合と、~/.config/gemini-api/config.yaml 設定ファイルに書き込まれる場合があります):

# 方式A:環境変数の設定(CI/CD または Agent のサブプロセス環境向け)
export GEMINI_API_KEY="your-api-key"

# 方式B:永続保存(OSのキーチェーンまたはローカル設定ファイルへの書き込み)
gemini-api configure --api-key "your-api-key"

# 方式C:ターミナルの対話型フォームウィザードを起動
gemini-api configure

設定完了後、オフラインコマンドを使って現在の設定を確認し、環境を検証することをお勧めします:

# 現在有効な設定と認証情報のソースを確認(リモートでの有効性は検証しません)
gemini-api whoami
# リクエスト構築をオフライン検証(英語の例、ネットワーク通信は発生しません)
gemini-api generate "Hello from my agent" --dry-run
# リクエスト構築をオフライン検証(日本語訳、英語版か日本語版のどちらかを選んで実行)
gemini-api generate "私の Agent からの挨拶です" --dry-run

3. クォータと料金について

公式ドキュメントにはCLI専用の一律サブスクリプションプランは提示されていません。実際の呼び出し権限、クォータ、課金は、設定された GEMINI_API_KEY が紐づくアカウント体系、および呼び出しごとに指定された各モデル(Gemini 3.8 Flash、Nano Banana 2.1、Lyria 3.5、Deep Research など)の公式価格設定とクォータポリシーに完全に準拠します。開発者が契約しているサードパーティAgentのサブスクリプション(Claude Pro、Cursor、Codex など)にこのAPI枠が含まれているとみなすことはできず、実際の呼び出しはGemini APIの規定に基づいて処理されます。

現在、gemini-api は実験的プレビュー段階(v0.4.x)にあり、インターフェースやパラメータに破壊的変更が加わる可能性があります。自動化パイプラインや本番環境に組み込む際は、特定のリリースバージョン番号に固定して運用することが推奨されます。--dry-run はローカルでのパラメータおよびリクエスト形状のチェックのみを行うため、バージョン更新後は実際に主要なAPI呼び出しを実行して最終的な動作検証を行う必要があります。

出典
Introducing Gemini API CLIDmitry Lyalin·原文を見る
↑ 本文ここまで
✓ この記事は全文無料です

メンバーは全文 Markdown のコピー・保存に加え、自分の AI に購読・質問させることができます。

原文を読む ↗
📮 新着解説を毎晩メールで

役に立ちましたか?メールを登録すると、その日の新着解説を毎晩1通でお届けします。解除はいつでも。