meta-ads-copywriter
Skill9 starsChanged 2 months agoMITView on GitHub
Generate elite Meta Ads (Facebook/Instagram) for your clients — face-camera video scripts (30s minimum, default 30s/60s/90s) + ad copies (primary text / headline / description). Always offer-first (audit + reconstruct if weak), then multi-variant output (3+ angles). Combines Hormozi, Imperium Acquisition (Pillars/Pools/Action Threshold), the agency's Meta Ads playbooks (Callout/Value/CTA, What-Who-When, Hooks library). Use when the user asks to "écris des pubs Meta", "scripts pubs Facebook", "Meta Ads pour {client}", "génère des pubs vidéo face caméra", "ad copy", "publicités Meta", "pubs Instagram", "Lya pubs", "scripts UGC face cam". Trigger phrases: "pubs Meta {client}", "scripts pub face caméra", "Meta Ads {client}", "fais-moi des pubs", "génère 3 variantes pub Meta".
In this repository20 other files it gives its agents.
- campaign-proposalSkill
- client-onboarding-flowSkill
- cold-call-expertSkill
- cold-traffic-landing-pageSkill
- competitor-ads-researchSkill
- creative-briefSkill
- creative-staticsSkill
- creative-statics-v2Skill
- data-scrapingSkill
- deep-searchSkill
- devis-vercel-generatorSkill
- meta-ads-creative-frameworkSkill
- meta-campaign-launcherSkill
- meta-lead-notificationsSkill
- outbound-sequence-writerSkill
- rework-campaignSkill
- sales-call-analyzerSkill
- sales-follow-up-sequenceSkill
- vsl-copywriterSkill
- vsl-end-to-end-builderSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
29 rules. About 0 are common, 22 are distinctive, and 7 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈22
Distinctive · estimate
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 24
DO NOT trigger when the user asks for:
- Distinctive: line 65
1.2: Check if a brief already exists at:
- Very specific: line 70
1.3: If a brief exists → read it.
- Very specific: line 87
1.5: If deep-search reports exist for this client at projects/clients/{client-slug}/research/, read them to enrich the avatar (verbatim …
- Distinctive: line 97
2.2: Run the Value Equation diagnostic on the client's current offer:
- Distinctive: line 108
2.3: Run the Imperium 6-Pillars check : Drive / Goal / Problem / Pain / Action / Confidence.
- Very specific: line 118
2.5: When proposing a rebuild, use the 10 Hormozi steps (see frameworks/01-offer-audit.md) :
- Distinctive: line 123
Create value elements (problems → tangible solutions)
- Distinctive: line 136
3.1: Write down (internal scratchpad, not shown to user):
- Distinctive: line 163
Pain-stat: : start with a brutal statistic about the pain
- Distinctive: line 165
Case-result: : start with a specific client win (numbers + name)
- Distinctive: line 174
3.4: Document the angle choices briefly (1 line per angle, max 3 lines total) in the output — the user wants to see why each variant exists.
- Distinctive: line 210
No jargon: before the first benefit is stated
- Distinctive: line 213
Verbatim pain quote: if available from research/brief — italicised
- Distinctive: line 214
Named mechanism: if sophistication ≥3 — repeat the name 2–3 times in the 60s+ versions, 1× in 30s.
- Distinctive: line 217
Meta policy compliance: : no medical claims, no financial guarantees, no before/after weight loss, no discriminatory targeting language
- Distinctive: line 226
All copies must be congruent with the script (same promise, same CTA, same mechanism name)
- Distinctive: line 255
If any check fails → fix before saving.
- Very specific: line 266
Use the structure from templates/output-ad-pack.md (header with avatar/angles summary, then variants grouped by duration).
- Distinctive: line 268
6.2: If the offer was rebuilt, also save :
- Very specific: line 314
Strong recommendation: : if deep-search has been run for the client, read its 3 reports during Phase 1 to enrich the avatar — verbatim …
- Very specific: line 316
If vsl-copywriter has been run, read strategy.md to inherit the named mechanism, big idea, and offer composition.
- Distinctive: line 322
Offer-First is non-negotiable: No ads on a weak offer. Period.
- Distinctive: line 324
Copy is the deliverable, not storyboards: No VO/Onscreen split. No timestamp tables.
- Distinctive: line 325
Markdown only: No JSON in the output, ever.
- Distinctive: line 327
One single CTA per variant: Never two.
- Distinctive: line 328
Sourced proofs only: Never invent numbers, names, or testimonials.
- Distinctive: line 329
Meta policy compliance: No medical, financial guarantee, or discriminatory claims.
- Very specific: line 330
Congruence with VSL & LP: If a VSL exists, the ads must match its mechanism/promise/CTA.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Meta Ads Copywriter (Elite Multi-Variant Generator)
End-to-end skill that produces face-camera video scripts (30s minimum — default 30s/60s/90s, never below 30s) AND Meta ad copies (primary text / headline / description) for any client. Always starts by auditing the offer (Hormozi Value Equation + Imperium Pillars). If the offer is weak, the skill reconstructs it before writing a single ad. Output is always multi-variant (minimum 3 angles), always in French, always markdown.
This skill is the spiritual successor of "Lya" (the Custom GPT previously used for the same job) and encodes 5 reference documents into a repeatable pipeline.
🎯 When to use this skill
Trigger when the user asks any of:
- "Écris-moi des pubs Meta pour {client}"
- "Fais des scripts de pubs vidéo face caméra"
- "Génère 3 variantes de pubs Facebook/Instagram"
- "Meta Ads {client}", "pubs UGC", "scripts pub courte"
- "J'ai besoin de copies pour ma campagne Meta"
- Any explicit reference to "Lya" or "meta-ads-copywriter"
DO NOT trigger when the user asks for:
- A long VSL (3–12 min) → use
vsl-copywriterinstead - Deep customer research → use
deep-searchfirst - Landing page copy → out of scope (mention LP brief in
frameworks/05-landing-congruence.mdfor alignment only)
📦 Skill structure
This skill is split into modular reference files. The main agent reads SKILL.md (this file) for the orchestration, then loads the specific framework files on demand as it progresses through the pipeline.
meta-ads-copywriter/
├── SKILL.md ← you are here (orchestration + pipeline)
├── frameworks/
│ ├── 01-offer-audit.md ← Hormozi Value Equation + Imperium 6 Pillars + 10-step offer creation
│ ├── 02-hooks-library.md ← Banque de hooks (verbal + visuel) + first-3s checklist
│ ├── 03-value-angles.md ← What-Who-When + 8 leviers + 5 Pools of Pain + 3 Pools of Confidence
│ ├── 04-cta-library.md ← CTAs simples / urgency / scarcity / because
│ └── 05-script-structure.md ← Architecture des scripts 30s / 60s / 90s (minimum 30s — jamais en dessous) + structure copy texte Meta
├── templates/
│ ├── brief-input.md ← Inputs à collecter (ICP, offre, preuves, contraintes)
│ ├── output-ad-pack.md ← Template du livrable final (multi-variantes)
│ └── output-offer-rebuild.md ← Template si l'offre doit être reconstruite
├── assets/
│ └── build_meta_ads_docx.py ← Livrable client .docx (voir Phase 6)
├── checklists/
│ ├── pre-flight.md ← Avant de générer (offre OK, ICP clair, preuves dispo)
│ └── quality-gate.md ← Avant de livrer (Meta policy, congruence, multi-variantes, etc.)
└── examples/
└── (optionnel — à remplir au fil de tes clients)🔄 Pipeline (6 phases)
Phase 1 — Load context & Inputs
1.1 Identify the client slug (e.g., topco, acme-conseil).
1.2 Check if a brief already exists at:
projects/clients/{client-slug}/00-brief.md1.3 If a brief exists → read it. If not → load templates/brief-input.md and ask the user to fill the minimum required fields (don't ask for everything at once, ask only what's strictly needed):
Minimum required fields:
- ICP : 1 sentence (industry + role + geo)
- Offer : product/service + price + delivery
- Dream outcome : what the client gets (1 sentence, measurable if possible)
- Top 3 pains : in customer's own words if possible
- Proof : 1+ result (numbers, names, screenshots, testimonial)
- CTA target : booked call / free audit / lead magnet / direct purchase
- Format target : durations wanted (minimum 30s — jamais en dessous. Default: 30s + 60s + 90s) and number of variants per duration (default: 3)
1.4 Optional fields (ask only if relevant):
- LTV / ACV (for budgeting/scaling notes)
- Existing winning hooks from past campaigns
- Brand voice constraints (tu/vous, premium/casual)
- Compliance constraints (regulated industry)
1.5 If deep-search reports exist for this client at projects/clients/{client-slug}/research/, read them to enrich the avatar (verbatim pains, competitor angles, awareness level). This is optional but strongly preferred.
Phase 2 — Offer audit (mandatory but conditional)
This phase is non-negotiable. No ads are written until the offer passes the audit.
2.1 Load frameworks/01-offer-audit.md.
2.2 Run the Value Equation diagnostic on the client's current offer:
Value = (Dream Outcome × Perceived Likelihood) / (Time Delay × Effort & Sacrifice)For each of the 4 components, score 1–5 and write a 1-line justification:
- Dream Outcome : is it specific, measurable, time-bound, emotionally compelling?
- Perceived Likelihood : are there proofs / guarantees / track record?
- Time Delay : how fast does the customer get the result? Is it tangible quickly?
- Effort & Sacrifice : how much friction / work / risk for the customer?
2.3 Run the Imperium 6-Pillars check : Drive / Goal / Problem / Pain / Action / Confidence. Note any pillar that is weak or missing.
2.4 Decide:
| Total Value Equation score | Verdict | Action |
| 16–20 | Solid | Skip rebuild, proceed to Phase 3 directly |
| 11–15 | Mediocre | Propose 2–3 surgical improvements, ask user to validate, then proceed |
| ≤10 | Weak | STOP. Load templates/output-offer-rebuild.md and propose a full reconstruction. Do NOT write ads on a weak offer. |
2.5 When proposing a rebuild, use the 10 Hormozi steps (see frameworks/01-offer-audit.md) :
- Niche & 11 psychographic questions
- Define the final outcome (big promise + measurable)
- Define duration (realistic + how to shorten)
- Define methodology (steps simplified to 6–9 words each)
- Create value elements (problems → tangible solutions)
- Risk reversal (named guarantee)
- Exclusion (who it's NOT for — strengthens perceived value)
- Ultimatum (best vs worst scenario)
- Packaging (positioning)
- Pricing (high price = high value, justify 2x/5x/10x)
2.6 Output (only if rebuild needed) : a clean offer doc saved to projects/clients/{client-slug}/offer/v1.md. Then loop back to Phase 3 with the new offer.
Phase 3 — Avatar synthesis & Angle strategy
3.1 Write down (internal scratchpad, not shown to user):
- Avatar : ICP + top 3 pains (verbatim if possible) + dream outcome + common enemy
- Awareness level (Schwartz 1–5) : Unaware / Problem Aware / Solution Aware / Product Aware / Most Aware
- Sophistication level (1–5) : First / Naissante / Avertie / Saturée / Hyper
Default for FR coaches/consultants/agencies = level 4–5 → use named mechanism + radical specificity.
3.2 Load frameworks/03-value-angles.md and generate the angle palette using What-Who-When :
What (8 leviers, paired) :
- Dream Outcome ↔ Nightmare
- Perceived Likelihood ↔ Risk
- Speed ↔ Time Delay
- Ease ↔ Effort & Sacrifice
Who (perspectives) :
- The prospect themselves
- Their spouse / family
- Their colleagues / team
- Their rivals / competitors
When (timelines) :
- Past (regret / missed)
- Present (current pain / urgency)
- Future (vision / consequence)
3.3 From this palette, select 3+ distinct angles to test. Examples of angle archetypes :
- Pain-stat : start with a brutal statistic about the pain
- Mechanism : reveal the named method as the differentiator
- Case-result : start with a specific client win (numbers + name)
- Common enemy : attack an outside force the avatar already hates
- Identity : "this is for [type of person] who refuse to [accept X]"
- Contrarian : reframe the conventional wisdom
- Demonstration : show the mechanism in action
- Before/After : visual transformation
Each chosen angle must trace back to at least one verbatim pain or proof from the brief/research.
3.4 Document the angle choices briefly (1 line per angle, max 3 lines total) in the output — the user wants to see why each variant exists.
Phase 4 — Generate variants
4.1 Load frameworks/02-hooks-library.md, frameworks/04-cta-library.md, and frameworks/05-script-structure.md.
4.2 For each duration requested (minimum 30s — jamais en dessous. Default: 30s + 60s + 90s), generate 3 variants, each with a distinct angle from Phase 3. Aucune variante <30s ne doit être livrée, même en retargeting.
4.3 Each variant follows this exact structure (markdown, no JSON, no tables of timestamps, no VO/Onscreen columns) :
### Variante {N} — {Angle name}
**Hook (0–3s)**
{Texte exact prononcé face caméra. 1–2 phrases courtes maximum. Doit accrocher en moins de 3 secondes.}
**Body**
{Texte exact prononcé. Phrases courtes (≤15 mots), rythme oral, 1 idée par phrase. Inclure : reformulation du pain, preuve/mécanisme, bénéfice clé.}
**CTA**
{Une seule action, claire, avec raison d'agir maintenant.}
*Indication scénique (optionnel) : {uniquement si critique pour le sens — ex: "montrer screenshot ici", "regard caméra direct"}*
---
**Copies Meta associées**
- **Primary text** (≤125c) : {hook direct + bénéfice + CTA}
- **Headline** (≤40c) : {résultat + délai sans sacrifice}
- **Description** (≤30c) : {urgence ou rareté}4.4 Rules for the script text itself (must apply to every variant) :
- Hook < 3 seconds : the first sentence must stop the scroll
- No jargon before the first benefit is stated
- Mobile-first oral French : phrases courtes, rythme parlé, "tu" par défaut, "vous" si B2B premium
- One idea per sentence, one emotion per block
- Verbatim pain quote if available from research/brief — italicised
- Named mechanism if sophistication ≥3 — repeat the name 2–3 times in the 60s+ versions, 1× in 30s. Durée minimum absolue : 30s. Jamais de format <30s livré.
- One single CTA — never two, never "ou alors tu peux aussi…"
- No salesy hyperbole ("incroyable", "révolutionnaire", "unique au monde") unless backed by a proof
- Meta policy compliance : no medical claims, no financial guarantees, no before/after weight loss, no discriminatory targeting language
4.5 Rules for the copies texte (Meta ad copy) :
- 3 variants of primary text (one per length tier per the playbook):
- Tier 1 : ≤125c — hook direct + bénéfice + CTA
- Tier 2 : 125–200c — callout local + preuve + CTA
- Tier 3 : 200–280c — angle What-Who-When + CTA + raison maintenant
- Headline : "{Résultat} en {délai} sans {sacrifice}" or "Étude de cas : {chiffre} en {ville}"
- Description : "Places limitées {semaine}" / "Offre valable jusqu'à {date}" / similar urgency
- All copies must be congruent with the script (same promise, same CTA, same mechanism name)
Phase 5 — Quality gate (self-audit before saving)
5.1 Load checklists/quality-gate.md and verify EVERY item :
Must-haves :
- Offer passed the audit (or was rebuilt and validated)
- Minimum 3 variants per duration
- Each variant has a distinct angle (no two variants on the same angle)
- Each variant has Hook + Body + CTA (text only, no VO/Onscreen split)
- Each variant has an associated copy pack (primary text 3 tiers + headline + description)
- Hook lands in <3 seconds
- One single CTA per variant
- At least one verbatim pain or proof per variant (sourced from brief/research)
- Named mechanism present (if sophistication ≥3)
- French oral, mobile-first, "tu/vous" consistent
- Congruence between video script and copies texte (same promise/mechanism/CTA)
Must-avoid :
- No JSON, no tables of timestamps, no VO/Onscreen columns
- No medical / financial guarantee claims
- No multiple CTAs
- No generic claims without proof
- No copy-paste between variants (each must feel distinct)
- No more than 3 indications scéniques across the whole pack (we want copy, not storyboards)
If any check fails → fix before saving. If a fix is impossible (e.g., no proof available), flag it explicitly to the user instead of inventing.
Phase 6 — Save outputs
6.1 Save the final pack to :
projects/clients/{client-slug}/meta-ads/v1.mdUse the structure from templates/output-ad-pack.md (header with avatar/angles summary, then variants grouped by duration).
6.2 If the offer was rebuilt, also save :
projects/clients/{client-slug}/offer/v1.md6.2 bis — Livrable client (.docx). Générateur fourni dans assets/build_meta_ads_docx.py (chemin relatif au dossier du skill ; python-docx, même branding minimal noir/blanc Calibri que vsl-copywriter/assets/build_vsl_docx.py, footer « Confidentiel · {client} », nom d'agence optionnel via --brand) :
python3 assets/build_meta_ads_docx.py projects/clients/{client-slug}/meta-ads/v1.md Meta-Ads-{Client}.docx \
--client "{Client}" --date "{date}" --subtitle "{Nom de l'offre}" --brand "{Ton agence}"Il rend le markdown du pack tel quel (titres, tableaux, listes, citations) et met en forme les conventions du pack Meta Ads : **Hook** / **Body** / **CTA** en étiquettes grises petites capitales, le texte qui suit en voix off 11 pt, les lignes - **Primary text — …** / - **Headline …** / - **Description …** en corps réduit, les lignes entièrement en italique en indications scéniques, et > en encadré gris (plan média, réserves de diffusion, placeholders [PREUVE À PRODUIRE]). Si python-docx manque : pip3 install python-docx.
Contrôle avant génération — les deux comptages ne sont pas optionnels :
- Mots par script. Compter au débit de référence de 155 mots/minute, silences compris (calibration mesurée sur des VSL réellement enregistrées). Cibles : 78 mots pour 30 s, 156 pour 60 s, 233 pour 90 s. Afficher le compte dans le titre du script (
#### 1B — 60 secondes · 156 mots) : c'est ce qui empêche de livrer un « 30 s » qui dure 45 s. Les fourchettes 70–90 / 150–180 / 220–250 duframeworks/05-script-structure.mdsont des bornes hautes, pas des cibles. - Caractères par copie. Primary text ≤125 / 125–200 / 200–280, headline ≤40, description ≤30. À vérifier par script, pas à l'œil — en français, une headline dépasse 40 caractères sans prévenir.
6.3 Final user message (in French) :
✅ Pack pubs Meta généré pour {CLIENT}.
projects/clients/{slug}/meta-ads/v1.md— {N} variantes × {durées} = {total} scripts + copies- {si rebuild}
projects/clients/{slug}/offer/v1.md— offre reconstruiteAngles testés :
- {Angle 1} — {1 ligne pourquoi}
- {Angle 2} — {1 ligne pourquoi}
- {Angle 3} — {1 ligne pourquoi}
Mécanisme : {nom si applicable}
Prochaine étape suggérée : tournage face caméra des 3 variantes 60s en priorité, lancement Meta avec budget test, puis itération sur le hook gagnant (cf. règle "tester d'abord le hook" —
frameworks/02-hooks-library.md).
🔗 Integration with ecosystem
This skill is stage 3 of client production pipeline :
[Stage 1] deep-search → 3 research reports (market, competitors, psychographic)
[Stage 2] vsl-copywriter → Long VSL script (8–12 min) + strategy doc
[Stage 3] meta-ads-copywriter → Meta ad pack (this skill) — drives traffic to the VSLStrong recommendation : if deep-search has been run for the client, read its 3 reports during Phase 1 to enrich the avatar — verbatim pains, competitor angles, and awareness level make the ads much sharper. The skill works without them, but worse.
If vsl-copywriter has been run, read strategy.md to inherit the named mechanism, big idea, and offer composition. The Meta ads must be congruent with the VSL they drive traffic to (same promise, same mechanism name, same CTA target).
🚦 Hard rules (never break)
- Offer-First is non-negotiable. No ads on a weak offer. Period.
- Multi-variant always. Minimum 3 variants per duration, each with a distinct angle.
- Copy is the deliverable, not storyboards. No VO/Onscreen split. No timestamp tables. Indications scéniques only when critical (max 3 per pack).
- Markdown only. No JSON in the output, ever.
- French oral, mobile-first. Phrases courtes, ton adapté à l'ICP.
- One single CTA per variant. Never two.
- Sourced proofs only. Never invent numbers, names, or testimonials. If missing, flag it.
- Meta policy compliance. No medical, financial guarantee, or discriminatory claims.
- Congruence with VSL & LP. If a VSL exists, the ads must match its mechanism/promise/CTA.
- Save to the canonical path :
projects/clients/{client-slug}/meta-ads/v1.md.
📚 Notes
- This skill is the FR-market successor of "Lya" (ChatGPT Custom GPT). Methodology preserved, format simplified per user preference (no VO/Onscreen, copy-only, markdown).
- Source documents (canonical reference) :
leadgen_adscopy.json(13 modules : copy structure, hooks, value angles, CTA, storyboard, targeting, lead magnet, LP, testing, budgeting, CFA, lead handling, rule of 100)MetaAds_Strategy_Fundamentals.json(6 expert profiles : strategy, callout, value, CTA, copywriting rules, scaling)structure_copy.json(sector-specific Hook/Body/CTA guidelines : SaaS B2B / Marketing Agency / Coaching / Consulting)Fiche de Création d'Offre.pdf(10-step Hormozi-style FR offer creation)Acquisition Catalysts Offer Creation.pdf(Imperium Acquisition : 6 Pillars, Pools of Pain/Confidence, Action Threshold, Offer Composition, Pricing Philosophy, Latent Conditions)
- The detailed frameworks live in
frameworks/. Load them on demand — don't dump them into the agent context preemptively.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

