minhnv0807/05-ad-copy-global
6 ad copy variations (2 TOFU + 2 MOFU + 2 BOFU) for global markets. Frameworks: AIDA, PAS, BAB. Platforms: Meta, Google, TikTok. INCLUDES Dropshipping Mode (4 templates) for Shopify dropshippers. Trigger: 'ad copy', 'Facebook ads', 'TikTok ads', 'Google Ads copy', 'dropshipping ads', 'Shopify ads'.
npx skills add https://github.com/minhnv0807/ai-business-skills --skill 05-ad-copy-global
Before writing ad copy, read context file (if exists):
.agents/product-marketing-context.md (product marketing).agents/personal-brand-context.md (personal brand)Decide mode:
product-marketing-context.md exists -> MODE A (default — 6 TOFU/MOFU/BOFU variations)personal-brand-context.md exists -> MODE B (Personal Brand Mode)Ask up to 4 questions before writing:
On Meta Ads, only the first 125 characters show before "See more" button. Line 1 of primary text must:
GOOD: "Tired of acne for 3+ years? A 28-day routine — guaranteed clear skin or refund." (76 chars)
BAD: "Hello there, thank you for your interest in our services. Today I want to share..." (cut mid-sentence)
| # | Trigger | Description | Example |
|---|---------|-------------|---------|
| 1 | Pain | Hit current problem — create empathy | "Tired of breakouts? You're not alone..." |
| 2 | Aspiration | Paint a better future image | "Imagine clear, confident skin without filters" |
| 3 | FOMO | Fear of missing out, scarcity | "Only 12 slots left this month — 89 people booked" |
| 4 | Social Proof | Others did and succeeded | "1,200 customers tried — 4.8/5 stars" |
| 5 | Authority | Experts, certifications, experience | "10 years experience — board-certified dermatologist consults directly" |
| 6 | Curiosity | Spark questions, want to know more | "There's 1 thing 90% of skincare users get wrong — do you know?" |
Trigger rules by funnel:
| Temperature | Priority frameworks | Why |
|-------------|---------------------|-----|
| Cold (unaware) | AIDA, Star·Story·Solution | Logic from scratch; storytelling without ad-feel |
| Warm (engaged, no purchase) | PAS, 4P | Re-trigger pain; build trust with proof |
| Hot (high intent, near purchase) | FAB, BAB | Hammer specific benefits; visual transformation |
| Retarget (viewed, no purchase) | PAS or BAB | Reinforce consequences or transformation |
| Framework | Structure | When to use | Best platforms |
|-----------|-----------|-------------|----------------|
| AIDA | Attention -> Interest -> Desire -> Action | Cold audience, new product launch | Meta feed, TikTok, YouTube pre-roll |
| PAS | Problem -> Agitate -> Solution | Warm audience, clear pain (spa, health, edu) | Meta feed, LinkedIn, Google RSA |
| BAB | Before -> After -> Bridge | Transformation offer (spa, fitness, edu) | Meta Reels/Stories, TikTok |
| 4P | Promise -> Picture -> Proof -> Push | High-ticket, requires trust (real estate, courses, B2B) | LinkedIn, Google, long Meta feed |
| FAB | Features -> Advantages -> Benefits | High-intent, comparison stage | Google RSA, Meta retarget |
| Star·Story·Solution | Star -> Story -> Solution | Brand storytelling, UGC-style, no ad-feel | TikTok, Reels, YouTube Shorts |
> Common mistake: Writing freeform (intro -> features -> CTA) instead of using a framework. Result: bland copy, low CTR. Each of the 6 variations should use a different framework.
> Meta 2026: Andromeda system clusters ads with Creative Similarity Score > 60% — auto-reduces delivery. 100 minor variations (color swap, clip cut, font change) is NOT better than 10 truly distinct creatives.
Safety thresholds:
| Similarity Score | Status | Action |
|------------------|--------|--------|
| < 40% | Safe | Continue |
| 40-60% | Warning | Re-check — may cluster |
| > 60% | Danger | Andromeda clusters -> auto delivery cut |
5 dimensions of diversity:
First 125 chars = ad hook. Each variation should use a different hook type:
| # | Hook type | Formula | Example |
|---|-----------|---------|---------|
| 1 | Number | Specific, surprising stat | "1,247 customers tried — 98% returned for round 2" |
| 2 | Counterintuitive | Flip common belief | "Running MORE ads won't get you more customers" |
| 3 | Before/After | Specific transformation | "From 5 orders/week to 40 orders/week — in 60 days" |
| 4 | Borrowed authority | Name expert/cert/brand | "Top dermatologist with 15 years experience recommends — surprising reason" |
| 5 | Confession | Share real mistake/lesson | "I burned $200K on bad ads — here's what I do now" |
| 6 | Urgency | Time/quantity limit | "8 slots left this June — 34 people waiting" |
Hook selection by funnel:
Hook check:
Score on 5 criteria, 1-10 each. Only deliver if >= 35/50.
| Criterion | 8-10 points | 5-7 points | 1-4 points |
|-----------|-------------|------------|------------|
| Hook strength | Strong curiosity, specific number/detail, funnel-fit | Acceptable but unimpressive | Generic, no anchor |
| Emotional trigger | Clear trigger (Pain/FOMO/Social proof), felt | Has trigger but mild | No trigger, no feeling |
| CTA clarity | Specific, clear action, single step | CTA exists but unclear | Vague ("Learn more", "Click here") |
| Compliance | 0 policy violations | 1 mild warning | Clear violation = rejected |
| Platform fit | Char limit correct, voice matches platform | Close enough | Wrong limit or wrong voice |
| Total | Rating | Action |
|-------|--------|--------|
| 45-50 | Excellent | Ship now, monitor performance |
| 35-44 | Good | Ship with improvement notes |
| 25-34 | Average | Revise before shipping |
| < 25 | Weak | Rewrite from scratch |
> Add this line to every output: Copy Score: [X]/50 — [Rating]
| Rule | Meta Ads | TikTok Ads | Google Ads |
|------|----------|------------|------------|
| Primary text length | 125 char line 1 + 300-500 full | 80-100 char (text overlay) | No primary text |
| Headline | Max 40 char | None | Max 30 char x 3 |
| Description | Max 30 char | None | Max 90 char x 2 |
| Voice | Professional but friendly | Young, natural, conversational | Direct, keyword-driven |
| CTA button | Pick from Meta list | No button — CTA in text | No button — CTA in headline |
| Image / Video | 1:1 (feed), 9:16 (story/reel) | 9:16 mandatory | N/A (search) |
Specific > vague. Clear action > ambiguous.
| Strength | CTA | When to use |
|----------|-----|-------------|
| Strongest | "Message us to book a slot" | Messages goal, BOFU |
| Strong | "Book free consultation" | Lead form, MOFU/BOFU |
| Medium | "See pricing details" | Traffic, MOFU |
| Light | "Learn more" | Awareness, TOFU |
Avoid: Generic CTAs without action ("Click here", "Contact now").
| Rule | Detail | Violation = ad rejected |
|------|--------|------------------------|
| No absolute claims | Avoid "guaranteed", "100%", "definitely" | Yes |
| No "free" in headline | Meta flags "free" in headline — use in body instead | Yes |
| No excessive "promo" | Once in body — no repeat | Yes |
| No personal attributes | Avoid "Are you fat?", "Do you have acne?" — use "Many people experience..." | Yes |
| Realistic before/after | No heavy retouching of before/after photos | Yes |
| No sensitive imagery | No close-up acne, wounds, body parts | Yes |
| Mandatory disclaimer | Supplements, medical — disclaimer required | Yes |
# Ad Copy: [Product/Campaign Name]
Date: [YYYY-MM-DD]
Platform: [Meta Ads / TikTok Ads / Google Ads]
Goal: [Messages / Lead / Traffic / Conversion]
Audience: [Brief description]
Main USP: [1 sentence]
| Component | Content |
|-----------|---------|
| Trigger | [Pain / Curiosity / Aspiration] |
| Primary text (125 char) | [Line 1 — shown before "See more"] |
| Primary text (full) | [Full content — 300-500 char] |
| Headline | [Max 40 char] |
| Description | [Max 30 char] |
| CTA button | [Learn More / Send Message] |
| Creative note | [Image/video brief] |
_(Same structure, different angle and trigger)_
| Component | Content |
|-----------|---------|
| Trigger | [Social Proof / Authority] |
| Primary text (125 char) | [Line 1] |
| Primary text (full) | [Full content — emphasize proof, reviews, numbers] |
| Headline | [Max 40 char] |
| Description | [Max 30 char] |
| CTA button | [Send Message / Book Now] |
| Creative note | [Use review/before-after creative] |
_(Same structure, different angle)_
| Component | Content |
|-----------|---------|
| Trigger | [FOMO / Social Proof] |
| Primary text (125 char) | [Line 1 — emphasize urgency, scarcity] |
| Primary text (full) | [Full content — deadline, quantity, specific offer] |
| Headline | [Max 40 char] |
| Description | [Max 30 char] |
| CTA button | [Book Now / Send Message / Buy Now] |
| Creative note | [Numbers, countdown] |
For users who messaged but didn't book / viewed but didn't purchase.
| Component | Content |
|-----------|---------|
| Trigger | [Pain + FOMO] |
| Primary text (125 char) | [Reminder — "Last week you asked about..."] |
| Primary text (full) | [Re-trigger pain, add new proof, limited offer] |
| Headline | [Max 40 char] |
| Description | [Max 30 char] |
| CTA button | [Send Message / Book Now] |
| Creative note | [Different from first ad — avoid ad fatigue] |
| # | Funnel | Angle | Trigger | Hook (125 char) | CTA |
|---|--------|-------|---------|-----------------|-----|
| 1 | TOFU | [Angle 1] | [Trigger] | [125 char] | [CTA] |
| 2 | TOFU | [Angle 2] | [Trigger] | [125 char] | [CTA] |
| 3 | MOFU | [Angle 3] | [Trigger] | [125 char] | [CTA] |
| 4 | MOFU | [Angle 4] | [Trigger] | [125 char] | [CTA] |
| 5 | BOFU | [Angle 5] | [Trigger] | [125 char] | [CTA] |
| 6 | BOFU | Retarget | [Trigger] | [125 char] | [CTA] |
| Test | Variation A | Variation B | Metric | Duration |
|------|-------------|-------------|--------|----------|
| Hook | Variation 1 | Variation 2 | CTR, CPMess | 3-5 days |
| CTA | Variation 3 | Variation 4 | Conversion rate | 3-5 days |
| Offer | Variation 5 | Variation 6 | ROAS, CPA | 5-7 days |
Test rules:
> Activates when user mentions: "dropshipping", "shopify product", "winning product".
> Different from regular ad copy — focused on impulse purchase, urgency, scarcity.
Template 1: Urgency Hook
Template 2: Scarcity Hook
Template 3: Problem-Aware Hook
Template 4: Transformation Hook
For full dropshipping pipeline, see skill 29-dropshipping-mastery-global and reference dropshipping-tools-global.md.
Check before delivery:
Take minhnv0807/05-ad-copy-global from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.