---
name: content-marketing
description: >
Write blogs, newsletters, Twitter threads, case studies, and marketing copy
that convert. Covers copywriting frameworks (AIDA, PAS, BAB, FAB), headline
formulas, SEO/GEO for 2026 (AI Overviews, SGE), newsletter deliverability,
Twitter thread hooks, Cialdini psychology, and cognitive biases.
triggers:
- "write a blog post"
- "write a newsletter"
- "write a Twitter thread"
- "case study"
- "marketing copy"
- "copywriting"
- "landing page copy"
- "ad copy"
- "sales copy"
- "content strategy"
negatives:
- "sales outreach"
- "proposal"
- "SOW"
- "pitch deck"
- "translation"
- "localization"
license: MIT
compatibility: opencode
metadata:
version: "4.0.0"
workflow: content-marketing
audience: developers
allowed-tools: [websearch, webfetch, read, write, edit, glob, grep, bash, skill]
Content Marketing
Content that ranks, converts, and gets shared. Based on Ogilvy, Cialdini, Copyhackers, and modern distribution strategies.
Sub-Commands
| Command |
Description |
blog |
Write a blog post (outline → draft → optimize → publish) |
newsletter |
Write a newsletter issue with subject line + body |
thread |
Write a Twitter/X thread (hook + value + CTA) |
case-study |
Write a case study from results data |
headline |
Generate and score headlines against formulas |
optimize |
Optimize existing content for SEO + GEO |
Copywriting Frameworks
| Framework |
Structure |
Best for |
| AIDA |
Attention → Interest → Desire → Action |
Landing pages, emails |
| PAS |
Problem → Agitate → Solve |
Pain-point focused content |
| BAB |
Before → After → Bridge |
Transformational offers |
| FAB |
Feature → Advantage → Benefit |
Product descriptions |
| 4Ps |
Picture → Promise → Prove → Push |
Long-form direct response |
Headline Formulas
| Type |
Formula |
Example |
| Direct benefit |
"[Number] [noun] for [audience]" |
"10 Email Templates for Busy Founders" |
| How-to |
"How to [outcome] in [time]" |
"How to Double Conversion Rate in 30 Days" |
| Pain avoidance |
"[Outcome] Without [pain]" |
"Get More Leads Without Spending on Ads" |
| Contrarian |
"Why [common belief] is [wrong]" |
"Why 'Write for Skimmers' Is Terrible Advice" |
| Personal story |
"I [did thing] and [result]" |
"I Rewrote One Page and Made $40K" |
Rules: Under 15 words. Keyword near start. Specific outcome promise. No clickbait.
Blog Structure
Headline → Lead (problem/story/curiosity/data) → H2 sections → Code examples → Conclusion → CTA
Lead types:
| Type |
Formula |
| Problem-first |
"[Pain]. Here's how to fix it." |
| Story-first |
"I [did thing] and learned [lesson]." |
| Curiosity gap |
"[Claim]. Here's why." |
| Data-first |
"[Stat]. [Why it matters]." |
SEO + GEO (2026)
Traditional SEO
- Primary keyword in H1, first 100 words, one H2
- Meta description under 155 chars with value prop
- URL: kebab-case, no stop words
- Internal links: 2-3 related posts
GEO (Generative Engine Optimization)
- Direct answer in first 2 paragraphs (AI scrapes opening)
- Structured data: FAQ, HowTo, Article schema
- Entity clarity: define who you are, what you do, for whom
- Cite primary sources (studies, data, .edu/.gov)
- Contrarian takes (AI models reference multiple viewpoints)
- Conversational tone (AI penalizes keyword-stuffed text)
Twitter Threads (5-7 tweets)
Tweet 1: Hook — stop the scroll (240 chars max)
Tweet 2: Context — why this matters
Tweets 3-5: Value — core teaching, step by step
Tweet 6: Proof — evidence, results, data
Tweet 7: CTA — one clear action
Hook patterns: surprising stat, contrarian take, direct promise, story opening, bold claim.
Newsletter Benchmarks
| Metric |
Good |
Needs work |
| Open rate |
25-40% |
Below 20% |
| Click rate |
2-5% |
Below 1% |
| Unsubscribe |
Under 0.5% |
Over 1% |
Subject line: 30-50 chars. Start with verb or number. No ALL CAPS. A/B test 20%.
Cialdini Principles (minimum 3 per piece)
| Principle |
Application |
| Reciprocity |
Free content, valuable upfront |
| Scarcity |
Limited time, real limits only |
| Authority |
Data, certifications, named sources |
| Social proof |
Testimonials, user count, logos |
| Consistency |
Micro-yes → macro-yes |
| Liking |
Relatable voice, shared identity |
Production Checklist
Workflow
- Define the audience persona — who reads this? What do they know? What problem do they have? Language, examples, and tone reflect this one persona.
- Select the copywriting framework — AIDA for landing pages, PAS for pain-point content, BAB for transformational offers, FAB for product descriptions.
- Write the headline first — under 15 words, keyword near start, specific outcome promise. Score against headline formulas. No clickbait.
- Open with a strong lead — problem-first, story-first, curiosity gap, or data-first. Hook the reader in the first 2 sentences.
- Layer Cialdini principles — minimum 3 per piece. Reciprocity (free value), social proof (testimonials/logos), authority (data/sources), scarcity (genuine limits only).
- Optimize for SEO + GEO — primary keyword in H1, first 100 words, one H2. Direct answer in first 2 paragraphs for AI overviews. Structured data where applicable.
- Close with one clear CTA — single action verb + specific outcome. "Get the checklist" not "Learn more."
Error Handling
| Cause |
Fix |
| Headline scores poorly against formulas (generic, no outcome) |
Rewrite with: specific number + target audience + promised result. Test 3-5 variants. |
| Open rate below 20% on newsletter |
Subject line too long or too vague. Target 30-50 chars. Start with verb or number. A/B test 20% of list. |
| Click rate below 1% on newsletter |
CTA not prominent or actionable. Move CTA higher. Make it a single, specific action with a clear benefit. |
| Blog post reads like AI-generated, high bounce rate |
Check for AI tells: uniform paragraph length, mechanical connectors, absolute neutrality, no opinion. Humanize voice. |
| Twitter thread hook gets scrolled past |
Hook must stop the scroll in 240 chars. Use: surprising stat, contrarian take, direct promise, story opening, or bold claim. |
| Content flagged as thin or unhelpful by Google |
Add original data, unique perspective, or expert insight. Cite primary sources. Include contrarian viewpoint for GEO. |
| "Fake scarcity" damages brand trust |
Only use genuine limits: limited cohort, real deadline, actual inventory constraint. Never invent urgency. |
| Cialdini principle overuse feels manipulative |
Max 3-4 principles per piece. Layer naturally. Social proof and authority should feel earned, not forced. |
Anti-Patterns
| Mistake |
Fix |
| Generic headline |
Specific: name outcome + audience |
| No social proof |
Add testimonials near every claim |
| Weak CTA |
Action verb + specific outcome |
| Writing for "everyone" |
Pick one persona |
| Fake scarcity |
Only use genuine limits |
| No proof |
Back every claim with data |
| Selling too early |
Build trust before the ask |
Headline Formulas by Platform
Blog Headings
- "How to [Achieve Outcome] [Timeframe]" (How to Ship Faster in 30 Days)
- "[Number] [Adjective] Ways to [Solve Problem]" (7 Proven Ways to Reduce Churn)
- "Why [Common Belief] Is Wrong (And What to Do Instead)"
- "[Year] Guide to [Topic]: [Specific Angle]" (2026 Guide to SEO: GEO Edition)
Newsletter Subject Lines
- Questions: "Is your [metric] where it should be?"
- Urgency: "[Name], [deadline] is tomorrow"
- Social proof: "How [company] grew [metric] by [number]%"
- Curiosity gap: "The [industry] secret nobody talks about"
Twitter/X Threads
- Hook line 1: Contrarian take or surprising statistic
- Line 2-3: Expand with evidence
- Line 4-6: Steps/methods (numbered)
- Line 7-8: Results/social proof
- Last line: Call to action + link
LinkedIn
- Line 1: Statement that challenges assumption
- Line 2-3: Story with specific numbers
- Line 4-5: Lesson learned
- Last line: Question to drive comments
Newsletter Deliverability
Authentication
DNS Records:
TXT @ "v=spf1 include:mail.provider.com ~all"
TXT _dmarc "v=DMARC1; p=quarantine; rua=mailto:dmarc@domain.com"
CNAME selector1._domainkey selector1.provider.com
CNAME selector2._domainkey selector2.provider.com
Deliverability Checklist
- SPF record covers all sending IPs
- DKIM signed with 2048-bit key
- DMARC policy at minimum
p=none (monitor), eventually p=reject
- Custom tracking domain (not shared with other senders)
- Sender reputation > 95% (Google Postmaster Tools)
- Spam rate < 0.1% (Google threshold is 0.3%)
- Unsubscribe link visible in every email (CAN-SPAM/GDPR requirement)
- List cleaned monthly: remove addresses that haven't opened in 90 days
Sources
- Ogilvy on Advertising
- Breakthrough Advertising — Eugene Schwartz
- Copyhackers — Joanna Wiebe
- Cialdini "Influence"
- Google Search Central — SEO documentation
- Mailchimp / Campaign Monitor — Email benchmarks
Checklist
1---2name: content-marketing3description: ---4---5---6name: content-marketing7description: >8 Write blogs, newsletters, Twitter threads, case studies, and marketing copy9 that convert. Covers copywriting frameworks (AIDA, PAS, BAB, FAB), headline10 formulas, SEO/GEO for 2026 (AI Overviews, SGE), newsletter deliverability,11 Twitter thread hooks, Cialdini psychology, and cognitive biases.12triggers:13 - "write a blog post"14 - "write a newsletter"15 - "write a Twitter thread"16 - "case study"17 - "marketing copy"18 - "copywriting"19 - "landing page copy"20 - "ad copy"21 - "sales copy"22 - "content strategy"23negatives:24 - "sales outreach"25 - "proposal"26 - "SOW"27 - "pitch deck"28 - "translation"29 - "localization"30license: MIT31compatibility: opencode32metadata:33 version: "4.0.0"34 workflow: content-marketing35 audience: developers36allowed-tools: [websearch, webfetch, read, write, edit, glob, grep, bash, skill]37---383940# Content Marketing4142Content that ranks, converts, and gets shared. Based on Ogilvy, Cialdini, Copyhackers, and modern distribution strategies.4344## Sub-Commands4546| Command | Description |47|---------|-------------|48| `blog` | Write a blog post (outline → draft → optimize → publish) |49| `newsletter` | Write a newsletter issue with subject line + body |50| `thread` | Write a Twitter/X thread (hook + value + CTA) |51| `case-study` | Write a case study from results data |52| `headline` | Generate and score headlines against formulas |53| `optimize` | Optimize existing content for SEO + GEO |5455## Copywriting Frameworks5657| Framework | Structure | Best for |58|-----------|-----------|----------|59| AIDA | Attention → Interest → Desire → Action | Landing pages, emails |60| PAS | Problem → Agitate → Solve | Pain-point focused content |61| BAB | Before → After → Bridge | Transformational offers |62| FAB | Feature → Advantage → Benefit | Product descriptions |63| 4Ps | Picture → Promise → Prove → Push | Long-form direct response |6465## Headline Formulas6667| Type | Formula | Example |68|------|---------|---------|69| Direct benefit | "[Number] [noun] for [audience]" | "10 Email Templates for Busy Founders" |70| How-to | "How to [outcome] in [time]" | "How to Double Conversion Rate in 30 Days" |71| Pain avoidance | "[Outcome] Without [pain]" | "Get More Leads Without Spending on Ads" |72| Contrarian | "Why [common belief] is [wrong]" | "Why 'Write for Skimmers' Is Terrible Advice" |73| Personal story | "I [did thing] and [result]" | "I Rewrote One Page and Made $40K" |7475**Rules:** Under 15 words. Keyword near start. Specific outcome promise. No clickbait.7677## Blog Structure7879```80Headline → Lead (problem/story/curiosity/data) → H2 sections → Code examples → Conclusion → CTA81```8283Lead types:84| Type | Formula |85|------|---------|86| Problem-first | "[Pain]. Here's how to fix it." |87| Story-first | "I [did thing] and learned [lesson]." |88| Curiosity gap | "[Claim]. Here's why." |89| Data-first | "[Stat]. [Why it matters]." |9091## SEO + GEO (2026)9293### Traditional SEO94- Primary keyword in H1, first 100 words, one H295- Meta description under 155 chars with value prop96- URL: kebab-case, no stop words97- Internal links: 2-3 related posts9899### GEO (Generative Engine Optimization)100- Direct answer in first 2 paragraphs (AI scrapes opening)101- Structured data: FAQ, HowTo, Article schema102- Entity clarity: define who you are, what you do, for whom103- Cite primary sources (studies, data, .edu/.gov)104- Contrarian takes (AI models reference multiple viewpoints)105- Conversational tone (AI penalizes keyword-stuffed text)106107## Twitter Threads (5-7 tweets)108109```110Tweet 1: Hook — stop the scroll (240 chars max)111Tweet 2: Context — why this matters112Tweets 3-5: Value — core teaching, step by step113Tweet 6: Proof — evidence, results, data114Tweet 7: CTA — one clear action115```116117Hook patterns: surprising stat, contrarian take, direct promise, story opening, bold claim.118119## Newsletter Benchmarks120121| Metric | Good | Needs work |122|--------|:----:|:----------:|123| Open rate | 25-40% | Below 20% |124| Click rate | 2-5% | Below 1% |125| Unsubscribe | Under 0.5% | Over 1% |126127Subject line: 30-50 chars. Start with verb or number. No ALL CAPS. A/B test 20%.128129## Cialdini Principles (minimum 3 per piece)130131| Principle | Application |132|-----------|-------------|133| Reciprocity | Free content, valuable upfront |134| Scarcity | Limited time, real limits only |135| Authority | Data, certifications, named sources |136| Social proof | Testimonials, user count, logos |137| Consistency | Micro-yes → macro-yes |138| Liking | Relatable voice, shared identity |139140## Production Checklist141142- [ ] Audience persona defined and reflected in language143- [ ] Copywriting framework chosen144- [ ] Headline under 15 words, keyword near start145- [ ] At least 3 Cialdini principles applied146- [ ] Every claim backed by data, quote, or source link147- [ ] Primary keyword in H1, first paragraph, one H2148- [ ] Direct answer in first 2 paragraphs (GEO)149- [ ] CTA: single action verb with specific outcome150- [ ] No anti-pattern violations151- [ ] Links tested and valid152- [ ] Read aloud: flow natural, no jargon153154## Workflow1551561. **Define the audience persona** — who reads this? What do they know? What problem do they have? Language, examples, and tone reflect this one persona.1572. **Select the copywriting framework** — AIDA for landing pages, PAS for pain-point content, BAB for transformational offers, FAB for product descriptions.1583. **Write the headline first** — under 15 words, keyword near start, specific outcome promise. Score against headline formulas. No clickbait.1594. **Open with a strong lead** — problem-first, story-first, curiosity gap, or data-first. Hook the reader in the first 2 sentences.1605. **Layer Cialdini principles** — minimum 3 per piece. Reciprocity (free value), social proof (testimonials/logos), authority (data/sources), scarcity (genuine limits only).1616. **Optimize for SEO + GEO** — primary keyword in H1, first 100 words, one H2. Direct answer in first 2 paragraphs for AI overviews. Structured data where applicable.1627. **Close with one clear CTA** — single action verb + specific outcome. "Get the checklist" not "Learn more."163164## Error Handling165166| Cause | Fix |167|-------|-----|168| Headline scores poorly against formulas (generic, no outcome) | Rewrite with: specific number + target audience + promised result. Test 3-5 variants. |169| Open rate below 20% on newsletter | Subject line too long or too vague. Target 30-50 chars. Start with verb or number. A/B test 20% of list. |170| Click rate below 1% on newsletter | CTA not prominent or actionable. Move CTA higher. Make it a single, specific action with a clear benefit. |171| Blog post reads like AI-generated, high bounce rate | Check for AI tells: uniform paragraph length, mechanical connectors, absolute neutrality, no opinion. Humanize voice. |172| Twitter thread hook gets scrolled past | Hook must stop the scroll in 240 chars. Use: surprising stat, contrarian take, direct promise, story opening, or bold claim. |173| Content flagged as thin or unhelpful by Google | Add original data, unique perspective, or expert insight. Cite primary sources. Include contrarian viewpoint for GEO. |174| "Fake scarcity" damages brand trust | Only use genuine limits: limited cohort, real deadline, actual inventory constraint. Never invent urgency. |175| Cialdini principle overuse feels manipulative | Max 3-4 principles per piece. Layer naturally. Social proof and authority should feel earned, not forced. |176177## Anti-Patterns178179| Mistake | Fix |180|---------|-----|181| Generic headline | Specific: name outcome + audience |182| No social proof | Add testimonials near every claim |183| Weak CTA | Action verb + specific outcome |184| Writing for "everyone" | Pick one persona |185| Fake scarcity | Only use genuine limits |186| No proof | Back every claim with data |187| Selling too early | Build trust before the ask |188189## Headline Formulas by Platform190191### Blog Headings192- "How to [Achieve Outcome] [Timeframe]" (How to Ship Faster in 30 Days)193- "[Number] [Adjective] Ways to [Solve Problem]" (7 Proven Ways to Reduce Churn)194- "Why [Common Belief] Is Wrong (And What to Do Instead)" 195- "[Year] Guide to [Topic]: [Specific Angle]" (2026 Guide to SEO: GEO Edition)196197### Newsletter Subject Lines198- Questions: "Is your [metric] where it should be?"199- Urgency: "[Name], [deadline] is tomorrow"200- Social proof: "How [company] grew [metric] by [number]%"201- Curiosity gap: "The [industry] secret nobody talks about"202203### Twitter/X Threads204- Hook line 1: Contrarian take or surprising statistic205- Line 2-3: Expand with evidence206- Line 4-6: Steps/methods (numbered)207- Line 7-8: Results/social proof208- Last line: Call to action + link209210### LinkedIn211- Line 1: Statement that challenges assumption212- Line 2-3: Story with specific numbers213- Line 4-5: Lesson learned214- Last line: Question to drive comments215216## Newsletter Deliverability217218### Authentication219```220DNS Records:221TXT @ "v=spf1 include:mail.provider.com ~all"222TXT _dmarc "v=DMARC1; p=quarantine; rua=mailto:dmarc@domain.com"223CNAME selector1._domainkey selector1.provider.com224CNAME selector2._domainkey selector2.provider.com225```226227### Deliverability Checklist228- SPF record covers all sending IPs229- DKIM signed with 2048-bit key230- DMARC policy at minimum `p=none` (monitor), eventually `p=reject`231- Custom tracking domain (not shared with other senders)232- Sender reputation > 95% (Google Postmaster Tools)233- Spam rate < 0.1% (Google threshold is 0.3%)234- Unsubscribe link visible in every email (CAN-SPAM/GDPR requirement)235- List cleaned monthly: remove addresses that haven't opened in 90 days236237## Sources238239- Ogilvy on Advertising240- Breakthrough Advertising — Eugene Schwartz241- Copyhackers — Joanna Wiebe242- Cialdini "Influence"243- Google Search Central — SEO documentation244- Mailchimp / Campaign Monitor — Email benchmarks245246## Checklist247248- [ ] Skill loads without errors in the AI agent249- [ ] YAML frontmatter is valid (description, compatibility, audience)250- [ ] Workflow section provides clear step-by-step instructions251- [ ] Error handling section covers common failure modes252- [ ] All referenced files (references/, scripts/, assets/) exist253- [ ] Skill triggers correctly for intended use cases254- [ ] No broken links or missing resources