home / skills / openclaw / skills / nanobanana-pro

nanobanana-pro skill

/skills/zaycv/nanobanana-pro

This skill generates and edits images using Nano Banana Pro API, enabling fast prompts, iterative drafts, and final 4K renders from your descriptions.

npx playbooks add skill openclaw/skills --skill nanobanana-pro

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
5.6 KB
---
name: nano-banana-pro
description: Generate/edit images with Nano Banana Pro (Gemini 3 Pro Image). Use for image create/modify requests incl. edits. Supports text-to-image + image-to-image; 1K/2K/4K; use --input-image.
---

# Nano Banana Pro Image Generation & Editing

Generate new images or edit existing ones using Google's Nano Banana Pro API (Gemini 3 Pro Image).

## Usage

Run the script using absolute path (do NOT cd to skill directory first):

**Generate new image:**
```bash
uv run ~/.codex/skills/nano-banana-pro/scripts/generate_image.py --prompt "your image description" --filename "output-name.png" [--resolution 1K|2K|4K] [--api-key KEY]
```

**Edit existing image:**
```bash
uv run ~/.codex/skills/nano-banana-pro/scripts/generate_image.py --prompt "editing instructions" --filename "output-name.png" --input-image "path/to/input.png" [--resolution 1K|2K|4K] [--api-key KEY]
```

**Important:** Always run from the user's current working directory so images are saved where the user is working, not in the skill directory.

## Default Workflow (draft → iterate → final)

Goal: fast iteration without burning time on 4K until the prompt is correct.

- Draft (1K): quick feedback loop
  - `uv run ~/.codex/skills/nano-banana-pro/scripts/generate_image.py --prompt "<draft prompt>" --filename "yyyy-mm-dd-hh-mm-ss-draft.png" --resolution 1K`
- Iterate: adjust prompt in small diffs; keep filename new per run
  - If editing: keep the same `--input-image` for every iteration until you’re happy.
- Final (4K): only when prompt is locked
  - `uv run ~/.codex/skills/nano-banana-pro/scripts/generate_image.py --prompt "<final prompt>" --filename "yyyy-mm-dd-hh-mm-ss-final.png" --resolution 4K`

## Resolution Options

The Gemini 3 Pro Image API supports three resolutions (uppercase K required):

- **1K** (default) - ~1024px resolution
- **2K** - ~2048px resolution
- **4K** - ~4096px resolution

Map user requests to API parameters:
- No mention of resolution → `1K`
- "low resolution", "1080", "1080p", "1K" → `1K`
- "2K", "2048", "normal", "medium resolution" → `2K`
- "high resolution", "high-res", "hi-res", "4K", "ultra" → `4K`

## API Key

The script checks for API key in this order:
1. `--api-key` argument (use if user provided key in chat)
2. `GEMINI_API_KEY` environment variable

If neither is available, the script exits with an error message.

## Preflight + Common Failures (fast fixes)

- Preflight:
  - `command -v uv` (must exist)
  - `test -n \"$GEMINI_API_KEY\"` (or pass `--api-key`)
  - If editing: `test -f \"path/to/input.png\"`

- Common failures:
  - `Error: No API key provided.` → set `GEMINI_API_KEY` or pass `--api-key`
  - `Error loading input image:` → wrong path / unreadable file; verify `--input-image` points to a real image
  - “quota/permission/403” style API errors → wrong key, no access, or quota exceeded; try a different key/account

## Filename Generation

Generate filenames with the pattern: `yyyy-mm-dd-hh-mm-ss-name.png`

**Format:** `{timestamp}-{descriptive-name}.png`
- Timestamp: Current date/time in format `yyyy-mm-dd-hh-mm-ss` (24-hour format)
- Name: Descriptive lowercase text with hyphens
- Keep the descriptive part concise (1-5 words typically)
- Use context from user's prompt or conversation
- If unclear, use random identifier (e.g., `x9k2`, `a7b3`)

Examples:
- Prompt "A serene Japanese garden" → `2025-11-23-14-23-05-japanese-garden.png`
- Prompt "sunset over mountains" → `2025-11-23-15-30-12-sunset-mountains.png`
- Prompt "create an image of a robot" → `2025-11-23-16-45-33-robot.png`
- Unclear context → `2025-11-23-17-12-48-x9k2.png`

