ワンクリックで
nano-banana
Generate or edit images with Nano Banana.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Generate or edit images with Nano Banana.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Generate or edit images with gpt-image-2. Use when the user wants image generation or image editing via Yunwu first, with Right Code as fallback.
Build and serve web pages on the vibe.ylxdzsw.com site. Magic words referring to this skill: vibepage, vibe page, vibe site, vibesite.
Design presentation slides as HTML and export to editable PPTX with pixel-perfect visual fidelity
| name | nano-banana |
| description | Generate or edit images with Nano Banana. |
This skill provides a Bun CLI for image generation and image editing.
The bundled script reads the prompt from stdin, sends a request to gemini-3-pro-image-preview, and writes the raw API JSON response to stdout.
The default backend is Yunwu. Use OpenRouter only if Yunwu failed, and only after asking the user for explicit permission, because the user's OpenRouter budget is limited.
<skill-base>/generate.ts
Text to image:
printf 'A studio product photo of a nano banana dessert on dark stone\n' | bun run <skill-base>/generate.ts > result.json
OpenRouter fallback after Yunwu failed and the user explicitly approved it:
printf 'A studio product photo of a nano banana dessert on dark stone\n' | bun run <skill-base>/generate.ts --backend openrouter > result.json
Image editing with one input image:
printf 'Add a small llama beside the person and keep the lighting natural\n' | bun run <skill-base>/generate.ts --image ./photo.jpg > result.json
Multiple image inputs for style reference or composition:
printf 'Create a poster that blends the colors of the first image with the composition of the second\n' | bun run <skill-base>/generate.ts --image ./style-a.png --image ./style-b.png > result.json
Control output size and aspect ratio:
printf 'A clean modern weather infographic for Shanghai\n' | bun run <skill-base>/generate.ts --resolution 1K --aspect-ratio 16:9 > result.json
--image <path>: add an input image. Repeatable. Maximum 14 images.--backend <name>: yunwu or openrouter. Default is yunwu.--resolution <size>: one of 1K, 2K, 4K. Default is 1K. Use the default unless user hints otherwise.--aspect-ratio <ratio>: one of 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9. Default is 1:1.--help: print usage.Each input image must be 4 MB or smaller. The script returns an error JSON object if any image is too large.
The response is raw JSON. Image bytes are typically returned in:
Yunwu: .candidates[0].content.parts[].inlineData.data
OpenRouter: .choices[0].message.images[].image_url.url
Check whether the call returned an image:
jq '.candidates[0].content.parts | map(select(.inlineData != null)) | length' result.json
Check the returned MIME type:
jq -r '.candidates[0].content.parts[] | select(.inlineData != null) | .inlineData.mimeType' result.json
Extract the first returned image bytes with jq and base64:
jq -r '.candidates[0].content.parts[] | select(.inlineData != null) | .inlineData.data' result.json | base64 -d > output.bin
Check whether the call returned an image:
jq '.choices[0].message.images | length' result.json
Check the returned data URL prefix:
jq -r '.choices[0].message.images[0].image_url.url | split(",")[0]' result.json
Extract the first returned image bytes with jq and base64:
jq -r '.choices[0].message.images[0].image_url.url | split(",")[1]' result.json | base64 -d > output.bin
Inspect any text returned alongside the image:
jq -r '(.candidates[0].content.parts[]? | select(.text != null) | .text), (.choices[0].message.content // empty)' result.json
Inspect errors:
jq '.' result.json
The official Gemini image generation guide recommends describing scenes in natural language instead of listing isolated keywords.
For generation prompts:
For editing prompts:
General best practices from the guide:
Important note when generating images about new / specific things: Include enough context and explain the things to generate to Gemini. The model is not magical and it cannot generate things it does not know about. It does not read your mind or conversation history; You must include all information about the object to generate.
https://yunwu.ai/v1beta.https://openrouter.ai/api/v1/chat/completions.gemini-3-pro-image-preview on Yunwu and google/gemini-3-pro-image-preview on OpenRouter.stdin.stdout so callers can handle everything in one pipeline.