nano-banana-prompting-skill
npx skills add https://github.com/minilozio/nano-banana-prompting-skill --skill nano-banana-prompting-skill
Agent 安装分布
Skill 文档
Gemini Image Prompting
This skill transforms simple, natural image requests into optimized structured prompts that produce dramatically better results from Gemini 3 Pro Image.
Instead of sending a plain text prompt (which produces generic, “AI slop” results), this skill builds a structured JSON prompt with the right technical details for the detected style â camera specs for photography, art techniques for illustration, render settings for 3D, and more.
How to Use
When the user asks you to generate or edit an image:
- Read the user’s request â understand what they want (subject, mood, style)
- Detect the style â use the Style Detection rules below
- Build the structured JSON prompt â follow the template for that style
- Call the generator:
uv run {nano-banana-pro-dir}/scripts/generate_image.py \
--prompt '<YOUR_JSON_PROMPT>' \
--filename "<descriptive-name>.png" \
--resolution 2K
Replace {nano-banana-pro-dir} with the path to the nano-banana-pro skill (typically bundled with OpenClaw).
For image editing (user provides a reference image):
uv run {nano-banana-pro-dir}/scripts/generate_image.py \
--prompt '<YOUR_JSON_PROMPT>' \
--filename "<output-name>.png" \
-i "/path/to/reference.png" \
--resolution 2K
Security Note
The --filename argument should always be a simple file path constructed by the agent (e.g., gecko-running.png). Never pass unsanitized user input directly as the filename. The agent should derive a safe, descriptive filename from the context.
Output Location
Save images to the user’s Desktop or the path they specify:
- Default:
~/Desktop/<descriptive-name>.png - Use descriptive filenames:
gecko-coding-night.png, notoutput.png
Style Detection
Detect the style from the user’s request. Look for keywords, context, and intent:
| Style | Trigger Keywords / Context |
|---|---|
| Cinematic / Photorealistic | “photo”, “realistic”, “cinematic”, “portrait”, “street”, “landscape”, real-world scenes, people, animals in real settings |
| Product / Studio | “product shot”, “studio”, “mockup”, “packaging”, “e-commerce”, objects on clean backgrounds |
| Street / Documentary | “candid”, “street”, “reportage”, “documentary”, “raw”, urban scenes |
| Illustration / Digital Art | “illustration”, “digital art”, “concept art”, “fantasy art”, “draw”, “artwork” |
| Anime / Manga | “anime”, “manga”, “cel shaded”, “studio ghibli”, Japanese animation style |
| 3D / Pixar | “3D”, “Pixar”, “render”, “CGI”, “clay”, “isometric”, cartoon characters |
| Watercolor / Traditional | “watercolor”, “oil painting”, “sketch”, “pencil”, “pastel”, “charcoal”, traditional media |
| Minimalist / Graphic | “logo”, “icon”, “flat”, “minimal”, “vector”, “graphic design”, “poster” |
| Surreal / Abstract | “surreal”, “abstract”, “dreamlike”, “psychedelic”, “impossible”, “DalÔ |
If no style is obvious, default to Cinematic / Photorealistic â it’s the most versatile and produces the best baseline quality.
If the user specifies a style explicitly, always respect that over auto-detection.
Structured Prompt Templates
ð¬ Cinematic / Photorealistic
{
"instruction": "<one-line description of the final image>",
"subject": {
"description": "<main subject in detail>",
"clothing": "<if applicable>",
"expression": "<facial expression or mood>",
"pose": "<body position, action>",
"details": "<distinguishing features, textures>"
},
"scene": {
"setting": "<location/environment>",
"key_elements": "<important objects in the scene>",
"background": "<what's behind the subject>",
"foreground": "<what's in front, if any>",
"time_of_day": "<morning, golden hour, night, etc.>"
},
"photography": {
"camera": "<Sony A7IV | Hasselblad X2D | Canon R5 | ARRI Alexa 65 | Leica M11>",
"lens": "<24mm f/1.4 | 35mm f/1.4 | 50mm f/1.2 | 85mm f/1.8 | 135mm f/2>",
"shot_type": "<wide | medium | close-up | extreme close-up | aerial | low angle>",
"depth_of_field": "<shallow with bokeh | deep | tilt-shift>",
"lighting": "<natural golden hour | chiaroscuro | rim light | neon | overcast soft | studio three-point>",
"film_stock": "<Kodak Portra 400 | Fujifilm Pro 400H | Kodak Ektar 100 | CineStill 800T | Ilford HP5>",
"texture": "<subtle film grain | clean digital | heavy grain>"
},
"mood": "<emotional atmosphere in one sentence>",
"color_palette": "<dominant colors or color grading style>",
"aspect_ratio": "<1:1 | 16:9 | 4:3 | 9:16 | 3:2>",
"quality": "8K, photorealistic, cinematic, RAW photo",
"negative": "no text, no watermark, no deformed faces, no extra limbs, no blurry"
}
Camera selection guide:
- Portraits â Hasselblad X2D or Canon R5 + 85mm
- Street/documentary â Leica M11 + 35mm
- Landscapes/cinematic â Sony A7IV + 24mm or ARRI Alexa 65
- Night/low light â Sony A7IV + 50mm f/1.2 + CineStill 800T
- Fashion â Hasselblad X2D + 80mm
ð¸ Product / Studio
{
"instruction": "<product shot description>",
"subject": {
"product": "<item name and type>",
"material": "<glass, metal, fabric, wood, plastic, ceramic>",
"color": "<product colors>",
"details": "<logos, textures, unique features>"
},
"scene": {
"backdrop": "<seamless white | gradient | textured surface | lifestyle context>",
"surface": "<marble | wood | concrete | acrylic | fabric>",
"props": "<complementary objects if any>"
},
"photography": {
"camera": "Hasselblad X2D",
"lens": "90mm f/3.2 macro",
"shot_type": "<hero shot | flat lay | 45-degree | floating | exploded view>",
"lighting": "<softbox | ring light | natural window | dramatic single source | backlit>",
"reflections": "<subtle | mirror-like | none>",
"depth_of_field": "shallow, product sharp, background soft"
},
"mood": "<clean and premium | warm and inviting | bold and modern>",
"color_palette": "<brand-aligned colors>",
"aspect_ratio": "1:1",
"quality": "8K, commercial photography, sharp detail, color-accurate",
"negative": "no text, no watermark, no dust, no scratches"
}
ðï¸ Illustration / Digital Art
{
"instruction": "<illustration description>",
"subject": {
"character": "<character description>",
"expression": "<emotion>",
"pose": "<action or stance>",
"details": "<costume, accessories, distinctive features>"
},
"scene": {
"setting": "<world/environment>",
"key_elements": "<important scene elements>",
"atmosphere": "<fog, particles, light rays, sparks>"
},
"art_style": {
"medium": "<digital painting | concept art | comic book | storybook | gouache>",
"technique": "<cel shading | painterly | line art with color | crosshatching>",
"reference_artists": "<1-2 artist names for style reference>",
"color_approach": "<vibrant saturated | muted earthy | monochromatic | complementary>"
},
"composition": {
"framing": "<rule of thirds | centered | dynamic diagonal | symmetrical>",
"perspective": "<eye level | bird's eye | worm's eye | isometric>",
"focal_point": "<where the eye should go>"
},
"mood": "<epic and dramatic | whimsical and playful | dark and moody>",
"color_palette": "<specific colors or palette description>",
"aspect_ratio": "<16:9 | 3:2 | 1:1>",
"quality": "highly detailed illustration, trending on ArtStation, masterpiece",
"negative": "no text, no watermark, no photo-realistic, no AI artifacts"
}
ð¸ Anime / Manga
{
"instruction": "<anime scene description>",
"subject": {
"character": "<character description>",
"hair": "<style, color>",
"eyes": "<color, expression>",
"outfit": "<clothing details>",
"pose": "<action or expression>"
},
"scene": {
"setting": "<location>",
"atmosphere": "<cherry blossoms, rain, sunset glow, sparkles>",
"background_style": "<detailed | simplified | gradient wash>"
},
"art_style": {
"studio_reference": "<Studio Ghibli | Kyoto Animation | Ufotable | MAPPA | Trigger | Makoto Shinkai>",
"line_weight": "<thin and clean | bold and expressive | variable>",
"shading": "<flat cel | soft gradient | dramatic shadow>",
"era": "<modern anime | 90s retro | 80s vintage>"
},
"composition": {
"framing": "<close-up portrait | action shot | scenic wide | over-the-shoulder>",
"effects": "<speed lines | light flares | motion blur | sparkle overlay>"
},
"mood": "<heartwarming | intense action | melancholic | comedic>",
"color_palette": "<pastel soft | vibrant saturated | dark moody | warm sunset>",
"aspect_ratio": "16:9",
"quality": "anime key visual, high detail, studio quality, clean lines",
"negative": "no western cartoon style, no 3D, no photorealistic, no deformed hands"
}
𧸠3D / Pixar / CGI
{
"instruction": "<3D scene description>",
"subject": {
"character": "<character description>",
"material": "<clay | plastic | rubber | fur | fabric>",
"proportions": "<chibi | realistic | stylized | exaggerated>",
"expression": "<emotion>",
"pose": "<stance or action>"
},
"scene": {
"environment": "<setting>",
"props": "<objects in scene>",
"scale": "<miniature diorama | life-size | macro>"
},
"render": {
"engine": "<Pixar RenderMan | Blender Cycles | Unreal Engine 5 | Octane>",
"style": "<Pixar | DreamWorks | Aardman claymation | Nendoroid figure>",
"materials": "<subsurface scattering | glossy plastic | matte clay | fabric texture>",
"lighting": "<three-point studio | HDRI environment | dramatic rim | soft ambient>",
"effects": "<ambient occlusion | global illumination | volumetric fog | depth of field>"
},
"mood": "<playful and colorful | dramatic and cinematic | cozy and warm>",
"color_palette": "<bright primary | pastel | earthy muted | vibrant candy>",
"aspect_ratio": "16:9",
"quality": "3D render, Pixar quality, high detail, raytraced, 8K",
"negative": "no 2D, no flat, no sketch, no watermark, no text"
}
ð¨ Watercolor / Traditional Art
{
"instruction": "<painting description>",
"subject": {
"description": "<what to paint>",
"details": "<important visual details>"
},
"scene": {
"setting": "<environment or abstract>",
"elements": "<supporting visual elements>"
},
"traditional_art": {
"medium": "<watercolor | oil paint | acrylic | gouache | pastel | charcoal | pencil | ink wash>",
"paper": "<cold press watercolor | hot press | canvas | toned paper | rice paper>",
"technique": "<wet-on-wet | dry brush | impasto | glazing | stippling | hatching | wash>",
"brush": "<round | flat | fan | palette knife | sponge>",
"finish": "<loose and expressive | tight and detailed | abstract | impressionistic>"
},
"composition": {
"framing": "<centered | rule of thirds | asymmetric>",
"white_space": "<generous margins | edge-to-edge | vignette>"
},
"mood": "<serene | vibrant | nostalgic | raw and emotional>",
"color_palette": "<limited palette (3-4 colors) | full spectrum | monochrome wash>",
"aspect_ratio": "3:2",
"quality": "fine art quality, museum worthy, masterful brushwork, visible texture",
"negative": "no digital look, no photorealistic, no text, no watermark, no AI artifacts"
}
âï¸ Minimalist / Graphic Design
{
"instruction": "<design description>",
"subject": {
"element": "<main visual element>",
"style": "<geometric | organic | typographic | iconographic>"
},
"design": {
"approach": "<flat design | material design | swiss style | brutalist | retro>",
"grid": "<centered | asymmetric | modular grid>",
"shapes": "<circles | rectangles | triangles | organic blobs | line art>",
"contrast": "<high contrast | subtle | duotone>"
},
"color_palette": "<2-3 specific colors or palette name>",
"background": "<solid color | gradient | textured | transparent>",
"aspect_ratio": "1:1",
"quality": "clean vector quality, crisp edges, professional graphic design",
"negative": "no photorealistic, no complex textures, no gradients unless specified, no text unless requested"
}
ð Surreal / Abstract
{
"instruction": "<surreal scene description>",
"subject": {
"central_element": "<main impossible or dreamlike element>",
"transformation": "<how reality is bent or broken>",
"symbolism": "<underlying meaning or motif>"
},
"scene": {
"reality_level": "<slightly off | dreamlike | fully impossible | cosmic>",
"environment": "<melting landscape | infinite space | underwater sky | fractal world>",
"scale_distortion": "<giant small things | tiny big things | impossible geometry>"
},
"art_style": {
"reference": "<Dalà | Magritte | Escher | Beksinski | James Jean | Android Jones>",
"medium": "<hyperrealistic oil | digital surrealism | mixed media | collage>",
"technique": "<photobashing | matte painting | double exposure | glitch>"
},
"mood": "<unsettling beauty | peaceful absurdity | cosmic wonder | dark fantasy>",
"color_palette": "<describe the color world>",
"aspect_ratio": "16:9",
"quality": "highly detailed, surrealist masterpiece, museum quality",
"negative": "no text, no watermark, no generic, no stock photo feel"
}
Prompting Rules (ALL styles)
Always Do:
- Be specific â “mint-green gecko” not “a gecko”, “warm golden hour” not “nice light”
- Include negative prompt â always specify what to avoid
- Pick an aspect ratio â match the content (landscape 16:9, portrait 9:16, square 1:1)
- Add sensory details â textures, temperatures, sounds implied visually
- One focal point â every image needs a clear subject
- Match quality keywords to style â “8K photorealistic” for photos, “trending on ArtStation” for illustrations
- Color palette matters â specify colors or a grading reference, don’t leave it to chance
Never Do:
- â Don’t include text/words in the image (Gemini renders text poorly)
- â Don’t over-specify (pick 1 camera, 1 lens, not 3 options)
- â Don’t mix conflicting styles (“photorealistic anime” â pick one)
- â Don’t use generic prompts (“a beautiful sunset” â add specifics)
- â Don’t forget the negative prompt
- â Don’t request NSFW content
Resolution Guide:
- 1K â Quick drafts, thumbnails, iteration
- 2K â Social media, general use (best quality/cost ratio)
- 4K â Print, hero images, final deliverables
Examples
User says: “make me a gecko eating pizza on a skateboard”
Detected style: 3D / Pixar (fun character scene)
{
"instruction": "A cute mint-green gecko character riding a skateboard while eating a large slice of pepperoni pizza",
"subject": {
"character": "small mint-green gecko with big expressive pale pink eyes and a wide happy grin",
"material": "smooth glossy skin with subtle subsurface scattering",
"proportions": "stylized chibi, slightly oversized head",
"expression": "pure joy, eyes half-closed savoring the pizza",
"pose": "standing on a moving skateboard, one hand holding pizza slice, cheese stretching"
},
"scene": {
"environment": "sunny Venice Beach boardwalk, palm trees, blue sky",
"props": "worn wooden skateboard with flame decals, pizza box on a nearby bench",
"scale": "life-size character in real-world setting"
},
"render": {
"engine": "Pixar RenderMan",
"style": "Pixar",
"materials": "subsurface scattering on gecko skin, glossy cheese, matte concrete",
"lighting": "warm golden hour sunlight with soft shadows",
"effects": "subtle motion blur on skateboard wheels, depth of field"
},
"mood": "carefree summer vibes, playful and fun",
"color_palette": "warm yellows, mint green, sky blue, pizza orange",
"aspect_ratio": "16:9",
"quality": "3D render, Pixar quality, high detail, raytraced, 8K",
"negative": "no 2D, no flat, no text, no watermark, no dark mood"
}
User says: “a samurai in the rain, dramatic”
Detected style: Cinematic / Photorealistic
{
"instruction": "A lone samurai standing in heavy rain at night, katana drawn, cinematic and dramatic",
"subject": {
"description": "weathered samurai warrior, middle-aged, battle-scarred",
"clothing": "dark indigo hakama and kimono, worn leather chest armor, straw sandals",
"expression": "intense focus, eyes locked forward, jaw set",
"pose": "standing in chudan-no-kamae stance, katana held at center",
"details": "rain droplets on blade edge catching light, wet hair tied in topknot"
},
"scene": {
"setting": "abandoned temple courtyard with stone lanterns",
"key_elements": "heavy rainfall, puddles reflecting lantern light",
"background": "dark silhouette of temple roof, mist rolling between pillars",
"foreground": "rain splashing on stone ground, shallow puddles",
"time_of_day": "deep night, moonless"
},
"photography": {
"camera": "ARRI Alexa 65",
"lens": "50mm f/1.2",
"shot_type": "medium shot, slightly low angle",
"depth_of_field": "shallow, rain drops in foreground out of focus",
"lighting": "single warm lantern as key light from left, cool rain backlit by distant light, rim light on shoulders",
"film_stock": "CineStill 800T",
"texture": "subtle film grain"
},
"mood": "tense calm before the storm, honor and solitude",
"color_palette": "deep indigo, warm amber lantern glow, cool steel grey",
"aspect_ratio": "16:9",
"quality": "8K, photorealistic, cinematic, RAW photo",
"negative": "no text, no watermark, no deformed faces, no blurry, no anime style"
}
User says: “paint me some sunflowers, like watercolor”
Detected style: Watercolor / Traditional
{
"instruction": "A loose, expressive watercolor painting of sunflowers in a ceramic vase",
"subject": {
"description": "five sunflowers in various stages of bloom, some drooping slightly",
"details": "petals ranging from bright yellow to burnt sienna, dark brown seed heads with visible texture"
},
"scene": {
"setting": "simple tabletop, implied window light",
"elements": "rustic blue ceramic vase, a few fallen petals on the surface, soft shadow"
},
"traditional_art": {
"medium": "watercolor",
"paper": "cold press watercolor paper, visible tooth texture",
"technique": "wet-on-wet for soft petal edges, dry brush for seed head texture, controlled wash for background",
"brush": "large round for washes, small round for details",
"finish": "loose and expressive, some areas left unfinished showing white paper"
},
"composition": {
"framing": "slightly off-center, flowers extending above frame edge",
"white_space": "generous margins, breathing room around the vase"
},
"mood": "warm, nostalgic, peaceful afternoon light",
"color_palette": "cadmium yellow, burnt sienna, cerulean blue, sap green â limited palette",
"aspect_ratio": "3:2",
"quality": "fine art quality, museum worthy, masterful brushwork, visible paper texture",
"negative": "no digital look, no photorealistic, no text, no watermark, no harsh edges"
}
Editing / Reference Images
When the user provides a reference image to edit or use as inspiration:
- Include the image with
-iflag - Describe what to change in the instruction field
- Keep the JSON structure â same style detection and template applies
- Be explicit about what to preserve vs change
uv run {nano-banana-pro-dir}/scripts/generate_image.py \
--prompt '<JSON_PROMPT>' \
--filename "edited-output.png" \
-i "/path/to/original.png" \
--resolution 2K
For character consistency across multiple images, always include the same reference image(s) and describe the character identically in the subject field.
Quick Reference: Style â Key Fields
| Style | Must-Have Fields | Key Differentiator |
|---|---|---|
| Cinematic | photography.camera, lens, film_stock | Real camera specs sell the realism |
| Product | photography.lighting, surface, reflections | Clean, commercial precision |
| Illustration | art_style.medium, technique, reference_artists | Artist references anchor the style |
| Anime | art_style.studio_reference, line_weight, shading | Studio name = instant style match |
| 3D/Pixar | render.engine, style, materials | Render engine + material physics |
| Watercolor | traditional_art.medium, paper, technique | Paper texture + brush technique |
| Minimalist | design.approach, shapes, contrast | Less is more, precision matters |
| Surreal | art_style.reference, reality_level, transformation | Named surrealist = instant vibe |