← Back to Skills Marketplace
tclxhai-lv

nano-banana-v2-openrouter

by tclxhai-lv · GitHub ↗ · v0.0.1 · MIT-0
cross-platform ✓ Security Clean
104
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install nano-banana-v2-openrouter
Description
Generate/edit images with Gemini 3.1 Flash Image Preview via OpenRouter. Use for image create/modify requests incl. edits. Supports text-to-image + image-to-...
README (SKILL.md)

Nano Banana Pro 2 Image Generation & Editing (OpenRouter)

Generate new images or edit existing ones using Gemini 3.1 Flash Image Preview via OpenRouter.

Usage

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

Generate new image:

uv run {baseDir}/scripts/generate_image.py --prompt "your image description" --filename "output-name.png" [--resolution 0.5K|1K|2K|4K] [--api-key KEY]

Edit existing image:

uv run {baseDir}/scripts/generate_image.py --prompt "editing instructions" --filename "output-name.png" --input-image "path/to/input.png" [--resolution 0.5K|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 {baseDir}/scripts/generate_image.py --prompt "\x3Cdraft 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 {baseDir}/scripts/generate_image.py --prompt "\x3Cfinal prompt>" --filename "yyyy-mm-dd-hh-mm-ss-final.png" --resolution 4K

Resolution Options

Supported resolutions (uppercase K required):

  • 0.5K - ~512px resolution (fast drafts, OpenRouter/Gemini 3.1 Flash exclusive)
  • 1K (default) - ~1024px resolution
  • 2K - ~2048px resolution
  • 4K - ~4096px resolution

Map user requests to API parameters:

  • No mention of resolution → 1K
  • "quick draft", "thumbnail", "0.5K" → 0.5K
  • "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. OPENROUTER_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 "$OPENROUTER_API_KEY" (or pass --api-key)
    • If editing: test -f "path/to/input.png"
  • Common failures:

    • Error: No API key provided. → set OPENROUTER_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
    • Error: API request timed out → simplify the prompt or reduce resolution

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" → 2026-03-19-14-23-05-japanese-garden.png
  • Prompt "sunset over mountains" → 2026-03-19-15-30-12-sunset-mountains.png
  • Prompt "create an image of a robot" → 2026-03-19-16-45-33-robot.png
  • Unclear context → 2026-03-19-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: \x3Csubject>. Style: \x3Cstyle>. Composition: \x3Ccamera/shot>. Lighting: \x3Clighting>. Background: \x3Cbackground>. Color palette: \x3Cpalette>. Avoid: \x3Clist>."
  • Editing template (preserve everything else):

    • "Change ONLY: \x3Csingle 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:

uv run {baseDir}/scripts/generate_image.py --prompt "A serene Japanese garden with cherry blossoms" --filename "2026-03-19-14-23-05-japanese-garden.png" --resolution 4K

Edit existing image:

uv run {baseDir}/scripts/generate_image.py --prompt "make the sky more dramatic with storm clouds" --filename "2026-03-19-14-25-30-dramatic-sky.png" --input-image "original-photo.jpg" --resolution 2K

Quick draft:

uv run {baseDir}/scripts/generate_image.py --prompt "A futuristic cityscape at night" --filename "2026-03-19-16-00-00-draft-city.png" --resolution 0.5K
Usage Guidance
This skill appears to do exactly what it says: send prompts (and optional input images) to OpenRouter's Gemini image model and save the returned PNG locally. Before installing/running: 1) Ensure you trust OpenRouter and understand that images and prompts will be sent to their API (usage may incur cost or be subject to account permissions). 2) Keep your OPENROUTER_API_KEY secret (prefer setting it in the environment rather than pasting it into chat). 3) Make sure you have the 'uv' runner and Python with requests+pillow available. 4) Be aware of two small mismatches: the SKILL.md suggests auto-generating filenames from prompt/context but the script requires an explicit --filename, and the resolution strings ('0.5K','1K','2K','4K') are passed as-is — verify they match the upstream API's expected parameters if you get errors. If you want higher assurance, review OpenRouter request/response behavior (and any account logs) before using sensitive images or private data.
Capability Analysis
Type: OpenClaw Skill Name: nano-banana-v2-openrouter Version: 0.0.1 The skill is a legitimate tool for generating and editing images using the Gemini 3.1 Flash model via the OpenRouter API. The Python script (scripts/generate_image.py) correctly handles API requests, image encoding/decoding, and file I/O without any signs of malicious intent, data exfiltration, or unauthorized execution. The instructions in SKILL.md are well-structured and align perfectly with the script's functionality.
Capability Assessment
Purpose & Capability
Name/description (image generation/editing via OpenRouter) match the requested artifact: a single Python script that posts to openrouter.ai using an OpenRouter API key. The required binary 'uv' is consistent with the documented execution method (uv run). No unrelated services, credentials, or binaries are requested.
Instruction Scope
SKILL.md and the script stay within the stated scope: they only read an optional input image, the provided filename, and the OPENROUTER_API_KEY (or --api-key). The instructions explicitly avoid reading images back into the agent. Minor documentation mismatches: SKILL.md discusses generating filenames from prompt/context, but the script requires an explicit --filename; and resolution strings (e.g., '1K') are passed through as-is — this mapping may or may not match OpenRouter's expected parameter format (functional risk, not a data-exfiltration risk).
Install Mechanism
No install spec; skill is instruction + small script. That reduces disk install risk. The script lists Python dependencies in comments (requests, pillow) but doesn't auto-install them; running it requires a Python environment with those packages. No external arbitrary download URLs or installers are used.
Credentials
Only one credential is required: OPENROUTER_API_KEY (primaryEnv). That is proportional and required for the stated purpose. The script accepts an override via --api-key. It does not reference other environment variables or config paths.
Persistence & Privilege
always is false and the skill does not request persistent/privileged system presence or modify other skills. It only writes output images to the current working directory (as documented).
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install nano-banana-v2-openrouter
  3. After installation, invoke the skill by name or use /nano-banana-v2-openrouter
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v0.0.1
- Initial release of Nano Banana Pro 2 image generation and editing with Gemini 3.1 Flash via OpenRouter. - Supports text-to-image and image-to-image creation with 0.5K, 1K, 2K, and 4K resolutions. - Script-based workflow for both new image generation and editing existing images with descriptive prompts. - API key can be provided via CLI or OPENROUTER_API_KEY environment variable. - Automatic, timestamped filename generation based on prompt content. - Includes preflight checks, common error handling, and prompt templates for both image creation and editing.
Metadata
Slug nano-banana-v2-openrouter
Version 0.0.1
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is nano-banana-v2-openrouter?

Generate/edit images with Gemini 3.1 Flash Image Preview via OpenRouter. Use for image create/modify requests incl. edits. Supports text-to-image + image-to-... It is an AI Agent Skill for Claude Code / OpenClaw, with 104 downloads so far.

How do I install nano-banana-v2-openrouter?

Run "/install nano-banana-v2-openrouter" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is nano-banana-v2-openrouter free?

Yes, nano-banana-v2-openrouter is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does nano-banana-v2-openrouter support?

nano-banana-v2-openrouter is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created nano-banana-v2-openrouter?

It is built and maintained by tclxhai-lv (@tclxhai-lv); the current version is v0.0.1.

💬 Comments