Nano Banana Pro Image Generation
Generate new images using OpenRouter's Nano Banana Pro (Gemini 3 Pro Image Preview).
Usage
Run the script using an absolute path (do NOT cd to the skill directory first):
Generate new image:
sh ~/.openclaw/workspace/skills/nano-banana-pro-openrouter/scripts/generate_image.sh --prompt "your image description" [--filename "output-name.png" | --filename auto] [--resolution 1K|2K|4K] [--api-key KEY]
Note: the shell version currently supports generation only (no input image editing).
Important:
- Images are always saved under
~/.openclaw/workspace/outputs/nano-banana-pro-openrouter - If
--filenamecontains a path, only the basename is used
Default Workflow (draft -> iterate -> final)
Goal: fast iteration without burning time on 4K until the prompt is correct.
- Draft (1K): quick feedback loop
sh ~/.openclaw/workspace/skills/nano-banana-pro-openrouter/scripts/generate_image.sh --prompt "<draft prompt>" --filename auto --resolution 1K
- Iterate: adjust prompt in small diffs; keep filename new per run
- Final (4K): only when prompt is locked
sh ~/.openclaw/workspace/skills/nano-banana-pro-openrouter/scripts/generate_image.sh --prompt "<final prompt>" --filename auto --resolution 4K
Resolution Options
The Gemini 3 Pro Image API supports three resolutions (uppercase K required):
- 1K (default) - ~1024px resolution
- 2K - ~2048px resolution
- 4K - ~4096px resolution
Map user requests to API parameters:
- No mention of resolution -> 1K
- "low resolution", "1080", "1080p", "1K" -> 1K
- "2K", "2048", "normal", "medium resolution" -> 2K
- "high resolution", "high-res", "hi-res", "4K", "ultra" -> 4K
API Key and Base URL
The script checks for the API key in this order:
- --api-key argument (use if user provided a key in chat)
- OPENROUTER_API_KEY environment variable
The API base URL must be set via OPENROUTER_BASE_URL. Use the full chat
completions endpoint (for OpenRouter: https://openrouter.ai/api/v1/chat/completions).
The script also loads .env files automatically (if present):
- Current working directory .env
- Skill directory .env
Important: If a .env file exists, do not ask the user for the key up front. Just run the script and only ask if it errors with "No API key provided."
OpenClaw Chat Execution Rules
- OpenClaw does NOT auto-source the skill .env file
- If
~/.openclaw/workspace/skills/nano-banana-pro-openrouter/.envexists:- Use the
readtool to read.env - Extract
OPENROUTER_API_KEYandOPENROUTER_BASE_URL - Always pass the key via
--api-keywhen running the script
- Use the
- Only ask the user if .env is missing or the key cannot be read
- If the user asks for a timestamped filename, prefer
--filename auto(do not handwrite dates)
If neither is available, the script exits with an error message.
Preflight and Common Failures (fast fixes)
Preflight:
command -v sh(must exist)command -v curl(must exist)command -v base64(must exist)
Common failures:
Error: No API key provided.-> read .env and retry with --api-key; if still failing, ask the user to set OPENROUTER_API_KEYError: No API base URL provided.-> ensure OPENROUTER_BASE_URL is set to a full chat completions endpointError loading input image:-> wrong path or unreadable file; verify --input-image points to a real image- "quota/permission/403" style API errors -> wrong key, no access, or quota exceeded; try a different key/account
Filename Generation
Generate filenames with the pattern: yyyy-mm-dd-hh-mm-ss-name.png
Format: {timestamp}-{descriptive-name}.png
- Timestamp: Current date/time in format
yyyy-mm-dd-hh-mm-ss(24-hour format) - Name: Descriptive lowercase text with hyphens
- Keep the descriptive part concise (1-5 words typically)
- Use context from the user's prompt or conversation
- If unclear, use
image
Examples:
- Prompt "A serene Japanese garden" ->
2025-11-23-14-23-05-japanese-garden.png - Prompt "sunset over mountains" ->
2025-11-23-15-30-12-sunset-mountains.png - Prompt "create an image of a robot" ->
2025-11-23-16-45-33-robot.png - Unclear context ->
2025-11-23-17-12-48-image.png
Tip: To avoid incorrect timestamps, pass --filename auto and let the script
generate the filename using the system clock.
Image Editing (Not Supported in Shell Version)
The shell script only supports generating new images. Editing an input image is not available in this version.
Prompt Handling
For generation: pass the user's image description as-is to --prompt. Only rework if clearly insufficient.
Prompt Templates (high hit-rate)
Use templates when the user is vague or when edits must be precise.
Generation template:
- "Create an image of:
. Style: