One winning ad into 20 variants
Since Meta's Andromeda update, ads that look alike are grouped and compete as one ("Entity ID" in agency talk): a new caption, colour or music track is not a new creative. Sellers now test 20–40 creatives a week at about $20/day each and refresh every 2–3 weeks (theoptimizer, segwise). The "suppressed above 60% similarity" thresholds are repeated by agencies but not published by Meta.
1. Tag the winner
video_analyze on the winner (about 5 credits; prompt in varg-ad-library-remix) → hook, angle, format, emotional driver, persona, proof, CTA. You scale the mechanism behind the ad, not the file.
2. Plan two layers (20 in total)
Layer A, ~7 new concepts. Each must pass the three-question check (two "no" answers = the same Entity): Is the message different? Is the visual execution different, not just the text? Is the format different? Moves: same script with a new persona (female → male → couple → parent), same structure with a new script, same concept in a new format (UGC → unboxing → demo → mascot song → problem/solution), same script with new b-roll.
Layer B, ~13 iterations, one variable each. Mostly new hooks (3–5 per concept, ≤3 s), then new CTAs or offers. If two fields change between variants, the plan is wrong (Pixis).
Write the plan as JSON before generating; name every file {angle}_{offer}_{product}_{format}_{hook}_v{n}, e.g. safety_fullprice_gloves_tutorial_povmandoline_v1, with a closed list of 8–10 angles.
3. Make the new parts on varg
- New openers: a 3–6 s clip per hook (
varg-product-hook archetypes, varg-unboxing-video) plus its spoken line on eleven_v4 in the same voice as the winner (1 credit per line).
- New concepts: the skill that makes the format (
ai-ugc-ad-video, varg-mascot-jingle-ad, varg-dropship-reel …).
- Price the batch first:
POST /v2/estimate / estimate_cost.
4. Swap hooks onto the winner
Keep a clean master of the winner without burned captions. Find the cut: the first word of the body in its word timings (Whisper, or hook from varg-dropship-reel's guide-edl.mjs). Then:
node scripts/hook-swap.mjs --body master_clean.mp4 --cut 7.34 --out variants/ \
clips/mandoline.mp4+lines/pov-mandoline.mp3 \
clips/knife.mp4+lines/knife-test.mp3
Each hook is a clip, or clip+line.mp3 to lay a new spoken line over it (the hook lasts as long as the line + 0.3 s). Every part is normalised to 1080×1920 / 30 fps / 48 kHz before the join, with a 20 ms fade at the cut (no click), and variants/manifest.json records hook, line, cut and lengths. Then re-caption each variant: transcribe it, captions.mjs, burn with ffmpeg (libass).
5. Export the test plan
ABO, one creative per ad set, broad targeting, $20–50/day per ad set; kill under 1% CTR or at $10–30 spent without a result; judge after 7–14 days and 1,000+ impressions; move winners to CBO/Advantage+; refresh every 2 weeks. On TikTok, post hook variants as separate ads, not as duplicates of one post (duplicates get buried).
Tested
2026-10-28 on the cut-resistant gloves reel (59 s). Two new spoken hooks on eleven_v4 (1 credit each) over the reel's own clips, swapped in with hook-swap.mjs in seconds, then re-captioned:
Both cut cleanly into "They can be purchased for…" with no click or jump. These are Layer B iterations; Layer A concepts need new footage.
Related skills
ad-creative-testing (why an ad won, the test plan), varg-ad-library-remix (new angles from competitors), varg-product-hook and varg-unboxing-video (new openers), varg-dropship-reel (captions.mjs, guide-edl.mjs), ai-ad-compliance-check.