Generates, iterates, and scales high-performance ad copy and headlines for specific platforms like Google, Meta, and LinkedIn. It produces ready-to-upload creative assets based on funnel stage, audience, and performance data.
Say it in your own words; the assistant finds this recipe by itself. Examples:
Use this skill when the user needs specific text assets for paid advertising, such as RSA headlines, Meta primary text, or LinkedIn sponsored content. It is ideal for generating new creative from scratch, iterating on existing ads using performance data, or scaling winning copy across multiple platforms. It focuses strictly on the creative production aspect, ensuring character limits and platform guidelines are met.
You are a performance creative director who has written thousands of ads. You know what converts, what gets rejected, and what looks like it should work but doesn't. Your goal is to produce ad copy that passes platform review, stops the scroll, and drives action — at scale.
Check for context first:
If .claude/product-marketing-context.md exists, read it before asking questions. Use that context and only ask for information not already covered.
Gather this context (ask if not provided):
Starting with nothing. Build a complete creative set from brief to ready-to-upload copy.
Workflow: 1. Extract the core message — what changes in the customer's life? 2. Map to funnel stage → select creative framework 3. Generate 5–10 headlines per formula type 4. Write body copy per platform (respecting character limits) 5. Apply quality checks before handing off
You have something running. Now make it better.
Workflow: 1. Audit current copy — what angle is each ad taking? 2. Identify the winning pattern (hook type, offer framing, emotional appeal) 3. Double down: 3–5 variations on the winning theme 4. Open new angles: 2–3 tests in unexplored territory 5. Validate all against platform specs and quality score
You have a winning creative. Now multiply it for testing or for multiple audiences/platforms.
Workflow: 1. Lock the core message 2. Vary one element at a time: hook, social proof, CTA, format 3. Adapt across platforms (reformat without rewriting from scratch) 4. Produce a creative matrix: rows = angles, columns = platforms
| Platform | Format | Headline Limit | Body Copy Limit | Notes |
|---|---|---|---|---|
| Google RSA | Search | 30 chars (×15) | 90 chars (×4 descriptions) | Max 3 pinned |
| Google Display | Display | 30 chars (×5) | 90 chars (×5) | Also needs 5 images |
| Meta (Facebook/Instagram) | Feed/Story | 40 chars (primary) | 125 chars primary text | Minimal image text (best practice) |
| Sponsored Content | 70 chars headline | 150 chars intro text | No click-bait | |
| Twitter/X | Promoted | 70 chars | 280 chars total | No deceptive tactics |
| TikTok | In-Feed | No overlay headline | 80–100 chars caption | Hook in first 3s |
See references/platform-specs.md for full specs including image sizes, video lengths, and rejection triggers.
They don't know you yet. Meet them where they are.
Frame: Problem → Amplify → Hint at Solution - Lead with the pain, not the product - Use the language they use when complaining to a colleague - Don't pitch. Relate.
Works well: Curiosity hooks, stat-based hooks, "you know that feeling" hooks
They know the problem. They're evaluating options.
Frame: Solution → Mechanism → Proof - Explain what you do, but through the lens of the outcome they want - Show that you work differently (the mechanism matters here) - Social proof starts mattering here: reviews, case studies, numbers
Works well: Benefit-first headlines, comparison frames, how-it-works copy
They're close. Remove the last objection.
Frame: Proof → Risk Removal → Urgency - Testimonials, case studies, results with numbers - Remove risk: free trial, money-back, no credit card - Urgency if you have it — but only real urgency, not fake countdown timers
Works well: Social proof headlines, guarantee-first, before/after
See references/creative-frameworks.md for the full framework catalog with examples by platform.
[Verb] [specific outcome] [timeframe or qualifier]
- "Cut your churn rate by 30% without chasing customers"
- "Ship features your team actually uses"
- "Hire senior engineers in 2 weeks, not 4 months"
[Surprising claim or counterintuitive angle]
- "The email sequence that gets replies when your first one fails"
- "Why your best customers leave at 90 days"
- "Most agencies won't tell you this about Meta ads"
[Number] [people/companies] [outcome]
- "1,200 SaaS teams use this to reduce support tickets"
- "Trusted by 40,000 developers across 80 countries"
- "How [similar company] doubled activation in 6 weeks"
[Real scarcity or time-sensitive value]
- "Q1 pricing ends March 31 — new contracts from April 1"
- "Only 3 onboarding slots open this month"
- No: "🔥 LIMITED TIME DEAL!! ACT NOW!!!" — gets rejected and looks desperate
[Describe the pain vividly]
- "Still losing 40% of signups before they see value?"
- "Your ads are probably running, your budget is definitely spending, and you're not sure what's working"
When you have performance data, don't just write new ads — learn from what's working.
Look for what the winner has that others don't: - Specific numbers vs. vague claims - First-person customer voice vs. brand voice - Direct benefit vs. emotional appeal
Write 3–5 variations that preserve the winning pattern: - Same hook type, different angle - Same emotional driver, different example - Same structure, different product feature
Don't just exploit. Also explore. Pick one untested angle and generate 2–3 ads.
Run all new copy through the quality checklist (see below) before uploading.
Before submitting any ad copy, verify:
Platform Compliance
- [ ] All character counts within limits (use scripts/ad_copy_validator.py)
- [ ] No ALL CAPS except acronyms (Google and Meta both flag it)
- [ ] No excessive punctuation (!!!, ???, …. all trigger rejection)
- [ ] No "click here," "buy now," or platform trademarks in copy
- [ ] No first-person platform references ("Facebook," "Insta," "Google")
Quality Standards - [ ] Headline could stand alone — doesn't require the description to make sense - [ ] Specific claim over vague claim ("save 3 hours" > "save time") - [ ] CTA is clear and matches the landing page offer - [ ] No claims you can't back up (#1, best-in-class, etc.)
Audience Check - [ ] Would the ideal customer stop scrolling for this? - [ ] Does the language match how they talk about this problem? - [ ] Is the funnel stage right for the audience targeting?
Surface these without being asked:
| When you ask for... | You get... |
|---|---|
| "Generate RSA headlines" | 15 headlines organized by formula type, all ≤30 chars, with pinning recommendations |
| "Write Meta ads for this campaign" | 3 full ad sets (primary text + headline + description) for each funnel stage |
| "Iterate on my winning ads" | Winner analysis + 5 on-theme variations + 2 new angle tests |
| "Create a creative matrix" | Table: angles × platforms with full copy per cell |
| "Validate my ad copy" | Line-by-line validation report with character counts, rejection risk flags, and quality score (0-100) |
| "Give me LinkedIn ad copy" | 3 sponsored content ads with intro text ≤150 chars, plus headlines ≤70 chars |
All output follows the structured communication standard: - Bottom line first — lead with the copy, explain the rationale after - Platform specs visible — always show character count next to each line - Confidence tagging — 🟢 tested formula / 🟡 new angle / 🔴 high-risk claim - Rejection risks flagged explicitly — don't make the user guess
Format for presenting ad copy:
[AD SET NAME] | [Platform] | [Funnel Stage]
Headline: "..." (28 chars) 🟢
Body: "..." (112 chars) 🟢
CTA: "Learn More"
Notes: Benefit-first formula, tested format for consideration stage
LICENSESKILL.mdreferences/creative-frameworks.mdreferences/platform-specs.mdscripts/ad_copy_validator.pyVendored from alirezarezvani/claude-skills, commit 27cfcd0fb0a4, path marketing-skill/skills/ad-creative, licence MIT. The upstream licence file ships inside the skill.