a set09 / 14
Ad variations
A matrix against a fixed base, changing exactly one axis per round.
apipod-ad-variationsSKILL.md on GitHub
When to use it, and when not to
when to use it
- The user wants options to test rather than one final image.
- One asset needs versions for different channels — feed 4:5, story 9:16, banner 16:9.
- The base is approved and the question is which hook or angle wins.
not for
- apipod-generate-image — There is no base yet — the first image has to exist and be approved.
- apipod-ugc-ad — The ad needs a person holding the product, not a still-life variant.
procedure
6 skillsWhat the skill does, in order.
- 01
Do not start from an unrendered prompt
The base is one approved image plus one written angle. Generate the base first if it does not exist — a variant matrix over an unapproved base multiplies the wrong thing.
- 02
Write the base spec in one sentence
Subject, surface, light, colour grading, framing, and any on-image text quoted verbatim. This sentence goes into every cell unchanged.
- 03
Settle one axis
Angle (front / three-quarter / top-down), hook (the line of copy or none), crop (4:5, 9:16, 16:9), or context (studio / lifestyle / season). Exactly one per matrix.
- 04
Say the cell count out loud
Three variants × two crops is six paid generations. estimate_cost per cell, show the total, then proceed.
- 05
Vary only that axis
Everything from the base spec stays; the approved base goes in image_urls. Changing angle and hook and crop together produces images that cannot be compared — which defeats the point of a matrix.
- 06
Grid the results and report the cost of testing
One row per variant, one column per channel, each cell labelled with its axis value. Report total and per-variant cost, then say which looks strongest for the stated channel and why — in one sentence.
try it
Send it from here
example request
Use APIPod to make three variants of this approved packshot — front, three-quarter, top-down — for a feed test. Only the camera angle changes.
The buttons open a new chat with this prompt prefilled. If APIPod is not connected yet, the prompt tells your assistant to stop and help you connect first. In Claude Code or a terminal, copy the prompt instead.
Not set up yet? Wiring guides for Claude, ChatGPT, Codex and more →
call trace
estimate_cost (3 cells)
→ $— · total stated up front
generate_image (cell 2 · top-down ← image_urls[base])
→ base spec unchanged, one axis moved
check_job (per cell)
→ 3 · completed · compared like for like
Illustrative: the tools this skill runs, in order, for the request on the left. Prices appear the way estimate_cost returns them live — this page itself quotes nothing.
what it will not do
The rules it holds itself to.
01
Do not silently fill a slot with a different model when one fails. Report the failure and its refund.
02
If you cannot see the images, say that instead of picking a winner.
03
Three to six cells is a matrix. Twenty is an invoice nobody approved.