Nano banana
Generate and edit images with Google Gemini Nano Banana Pro from prompts and optional reference images, using GEMINI_API_KEY from .env.local when available.From its SKILL.md
npx -y skills add jimezsa/opencolab --skill nano-bananaAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
3 things to look at
- reads credentialsReads from 2 credential sources: `.env.local` and 1 more.
- 11 stars11 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 5 commands, including `python3 -m pip install google-genai` and 4 more.
SKILL.md
5.9 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it
Nano Banana Pro Skill
Use this skill when the user wants image generation or image editing with Google Gemini, especially for:
- paper architecture diagrams,
- figure redraws and cleanups,
- annotated illustrations,
- posters, covers, assets, and product shots,
- edits to an existing image while preserving the important parts.
This skill defaults to Nano Banana Pro (gemini-3-pro-image-preview), which Google documents as the professional image model for complex instructions and high-fidelity asset production.
Mission
Given a prompt and zero or more reference images:
- Generate a new image or edit an existing one with Gemini.
- Save every returned image locally.
- Save any accompanying model text next to the image outputs.
- Keep the workflow deterministic and scriptable from the terminal.
Prerequisites
python3is installed and available inPATH.google-genaiis installed:
python3 -m pip install google-genai
- Network access is available when the Gemini request runs.
Hard Requirements
- Use
projects/SKILLS/nano-banana/scripts/nano_banana.pyfor the API call so key loading stays consistent with the repo. - Default to
gemini-3-pro-image-previewunless the user explicitly wants a cheaper or faster model. - Save generated images in the current project folder under
images/, not underartifacts/. - If the generated image should be sent back to Telegram, emit a raw
@telegram-file {"kind":"photo","file":"<path>","caption":"optional"}line on its own line after generation. Do not wrap it in backticks or code fences. Keep the JSON on one line, keepkindasphoto(neverimage/png/jpg), and on Windows write the path with forward slashes. - For edits, pass the existing image with
--inputand tell the model exactly what must stay unchanged. - For diagrams, specify the layout, labels, arrow directions, grouping, legend, and aspect ratio explicitly.
- When exact text matters, write the exact text in the prompt and keep it short.
- Do not assume the model inferred the paper structure correctly if the diagram is research-critical; inspect the generated image afterward.
Workflow
1. Write a concrete prompt
Good prompts for this skill are explicit about:
- subject,
- composition,
- style,
- required labels/text,
- what to preserve,
- what to change,
- output format or aspect ratio.
Useful prompt patterns:
- Paper architecture diagram:
Create a clean research-paper architecture diagram on a white background. Show the pipeline as five left-to-right blocks with arrows between them: Input Image, Feature Encoder, Multi-Scale Fusion, 3D Reconstruction Head, Rendered Output. Use concise academic figure styling, thin gray arrows, blue highlight for the main module, and exact labels in a modern sans-serif font. Add a small legend in the lower-right corner. - Edit an image:
Edit the provided image. Keep the framing, subject identity, and overall lighting unchanged. Replace the background with a clean studio backdrop, add a subtle shadow, and preserve the original object proportions. - Redraw a rough figure:
Use the provided sketch as structure reference only. Redraw it as a polished conference-paper figure with consistent spacing, aligned labels, clear arrows, and export-ready visual quality.
2. Run the script
Generate a new image:
python3 projects/SKILLS/nano-banana/scripts/nano_banana.py \
--prompt "Create a conference-paper style architecture diagram for a monocular 3D reconstruction pipeline with clearly labeled modules, arrows, and a small legend." \
--aspect-ratio 16:9 \
--image-size 2K \
--output-prefix images/mono3d-diagram
Edit an existing image:
python3 projects/SKILLS/nano-banana/scripts/nano_banana.py \
--prompt "Edit the provided figure into a polished academic diagram. Keep the layout and labels semantically equivalent, but clean the typography, spacing, arrow routing, and color hierarchy." \
--input assets/rough-diagram.png \
--aspect-ratio 16:9 \
--image-size 2K \
--output-prefix images/rough-diagram-polished
Use multiple references:
python3 projects/SKILLS/nano-banana/scripts/nano_banana.py \
--prompt "Create a product hero image using the bottle from the first reference and the packaging language from the second reference. Keep the bottle shape faithful to the original." \
--input references/bottle.png \
--input references/box.png \
--aspect-ratio 4:5 \
--image-size 2K \
--output-prefix images/product-hero
Use Google Search grounding when real-world accuracy matters:
python3 projects/SKILLS/nano-banana/scripts/nano_banana.py \
--prompt "Create an editorial-style travel poster for Berlin using accurate landmark details and current visual references." \
--google-search \
--aspect-ratio 3:4 \
--image-size 2K \
--output-prefix images/berlin-poster
3. Review outputs
- The script saves generated images as
<output-prefix>_01.<ext>,<output-prefix>_02.<ext>, and so on. - Any model text is saved as
<output-prefix>.txt. - A machine-readable run summary is saved as
<output-prefix>.json. - If the first result is close but not correct, rerun with the previous output as a new
--inputand tighten the prompt.
Output Contract
- One or more local image files.
- Optional accompanying text file if Gemini returns text alongside the image.
- One JSON summary describing the model, prompt source, inputs, and saved outputs.
Canonical Assets
- Skill doc:
projects/SKILLS/nano-banana/SKILL.md - Python runner:
projects/SKILLS/nano-banana/scripts/nano_banana.py
What ships with it: 1 file
11.4 KB alongside SKILL.md, 1 of them executable
scripts/
- nano_banana.pyruns11.4 KB