nanobanana
Installation
SKILL.md
Gemini の画像生成モデルで画像を生成し tmp/images/ に保存する。API キーは環境変数 GEMINI_API_KEY を使用する。
パラメータの enum・モデル別の対応状況は assets/parameters.md を参照。curl サンプルは assets/flash.sh / assets/pro.sh。
$ARGUMENTSから プロンプト本文 と以下のオプションを抽出する。プロンプトが空ならユーザーに質問する--model(flash|pro| 任意のモデル ID) /--aspect/--size(デフォルト1K) /--person(Flash のみ) /--thinking(Flash のみ)- モデルは
--modelで明示指定されない限り常にflash(gemini-3.1-flash-image-preview) を使う。ユーザーが暗に Pro を示唆していても確認なしに Pro へ切り替えない - Pro で
--person/--thinkingが指定されたら警告し、該当フィールドは request に含めない - Pro で
--size 512や Pro 非対応の--aspect(1:4/4:1/1:8/8:1)が指定されたらユーザーに確認
- 実行ごとに一意の ID を作る(例:
ID=$(date +%Y%m%d-%H%M%S)-$$)。中間ファイルはtmp/images/${ID}.request.json/tmp/images/${ID}.response.jsonのように ID 付きで扱い、並列実行時の衝突を防ぐ - 選択したモデルの curl サンプルをベースに、
INSERT_INPUT_HEREをプロンプト(JSON エスケープ済み)に、imageConfigの各フィールドを指定値に差し替えてtmp/images/${ID}.request.jsonを生成する。Pro ではthinkingConfigを含めない curl -sS -X POST -H "Content-Type: application/json" "https://generativelanguage.googleapis.com/v1beta/models/${MODEL_ID}:streamGenerateContent?key=${GEMINI_API_KEY}" -d @tmp/images/${ID}.request.json -o tmp/images/${ID}.response.jsonを実行- レスポンス(JSON 配列)の
candidates[].content.parts[].inlineDataから base64 画像を取り出し、mimeType に応じた拡張子でtmp/images/${ID}.<ext>に保存する。parts[].textがあれば報告に含める。抽出はjq | base64 -dを 1 パイプで行い、.b64等の中間ファイルは作らない - 画像が正常に生成できたら
tmp/images/${ID}.request.jsonとtmp/images/${ID}.response.jsonを削除する(生成に失敗した場合は調査用に残す) - 使用モデル・保存パス・テキスト応答をユーザーに報告する。
errorフィールドがあれば内容を報告