The n8n Workflow That Turns One Blog Post Into 4 Pieces of Content
I publish one article a week. But I was leaving 80% of its value on the table.
The article could become:
- A LinkedIn thread
- A Twitter thread
- An email sequence
- A Reddit post
But I wasn't doing any of that. I'd write once, publish once, move on.
So I built an n8n workflow that does it automatically.
Today I'm sharing the exact setup — free template at the end.
The Problem: Write Once, Reuse Once
A 2000-word blog post takes 4-5 hours to research and write. The distribution took an hour.
Then it would get maybe 50 views in the first week because I wasn't repurposing it.
Meanwhile, Indie Hackers were driving 10x the traffic with the same content, just reformatted.
I realized: My content format was wrong, not my ideas.
A Twitter thread from the same article could get 5K views. A Reddit post could get 1K. An email could convert 2% of subscribers.
But writing 4 separate pieces from 1 article? That's 16-20 hours of work per week.
That's where automation came in.
The Solution: n8n + Claude
Here's the workflow:
- I publish a blog post → triggers webhook
- n8n receives the URL
- Fetch the full article (using fetch node)
-
Pass to Claude with custom prompts for each format:
- Twitter thread (280 chars per tweet, 3-5 tweets, hook on first one)
- LinkedIn article (200-300 words, 3-5 sections, professional tone)
- Email subject line + body (hook → story → CTA, 150-200 words)
- Reddit title + post (frontpage potential, acknowledge niche community, add sources)
- Store outputs in Airtable or Notion
- Alert me to schedule posts
Result: 20 minutes of distribution work becomes 2 minutes of scheduling.
The n8n Setup (Step by Step)
Step 1: Trigger from Webhook
When you publish, POST to your n8n webhook with:
{
"url": "https://yoursite.com/post-title",
"title": "The Article Title"
}
In n8n:
- Use "Webhook" trigger node
- Set method: POST
- Save the webhook URL
Step 2: Fetch Article Content
Use the HTTP Request node:
- Method: GET
- URL:
{{ $json.url }} - Authentication: None (if public)
Add a function node after to extract just the article body (remove nav, footer, etc):
const html = $json.body;
// Simple extraction: get <article> tag or <main> tag content
const articleMatch = html.match(/<article[^>]*>(.*)<\/article>/is)
|| html.match(/<main[^>]*>(.*)<\/main>/is);
return {
content: articleMatch ? articleMatch[1] : html,
url: $json.url,
title: $json.title
};
Step 3: Generate Twitter Thread
Add an OpenAI (or Claude via API) node:
Prompt:
You are a Twitter expert. Convert this article into a Twitter thread.
Rules:
1. Maximum 5 tweets
2. Each tweet under 280 characters
3. First tweet is the hook — make it stop the scroll
4. Use numbers, questions, or patterns that work on Twitter
5. Last tweet is a CTA with link
6. DO NOT use hashtags (they reduce reach)
7. Output as a JSON array of tweet objects: [{"tweet": "..."}, ...]
Article:
{{ $json.content }}
Title: {{ $json.title }}
Keep it snappy. Be specific. Add one emoji per tweet max.
Save output to variable thread.
Step 4: Generate LinkedIn Article
Add another Claude node:
Prompt:
Convert this article into a LinkedIn article (professional, B2B angle).
Rules:
1. 200-300 words
2. 3-5 sections with bold headers
3. Start with a hook about business value
4. End with a specific, actionable takeaway
5. Tone: Professional but personable, not corporate
6. Include a relevant emoji in the first section
Article:
{{ $json.content }}
Original title: {{ $json.title }}
The hook should speak to LinkedIn's audience (professionals, founders, builders).
Step 5: Generate Email
Prompt:
Create an email subject line and body from this article.
Format your response as:
SUBJECT: [subject line, max 60 chars]
---
[email body]
Rules:
1. Subject must create curiosity (question, number, or pattern)
2. Body: 150-200 words max
3. Structure: Hook → 3 key points → CTA
4. CTA: "Read the full article here: [LINK]"
5. Tone: Conversational, like talking to a friend
Article:
{{ $json.content }}
Make the subject line something you'd click on.
Step 6: Generate Reddit Post
Prompt:
Create a Reddit post from this article. Choose the best subreddit for it.
Format:
SUBREDDIT: [r/subreddit_name]
TITLE: [post title, max 300 chars]
---
[post body]
Rules:
1. Title must follow Reddit's style (specific, not clickbait)
2. Body: 300-500 words
3. Include sources/links naturally
4. Acknowledge the community tone
5. End with a question to start discussion
Article:
{{ $json.content }}
Link: {{ $json.url }}
Pick the ONE subreddit where this would get the most upvotes.
Step 7: Store Results in Airtable
Use the Airtable node:
- Table: "Content Repurposing"
- Fields:
- Original URL
- Original Title
- Twitter thread (array → store as JSON)
- LinkedIn article
- Email subject + body
- Reddit post
- Status: "Ready to Schedule"
- Created: today's date
Step 8: Send Slack Notification
Use Slack node:
✅ Content repurposed!
📄 Original: {{ $json.title }}
🐦 Twitter: 5 tweets ready
💼 LinkedIn: Article ready
📧 Email: Subject + body ready
🔴 Reddit: Post ready
View in Airtable: [link]
Results
Before automation:
- 1 article per week
- 0 Twitter threads
- 0 LinkedIn posts
- 0 email sends
- 0 Reddit posts
- ~100 views per article
After automation:
- 1 article per week
- 5 tweets per article (300+ impressions avg)
- 1 LinkedIn article per week (50+ comments avg)
- 1 weekly email (2-5% CTR)
- 1 Reddit post per week (200-1K upvotes depending on timing)
- ~2K+ total views per article across platforms
Time saved: 15+ hours per week
Reach multiplied: 10-20x depending on content
The Template (Free)
I've made this n8n workflow public for you:
Download/Import n8n Workflow →
To use it:
- Get your n8n account (free tier works, but check API call limits)
- Add Claude API key (or OpenAI if you prefer)
- Connect Airtable (free tier works)
- Update the blog URL field in the webhook example
- Create a Slack webhook (optional, but nice to have)
- Test it:
curl -X POST https://your-n8n-webhook.url \
-H "Content-Type: application/json" \
-d '{"url": "https://yoursite.com/article", "title": "Test"}'
Costs
- n8n: Free tier (limited), or $25/mo for unlimited
- Claude API: ~$0.05 per article (4 repurposing calls)
- Airtable: Free tier (limited records) or $20/mo
- Total: ~$25-50/mo for a full setup
ROI: 10-20x more reach from the same content.
Why This Works
Each format has different algorithms. Twitter rewards engagement, LinkedIn rewards connections, Reddit rewards community participation. Same article, different audience.
Your audience is fragmented. Some people only read dev.to. Some only check Twitter. Some prefer Reddit. You need to meet them where they are.
Automation removes friction. The workflow takes 45 seconds. Doing it manually takes 3+ hours. You'll actually do it every week.
Claude is good at format conversion. It understands tone, audience, and constraints. The output is ready to post (minor edits maybe).
Next Steps
- Try the template on your next blog post
- Track what platforms drive the most value for your niche
- Adjust the prompts based on what your audience responds to
- Add more outputs: YouTube description, newsletter segment, Substack crosspost
Questions? Drop them below.
P.S. This workflow is why I can publish consistently without burning out. Content creation isn't hard — distribution is. Automate distribution, and suddenly one good idea becomes 5 pieces of value.
Top comments (0)