social-post-writer
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:
- 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.
- Template(s) to use (optional) — Story, Observation, Contrarian, Listicle, Past vs. Present, Hand-Raiser, Launch, Meme, Carousel, or "all" (default: first 5)
- Platform — LinkedIn, Twitter/X, or both (default: both)
- Voice/tone — who is the author, what's their tone (casual, professional, witty, provocative, etc.)
- Personal experience or proof points (optional) — anecdotes, numbers, or examples to weave in
- Number of posts (optional) — default: 5 (one per template)
- 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:
- Pain/Attention — Open with a specific, relatable moment. Not "I used to struggle with X" but the exact scene.
- Agitate — Make it worse. What happened when the problem continued?
- Intrigue — The turning point. What changed?
- Positive Future — The result. Specific outcomes — numbers, feelings, changes.
- 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:
- Observation — One clear, specific thing you've noticed.
- Evidence — 3-5 specific, concrete points.
- Closer — A punchy, quotable takeaway.
Template 3: Contrarian Take
Challenge something the audience assumes is true.
Emotional trigger: Makes me think / Empathizes
Structure:
- The take — State the contrarian position in one sentence.
- Why the conventional view is wrong — 2-3 reasons.
- 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:
- Frame — "X [things] every [audience] should [know/use/avoid]:"
- List — Each item: name/label + one-line description. Consistent format.
- 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:
- Then — The old way. 3-5 bullet points.
- Now — The new way. 3-5 bullet points (matching structure).
- 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:
- Personal struggle — Open with a relatable problem (2-3 short lines)
- Transformation — What changed, with specific numbers and timeframe
- The offer — A free resource that breaks down your process
- Relief statement — 3 things they WON'T have to do (lowers friction)
- Fascinations — 5-7 curiosity-gap bullets about what's inside
- CTA —
Drop "[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:
- Hook (Line 1) — One short, scroll-stopping line. Never promotional.
- Curiosity inducer (Line 2) — Creates an open loop.
- Story (60-70% of the post) — Build tension, share a relatable struggle.
- Fascinations (3-5 bullets) — Curiosity-gap bullets, 10 words or fewer each.
- 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:
- Choose a meme format — Match the topic's core tension to a template
- 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:
- Cover slide — Bold headline + subtitle (the hook)
- Content slides (5-8) — One point per slide, consistent design
- Summary slide — Recap key points
- 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.