This workflow corresponds to n8n.io template #9164 — we link there as the canonical source.
This workflow follows the Airtable → Chainllm 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 →
{
"nodes": [
{
"id": "573faa7c-5f37-404c-b02d-7bc722a5ec1b",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
11168,
11216
],
"parameters": {
"width": 912,
"height": 1056,
"content": "## \ud83e\udd16 AI Content Repurposing Engine\n\n### \ud83d\udccb Setup Instructions\n\n**Step 1: Configure RSS Feed**\n1. Open \"New Blog Post\" trigger\n2. Replace `https://yourblog.com/feed` with your RSS URL\n \u2022 Common: `/feed`, `/rss`, `/feed.xml`\n3. Test in browser to verify XML loads\n\n**Step 2: Configure Integrations**\n\ud83d\udd39 **Slack Channel**\n \u2022 Right-click channel \u2192 View details \u2192 Copy Channel ID\n \u2022 Replace `REPLACE_WITH_SLACK_CONTENT_CHANNEL_ID`\n\n\ud83d\udd39 **Airtable Setup**\n \u2022 Base ID: Copy from URL \u2192 `appXXXXXXXXXXXXXX`\n \u2022 Table ID: Copy from URL \u2192 `tblYYYYYYYYYYYY`\n \u2022 Create columns: Original_Title, Original_URL, Published_Date, LinkedIn_Post, LinkedIn_Hashtags, Twitter_Thread, Twitter_Hashtags, Instagram_Caption, Instagram_Hashtags, Email_Subject, Email_Body, Video_Script, Suggested_Images, Status\n\n**Step 3: Add Credentials**\n\u2713 OpenAI (GPT-4o)\n\u2713 Unsplash API\n\u2713 Slack OAuth2\n\u2713 Airtable Token\n\n**Step 4: Optional Auto-Posting**\n\ud83d\udd39 **LinkedIn** (disabled by default)\n \u2022 Enable \"Post to LinkedIn\" node\n \u2022 Organization ID: linkedin.com/company/YOUR-ORG \u2192 Copy from URL\n \u2022 Replace `REPLACE_WITH_LINKEDIN_ORG_ID`\n\n\ud83d\udd39 **Twitter** (disabled by default)\n \u2022 Enable \"Post to Twitter\" node\n \u2022 Add Twitter OAuth2 credential\n\n---\n\n### \u2699\ufe0f How It Works\n**RSS** \u2192 **Extract** \u2192 **AI Repurpose** \u2192 **Images** \u2192 **Slack** \u2192 **Airtable** \u2192 **Auto-Post**\n\u2022 LinkedIn: 1300 chars, professional\n\u2022 Twitter: 4-tweet thread\n\u2022 Instagram: Storytelling format\n\u2022 Email: Newsletter snippet\n\u2022 Video: TikTok/Shorts script"
},
"typeVersion": 1
},
{
"id": "dfd2b2e0-b0c5-4d35-9fe4-b57e8d29d60f",
"name": "New Blog Post4",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
12336,
11552
],
"parameters": {
"url": "https://yourblog.com/feed",
"options": {}
},
"typeVersion": 1.1
},
{
"id": "c874f911-4d0d-4c79-8f52-6171f4bec485",
"name": "Fetch Full Content4",
"type": "n8n-nodes-base.httpRequest",
"position": [
12544,
11552
],
"parameters": {
"url": "={{ $json.link }}",
"options": {
"response": {
"response": {
"responseFormat": "text"
}
}
}
},
"typeVersion": 4.2
},
{
"id": "239ce056-5b8e-4207-8935-f00a656b55df",
"name": "Clean & Extract Content4",
"type": "n8n-nodes-base.code",
"position": [
12768,
11552
],
"parameters": {
"jsCode": "// Extract and clean blog content\nconst html = $input.first().json.data;\nconst blogData = $('New Blog Post4').first().json;\n\n// Remove HTML tags\nconst cleanText = html\n .replace(/<script[^>]*>.*?<\\/script>/gi, '')\n .replace(/<style[^>]*>.*?<\\/style>/gi, '')\n .replace(/<[^>]+>/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim();\n\n// Extract first 2000 chars for AI processing\nconst contentPreview = cleanText.substring(0, 2000);\n\nreturn {\n json: {\n title: blogData.title,\n url: blogData.link,\n author: blogData.creator || 'Unknown',\n published_date: blogData.pubDate,\n content: contentPreview,\n full_content: cleanText,\n excerpt: cleanText.substring(0, 300) + '...'\n }\n};"
},
"typeVersion": 2
},
{
"id": "9004171e-7be2-4010-82f9-0ebe2061b7f3",
"name": "AI Content Repurposing Chain4",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
12992,
11552
],
"parameters": {
"text": "=You are a professional content marketer. Repurpose this blog post into 5 different formats optimized for social media platforms.\n\nBlog Title: {{ $json.title }}\nContent: {{ $json.content }}\nURL: {{ $json.url }}\n\nCreate the following in JSON format:\n\n{\n \"linkedin_post\": {\n \"text\": \"Professional LinkedIn post (1300 chars max, engaging hook, 3 key insights, CTA)\",\n \"hashtags\": [\"5 relevant hashtags\"]\n },\n \"twitter_thread\": {\n \"tweets\": [\n \"Tweet 1: Hook (280 chars)\",\n \"Tweet 2: Key point 1 (280 chars)\",\n \"Tweet 3: Key point 2 (280 chars)\",\n \"Tweet 4: Conclusion + link (280 chars)\"\n ],\n \"hashtags\": [\"3 trending hashtags\"]\n },\n \"instagram_caption\": {\n \"text\": \"Engaging Instagram caption (2000 chars max, storytelling format, emoji-friendly)\",\n \"hashtags\": [\"10 relevant hashtags\"],\n \"cta\": \"Call-to-action\"\n },\n \"email_snippet\": {\n \"subject\": \"Compelling email subject line\",\n \"preview_text\": \"Email preview text (100 chars)\",\n \"body\": \"Email newsletter section (300 words, conversational tone)\"\n },\n \"video_script\": {\n \"hook\": \"First 5 seconds hook for TikTok/YouTube Shorts\",\n \"main_points\": [\"3 key talking points\"],\n \"cta\": \"Ending call-to-action\",\n \"duration\": \"30-60 seconds\"\n }\n}\n\nEnsure each format:\n- Maintains the core message\n- Optimized for platform-specific best practices\n- Includes engaging hooks and CTAs\n- Uses appropriate tone for each platform",
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.4
},
{
"id": "6d293490-a188-4471-ad80-9ecd0567ce54",
"name": "OpenAI Chat Model5",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
13008,
11824
],
"parameters": {
"model": "gpt-4o",
"options": {
"maxTokens": 3000,
"temperature": 0.7,
"responseFormat": "json_object"
}
},
"typeVersion": 1
},
{
"id": "b295aa4c-5df9-4f1a-a0aa-4b6bba6c3fe2",
"name": "Structured Output Parser5",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
13120,
11744
],
"parameters": {
"autoFix": true,
"schemaType": "manual",
"inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"linkedin_post\": {\n \"type\": \"object\",\n \"properties\": {\n \"text\": {\n \"type\": \"string\",\n \"description\": \"Professional LinkedIn post (1300 chars max)\"\n },\n \"hashtags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"5 relevant hashtags\"\n }\n },\n \"required\": [\"text\", \"hashtags\"]\n },\n \"twitter_thread\": {\n \"type\": \"object\",\n \"properties\": {\n \"tweets\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"4 tweets, 280 chars each\"\n },\n \"hashtags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"3 trending hashtags\"\n }\n },\n \"required\": [\"tweets\", \"hashtags\"]\n },\n \"instagram_caption\": {\n \"type\": \"object\",\n \"properties\": {\n \"text\": {\n \"type\": \"string\",\n \"description\": \"Engaging Instagram caption (2000 chars max)\"\n },\n \"hashtags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"10 relevant hashtags\"\n },\n \"cta\": {\n \"type\": \"string\",\n \"description\": \"Call-to-action\"\n }\n },\n \"required\": [\"text\", \"hashtags\", \"cta\"]\n },\n \"email_snippet\": {\n \"type\": \"object\",\n \"properties\": {\n \"subject\": {\n \"type\": \"string\",\n \"description\": \"Compelling email subject line\"\n },\n \"preview_text\": {\n \"type\": \"string\",\n \"description\": \"Email preview text (100 chars)\"\n },\n \"body\": {\n \"type\": \"string\",\n \"description\": \"Email newsletter section (300 words)\"\n }\n },\n \"required\": [\"subject\", \"preview_text\", \"body\"]\n },\n \"video_script\": {\n \"type\": \"object\",\n \"properties\": {\n \"hook\": {\n \"type\": \"string\",\n \"description\": \"First 5 seconds hook\"\n },\n \"main_points\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"3 key talking points\"\n },\n \"cta\": {\n \"type\": \"string\",\n \"description\": \"Ending call-to-action\"\n },\n \"duration\": {\n \"type\": \"string\",\n \"description\": \"Video duration (30-60 seconds)\"\n }\n },\n \"required\": [\"hook\", \"main_points\", \"cta\", \"duration\"]\n }\n },\n \"required\": [\"linkedin_post\", \"twitter_thread\", \"instagram_caption\", \"email_snippet\", \"video_script\"]\n}"
},
"typeVersion": 1.3
},
{
"id": "6cc0265d-5c0f-491b-b575-7373e44fdca1",
"name": "Structure Output4",
"type": "n8n-nodes-base.code",
"position": [
13344,
11552
],
"parameters": {
"jsCode": "// Parse AI-generated content\nconst aiResponse = JSON.parse($input.first().json.text);\nconst blogData = $('Clean & Extract Content4').first().json;\n\nreturn {\n json: {\n // Original content\n original_title: blogData.title,\n original_url: blogData.url,\n published_date: blogData.published_date,\n \n // Repurposed content\n linkedin: aiResponse.linkedin_post,\n twitter: aiResponse.twitter_thread,\n instagram: aiResponse.instagram_caption,\n email: aiResponse.email_snippet,\n video: aiResponse.video_script,\n \n // Metadata\n repurposed_date: new Date().toISOString(),\n status: 'ready_for_review'\n }\n};"
},
"typeVersion": 2
},
{
"id": "f931e171-820d-46c9-95a6-c7d1c7d954d4",
"name": "Fetch Images (Unsplash)4",
"type": "n8n-nodes-base.httpRequest",
"position": [
13552,
11552
],
"parameters": {
"url": "=https://api.unsplash.com/search/photos?query={{ $json.original_title.split(' ').slice(0, 3).join(' ') }}&per_page=3",
"options": {},
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth"
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "e24a03c0-4cf6-4b89-aedf-17d6c26c8be3",
"name": "Add Image Suggestions4",
"type": "n8n-nodes-base.code",
"position": [
13776,
11552
],
"parameters": {
"jsCode": "// Add image suggestions to content\nconst content = $('Structure Output4').first().json;\nconst images = $input.first().json.results || [];\n\nreturn {\n json: {\n ...content,\n suggested_images: images.slice(0, 3).map(img => ({\n url: img.urls.regular,\n thumb: img.urls.thumb,\n alt: img.alt_description,\n photographer: img.user.name,\n download_url: img.links.download\n }))\n }\n};"
},
"typeVersion": 2
},
{
"id": "b72f9a26-60e3-4764-8f92-9499481ac249",
"name": "Notify Content Team4",
"type": "n8n-nodes-base.slack",
"position": [
14000,
11552
],
"parameters": {
"text": "=\ud83d\udcdd *New Content Ready for Multi-Platform Publishing*\n\n*Original Article:*\n\u2022 Title: {{ $json.original_title }}\n\u2022 URL: {{ $json.original_url }}\n\u2022 Published: {{ new Date($json.published_date).toLocaleDateString() }}\n\n*Repurposed Formats Ready:*\n\u2705 LinkedIn Post ({{ $json.linkedin.text.length }} chars)\n\u2705 Twitter Thread ({{ $json.twitter.tweets.length }} tweets)\n\u2705 Instagram Caption ({{ $json.instagram.text.length }} chars)\n\u2705 Email Newsletter Snippet\n\u2705 Video Script ({{ $json.video.duration }})\n\n*Preview - LinkedIn:*\n{{ $json.linkedin.text.substring(0, 200) }}...\n\n*Hashtags:* {{ $json.linkedin.hashtags.join(' ') }}\n\n*Suggested Images:* {{ $json.suggested_images.length }} options available\n\n\ud83d\udc40 Review and approve to publish \u2192",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "REPLACE_WITH_SLACK_CONTENT_CHANNEL_ID"
},
"otherOptions": {
"includeLinkToWorkflow": false
},
"authentication": "oAuth2"
},
"credentials": {
"slackOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
},
{
"id": "7f8ab89a-16f4-4084-9b26-7ae26aa74d94",
"name": "Save to Content Library4",
"type": "n8n-nodes-base.airtable",
"position": [
14224,
11552
],
"parameters": {
"base": {
"__rl": true,
"mode": "id",
"value": "REPLACE_WITH_AIRTABLE_BASE_ID"
},
"table": {
"__rl": true,
"mode": "id",
"value": "REPLACE_WITH_AIRTABLE_TABLE_ID"
},
"columns": {
"value": {
"Status": "Pending Review",
"Email_Body": "={{ $json.email.body }}",
"Created_Date": "={{ $json.repurposed_date }}",
"Original_URL": "={{ $json.original_url }}",
"Video_Script": "={{ $json.video.main_points.join('\\n') }}",
"Email_Subject": "={{ $json.email.subject }}",
"LinkedIn_Post": "={{ $json.linkedin.text }}",
"Original_Title": "={{ $json.original_title }}",
"Twitter_Thread": "={{ $json.twitter.tweets.join('\\n\\n') }}",
"Instagram_Caption": "={{ $json.instagram.text }}",
"LinkedIn_Hashtags": "={{ $json.linkedin.hashtags.join(', ') }}",
"Instagram_Hashtags": "={{ $json.instagram.hashtags.join(', ') }}"
},
"mappingMode": "defineBelow"
},
"options": {},
"operation": "create"
},
"typeVersion": 2
},
{
"id": "1b3f2deb-15af-47d3-8ab2-5015142950ce",
"name": "Post to LinkedIn (Optional)4",
"type": "n8n-nodes-base.linkedIn",
"disabled": true,
"position": [
14432,
11456
],
"parameters": {
"text": "={{ $json.linkedin.text }}\\n\\n{{ $json.linkedin.hashtags.map(h => '#' + h).join(' ') }}\\n\\nRead more: {{ $json.original_url }}",
"additionalFields": {}
},
"typeVersion": 1
},
{
"id": "1105860e-c1cd-41ff-916e-7a7fff417d62",
"name": "Post to Twitter (Optional)4",
"type": "n8n-nodes-base.twitter",
"disabled": true,
"position": [
14432,
11664
],
"parameters": {
"text": "={{ $json.twitter.tweets[0] }}",
"additionalFields": {}
},
"typeVersion": 2
}
],
"connections": {
"New Blog Post4": {
"main": [
[
{
"node": "Fetch Full Content4",
"type": "main",
"index": 0
}
]
]
},
"Structure Output4": {
"main": [
[
{
"node": "Fetch Images (Unsplash)4",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model5": {
"ai_languageModel": [
[
{
"node": "AI Content Repurposing Chain4",
"type": "ai_languageModel",
"index": 0
},
{
"node": "Structured Output Parser5",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Fetch Full Content4": {
"main": [
[
{
"node": "Clean & Extract Content4",
"type": "main",
"index": 0
}
]
]
},
"Notify Content Team4": {
"main": [
[
{
"node": "Save to Content Library4",
"type": "main",
"index": 0
}
]
]
},
"Add Image Suggestions4": {
"main": [
[
{
"node": "Notify Content Team4",
"type": "main",
"index": 0
}
]
]
},
"Clean & Extract Content4": {
"main": [
[
{
"node": "AI Content Repurposing Chain4",
"type": "main",
"index": 0
}
]
]
},
"Fetch Images (Unsplash)4": {
"main": [
[
{
"node": "Add Image Suggestions4",
"type": "main",
"index": 0
}
]
]
},
"Save to Content Library4": {
"main": [
[
{
"node": "Post to LinkedIn (Optional)4",
"type": "main",
"index": 0
},
{
"node": "Post to Twitter (Optional)4",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser5": {
"ai_outputParser": [
[
{
"node": "AI Content Repurposing Chain4",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"AI Content Repurposing Chain4": {
"main": [
[
{
"node": "Structure Output4",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
httpHeaderAuthslackOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
• RSS feed monitors your blog for new posts automatically • Extracts and cleans full article content from the blog post • AI Chain (GPT-4o) transforms content into 5 platform-optimized formats (LinkedIn, Twitter, Instagram, Email, Video) • Unsplash API suggests relevant images…
Source: https://n8n.io/workflows/9164/ — 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.
This workflow is built for creators, solopreneurs, SaaS founders, and agencies looking to automate their social media content process from idea to publication. It combines the power of OpenAI, Google
Orra - Création de contenu. Uses outputParserStructured, lmChatOpenAi, httpRequest, facebookGraphApi. Event-driven trigger; 47 nodes.
This workflow is ideal for individuals, marketers, agencies, and brands who want to effortlessly automate the entire blogging and social media process—from idea generation to promotion. Its primary go
✨🤖Automated AI Powered Social Media Content Factory for X + Facebook + Instagram + LinkedIn. Uses outputParserStructured, lmChatGoogleGemini, lmChatOpenAi, httpRequest. Event-driven trigger; 57 nodes
Social Media Managers and Digital Marketers seeking to streamline content production across 7+ platforms (X/Twitter, Instagram, LinkedIn, Facebook, TikTok, Threads, YouTube Shorts) using AI-powered au