Generate one or more standalone Meta image-ad creatives via Nano Banana 2 / Nano Banana Pro (Gemini Flash Image family) through the Arcads external API. Locks the model family, auto-strips platform chrome, enforces edge-safe layouts. Use when the user asks for a "Nano Banana ad", "Gemini image ad", "nano-banana-2 ad creative", "make a static image ad with Gemini", or anchors on a need for photoreal / lifestyle / multi-reference / handheld-object / clay-texture ad creatives (sticky-note flatlays, held-whiteboard signs, lifestyle portraits, ingredient collages, OOH photography). Does NOT trigger on ChatGPT Image cues — use chatgpt-image-ad for those.
76
96%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Generate one or more standalone Meta ad image creatives via Arcads' POST /v2/images/generate with the Nano Banana model family (default nano-banana-2). Hands the image paths off to your Meta-ad-builder skill — this skill does not upload to Meta itself.
nano-banana-2 (default), nano-banana-pro (Gemini 3 Pro Image, higher cost / locked identity), nano-banana-edit (inpaint-focused), or nano-banana (legacy). Anything else is refused. If the user asks for gpt-image-2, point them at chatgpt-image-ad.NO_CHROME_SUFFIX is always on (override only with --allow-chrome).--no-safe-zone is explicit.--n. nano-banana-pro costs more than nano-banana-2 — surface the per-model rate from logs/arcads-api.jsonl..env containing ARCADS_BASIC_AUTH (preferred) OR ARCADS_API_KEYPRODUCT_ID, PROJECT_ID in .env for session-folder organizationhttps://external-api.arcads.ai (or ARCADS_BASE_URL).ARCADS_BASIC_AUTH; falls back to encoding ARCADS_API_KEY.POST /v2/images/generate; poll GET /v1/assets/{id} until status: generated.POST /v1/file-upload/get-presigned-url returns {presignedUrl, filePath}; PUT bytes to presignedUrl; pass the filePath in referenceImages. Single-use — re-uploaded fresh per variant by the script.| Mode | When to use | Required | Optional |
|---|---|---|---|
image (default) | Brand-new ad image. | --prompt, --aspect-ratio | --image-ref (up to 14) |
image_edit | Modify a --source image. | --prompt, --source | --image-ref (up to 14) |
1:1, 16:9, 9:16. Only these three are accepted by Arcads' /v2/images/generate endpoint (the same endpoint serves gpt-image-2 and Nano Banana — same ratio constraints). Templates in the shared library that use 2:3, 4:5, 3:2, etc. won't render at their native ratio on this backend — fall back to 1:1 and post-crop, or use the KIE nano-banana-image-ad sibling which supports the full Meta ratio set natively via the /jobs/createTask endpoint.
--model)nano-banana-2 (default) — Gemini 2.5 Flash Image. The standard. Use for most templates.nano-banana-pro — Gemini 3 Pro Image. Use for hero stills, character continuity across runs, material-realism critical shots (claymation, Pixar, premium product photography). Costs more credits.nano-banana-edit — inpaint-focused. Use only with --mode image_edit for tight masked edits (swap background, change object color).nano-banana — legacy. Use only if the user explicitly asks; new work should use nano-banana-2.Ask the user which variant they want before the first generation in a session if the value isn't already set in MASTER_CONTEXT.md. Default to nano-banana-2.
.env exists with credentials.arcads-external-api session folder set up.curl -sf -H "$AUTH" "$BASE_URL/v1/products" returns 200.Collect: seed prompt, mode, source (if edit), reference paths (up to 14), variant count, aspect ratio, model variant.
Read shared/skills/image-ad-prompting/prompting/prompt-library.md. If the user's brief matches a template, check the Model notes block — only proceed if nano-banana is marked clean, preferred, or strong. If gpt-image-2 is preferred, suggest switching skills.
Fill {placeholders} and show the user the rewritten prompt. Ask for approval before generating.
For fresh prompts (no template match), follow the structure in shared/skills/nano-banana-image-ad/prompting/guide.md § Phase 3b — lean on Nano Banana strengths (named reference roles, lighting specifics, material specifics).
Present the estimated credit cost (read from logs/arcads-api.jsonl for matching past calls). Surface the model variant prominently: nano-banana-pro costs more than nano-banana-2. Wait for explicit confirmation.
~/.claude/skills/nano-banana-image-ad/scripts/generate_image.py \
--prompt "<rewritten>" \
--aspect-ratio <ratio> \
--n <N> \
--image-ref <product.png> \
[--image-ref <character.png>] \
[--image-ref <style.png>] \
--out ./generated \
--env-file .env
# For higher-stakes hero shots:
~/.claude/skills/nano-banana-image-ad/scripts/generate_image.py \
--model nano-banana-pro \
--prompt "<rewritten>" \
--aspect-ratio <ratio> \
--n <N> \
--image-ref <product.png> \
--out ./generated \
--env-file .env
# For an edit run (inpaint):
~/.claude/skills/nano-banana-image-ad/scripts/generate_image.py \
--mode image_edit \
--model nano-banana-edit \
--prompt "<edit-instruction>" \
--source <existing.png> \
[--image-ref <guidance.png>] \
--n <N> \
--out ./generated \
--env-file .envEach line on stdout is one JSON variant (variant, path, asset_id, width, height, prompt, mode, aspect_ratio, model).
Log each call to logs/arcads-api.jsonl with the model variant, ref count, and returned asset_ids.
For each completed variant, read the image and inspect for:
--image-ref to mitigate)nano-banana-pro to lock identity if it matters)If defects: regenerate with a revised prompt that explicitly corrects the issue (see shared/skills/nano-banana-image-ad/prompting/guide.md § Retry mode). Cap at 2 retries per variant.
Show all paths to the user. Ask "Use all / use these specific ones / regenerate / cancel."
Selected variants are ready for your Meta-ad-builder skill. Print the paths.
Optionally, write the selected paths to ./generated/run-<ts>.jsonl for downstream consumption.
chatgpt-image-ad.image-ad-clone (asks which backend at Phase 1)..env.aspectRatio is in supported set; check --n ≤ 5.asset_id.~/.claude/skills/nano-banana-image-ad/SKILL.md — this file~/.claude/skills/nano-banana-image-ad/scripts/generate_image.py — Arcads Nano Banana caller1263501
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.