{"id":"b0701e47-42cb-4cd8-b0fc-5fe3eb87417d","shortId":"4CSb2Z","kind":"skill","title":"Nano Banana Pro Openrouter","tagline":"Awesome Copilot skill by Github","description":"# Nano Banana Pro OpenRouter\n\n## Overview\n\nGenerate or edit images with OpenRouter using the `google/gemini-3-pro-image-preview` model. Support prompt-only generation, single-image edits, and multi-image composition.\n\n### Prompt-only generation\n\n```\nuv run {baseDir}/scripts/generate_image.py \\\n  --prompt \"A cinematic sunset over snow-capped mountains\" \\\n  --filename sunset.png\n```\n\n### Edit a single image\n\n```\nuv run {baseDir}/scripts/generate_image.py \\\n  --prompt \"Replace the sky with a dramatic aurora\" \\\n  --input-image input.jpg \\\n  --filename aurora.png\n```\n\n### Compose multiple images\n\n```\nuv run {baseDir}/scripts/generate_image.py \\\n  --prompt \"Combine the subjects into a single studio portrait\" \\\n  --input-image face1.jpg \\\n  --input-image face2.jpg \\\n  --filename composite.png\n```\n\n## Resolution\n\n- Use `--resolution` with `1K`, `2K`, or `4K`.\n- Default is `1K` if not specified.\n\n## System prompt customization\n\nThe skill reads an optional system prompt from `assets/SYSTEM_TEMPLATE`. This allows you to customize the image generation behavior without modifying code.\n\n## Behavior and constraints\n\n- Accept up to 3 input images via repeated `--input-image`.\n- `--filename` accepts relative paths (saves to current directory) or absolute paths.\n- If multiple images are returned, append `-1`, `-2`, etc. to the filename.\n- Print `MEDIA: <path>` for each saved image. Do not read images back into the response.\n\n## Troubleshooting\n\nIf the script exits non-zero, check stderr against these common blockers:\n\n| Symptom | Resolution |\n|---------|------------|\n| `OPENROUTER_API_KEY is not set` | Ask the user to set it. PowerShell: `$env:OPENROUTER_API_KEY = \"sk-or-...\"` / bash: `export OPENROUTER_API_KEY=\"sk-or-...\"` |\n| `uv: command not found` or not recognized | macOS/Linux: <code>curl -LsSf https://astral.sh/uv/install.sh &#124; sh</code>. Windows: <code>powershell -ExecutionPolicy ByPass -c \"irm https://astral.sh/uv/install.ps1 &#124; iex\"</code>. Then restart the terminal. |\n| `AuthenticationError` / HTTP 401 | Key is invalid or has no credits. Verify at <https://openrouter.ai/settings/keys>. |\n\nFor transient errors (HTTP 429, network timeouts), retry once after 30 seconds. Do not retry the same error more than twice — surface the issue to the user instead.","tags":["nano","banana","pro","openrouter","awesome","copilot","github"],"capabilities":["skill","source-github","category-awesome-copilot"],"categories":["awesome-copilot"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/github/awesome-copilot/nano-banana-pro-openrouter","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"install_from":"skills.sh"}},"qualityScore":"0.300","qualityRationale":"deterministic score 0.30 from registry signals: · indexed on skills.sh · published under github/awesome-copilot","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T17:40:17.542Z","embedding":null,"createdAt":"2026-04-18T20:25:31.173Z","updatedAt":"2026-04-22T17:40:17.542Z","lastSeenAt":"2026-04-22T17:40:17.542Z","tsv":"'-1':175 '-2':176 '/scripts/generate_image.py':46,65,86 '/settings/keys':281 '/uv/install.ps1':261 '/uv/install.sh':251 '1k':110,116 '2k':111 '3':150 '30':292 '401':269 '429':286 '4k':113 'absolut':167 'accept':147,159 'allow':133 'api':212,226,234 'append':174 'ask':217 'assets/system_template':131 'astral.sh':250,260 'astral.sh/uv/install.ps1':259 'astral.sh/uv/install.sh':249 'aurora':73 'aurora.png':79 'authenticationerror':267 'awesom':5 'back':191 'banana':2,11 'basedir':45,64,85 'bash':231 'behavior':140,144 'blocker':208 'bypass':256 'c':257 'cap':54 'category-awesome-copilot' 'check':203 'cinemat':49 'code':143 'combin':88 'command':240 'common':207 'compos':80 'composit':38 'composite.png':105 'constraint':146 'copilot':6 'credit':276 'curl':247 'current':164 'custom':122,136 'default':114 'directori':165 'dramat':72 'edit':17,33,58 'env':224 'error':284,299 'etc':177 'executionpolici':255 'exit':199 'export':232 'face1.jpg':99 'face2.jpg':103 'filenam':56,78,104,158,180 'found':242 'generat':15,29,42,139 'github':9 'google/gemini-3-pro-image-preview':23 'http':268,285 'iex':262 'imag':18,32,37,61,76,82,98,102,138,152,157,171,186,190 'input':75,97,101,151,156 'input-imag':74,96,100,155 'input.jpg':77 'instead':309 'invalid':272 'irm':258 'issu':305 'key':213,227,235,270 'lssf':248 'macos/linux':246 'media':182 'model':24 'modifi':142 'mountain':55 'multi':36 'multi-imag':35 'multipl':81,170 'nano':1,10 'network':287 'non':201 'non-zero':200 'openrout':4,13,20,211,225,233 'openrouter.ai':280 'openrouter.ai/settings/keys':279 'option':127 'overview':14 'path':161,168 'portrait':95 'powershel':223,254 'print':181 'pro':3,12 'prompt':27,40,47,66,87,121,129 'prompt-on':26,39 'read':125,189 'recogn':245 'relat':160 'repeat':154 'replac':67 'resolut':106,108,210 'respons':194 'restart':264 'retri':289,296 'return':173 'run':44,63,84 'save':162,185 'script':198 'second':293 'set':216,221 'sh':252 'singl':31,60,93 'single-imag':30 'sk':229,237 'sk-or':228,236 'skill':7,124 'sky':69 'snow':53 'snow-cap':52 'source-github' 'specifi':119 'stderr':204 'studio':94 'subject':90 'sunset':50 'sunset.png':57 'support':25 'surfac':303 'symptom':209 'system':120,128 'termin':266 'timeout':288 'transient':283 'troubleshoot':195 'twice':302 'use':21,107 'user':219,308 'uv':43,62,83,239 'verifi':277 'via':153 'window':253 'without':141 'zero':202","prices":[{"id":"8881a396-e493-4cf2-9241-5d4cd02b222b","listingId":"b0701e47-42cb-4cd8-b0fc-5fe3eb87417d","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"github","category":"awesome-copilot","install_from":"skills.sh"},"createdAt":"2026-04-18T20:25:31.173Z"}],"sources":[{"listingId":"b0701e47-42cb-4cd8-b0fc-5fe3eb87417d","source":"github","sourceId":"github/awesome-copilot/nano-banana-pro-openrouter","sourceUrl":"https://github.com/github/awesome-copilot/tree/main/skills/nano-banana-pro-openrouter","isPrimary":false,"firstSeenAt":"2026-04-18T21:50:19.873Z","lastSeenAt":"2026-04-22T12:52:18.461Z"},{"listingId":"b0701e47-42cb-4cd8-b0fc-5fe3eb87417d","source":"skills_sh","sourceId":"github/awesome-copilot/nano-banana-pro-openrouter","sourceUrl":"https://skills.sh/github/awesome-copilot/nano-banana-pro-openrouter","isPrimary":true,"firstSeenAt":"2026-04-18T20:25:31.173Z","lastSeenAt":"2026-04-22T17:40:17.542Z"}],"details":{"listingId":"b0701e47-42cb-4cd8-b0fc-5fe3eb87417d","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"github","slug":"nano-banana-pro-openrouter","source":"skills_sh","category":"awesome-copilot","skills_sh_url":"https://skills.sh/github/awesome-copilot/nano-banana-pro-openrouter"},"updatedAt":"2026-04-22T17:40:17.542Z"}}