## Image Editing

When the user wants to modify an existing image:
1. Check if they provide an image path or reference an image in the current directory
2. Use `--input-image` parameter with the path to the image
3. The prompt should contain editing instructions (e.g., "make the sky more dramatic", "remove the person", "change to cartoon style")
4. Common editing tasks: add/remove elements, change style, adjust colors, blur background, etc.

## Prompt Handling

**For generation:** Pass user's image description as-is to `--prompt`. Only rework if clearly insufficient.

**For editing:** Pass editing instructions in `--prompt` (e.g., "add a rainbow in the sky", "make it look like a watercolor painting")

Preserve user's creative intent in both cases.

## Prompt Templates (high hit-rate)

Use templates when the user is vague or when edits must be precise.

- Generation template:
  - “Create an image of: <subject>. Style: <style>. Composition: <camera/shot>. Lighting: <lighting>. Background: <background>. Color palette: <palette>. Avoid: <list>.”

- Editing template (preserve everything else):
  - “Change ONLY: <single change>. Keep identical: subject, composition/crop, pose, lighting, color palette, background, text, and overall style. Do not add new objects. If text exists, keep it unchanged.”

## Output

- Saves PNG to current directory (or specified path if filename includes directory)
- Script outputs the full path to the generated image
- **Do not read the image back** - just inform the user of the saved path

## Examples

**Generate new image:**
```bash
uv run ~/.codex/skills/nano-banana-pro/scripts/generate_image.py --prompt "A serene Japanese garden with cherry blossoms" --filename "2025-11-23-14-23-05-japanese-garden.png" --resolution 4K
```

**Edit existing image:**
```bash
uv run ~/.codex/skills/nano-banana-pro/scripts/generate_image.py --prompt "make the sky more dramatic with storm clouds" --filename "2025-11-23-14-25-30-dramatic-sky.png" --input-image "original-photo.jpg" --resolution 2K
```

Overview

This skill generates and edits images using Nano Banana Pro (Gemini 3 Pro Image). It supports text-to-image and image-to-image workflows across 1K, 2K, and 4K resolutions. Use the CLI script to quickly iterate drafts, run precise edits with --input-image, and save outputs to your current working directory.

How this skill works

The script sends user prompts and optional input images to the Gemini 3 Pro Image API, mapping natural language resolution requests to API parameters (1K/2K/4K). It checks for an API key via a --api-key argument or the GEMINI_API_KEY environment variable and validates inputs before calling the API. The tool writes a PNG to the current directory and prints the saved file path; it does not load image bytes back into the session.

When to use it

  • Create new images from a text description (text-to-image).
  • Edit or restyle an existing image using --input-image (image-to-image).
  • Quickly iterate drafts at 1K before committing to 4K final output.
  • Produce high-resolution assets for print or detailed work at 4K once prompts are locked.
  • Batch or scripted generation where filenames and resolution need to be consistent.

Best practices

  • Start at 1K for fast feedback, iterate with small prompt changes, then export at 4K once satisfied.
  • Keep filenames timestamped and descriptive: yyyy-mm-dd-hh-mm-ss-descriptive-name.png.
  • Provide clear editing instructions when using --input-image (e.g., "make the sky more dramatic").
  • Supply an API key via --api-key or set GEMINI_API_KEY in your environment to avoid runtime failures.
  • Run the script from your current working directory so outputs are saved where you expect them.

Example use cases

  • Draft concept art: iterate at 1K until composition and lighting are right, then render final at 4K.
  • Photo retouch: pass a photo with --input-image and prompts like "remove the person" or "blur the background".
  • Style transfer: edit a photo to match a specific style (watercolor, film grain, cartoon).
  • Marketing assets: generate multiple variations of a hero image at 2K for web use and 4K for print.
  • Batch generation: script many prompts with consistent filename timestamps for archival.

FAQ

What if I don’t have an API key?

The script requires a key. Pass --api-key or set GEMINI_API_KEY in your environment; otherwise it exits with an error.

How do I control resolution?

Include --resolution 1K, 2K, or 4K. If omitted, the tool defaults to 1K. Natural-language mentions like "high-res" map to 4K automatically.

Where are images saved?

Images are written to the current working directory or to the path you include in the filename. The script prints the full saved path.