| name | nano-banana |
| description | Generate or edit images using Google Nano Banana (Gemini image generation API). Trigger this skill whenever the user asks to generate an image, draw something, create artwork, edit a photo, or mentions "nano banana", "nanobanana", or any AI image generation/editing need — even if they don't explicitly mention Nano Banana. Proactively use this skill for any image creation or transformation request. |
Nano Banana — Image Generation Skill
Generate or edit images locally using the Google Gemini image generation API (a.k.a. Nano Banana).
Quick Workflow
- Check environment (API key + dependencies)
- Identify the mode: text-to-image / image editing / batch generation
- Choose the right model
- Use the bundled scripts directly — no need to rewrite them
- Run the script and save output to
<attachments>/
- Display the result inline in the conversation
Environment Setup
Check API Key
source /etc/profile && echo $GEMINI_API_KEY | head -c 10
⚠️ Always run source /etc/profile first — environment variables are stored there and won't be available otherwise.
If not set, direct the user to Google AI Studio to obtain a key, then:
echo 'export GEMINI_API_KEY="your_key_here"' >> /etc/profile
Check Dependencies
pip show google-genai pillow 2>&1 | grep -E "^Name|not found"
If missing:
pip install google-genai pillow
Model Selection
| Model | Model ID | Best For |
|---|
| Nano Banana 2 (recommended) | gemini-3.1-flash-image-preview | Fast, high quality, 2K support — default choice |
| Nano Banana Pro | gemini-3-pro-image-preview | Complex prompts, professional assets, precise text rendering |
| Nano Banana (original) | gemini-2.5-flash-image | Ultra-low latency, simple tasks |
Default to gemini-3.1-flash-image-preview unless the user explicitly requests another version.
⚠️ Known API Pitfalls
1. Aspect ratio / resolution config
❌ Wrong (old API, throws AttributeError):
image_generation_config=types.ImageGenerationConfig(aspect_ratio="16:9")
✅ Correct:
config=types.GenerateContentConfig(
response_modalities=["IMAGE"],
image_config=types.ImageConfig(
aspect_ratio="16:9",
image_size="2K",
),
)
2. Environment variable loading
❌ Running python3 script.py directly may not have the API key
✅ Always prefix with source /etc/profile && python3 script.py
3. Saving images
part.as_image() returns a PIL Image object — call .save(path) directly. No need to handle base64 manually.
Bundled Scripts
Run any script with:
source /etc/profile && python3 <skill-path>/nano-banana/scripts/<script>.py [args]
📄 gen.py — Text to Image
Usage: gen.py "prompt" [output_path] [aspect_ratio] [resolution]
Example: gen.py "a panda drinking tea in a bamboo forest" <attachments>/out.png 1:1 2K
📄 edit.py — Image Editing (image + prompt → image)
Usage: edit.py <input_image> "edit instruction" [output_path]
Example: edit.py <attachments>/photo.jpg "add a wizard hat to the cat" <attachments>/edited.png
📄 batch.py — Batch Generation (multiple prompts → multiple images)
Edit the TASKS list at the top of the script, then run it.
Step-by-Step
When the user makes an image generation request:
- Understand the request — text-to-image, image editing, or batch?
- Check API key —
source /etc/profile && echo $GEMINI_API_KEY | head -c 10
- Verify scripts exist —
ls <skill-path>/nano-banana/scripts/
- If scripts are missing, use
file_write to recreate them from the source in this skill
- Run the appropriate script:
- Text-to-image:
source /etc/profile && python3 <skill-path>/nano-banana/scripts/gen.py "prompt" <attachments>/out.png 16:9 2K
- Image editing:
source /etc/profile && python3 <skill-path>/nano-banana/scripts/edit.py <image_path> "instruction" <attachments>/out.png
- Batch: edit
TASKS in scripts/batch.py, then run it
- Display the result —

Prompt Tips
- Describe a scene, don't just stack keywords — "An elderly Japanese potter focused at the wheel, soft afternoon light through a studio window, photorealistic" beats "Japan pottery old man realistic"
- Specify style explicitly — for photography add camera details ("50mm lens, shallow depth of field"); for illustration name the style ("Ghibli-style watercolor")
- Text in images — spell out exactly what text should appear; the model renders it more accurately when it's explicit
- Iterate with edit.py — make small adjustments on an existing image rather than regenerating from scratch
- Aspect ratio guide —
16:9 for banners/social media, 1:1 for avatars/covers, 9:16 for phone wallpapers, 3:4 for portrait cards
Troubleshooting
| Issue | Cause & Fix |
|---|
AttributeError: ImageGenerationConfig | Deprecated API — use image_config=types.ImageConfig(...) instead |
KeyError: GEMINI_API_KEY | Run source /etc/profile before executing the script |
| Only text returned, no image | Ensure response_modalities includes "IMAGE" |
| Poor image quality | Switch to gemini-3-pro-image-preview or refine the prompt |
| Rate limit error | Free tier has limits — wait a moment and retry |
| Save fails | Confirm <attachments>/ directory exists |
References