- Iterate: adjust prompt in small diffs; keep filename new per run
- If editing: keep the same --input-image for every iteration until you’re happy.
- Final (4K): only when prompt is locked
- INLINECODE3
Resolution (image_size)
nanobanana2 accepts these image_size values (see docs): 512, 1K, 2K, 4K. Use uppercase K for 1K/2K/4K; 512 has no K suffix (smaller output, Flash-only).
- 512 — lowest tier (~512px shortest side per aspect table); good for thumbnails / fastest drafts
Pass explicitly when the user asks for wallpaper, story, reel, banner, etc., e.g. --aspect-ratio 9:16 or --aspect-ratio 16:9.
API Key
The script checks for API key in this order:
1. --api-key argument (use if user provided key in chat)
INLINECODE36 environment variable
If neither is available, the script exits with an error message.
Preflight + Common Failures (fast fixes)
- Preflight:
- command -v uv (must exist)
- test -n \"$GEMINI_API_KEY\" (or pass --api-key)
- If editing: INLINECODE40
- Common failures:
- Error: No API key provided. → set GEMINI_API_KEY or pass --api-key
- Error loading input image: → wrong path / 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: INLINECODE46
Format: INLINECODE47
- 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 user's prompt or conversation
If unclear, use random identifier (e.g., x9k2, a7b3)
Examples:
- Prompt "A serene Japanese garden" → INLINECODE51
Prompt "sunset over mountains" → INLINECODE52
Prompt "create an image of a robot" → INLINECODE53
Unclear context → INLINECODE54
Image Editing
When the user wants to modify an existing image:
1. Check if they provide an image path or reference an image in the current directory
Use --input-image parameter with the path to the image
The prompt should contain editing instructions (e.g., "make the sky more dramatic", "remove the person", "change to cartoon style")
Common editing tasks: add/remove elements, change style, adjust colors, blur background, etc.
Prompt Handling
For generation: Pass user's image description as-is to --prompt. Only rework if clearly insufficient.
For editing: Pass editing instructions in --prompt (e.g., "add a rainbow in the sky", "make it look like a watercolor painting")
Preserve user's creative intent in both cases.
Prompt Templates (high hit-rate)
Use templates when the user is vague or when edits must be precise.