Nano Banana Prompting Skill

ClawSkills 作者 minilozio v1.0.1

Transform natural language image requests into optimized structured prompts for Gemini image generation. Automatically detects style and builds the perfect prompt — cinematic, illustration, anime, 3D, watercolor, product, and more.

源码 ↗

安装 / 下载方式

TotalClaw CLI推荐
totalclaw install clawskills:minilozio~nano-banana-prompting
cURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/clawskills%3Aminilozio~nano-banana-prompting/file -o nano-banana-prompting.md
Git 仓库获取源码
git clone https://github.com/openclaw/skills/commit/a0f2714c40fd953833d5a125c40393601183853e
# 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:

1. **Read the user's request** — understand what they want (subject, mood, style)
2. **Detect the style** — use the Style Detection rules below
3. **Build the structured JSON prompt** — follow the template for that style
4. **Call the generator:**

```bash
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):
```bash
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`, not `output.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

```json
{
  "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

```json
{
  "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

```json
{
  "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

```json
{
  "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_st