CtrlK
BlogDocsLog inGet started
Tessl Logo

nano-banana

Generate or edit images via Nano Banana image models. Triggers on "generate image", "image generation", "nano banana", "edit image", "nano banana pro", "nano banana 2"

73

Quality

92%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

Nano Banana — Image Generation

Image generation script supporting three models. Requires sharp for input image compression (auto-installed on first run).

Models

FlagNotes
--model nano-bananaDefault. Fast, good quality.
--model nano-banana-proHighest quality, slower.
--model nano-banana-2Legacy model.

Generate an image

node {baseDir}/scripts/generate-image.js --prompt "a cat sitting on mars" --filename "cat-on-mars.png"

Edit a single image

node {baseDir}/scripts/generate-image.js \
  --prompt "make the sky purple" \
  --filename "edited.png" \
  -i "/path/to/input.png" \
  --model nano-banana-pro

Multi-image composition (up to 14 images)

node {baseDir}/scripts/generate-image.js \
  --prompt "combine these into a collage" \
  --filename "collage.png" \
  -i img1.png -i img2.png -i img3.png

Options

FlagShortDefaultDescription
--prompt-prequiredImage description or editing instruction
--filename-frequiredOutput filename
--input-image-iInput image(s), repeatable, max 14
--modelnano-banananano-banana, nano-banana-pro, or nano-banana-2
--resolution-r1K1K, 2K, or 4K
--aspect-ratioe.g. 1:1, 16:9, 4:3, 3:4, 9:16

API key

The API key is pre-configured on this machine. No flags or environment variables needed.

Input image handling

All input images are sent as inline base64. Images over 500 KB are automatically compressed to JPEG and resized to fit under the limit. This keeps requests fast and avoids File API auth issues with the enterprise endpoint.

Output

Relative filenames are saved to $OPENCLAW_STATE_DIR/media/outbound/{slugid}/nano-banana/{filename}. Absolute paths are used as-is. Absolute paths are used as-is. Use timestamps in filenames to avoid overwrites: cat-on-mars-20260304-165000.png.

Sending images to the user

The script prints a MEDIA: <absolute-path> line on stdout. You MUST include this exact MEDIA: line in your reply text so the image is delivered as an attachment in Discord/Slack/chat.

Example reply:

Here's your image!
MEDIA: /Users/alche/.openclaw/media/outbound/my-bot/nano-banana/cat-on-mars.png

Rules:

  • Copy the MEDIA: line from the script output into your reply verbatim — this is how images get sent
  • Do NOT read the generated image back with the read tool
  • Do NOT try to base64 encode or manually attach the image
  • The MEDIA: line must be on its own line in your response
Repository
nexu-io/nexu
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.