social-post-writer

SKILL.md

Social Post Writer

Generate ready-to-publish social media posts from a topic, idea, or brief. Uses 9 proven content templates to produce posts that educate, entertain, challenge, and build trust — without sounding like marketing.

Unlike the content-repurposer (which breaks down existing long-form content), this skill generates original posts from a topic. Give it a subject and it writes the posts.

Built from the template framework in Justin Welsh's Content Operating System.

Usage

Use when you have a topic and need social posts (no long-form source content required), filling gaps in a content calendar, testing messaging on a new topic, or generating variations to A/B test different angles.

Process

Step 1: Gather Inputs

Ask the user for:

  1. Topic or idea — what the post(s) should be about. Can be a single sentence, a specific angle, a question, or a brief with talking points.
  2. Template(s) to use (optional) — Story, Observation, Contrarian, Listicle, Past vs. Present, Hand-Raiser, Launch, Meme, Carousel, or "all" (default: first 5)
  3. Platform — LinkedIn, Twitter/X, or both (default: both)
  4. Voice/tone — who is the author, what's their tone (casual, professional, witty, provocative, etc.)
  5. Personal experience or proof points (optional) — anecdotes, numbers, or examples to weave in
  6. Number of posts (optional) — default: 5 (one per template)
  7. Constraints (optional) — things to avoid, compliance requirements

Step 2: Develop the Topic

Before writing, explore the topic to find angles:

  • What's the core insight? — The one thing the audience should take away
  • What problems does this solve? — Pain points the audience faces
  • What's counterintuitive about this? — Any conventional wisdom that's wrong
  • What's the proof? — Personal experience, data, examples, or observations
  • What tools/resources relate? — Anything concrete to recommend
  • What's changed over time? — How this topic has evolved

Present a brief angle summary to the user before generating posts. This ensures alignment and surfaces any personal stories or data points the user wants included.

Step 3: Generate Posts

Write one post per selected template. Each template has a distinct structure and emotional effect.


Template 1: Story

A personal narrative that leads to the topic's key insight. Highest engagement, hardest to write.

Emotional trigger: Entertains / Empathizes

Structure:

  1. Pain/Attention — Open with a specific, relatable moment. Not "I used to struggle with X" but the exact scene.
  2. Agitate — Make it worse. What happened when the problem continued?
  3. Intrigue — The turning point. What changed?
  4. Positive Future — The result. Specific outcomes — numbers, feelings, changes.
  5. Solution — The actionable takeaway.

Rules:

  • First person. Real or realistic scenarios.
  • Opening line must stop the scroll.
  • Short paragraphs. One idea per line.
  • The insight must feel earned through the narrative.

Template 2: Observation

A pattern or insight you've noticed, backed by specifics.

Emotional trigger: Teaches / Makes me think

Structure:

  1. Observation — One clear, specific thing you've noticed.
  2. Evidence — 3-5 specific, concrete points.
  3. Closer — A punchy, quotable takeaway.

Template 3: Contrarian Take

Challenge something the audience assumes is true.

Emotional trigger: Makes me think / Empathizes

Structure:

  1. The take — State the contrarian position in one sentence.
  2. Why the conventional view is wrong — 2-3 reasons.
  3. The reframe — A new way to think about it.

Rules:

  • Must be genuinely surprising. "Work smarter not harder" is not contrarian.
  • Support with logic, experience, or evidence — not just attitude.

Template 4: Listicle

A curated list of tips, tools, resources, or lessons.

Emotional trigger: Teaches

Structure:

  1. Frame — "X [things] every [audience] should [know/use/avoid]:"
  2. List — Each item: name/label + one-line description. Consistent format.
  3. Closer — Optional recommendation or CTA.

Rules:

  • Each item scannable in under 5 seconds.
  • Odd numbers (5, 7, 9) tend to outperform even.
  • Put the most surprising item at #1 or last position.

Template 5: Past vs. Present

Show transformation over time.

Emotional trigger: Entertains / Teaches

Structure:

  1. Then — The old way. 3-5 bullet points.
  2. Now — The new way. 3-5 bullet points (matching structure).
  3. Lesson — One word or short phrase.

Rules:

  • Parallel structure is critical.
  • Be specific. "$2K/month" beats "less money."
  • The lesson line should land like a punchline.

Template 6: Hand-Raiser

Generate comments from interested readers, then DM them a free resource.

Emotional trigger: Teaches / Empathizes

Structure:

  1. Personal struggle — Open with a relatable problem (2-3 short lines)
  2. Transformation — What changed, with specific numbers and timeframe
  3. The offer — A free resource that breaks down your process
  4. Relief statement — 3 things they WON'T have to do (lowers friction)
  5. Fascinations — 5-7 curiosity-gap bullets about what's inside
  6. CTADrop "[WORD]" below and I'll DM it to you

