nano-banana-v2-openrouter

v0.0.1

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-...

0· 105·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for tclxhai-lv/nano-banana-v2-openrouter.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "nano-banana-v2-openrouter" (tclxhai-lv/nano-banana-v2-openrouter) from ClawHub.
Skill page: https://clawhub.ai/tclxhai-lv/nano-banana-v2-openrouter
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Required env vars: OPENROUTER_API_KEY
Required binaries: uv
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install nano-banana-v2-openrouter

ClawHub CLI

Package manager switcher

npx clawhub@latest install nano-banana-v2-openrouter
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
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).
Assessment
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.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

🎨 Clawdis
Binsuv
EnvOPENROUTER_API_KEY
Primary envOPENROUTER_API_KEY
latestvk97c4w8yqb05twcbycq4v3hcjn83yp6z
105downloads
0stars
1versions
Updated 4w ago
v0.0.1
MIT-0

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 "<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 {baseDir}/scripts/generate_image.py --prompt "<final 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: <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:

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

Comments

Loading comments...