AI image generation using Nano Banana PRO (Gemini 3 Pro Image) and Nano Banana (Gemini 2.5 Flash Image). Use this skill when: (1) Generating images from text prompts, (2) Editing existing images, (3) Creating professional visual assets like infographics, logos, product shots, stickers, (4) Working with character consistency across multiple images, (5) Creating images with accurate text rendering, (6) Any task requiring AI-generated visuals. Triggers on: 'generate image', 'create image', 'make a picture', 'design a logo', 'create infographic', 'AI image', 'nano banana', or any image generation request.
Generate professional AI images and edit existing visuals using Google's Nano Banana models. Triggers on requests like "generate image," "create a logo," or "make an infographic.
/plugin marketplace add horuz-ai/claude-plugins/plugin install google@horuzThis skill inherits all available tools. When active, it can use any tool Claude has access to.
references/api-reference.mdreferences/prompting-guide.mdscripts/generate-image.shscripts/generate_image.pyGenerate professional AI images using Google's Nano Banana models via the Gemini API.
GEMINI_API_KEY environment variable| Model | Identifier | Best For |
|---|---|---|
| Nano Banana PRO | gemini-3-pro-image-preview | Professional assets, text rendering, infographics, 4K output, complex multi-turn editing |
| Nano Banana | gemini-2.5-flash-image | Fast generation, simple edits, lower cost |
Default to PRO for quality work. Use Flash for rapid iterations or simple tasks.
BEFORE calling the API, always craft an effective prompt. Read references/prompting-guide.md for comprehensive prompting strategies. Key principles:
For any image, specify:
curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-image-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts": [{"text": "YOUR_PROMPT_HERE"}]
}],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"],
"imageConfig": {
"aspectRatio": "16:9",
"imageSize": "2K"
}
}
}'
curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-image-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts": [
{"text": "YOUR_EDIT_INSTRUCTION"},
{"inline_data": {"mime_type": "image/png", "data": "BASE64_IMAGE_DATA"}}
]
}],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"]
}
}'
| Parameter | Values | Notes |
|---|---|---|
aspectRatio | 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 | Match use case |
imageSize | 1K, 2K, 4K | Use uppercase K; PRO model only for 4K |
Add "tools": [{"google_search": {}}] to generate images based on current information:
curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-image-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{"parts": [{"text": "Create an infographic of current tech stock prices"}]}],
"tools": [{"google_search": {}}],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"],
"imageConfig": {"aspectRatio": "16:9"}
}
}'
Use the ICS framework and prompting guide. Examples:
Photorealistic:
A photorealistic close-up portrait of an elderly Japanese ceramicist with deep wrinkles and a warm smile, inspecting a tea bowl. Soft golden hour light from a window. 85mm lens, shallow depth of field. Serene mood.
Infographic:
Create a clean, modern infographic explaining photosynthesis as a recipe. Show "ingredients" (sunlight, water, CO2) and "finished dish" (energy). Style like a colorful kids' cookbook page.
Product Shot:
High-resolution studio photograph of a matte black ceramic coffee mug on polished concrete. Three-point softbox lighting, 45-degree angle, sharp focus on rising steam. Square format.
Use scripts/generate-image.sh or call API directly:
./scripts/generate-image.sh "Your prompt here" output.png --ratio 16:9 --size 2K
The API returns base64-encoded image data. Extract and decode:
# Response contains: {"candidates":[{"content":{"parts":[{"inlineData":{"mimeType":"image/png","data":"BASE64..."}}]}}]}
# Extract with jq and decode:
cat response.json | jq -r '.candidates[0].content.parts[] | select(.inlineData) | .inlineData.data' | base64 -d > image.png
See scripts/generate-image.sh for a ready-to-use generation script.
For advanced techniques including: