Ad Creative Variants (A/B Batch)

SkillMedia

This skill lets your AI produce batches of ad creative variants for A/B testing. Instead of making one ad at a time, you can ask for several app ad concepts and get creatives with different angles, styles, or image presets, ready to compare.

Available today. Use it from your connected AI after setup.

After adding it, tell your AI how many ad variants you want and which angles or styles to cover. Mentioning your app is enough for it to start generating the batch.

Then ask your AI: use the Ad Creative Variants (A/B Batch) skill

What your AI can do with it

  • Generate multiple app ad creatives in a single batch
  • Create variants with different marketing angles
  • Apply different styles or image presets to each variant
  • Prepare a creative set sized for A/B testing
  • Produce ad creative batches for Meta

What this skill tells your AI

The instructions your AI receives, as published by appeeky/ua-skills in skills/ad-creative-variants/SKILL.md and read by ahel’s review.

Generate 3–5 distinct Meta static creatives from one store listing for structured creative testing. Each variant isolates a different angle (message) and/or visual format (style + preset).

One creative teaches you nothing. A disciplined batch tells you which hook and layout wins before you scale spend.

Initial Assessment

  1. Read app-ads-context.md — target CPA, geo, documented winning/losing formats
  2. Check competitor-ad-teardown output if available — borrow hook patterns, not copy
  3. Confirm monthly budget tier (determines batch size)

Batch Size by Budget

Monthly Meta budgetVariantsMin daily budgetTest duration
< $1.5K3$30–50/day5–7 days
$1.5K–10K5$50–100/day4–5 days
$10K+5–8$100+/day3–4 days

Rule: Each ad needs enough spend to reach decision threshold (~2× target CPA before kill). Smaller budgets → fewer variants.

Variant Matrix (default 5)

#LabelStylePresetAngleHypothesis
AProblemproblem_solutionproblem_solution_splitPain → fixDirect response converts cold traffic
BUGCugcperson_holding_phoneRelatable user momentNative feel lifts CTR
CPremiumprofessionalclean_app_store_mockupTrust + qualityHigher CVR on paid subs
DTransformbefore_afterproblem_solution_splitBefore/after outcomeVisual contrast stops scroll
ESocial prooflifestylecreator_testimonialQuote + outcomeReduces skepticism

Customize angles from app-ads-context.md value proposition and competitor teardown gaps.

3-Variant Minimal Batch

When credits or budget are tight:

#StylePresetAngle
Augcperson_holding_phoneCore pain point
Bproblem_solutionproblem_solution_splitMechanism / how it works
Cprofessionalbranded_showcasePremium / feature-led

Angle Library (fill per app)

Angle typePrompt stemExample
Pain agitation"For [persona] tired of [pain]…""For founders tired of inbox chaos…"
Outcome"Get [result] in [timeframe]""Plan your week in 5 minutes"
Mechanism"The [category] app that [unique how]""The journal that writes back"
Social proof"[N] users / [rating] stars"Only if true on listing
Contrarian"Stop [common bad habit]""Stop using 4 apps for one job"
Seasonal"[Event] is coming — [benefit]"Tie to seasonal-aso campaigns

Workflow

Step 1 — Confirm Inputs

InputRequired
App URL or platform + app_idYes
CountryDefault us
Batch size (3 / 5)Default 5
Quality tierDefault medium
Custom anglesOptional per slot

Step 2 — Analyze Once (1 API credit)

generate_app_ad_creative
  app_url: "https://apps.apple.com/us/app/id123456789"
  mode: "analyze"
  generate_image: false

Present result.keyPoints. User approves or edits. Reuse confirmed keyPoints as MCP key_points on all variant jobs for consistent positioning.

Step 3 — Launch Parallel Jobs

One job per variant. Run in parallel when MCP supports concurrent calls.

# Variant A — Problem
generate_app_ad_creative
  app_url: "https://apps.apple.com/us/app/id123456789"
  mode: "generate"
  style: "problem_solution"
  image_preset: "problem_solution_split"
  angle: "For busy professionals drowning in tasks — one app to plan your day"
  key_points: { ...confirmed }
  quality: "medium"

# Variant B — UGC
generate_app_ad_creative
  app_url: "https://apps.apple.com/us/app/id123456789"
  mode: "generate"
  style: "ugc"
  image_preset: "person_holding_phone"
  angle: "POV: you finally found an app that actually sticks"
  key_points: { ...confirmed }
  quality: "medium"

# ... repeat for C, D, E

REST equivalent: POST /v1/app-ad-creatives/generate per variant → collect jobIds.

Step 4 — Poll All Jobs

get_app_ad_creative_job
  job_id: "<variant-a-job-id>"

Poll every 3–5 seconds per job. Track status in a table while waiting.

Variantjob_idStatus
Aqueued / completed / failed
B
C

If one job fails, retry that variant only — do not restart the full batch.

Step 5 — Present Comparison

Use output template. Highlight differentiated hooks, not just images.

Meta Test Structure

Run all variants in one ad set for fair auction comparison:

Campaign: App Promotion (PAUSED)
└── Ad Set: US - iOS - Creative Test
    ├── Ad: Variant A - Problem
    ├── Ad: Variant B - UGC
    ├── Ad: Variant C - Premium
    ├── Ad: Variant D - Transform
    └── Ad: Variant E - Social proof
SettingValueWhy
BudgetAd set level, equal deliveryCBO optional after winner found
OptimizationPurchase or SubscribeNot installs alone at scale
PlacementsAdvantage+ ONLet Meta find feed vs stories
AudienceBroadCreative is the variable

Do not split variants across ad sets in the first test — you lose comparative signal.

Decision Rules (during test)

ConditionAction
Spend > 2× target CPA, 0 conversionsPause that ad
CPA < target after 15+ conversionsMark winner candidate
CTR < 0.5% after 5K impressionsLikely hook failure — note for teardown
One ad takes > 70% spendMeta favors it — still wait for CPA data
Frequency > 3 on winnerPrepare ad-creative-edit variations

Full audit framework: meta-campaign-audit.

Credit Estimate

Inform user before running:

BatchAnalyzeGenerate (medium)Total creative credits
3 variants1 API3 × 2 = 66 creative
5 variants1 API5 × 2 = 1010 creative
5 variants (high)1 API5 × 5 = 2525 creative

BYOK (X-OpenAI-Key): 1 API credit per job, 0 creative credits.

Output Template

# Ad Creative A/B Batch — [App Name]

**Batch date:** [date]  |  **Country:** [us]  |  **Quality:** medium

## Positioning (shared keyPoints)
- Pain: ...
- Promise: ...
- Audience: ...

## Variant Comparison

| Label | Angle | Style / Preset | Image | Headline | Primary (excerpt) | Chars |
|-------|-------|----------------|-------|----------|-------------------|-------|
| A | Problem | problem_solution / split | [url] | | | |
| B | UGC | ugc / phone | [url] | | | |
| C | Premium | professional / mockup | [url] | | | |
| D | Transform | before_after / split | [url] | | | |
| E | Social proof | lifestyle / testimonial | [url] | | | |

## Differentiation Check
- [ ] No two variants share the same hook line
- [ ] At least 2 different presets used
- [ ] Primary text lengths within Meta limits

## Meta Test Plan
- **Ad set:** 1 ad set, all variants, $[X]/day
- **Kill rule:** Pause at 2× CPA, 0 conversions
- **Scale rule:** +20%/day on winner when CPA < target
- **Review:** 48h → meta-campaign-audit

## Next Steps
1. Publish → ad-creative-to-meta (all variants)
2. Winner iteration → ad-creative-edit (hook tweaks on winner preset)
3. Loser post-mortem → note angles to retire

Variant Naming Convention

Use consistent ad names in Meta for clean audits:

[App] - [Geo] - Var[A-E] - [AngleSlug] - [YYYYMMDD]

Example: FocusApp - US - VarB - UGC - 20250629

Benchmarks (batch-level)

SignalWeak batchHealthy batch
Best ad CTRAll < 0.8%Winner > 1.2%
CPA spreadAll within 10%Clear winner 20%+ better
Spend distributionOne ad 90%+Top ad 40–60%
Time to decision> 7 days4–5 days at $50/day

If entire batch fails, diagnose with failure matrix in meta-campaign-audit — may be store/onboarding, not creative.

Common Mistakes

MistakeConsequenceFix
Same angle, different colorsFalse A/BChange hook and visual format
Different ad sets per variantUneven deliveryOne ad set for test phase
Stopping test at 24hPremature killsWait 48h unless 2× CPA rule hits
8+ variants on $30/dayNo statistical powerReduce variants or raise budget
Skipping shared keyPointsInconsistent positioningOne analyze, shared key_points
Scaling whole batchDilutes budget on losersScale winner only

Pre-Batch Checklist

Planning:
- [ ] app-ads-context.md has target CPA
- [ ] Competitor teardown reviewed (optional)
- [ ] Batch size matches budget tier
- [ ] User approved credit estimate

Generation:
- [ ] Analyze completed, keyPoints confirmed (pass as `key_points`)
- [ ] Each variant has unique angle string
- [ ] All jobs polled to completed
- [ ] Failed variants retried or documented

Meta setup:
- [ ] mmp-setup complete
- [ ] Single ad set test structure
- [ ] Ad names follow convention
- [ ] Campaign starts PAUSED

Related Skills

  • meta-ad-creative — single creative generation
  • ad-creative-edit — winner iterations (A′, B′)
  • ad-creative-to-meta — publish batch to Meta
  • competitor-ad-teardown — angle research input
  • meta-campaign-setup — ad set settings
  • meta-campaign-audit — pick winner after 48h
  • meta-budget-optimizer — scale winner
  • tiktok-creative-strategy — parallel video batch for TikTok

Signals

GitHub stars
55
Forks
5
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
ad-creative-variants
Source
github.com/appeeky/ua-skills