Rules:

  • Fascinations are NOT feature bullets. They are curiosity gaps.
  • The relief statement matters — telling people what they won't need to do reduces perceived cost.
  • One-page PDF is the ideal resource format.

Template 7: Launch / Doors Open

Promote a paid offer. Story-first, pitch-second.

Emotional trigger: Empathizes / Teaches

Structure:

  1. Hook (Line 1) — One short, scroll-stopping line. Never promotional.
  2. Curiosity inducer (Line 2) — Creates an open loop.
  3. Story (60-70% of the post) — Build tension, share a relatable struggle.
  4. Fascinations (3-5 bullets) — Curiosity-gap bullets, 10 words or fewer each.
  5. CTA — One clear action with the link.

Rules:

  • 175-225 words total. Scannable in under 60 seconds.
  • Story before pitch. The first 60-70% earns attention.
  • Emoji: 0-2 max, in hook or CTA only.

Template 8: Meme

Turn a topic into a meme-format post.

Emotional trigger: Entertains

Structure:

  1. Choose a meme format — Match the topic's core tension to a template
  2. Write a 1-2 sentence caption — The meme image does the heavy lifting.

Rules:

  • Standalone. Understandable without any other context.
  • Use the audience's in-group language.
  • Don't force it. If no natural meme angle exists, skip.

Template 9: Instagram Carousel

Multi-slide visual post optimized for swipe mechanic.

Emotional trigger: Teaches

Structure:

  1. Cover slide — Bold headline + subtitle (the hook)
  2. Content slides (5-8) — One point per slide, consistent design
  3. Summary slide — Recap key points
  4. CTA slide — Follow, save, share, or visit link

Rules:

  • Square format (1080x1080).
  • First slide is everything — if it doesn't hook, nobody swipes.
  • Educational carousels get the highest save rates on Instagram.

Step 4: Platform Adaptation

Adapt each post for the target platform(s):

LinkedIn:

  • First line shows above the fold — must earn the "see more" click
  • Generous line breaks. One thought per line.
  • Emojis: only if they match brand voice, sparingly
  • Sweet spot: 800-1,300 characters
  • End with a question to drive comments

Twitter/X:

  • Single tweets: 280 characters max. Ruthlessly compress.
  • Threads: first tweet stands alone. Each subsequent tweet adds one idea.
  • No hashtags in the body.
  • Observation and Listicle compress well into single tweets.
  • Story and Contrarian Take are better as threads (3-7 tweets).

If generating for both platforms, produce separate versions — don't just trim one for the other.

Step 5: Review and Polish

For each post, check:

  • Hook strength — Would you stop scrolling for the first line?
  • Specificity — Replace any generic advice with concrete details.
  • Voice match — Does it sound like the author, not like a template?
  • Standalone test — Does the post make sense without any other context?

Output Format

# Social Posts: [Topic]

**Date:** [current date]
**Topic:** [topic or idea]
**Platform(s):** [LinkedIn / Twitter / Both]
**Templates Used:** [list]
**Posts Generated:** [count]

---

## Angle Summary

**Core insight:** [one sentence]
**Audience pain:** [what problem this addresses]
**Contrarian angle:** [if applicable]
**Proof available:** [personal story, data, examples]

---

## Post 1: Story
**Trigger:** [Entertains / Empathizes]

### LinkedIn
[Full post text]

### Twitter/X
[Full post or thread]

---

## Post 2: Observation
**Trigger:** [Teaches / Makes me think]

### LinkedIn
[Full post text]

### Twitter/X
[Full post text]

---

[Continue for all posts...]

---

## Trigger Balance

| Trigger | Count |
|---------|-------|
| Entertains | X |
| Teaches | X |
| Empathizes | X |
| Makes me think | X |

Rules

  • The first line of every post is the post. If the hook doesn't work, nothing else matters.
  • Specificity beats cleverness. "Save 12 hours/week on reporting" beats "Work smarter, not harder."
  • Write in the audience's language. If they say "clients" not "customers," your post says "clients."
  • Story posts require real (or realistic) personal experience. If the user doesn't provide anecdotes, ask for them.
  • Not every template works for every topic. If there's no contrarian angle, skip Contrarian Take and generate a second Observation or Listicle instead.
  • These templates are frameworks, not fill-in-the-blanks. The output should read like a human wrote it.
  • Templates from Justin Welsh's Content Operating System.
Weekly Installs
6
GitHub Stars
11
First Seen
14 days ago
Installed on
openclaw5
github-copilot5
codex5
droid5
kimi-cli5
gemini-cli5