This workflow corresponds to n8n.io template #16158 — we link there as the canonical source.
This workflow follows the Chainllm → Gmail recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"meta": {
"templateCredsSetupCompleted": false
},
"name": "AI Content Repurposer: turn each new blog/RSS post into LinkedIn, X & a content-calendar draft",
"tags": [],
"nodes": [
{
"id": "b2c3d4e5-0001-4a10-9a01-bb2222220001",
"name": "Overview",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1280,
40
],
"parameters": {
"width": 540,
"height": 780,
"content": "## \ud83d\udd01 AI Content Repurposer\n\n**Who it's for:** Founders, marketers, agencies and creators who publish long-form content (blog, newsletter, YouTube) and want it turned into social posts automatically \u2014 without hiring a writer for every channel.\n\n**What it does:** On a schedule it pulls the newest item from any RSS feed, then an AI rewrites it in *your* brand voice into:\n- an SEO-optimized blog rewrite (title + meta description)\n- a LinkedIn post\n- an X / Twitter thread\n\nEvery piece is logged to a Google Sheets **content calendar**, sent to you as a **Gmail draft** to review, and shared in **Slack**.\n\n### How it works\n1. **Schedule Trigger** runs daily.\n2. **Set Brand & Source** holds your feed URL, audience and tone \u2014 *edit this one node*.\n3. **Get Latest Article** + **Take Newest Only** fetch one fresh post.\n4. **Repurpose into Content** returns `{ seo_title, meta_description, blog_post, linkedin_post, twitter_thread, hashtags }`.\n5. **Save to Content Calendar**, **Draft for Review** and **Share in Slack** distribute it.\n\n### Setup (~5 min)\n- Add **OpenAI**, **Google Sheets**, **Gmail** & **Slack** credentials.\n- Open **Set Brand & Source**: paste your RSS feed, audience and brand voice.\n- Pick your sheet & Slack channel, then activate."
},
"typeVersion": 1
},
{
"id": "b2c3d4e5-0002-4a10-9a01-bb2222220002",
"name": "Warning",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1280,
840
],
"parameters": {
"color": 3,
"width": 540,
"height": 220,
"content": "## \u26a0\ufe0f Before you run\n- Each run = ~1 OpenAI call. Use a cheap model (e.g. `gpt-4o-mini`).\n- **Take Newest Only** keeps the run to a single post so you don't reprocess the whole feed; raise the limit to backfill.\n- Output is saved as a **draft** \u2014 review before publishing. Connect a LinkedIn / X / Buffer node later to auto-publish.\n- This template ships **without credentials** \u2014 connect your own OpenAI, Google Sheets, Gmail & Slack accounts."
},
"typeVersion": 1
},
{
"id": "b2c3d4e5-0003-4a10-9a01-bb2222220003",
"name": "Section: Source",
"type": "n8n-nodes-base.stickyNote",
"position": [
-680,
-20
],
"parameters": {
"color": 4,
"width": 880,
"height": 600,
"content": "## 1 \u00b7 Pick up the latest content\nRun on a schedule, define your brand voice + feed, then fetch the single newest post.\n**Edit only the \"Set Brand & Source\" node.**"
},
"typeVersion": 1
},
{
"id": "b2c3d4e5-0004-4a10-9a01-bb2222220004",
"name": "Section: Repurpose",
"type": "n8n-nodes-base.stickyNote",
"position": [
220,
-20
],
"parameters": {
"color": 5,
"width": 360,
"height": 600,
"content": "## 2 \u00b7 Repurpose with AI\nRewrite the source into an SEO blog post, a LinkedIn post and an X/Twitter thread \u2014 all in your brand voice \u2014 as structured JSON."
},
"typeVersion": 1
},
{
"id": "b2c3d4e5-0005-4a10-9a01-bb2222220005",
"name": "Section: Distribute",
"type": "n8n-nodes-base.stickyNote",
"position": [
600,
-20
],
"parameters": {
"color": 6,
"width": 540,
"height": 600,
"content": "## 3 \u00b7 Distribute & review\nLog every piece to a Google Sheets content calendar, send yourself a Gmail draft to review, and share it in your team's Slack channel."
},
"typeVersion": 1
},
{
"id": "b2c3d4e5-0010-4a10-9a01-bb2222220010",
"name": "Every Day",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-620,
240
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 24
}
]
}
},
"typeVersion": 1.2
},
{
"id": "b2c3d4e5-0011-4a10-9a01-bb2222220011",
"name": "Set Brand & Source",
"type": "n8n-nodes-base.set",
"position": [
-380,
240
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "s1",
"name": "rss_feed_url",
"type": "string",
"value": "https://blog.n8n.io/rss/"
},
{
"id": "s2",
"name": "audience",
"type": "string",
"value": "Founders and marketers who want practical automation tips"
},
{
"id": "s3",
"name": "brand_voice",
"type": "string",
"value": "Clear, helpful and confident. No hype, no emojis-spam, no jargon. Short sentences. Lead with the value."
}
]
}
},
"typeVersion": 3.4
},
{
"id": "b2c3d4e5-0012-4a10-9a01-bb2222220012",
"name": "Get Latest Article",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
-140,
240
],
"parameters": {
"url": "={{ $json.rss_feed_url }}",
"options": {}
},
"typeVersion": 1.1
},
{
"id": "b2c3d4e5-0013-4a10-9a01-bb2222220013",
"name": "Take Newest Only",
"type": "n8n-nodes-base.limit",
"position": [
80,
240
],
"parameters": {
"maxItems": 1
},
"typeVersion": 1
},
{
"id": "b2c3d4e5-0014-4a10-9a01-bb2222220014",
"name": "Repurpose into Content",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
300,
240
],
"parameters": {
"text": "=You are a senior content strategist. Repurpose the source content below for the brand.\n\nAudience: {{ $('Set Brand & Source').item.json.audience }}\nBrand voice: {{ $('Set Brand & Source').item.json.brand_voice }}\n\nSource title:\n{{ $json.title }}\n\nSource content:\n{{ $json.contentSnippet || $json.content }}\n\nSource link: {{ $json.link }}\n\nReturn:\n- seo_title: a punchy, search-friendly title (<= 60 chars).\n- meta_description: a 150-160 char summary for SEO.\n- blog_post: a rewritten, original blog post in markdown (~400-600 words) in the brand voice. Do not copy sentences verbatim.\n- linkedin_post: a LinkedIn post (hook + value + soft CTA), no more than 1300 chars.\n- twitter_thread: an X/Twitter thread as an array of tweets, each <= 270 chars.\n- hashtags: 3-5 relevant hashtags as a single string.",
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.5
},
{
"id": "b2c3d4e5-0015-4a10-9a01-bb2222220015",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
260,
480
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "gpt-4o-mini"
},
"options": {}
},
"typeVersion": 1.2
},
{
"id": "b2c3d4e5-0016-4a10-9a01-bb2222220016",
"name": "Parse Content (JSON)",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
440,
480
],
"parameters": {
"jsonSchemaExample": "{\n \"seo_title\": \"5 Automations That Save Teams 10 Hours a Week\",\n \"meta_description\": \"Practical, no-code automations any team can set up this week to cut busywork and move faster.\",\n \"blog_post\": \"## Intro\\n...\",\n \"linkedin_post\": \"Most teams lose hours to copy-paste work...\",\n \"twitter_thread\": [\"1/ Most teams waste 10 hrs/week on busywork. Here are 5 fixes:\", \"2/ ...\"],\n \"hashtags\": \"#automation #nocode #productivity\"\n}"
},
"typeVersion": 1.2
},
{
"id": "b2c3d4e5-0017-4a10-9a01-bb2222220017",
"name": "Save to Content Calendar",
"type": "n8n-nodes-base.googleSheets",
"position": [
660,
100
],
"parameters": {
"columns": {
"value": {
"Date": "={{ $now.toISO() }}",
"Status": "Draft",
"SEO Title": "={{ $json.output.seo_title }}",
"Source Link": "={{ $('Take Newest Only').item.json.link }}",
"Source Title": "={{ $('Take Newest Only').item.json.title }}",
"LinkedIn Post": "={{ $json.output.linkedin_post }}",
"Twitter Thread": "={{ $json.output.twitter_thread.join('\\n\\n') }}"
},
"schema": [],
"mappingMode": "defineBelow",
"matchingColumns": []
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "id",
"value": "gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "YOUR_GOOGLE_SHEET_ID"
}
},
"typeVersion": 4.5
},
{
"id": "b2c3d4e5-0018-4a10-9a01-bb2222220018",
"name": "Draft for Review",
"type": "n8n-nodes-base.gmail",
"position": [
660,
300
],
"parameters": {
"message": "=SEO TITLE\n{{ $json.output.seo_title }}\n\nMETA DESCRIPTION\n{{ $json.output.meta_description }}\n\n=== BLOG POST ===\n{{ $json.output.blog_post }}\n\n=== LINKEDIN ===\n{{ $json.output.linkedin_post }}\n\n=== X / TWITTER THREAD ===\n{{ $json.output.twitter_thread.join('\\n\\n') }}\n\n{{ $json.output.hashtags }}",
"options": {},
"subject": "=Content draft: {{ $json.output.seo_title }}",
"resource": "draft",
"emailType": "text"
},
"typeVersion": 2.1
},
{
"id": "b2c3d4e5-0019-4a10-9a01-bb2222220019",
"name": "Share in Slack",
"type": "n8n-nodes-base.slack",
"position": [
660,
500
],
"parameters": {
"text": "=:memo: *New content ready to review:* {{ $json.output.seo_title }}\nFrom: {{ $('Take Newest Only').item.json.link }}\n\n*LinkedIn draft:*\n{{ $json.output.linkedin_post }}",
"select": "channel",
"resource": "message",
"channelId": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultName": ""
},
"operation": "post",
"otherOptions": {}
},
"typeVersion": 2.3
}
],
"settings": {
"executionOrder": "v1"
},
"connections": {
"Every Day": {
"main": [
[
{
"node": "Set Brand & Source",
"type": "main",
"index": 0
}
]
]
},
"Take Newest Only": {
"main": [
[
{
"node": "Repurpose into Content",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Repurpose into Content",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Get Latest Article": {
"main": [
[
{
"node": "Take Newest Only",
"type": "main",
"index": 0
}
]
]
},
"Set Brand & Source": {
"main": [
[
{
"node": "Get Latest Article",
"type": "main",
"index": 0
}
]
]
},
"Parse Content (JSON)": {
"ai_outputParser": [
[
{
"node": "Repurpose into Content",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Repurpose into Content": {
"main": [
[
{
"node": "Save to Content Calendar",
"type": "main",
"index": 0
},
{
"node": "Draft for Review",
"type": "main",
"index": 0
},
{
"node": "Share in Slack",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow runs daily, pulls the latest post from an RSS feed, and uses OpenAI to repurpose it into an SEO blog rewrite, a LinkedIn post, and an X/Twitter thread, then logs the drafts to Google Sheets, creates a Gmail draft, and posts a preview to Slack. Runs every 24 hours…
Source: https://n8n.io/workflows/16158/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Created by: Peyton Leveillee Last updated: October 2025
This n8n-powered workflow automates the entire lifecycle of real estate lead intake, qualification, routing, assignment, and reporting across multiple channels. It brings WhatsApp inquiries and websit
Categories Content Creation AI Automation Publishing Social Media
My workflow 14. Uses rssFeedRead, chainLlm, lmChatOpenAi, openWeatherMap. Scheduled trigger; 40 nodes.
This workflow automates end-to-end ESG (Environmental, Social, and Governance) sustainability reporting for enterprise sustainability teams, compliance officers, and green governance leads. It solves