You've got one approved hero image and need 30 variants for Meta, TikTok, and Google ads by tomorrow. This skill runs parallel batch jobs across visual direction, composition, and aspect ratio axes, then spits out deterministically named files ready for direct CSV import into your ads manager. Built by Picsart, it defaults to recraftv4 for brand consistency but lets you draft cheap with gemini-flash then upgrade winners to flux-2-pro. The smart move is explicitly defining your variant matrix up front (5 visuals × 3 ratios, not 8 random axes) so your A/B results stay readable. Concurrency of 6 to 8 gets 30 variants done in under two minutes.
npx -y skills add PicsArt/gen-ai-skills --skill marketer-ad-variant-factory --agent claude-codeInstalls into .claude/skills of the current project.
Take one approved concept and explode it into 10-30 shippable ad variants for A/B testing on Meta, Google, TikTok, and Pinterest. Built for speed (parallel batch) and for direct upload to ad accounts (deterministic naming).
gen-ai generate) or for cross-channel creative (use marketer-campaign-kit). This skill is for depth on one concept, not breadth across channels.Ask up front if the brief doesn't cover it (combine into one message):
{campaign}_{axis}_{variant}_{size}.webp)?If the user just says "a lot", default to 5 visuals × 3 ratios = 15 variants.
id that maps to your ad-platform naming convention. The image field references the hero.gen-ai batch run variants.json --dry-run
gen-ai batch run variants.json -c 8 -o ./ad-variants
results.json for non-completed jobs, retry.
gen-ai batch resume ./ad-variants
results.json has every path + URL for direct CSV import to Meta Ads Manager / TikTok Ads / Google Ads.Naming convention {campaign}_{visual}_{composition}_{size} keeps downstream uploads clean.
{
"defaults": {
"model": "recraftv4",
"negativePrompt": "low quality, watermark, busy background",
"imageUrls": ["https://cdn-pipeline-output.picsart.com/.../hero.webp"]
},
"jobs": [
{ "id": "launch_bright_closeup_9x16", "prompt": "bright daylight variant, close-up focal, warm tones", "aspectRatio": "9:16" },
{ "id": "launch_bright_closeup_1x1", "prompt": "bright daylight variant, close-up focal, warm tones", "aspectRatio": "1:1" },
{ "id": "launch_bright_closeup_16x9", "prompt": "bright daylight variant, close-up focal, warm tones", "aspectRatio": "16:9" },
{ "id": "launch_studio_wide_9x16", "prompt": "studio lighting, wide shot, neutral backdrop", "aspectRatio": "9:16" },
{ "id": "launch_studio_wide_1x1", "prompt": "studio lighting, wide shot, neutral backdrop", "aspectRatio": "1:1" },
{ "id": "launch_studio_wide_16x9", "prompt": "studio lighting, wide shot, neutral backdrop", "aspectRatio": "16:9" },
{ "id": "launch_urban_medium_9x16", "prompt": "urban street setting, medium shot, cinematic", "aspectRatio": "9:16" },
{ "id": "launch_urban_medium_1x1", "prompt": "urban street setting, medium shot, cinematic", "aspectRatio": "1:1" },
{ "id": "launch_urban_medium_16x9", "prompt": "urban street setting, medium shot, cinematic", "aspectRatio": "16:9" }
]
}
9 variants from 3 visual × 3 ratios. Scale to 15 or 30 by adding visual rows. Remember: no count field — emit one job per variant.
| Sub-task | Model | Why |
|---|---|---|
| Brand-consistent variants from a hero (default) | recraftv4 | Strongest at keeping design language consistent across many renders |
| Photoreal product / lifestyle variants | flux-2-pro | Best photoreal adherence, great for Meta/TikTok product ads |
| Variants with readable headline text baked in | ideogram-v3 | Only model that reliably renders legible copy — use when you can't overlay |
| Face/character continuity across variants | gemini-3-pro-image | Nano Banana Pro locks subject identity best |
| Background swaps on a fixed subject | gen-ai change-bg (subcommand) | Keeps the subject pixel-identical, only swaps the scene |
| Ultra-cheap exploration before the flagship run | gemini-3.1-flash-image | ~5x cheaper, fast — use to pick winning prompts, then regenerate with flux/recraft |
Confirm IDs with gen-ai models --mode image.
image field in defaults — every variant inherits the brand look.{campaign}_{visual}_{composition}_{size} parses cleanly in Meta/TikTok/Google ads CSV templates.gemini-3.1-flash-image for ~$1. Pick top 8. Regenerate those 8 through flux-2-pro or recraftv4 for the final upload.id per variant means unique output filename — resume is safe and collision-free.image in defaults, each variant drifts visually — the bundle doesn't feel like one campaign../variants-$(date +%F-%H%M)) so resume + audit work cleanly.Run gen-ai whoami to confirm authentication, then re-run the failed command with --debug.
| Variant count | Model | Credits each | Total | Wall time @ concurrency 8 |
|---|---|---|---|---|
| 9 variants | recraftv4 | ~2 | ~18 | ~45s |
| 15 variants | recraftv4 | ~2 | ~30 | ~90s |
| 30 variants (exploration) | gemini-3.1-flash-image | ~0.5 | ~15 | ~2 min |
| 30 variants (flagship) | flux-2-pro | ~2 | ~60 | ~3 min |
| 30 drafts + 8 upgraded | mixed | ~30 | ~4 min total |
Always confirm with gen-ai batch run variants.json --dry-run and pause if the estimate exceeds the user's cap.
gen-ai-use/SKILL.md — full CLI reference (flags, model catalog, auth)gen-ai-batch/SKILL.md — manifest shape, concurrency tuning, resumegen-ai-workflows/SKILL.md — general multi-step patternsworkflows/marketer-campaign-kit/SKILL.md — chain before this to establish the hero + brand lookworkflows/marketer-localize-campaign/SKILL.md — chain after this to fan winning variants across marketssickn33/antigravity-awesome-skills
moizibnyousaf/ai-agent-skills
github/awesome-copilot