Gemini Skill
⚠️ 操作優先順位(厳守)
Gemini とのすべてのやり取りは、以下の優先順位で方式を選択します:
- 🥇 最優先:MCP ツールの呼び出し — 本スキルが提供する MCP ツールを直接呼び出して操作を完了します。ほとんどのシナリオをカバーします。
- 🥈 次優先:スキルスクリプトの実行 — MCP ツールで要件を満たせない場合、本スキルプロジェクト内のスクリプトを実行して完了します。
- 🥉 最後の手段:スキル管理下のブラウザに接続 — 上記2つの方法で解決できない場合のみ、
gemini_browser_infoを使用して CDP 接続情報を取得し、本スキルが管理するブラウザに能動的に接続して操作します。この方法を使用する前には必ずユーザーの同意を得る必要があります。
絶対禁止:新しいブラウザインスタンスを起動して Gemini ページにアクセスすること(OpenClaw ブラウザや別の Puppeteer を起動するなど)。これはセッション競合を引き起こします。
ブラウザデーモンが実行されていない場合、MCP ツールは自動的に起動します。手動操作は必要ありません。
📡 進捗同期 & 長時間ツールのルール
MCP ツールの呼び出し(特に画像生成や応答待機など)は時間がかかる場合があります(60~180 秒)。以下のルールを厳守する必要があります:
- 本スキルのすべての MCP ツールは同期的なブロッキング呼び出しであり、最終結果が返ってくるまで待機します。「中間状態」をポーリングする必要はありません。
- 長時間ツールを呼び出す場合、
timeoutMsは ≥180000(3分) に設定し、転送層が早期にタイムアウトして中断するのを防ぎます。 - ツールの最終応答を受け取る前に会話を終了したり、ユーザーに「まだ実行中です」「ツールがタイムアウトしました」と報告することを禁止します。
- 15~30 秒ごとにユーザーに進捗メッセージを送信します(例:「Gemini が画像を生成するのを待っています…30 秒経過…」)。フィードバックを維持します。
- 最終結果を取得したら、即座に成果物(ファイルパス)を返すか、エラーを報告します。漏れがあってはなりません。
fullSizeモードが失敗した場合、fullSize=false(プレビュー画像モードの方が安定)でダウングレードして再試行できます。
トリガーキーワード
- 画像生成タスク:
生图、画、绘图、海报、nano banana、nanobanana、image generation、生成图片 - リクエストがあいまいな場合は、まずユーザーに画像生成が必要かどうかを確認します。
使用方法
本スキルは MCP Server を通じてツールを公開します。AI が直接呼び出します。
ブラウザの起動、セッション管理、画像抽出、ファイル保存などのフローはすべてツール内部にカプセル化されています。
⚠️ 強制ルール
AI は常に MCP ツールを介してすべての操作を実行する必要があります。
MCP をバイパスして一時的なスクリプト(
node -e "..."や.js一時ファイルの作成など)を作成し、 本プロジェクトがエクスポートする関数(createGeminiSession、createOpsなど)をimport/requireすることを禁止します。MCP ツールで現在の要件を満たせない場合、AI はまずユーザーに理由を説明し、明示的な同意を得る必要があります。 その上で、一時スクリプトを作成して内部 API を呼び出すことができます。ユーザーの同意なしに実行することは一切禁止されています。
利用可能なツール
コア画像生成(完全なフローをカプセル化):
| ツール名 | 説明 | 入力パラメータ |
|---|---|---|
gemini_generate_image | 完全な画像生成フロー:新しいセッション作成→プロンプト送信→待機→画像抽出→ローカル保存(所要時間約 60~120 秒) | prompt、newSession(デフォルト false)、referenceImages(参照画像パスの配列)、fullSize(デフォルト true、高解像度原寸画像;false の場合はプレビュー画像)、timeout(デフォルト 120000ms) |
セッション管理:
| ツール名 | 説明 | 入力パラメータ |
|---|---|---|
gemini_new_chat | 新しい空の会話を作成 | なし |
gemini_temp_chat | 一時的な会話モードに入る(履歴は保持されない) | なし |
モデル切り替え:
| ツール名 | 説明 | 入力パラメータ |
|---|---|---|
gemini_switch_model | Gemini モデルを切り替える | model(pro / quick / think) |
テキスト対話:
| ツール名 | 説明 | 入力パラメータ |
|---|---|---|
gemini_send_message | テキストメッセージを送信し、応答が完了するのを待ち、Gemini からの応答テキストを直接返す | message、timeout(デフォルト 120000ms) |
画像操作:
| ツール名 | 説明 | 入力パラメータ |
|---|---|---|
gemini_upload_images | 画像を入力ボックスにアップロード(アップロードのみ、送信はしない。send_message と組み合わせて使用可能) | images(パスの配列) |
gemini_get_images | セッション内のすべての読み込まれた画像のメタ情報を取得 | なし |
gemini_extract_image | 指定された画像の base64 を抽出し、ローカルに保存 | imageUrl(get_images から取得) |
gemini_download_full_size_image | フルサイズの高解像度画像をダウンロード。デフォルトは最新の1枚。インデックスを指定可能 | index(オプション、0 から開始、古い順) |
gemini_share_latest_image | 画像の公開共有リンクを作成し、リンクを直接返す。デフォルトは最新の1枚 | index(オプション)、timeout、copyToClipboard、closeDialog |
テキスト応答の抽出:
| ツール名 | 説明 | 入力パラメータ |
|---|---|---|
gemini_get_all_text_responses | セッション内のすべてのテキスト応答を取得(テキストのみ、画像は含まない) | なし |
gemini_get_latest_text_response | 最新のテキスト応答を取得 | なし |
ログイン状態:
| ツール名 | 説明 | 入力パラメータ |
|---|---|---|
gemini_check_login | Google アカウントにログインしているかどうかを確認 | なし |
ページナビゲーション:
| ツール名 | 説明 | 入力パラメータ |
|---|---|---|
gemini_navigate_to | 指定された Gemini ページ URL を開く(履歴セッションリンクなど)。gemini.google.com ドメインのみ許可 | url(ターゲット URL)、timeout(デフォルト 30000ms) |
診断 & 復旧:
| ツール名 | 説明 | 入力パラメータ |
|---|---|---|
gemini_probe | ページ要素の状態(入力ボックス、ボタン、モデルなど)を調査 | なし |
gemini_reload_page | ページをリフレッシュ(スタックや異常時に使用) | timeout(デフォルト 30000ms) |
gemini_browser_info | ブラウザ接続情報を取得(CDP ポート、wsEndpoint など) | なし |
典型的な使用例
高速画像生成(ワンステップ):
gemini_generate_imageを呼び出し、prompt を渡す → ローカル画像パスが返される
画像生成+共有リンク取得:
gemini_generate_imageを呼び出して画像を生成gemini_share_latest_imageを呼び出して公開リンクを返す
柔軟な組み合わせ(細粒度制御):
gemini_new_chat— 新しいセッションを作成gemini_switch_model→pro— 高品質モデルに切り替えgemini_upload_images— 参照画像をアップロードgemini_send_message— 説明文を送信gemini_get_images→gemini_extract_image— 画像を取得して保存
トラブルシューティング:
gemini_probe— ページ要素が正しく配置されているか確認gemini_reload_page— ページがスタックしたらリフレッシュgemini_browser_info— CDP 情報を取得して自分で接続しデバッグ
MCP クライアント設定
{
"mcpServers": {
"gemini": {
"command": "node",
"args": ["<プロジェクトの絶対パス>/src/mcp-server.js"]
}
}
}
npm run mcp で手動起動することも可能です。
エラー処理
ツール内部にはすでにリトライロジックが含まれています。それでも失敗した場合、戻り値の isError: true とエラーメッセージが原因を通知します:
- 生成タイムアウト — ユーザーに説明文を簡略化してから再試行するよう提案
- デーモンが起動していない — ツールが自動的に起動します。それでも失敗する場合は手動で
npm run daemonを実行 - ページ異常 —
gemini_browser_infoを呼び出してブラウザの状態を確認し、トラブルシューティング
参考
- 詳細な実行とフォールバック:
references/gemini-flow.md - キーワードとルーティング:
references/intent-routing.md