
Nano Banana Pro
- 171 installs
- 262 repo stars
- Updated July 11, 2026
- hoodini/ai-agents-skills
Generate and edit images with Nano Banana Pro inside agent workflows for marketing visuals, UI mocks, and social assets without leaving Claude Code or a separate creative suite.
About
nano-banana-pro connects Claude Code to Google's Nano Banana Pro image model for fast generative and edit-in-place visuals—useful for landing page heroes, ad creatives, concept art, and agent-produced media within automated build and content pipelines without a separate image editor.
- High-quality generative image creation
- In-agent editing and iteration
- Marketing and UI mock asset generation
- Reduces dependency on manual design tools
- Pairs with content and launch workflows
Nano Banana Pro by the numbers
- 171 all-time installs (skills.sh)
- +5 installs in the week ending Aug 2, 2026 (Skillselion tracking)
- Ranked #659 of 1,335 Generative Media skills by installs in the Skillselion catalog
- Data as of Aug 2, 2026 (Skillselion catalog sync)
npx skills add https://github.com/hoodini/ai-agents-skills --skill nano-banana-proAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 171 |
|---|---|
| repo stars | ★ 262 |
| Last updated | July 11, 2026 |
| Repository | hoodini/ai-agents-skills ↗ |
What it does
Generate and edit images with Nano Banana Pro inside agent workflows for marketing visuals, UI mocks, and social assets without leaving Claude Code or a separate creative suite.
Files
Nano Banana Pro (Gemini 3 Pro Image)
Generate high-quality images with Google's Gemini 3 Pro Image API.
Overview
Nano Banana Pro is the marketing name for Gemini 3 Pro Image (gemini-3-pro-image-preview), Google's state-of-the-art image generation and editing model built on Gemini 3 Pro.
Quick Start
Get API Key
1. Go to Google AI Studio 2. Click "Get API Key" 3. Store securely as environment variable
Basic Image Generation (Python)
from google import genai
from google.genai import types
client = genai.Client(api_key="YOUR_GEMINI_API_KEY")
response = client.models.generate_content(
model="gemini-3-pro-image-preview",
contents="A serene Japanese garden with cherry blossoms and a koi pond",
config=types.GenerateContentConfig(
response_modalities=['TEXT', 'IMAGE']
)
)
# Process response
for part in response.candidates[0].content.parts:
if hasattr(part, 'text'):
print(f"Description: {part.text}")
elif hasattr(part, 'inline_data'):
# Save image
image_data = part.inline_data.data # Base64 encoded
mime_type = part.inline_data.mime_type # image/png
import base64
with open("output.png", "wb") as f:
f.write(base64.b64decode(image_data))REST API (cURL)
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": [{
"role": "user",
"parts": [{"text": "Create a vibrant infographic about photosynthesis"}]
}],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"]
}
}'TypeScript/JavaScript
const GEMINI_API_KEY = process.env.GEMINI_API_KEY;
async function generateImage(prompt: string) {
const response = await fetch(
'https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-image-preview:generateContent',
{
method: 'POST',
headers: {
'x-goog-api-key': GEMINI_API_KEY!,
'Content-Type': 'application/json',
},
body: JSON.stringify({
contents: [{
role: 'user',
parts: [{ text: prompt }]
}],
generationConfig: {
responseModalities: ['TEXT', 'IMAGE'],
},
}),
}
);
const data = await response.json();
return data;
}Configuration Options
Image Configuration
response = client.models.generate_content(
model="gemini-3-pro-image-preview",
contents="Professional product photo of a coffee mug",
config=types.GenerateContentConfig(
response_modalities=['TEXT', 'IMAGE'],
image_config=types.ImageConfig(
aspect_ratio="16:9", # Options: 1:1, 3:2, 16:9, 9:16, 21:9
image_size="2K" # Options: 1K, 2K, 4K
)
)
)With Google Search Grounding
response = client.models.generate_content(
model="gemini-3-pro-image-preview",
contents="Create an infographic showing today's stock market trends",
config=types.GenerateContentConfig(
response_modalities=['TEXT', 'IMAGE'],
tools=[{"google_search": {}}] # Enable search grounding
)
)Multi-Turn Conversations (Iterative Editing)
# Create a chat session
chat = client.chats.create(
model="gemini-3-pro-image-preview",
config=types.GenerateContentConfig(
response_modalities=['TEXT', 'IMAGE'],
tools=[{"google_search": {}}]
)
)
# Initial generation
response1 = chat.send_message(
"Create a vibrant infographic explaining photosynthesis"
)
# Edit the image
response2 = chat.send_message(
"Update this infographic to be in Spanish. Keep all other elements the same."
)Key Capabilities
1. Superior Text Rendering
response = client.models.generate_content(
model="gemini-3-pro-image-preview",
contents="""Create a professional poster with:
- Title: "Annual Tech Summit 2025"
- Date: March 15-17, 2025
- Location: San Francisco Convention Center
""",
config=types.GenerateContentConfig(
response_modalities=['TEXT', 'IMAGE']
)
)2. Character Consistency (Up to 5 Subjects)
import base64
def load_image(path: str) -> str:
with open(path, "rb") as f:
return base64.b64encode(f.read()).decode()
character_ref = load_image("character.png")
response = client.models.generate_content(
model="gemini-3-pro-image-preview",
contents=[
{"text": "Generate an image of this person at a tech conference"},
{"inline_data": {"mime_type": "image/png", "data": character_ref}}
],
config=types.GenerateContentConfig(
response_modalities=['TEXT', 'IMAGE']
)
)Next.js API Route
// app/api/generate-image/route.ts
import { NextRequest, NextResponse } from 'next/server';
export async function POST(request: NextRequest) {
const { prompt, aspectRatio = '1:1', imageSize = '2K' } = await request.json();
try {
const response = await fetch(
'https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-image-preview:generateContent',
{
method: 'POST',
headers: {
'x-goog-api-key': process.env.GEMINI_API_KEY!,
'Content-Type': 'application/json',
},
body: JSON.stringify({
contents: [{ role: 'user', parts: [{ text: prompt }] }],
generationConfig: {
responseModalities: ['TEXT', 'IMAGE'],
imageConfig: { aspectRatio, imageSize },
},
}),
}
);
const data = await response.json();
const parts = data.candidates?.[0]?.content?.parts || [];
const imagePart = parts.find((p: any) => p.inline_data);
return NextResponse.json({
image: imagePart ? {
data: imagePart.inline_data.data,
mimeType: imagePart.inline_data.mime_type,
url: `data:${imagePart.inline_data.mime_type};base64,${imagePart.inline_data.data}`,
} : null,
});
} catch (error) {
return NextResponse.json({ error: 'Generation failed' }, { status: 500 });
}
}Model Comparison
| Feature | Nano Banana (2.5 Flash) | Nano Banana Pro (3 Pro Image) |
|---|---|---|
| Model ID | gemini-2.5-flash-image | gemini-3-pro-image-preview |
| Quality | Good | Best |
| Speed | Faster | Slower |
| Cost | Lower | Higher |
| Best For | Previews, high-volume | Production, professional |
Resources
- Documentation: https://ai.google.dev/gemini-api/docs/image-generation
- Google AI Studio: https://aistudio.google.com
- Prompt Guide: https://ai.google.dev/gemini-api/docs/prompting-intro