This workflow corresponds to n8n.io template #16309 — we link there as the canonical source.
This workflow follows the Chainllm → HTTP Request 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 →
{
"id": "PLUSdT5qkKZrNMfX",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Create LinkedIn carousel post from blog post",
"tags": [
{
"id": "8rcWTt5CS63KQzEw",
"name": "socialmedia",
"createdAt": "2026-06-02T08:57:53.950Z",
"updatedAt": "2026-06-02T08:57:53.950Z"
},
{
"id": "8xBogo6fq3RQfLdT",
"name": "autopost",
"createdAt": "2026-06-02T09:01:25.831Z",
"updatedAt": "2026-06-02T09:01:25.831Z"
},
{
"id": "E2V7Vb6mVjkhPHEs",
"name": "blog",
"createdAt": "2026-06-02T08:57:45.531Z",
"updatedAt": "2026-06-02T08:57:45.531Z"
},
{
"id": "ESvKanJ6OwKaH6u4",
"name": "posta",
"createdAt": "2026-06-02T09:01:40.639Z",
"updatedAt": "2026-06-02T09:01:40.639Z"
},
{
"id": "YoazfSGedHuWQz2y",
"name": "linkedin",
"createdAt": "2026-06-04T10:18:35.324Z",
"updatedAt": "2026-06-04T10:18:35.324Z"
}
],
"nodes": [
{
"id": "4e36d194-eb12-48fe-8ffd-09dbc45f5f14",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-848,
-448
],
"parameters": {
"width": 480,
"height": 864,
"content": "## Create LinkedIn carousel post from blog post\n\n### How it works\n\n1. A manual trigger reads the newest article from your blog's RSS feed.\n2. An LLM turns the article into slide copy, which is parsed and split into individual slides.\n3. For each slide a background image is generated with an AI model, downloaded, and uploaded to Posta.\n4. The slides are re-assembled and rendered into a text carousel PDF.\n5. Posta publishes the carousel to your connected LinkedIn account.\n\n### Setup steps\n\n- [ ] Add your Posta credential (API token) to the Posta nodes\n- [ ] Add your DeepSeek (LLM) credential to the 'Basic LLM Chain' model\n- [ ] Add your fal.ai credential for AI background generation\n- [ ] Set the RSS feed URL and pick the LinkedIn account in 'Get many social accounts'\n\n### Customization\n\nAdjust the number of slides and the 'theme_color' to match your brand styling."
},
"typeVersion": 1
},
{
"id": "a8f16864-4140-4359-86bb-f3aa5e912fac",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-288,
-96
],
"parameters": {
"color": 7,
"width": 704,
"height": 368,
"content": "## Fetch latest blog post\n\nStarts the run, reads the RSS feed, and selects the latest post."
},
"typeVersion": 1
},
{
"id": "cff07305-37a3-4bd8-b7c6-b1b0d9e2e10b",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
448,
96
],
"parameters": {
"color": 7,
"width": 240,
"height": 320,
"content": "## Load target accounts\n\nFetches the connected LinkedIn account to publish to."
},
"typeVersion": 1
},
{
"id": "c349713b-94a5-4985-9d16-51e00eda3b25",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
528,
-448
],
"parameters": {
"color": 7,
"width": 832,
"height": 512,
"content": "## Write and split slides\n\nAn LLM writes the carousel copy, which is parsed and split into individual slides."
},
"typeVersion": 1
},
{
"id": "43007709-31a8-4af9-9c38-8ed152ac2d3a",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1520,
-288
],
"parameters": {
"color": 7,
"width": 1104,
"height": 352,
"content": "## Generate slide backgrounds\n\nSets the theme color and generates, downloads, and uploads an AI background per slide."
},
"typeVersion": 1
},
{
"id": "a6fabe76-fa14-4899-9761-9d80d672b198",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
2688,
-208
],
"parameters": {
"color": 7,
"width": 720,
"height": 272,
"content": "## Assemble and publish carousel\n\nRe-assembles the slides into a text carousel PDF and posts it to LinkedIn."
},
"typeVersion": 1
},
{
"id": "905cdfa8-0d33-44c4-9f75-90e438207355",
"name": "When clicking \u2018Execute workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-240,
112
],
"parameters": {},
"typeVersion": 1
},
{
"id": "db75812c-7715-44ff-adec-97e5b889358f",
"name": "RSS Read",
"type": "n8n-nodes-base.rssFeedRead",
"notes": "Add the link to the RSS feed",
"position": [
64,
16
],
"parameters": {
"url": "https://getposta.app/feed.xml",
"options": {}
},
"typeVersion": 1.2
},
{
"id": "ae315a5d-b1c9-415b-b38b-5897bbf1b6df",
"name": "Create a post",
"type": "n8n-nodes-posta.posta",
"position": [
3264,
-96
],
"parameters": {
"caption": "={{ $('Parse slides JSON').item.json.caption }}{{ $('Latest post').item.json.link }}",
"additionalFields": {
"hashtags": "={{ $('Parse slides JSON').item.json.tags }}",
"mediaIds": "={{ $json.media_id }}"
},
"socialAccountIds": "35",
"platformConfigurations": {
"linkedin": {
"documentTitle": "={{ $json.title }}"
}
}
},
"credentials": {
"postaApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "d92a5744-c0e1-4619-b336-c407bb27a7f1",
"name": "Get many social accounts",
"type": "n8n-nodes-posta.posta",
"position": [
496,
256
],
"parameters": {
"resource": "socialAccount"
},
"credentials": {
"postaApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "c77ec554-304d-41c5-b1b0-315d323b43f1",
"name": "Upload media",
"type": "n8n-nodes-posta.posta",
"position": [
2480,
-96
],
"parameters": {
"resource": "media"
},
"credentials": {
"postaApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "6589116c-f42b-4354-8e0f-e358b133d62c",
"name": "Download generated background",
"type": "n8n-nodes-base.httpRequest",
"position": [
2208,
-96
],
"parameters": {
"url": "={{ $json.images[0].url }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"typeVersion": 4.4
},
{
"id": "4798dbe5-598c-4075-a770-1c6f4ed68685",
"name": "Latest post",
"type": "n8n-nodes-base.code",
"position": [
272,
16
],
"parameters": {
"jsCode": "const items = $input.all();\n items.sort((a, b) =>\n new Date(b.json.isoDate || b.json.pubDate).getTime() -\n new Date(a.json.isoDate || a.json.pubDate).getTime()\n );\n return items.length ? [items[0]] : [];"
},
"typeVersion": 2
},
{
"id": "7d069dce-b703-4a42-ac33-0598d865e1e0",
"name": "Basic LLM Chain",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
576,
-336
],
"parameters": {
"text": "=Turn the article below into a 5-slide LinkedIn carousel.\n\n Rules:\n - Exactly 5 slides.\n - Slide 1 = a scroll-stopping hook. Slides 2\u20134 = the key takeaways (one idea per slide). Slide 5 = a clear call to action.\n - Each slide has a short \"title\" (max ~6 words) and a \"body\" of 2\u20133 punchy lines (max ~360 characters). Plain text, no markdown, no emojis in the title.\n Each slide also has an \"image_prompt\": a VERY short phrase describing one or two soft simple shapes and 2 muted colors on a deep background \u2014 e.g. \"a soft coral orb on\n deep plum\" or \"two gentle mauve shapes on deep indigo\". Keep colors muted and gentle, never neon or harsh. Shapes and colors only \u2014 no scenes, no nature, no people, no text.\n - Also write 3\u20135 relevant \"tags\" (hashtag words, WITHOUT the # symbol) and a 1\u20132 sentence LinkedIn \"caption\" to accompany the carousel.\n - Base everything strictly on the article \u2014 do not invent facts, names, or numbers.\n\n Return ONLY raw minified JSON \u2014 no markdown, no code fences, no commentary:\n {\"caption\":\"...\",\"tags\":[\"...\",\"...\"],\"slides\":[{\"title\":\"...\",\"body\":\"...\",\"image_prompt\":\"...\"}]}\n\n ARTICLE TITLE: {{ $json.title }}\n\n ARTICLE:\n {{ $json[\"content:encoded\"] }}",
"batching": {},
"messages": {
"messageValues": [
{
"message": "You are an expert LinkedIn carousel copywriter. You always return valid minified JSON and nothing else."
}
]
},
"promptType": "define"
},
"typeVersion": 1.9
},
{
"id": "9335ef86-74f8-492f-84eb-6c4f25bc05c5",
"name": "DeepSeek Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatDeepSeek",
"position": [
576,
-80
],
"parameters": {
"model": "deepseek-v4-pro",
"options": {}
},
"credentials": {
"deepSeekApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "0ef31a8f-a23e-452f-8a44-bdb887a57057",
"name": "Split into slides",
"type": "n8n-nodes-base.splitOut",
"position": [
1216,
-336
],
"parameters": {
"options": {},
"fieldToSplitOut": "slides"
},
"typeVersion": 1
},
{
"id": "3a3361fd-dfd8-4b57-96e4-648e8f0d6cb7",
"name": "Parse slides JSON",
"type": "n8n-nodes-base.code",
"position": [
928,
-336
],
"parameters": {
"jsCode": "// \"Run Once for Each Item\" \u2014 or All Items\n const raw = String($json.text ?? $json.output ?? '');\n const m = raw.match(/```(?:json)?\\s*([\\s\\S]*?)```/i);\n const jsonStr = m ? m[1] : raw.slice(raw.indexOf('{'), raw.lastIndexOf('}') + 1);\n return [{ json: JSON.parse(jsonStr.trim()) }];\n"
},
"typeVersion": 2
},
{
"id": "d037dbcb-88e9-4daf-b655-7b63bdb29a6e",
"name": "Generate media using AI model",
"type": "@fal-ai/n8n-nodes-fal.falAi",
"position": [
1936,
-176
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "fal-ai/flux/schnell",
"cachedResultName": "FLUX.1 [schnell] [text-to-image]"
},
"options": {
"maxWaitTime": 600,
"pollInterval": 5,
"waitForCompletion": true
},
"modelParameters": {
"parameters": [
{
"value": "square_hd",
"parameter": "image_size"
},
{
"value": "={{ $json.theme_color }} smooth gradient, minimal flat graphic background, a couple of subtle soft tonal shapes in the same color slightly lighter, clean modern,\n lots of plain empty space, professional, no text",
"parameter": "prompt"
}
]
}
},
"credentials": {
"falAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "54b17e8d-38c1-4fa8-9bf7-a59ce2611c7e",
"name": "Re-assemble slides",
"type": "n8n-nodes-base.code",
"position": [
2736,
-96
],
"parameters": {
"jsCode": "\n const text = $('Split into slides').all(); \n\n return [{\n json: {\n slides: $input.all().map((up, i) => ({\n media_id: up.json.media?.id ?? up.json.media_id ?? up.json.id,\n title: text[i].json.title,\n body: text[i].json.body,\n })),\n },\n }];"
},
"typeVersion": 2
},
{
"id": "b07ff25d-45b4-4fb5-9c87-6c58d21aafab",
"name": "Generate text carousel PDF",
"type": "n8n-nodes-posta.posta",
"position": [
2992,
-96
],
"parameters": {
"slides": "={{ JSON.stringify($json.slides.map(s => ({ media_id: s.media_id, title: s.title, body: s.body }))) }}",
"resource": "media",
"operation": "generateTextCarouselPdf",
"logoMediaId": "3cd2fd96-1281-4742-b8e8-f6a65959b3d5"
},
"credentials": {
"postaApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "afaf794a-db70-428c-a24a-ab150a5dd8b6",
"name": "theme_color",
"type": "n8n-nodes-base.set",
"position": [
1568,
-176
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "a1aa8531-76b0-46b0-a086-0bd10267f8ca",
"name": "theme_color",
"type": "string",
"value": "dark blue"
},
{
"id": "6f3c8682-8438-4d6f-9a6c-b0c7bc484421",
"name": "title",
"type": "string",
"value": "={{ $json.title }}"
},
{
"id": "838aea94-15c5-4e78-9de5-9a71aea42079",
"name": "image_prompt",
"type": "string",
"value": "={{ $json.image_prompt }}"
},
{
"id": "4741cf92-5741-4db8-abd3-e5dff31ad658",
"name": "body",
"type": "string",
"value": "={{ $json.body }}"
}
]
}
},
"typeVersion": 3.4
}
],
"active": false,
"settings": {
"binaryMode": "separate",
"availableInMCP": false,
"executionOrder": "v1"
},
"versionId": "6c394a30-d605-4244-bb79-24fe225b06c7",
"connections": {
"RSS Read": {
"main": [
[
{
"node": "Latest post",
"type": "main",
"index": 0
}
]
]
},
"Latest post": {
"main": [
[
{
"node": "Basic LLM Chain",
"type": "main",
"index": 0
}
]
]
},
"theme_color": {
"main": [
[
{
"node": "Generate media using AI model",
"type": "main",
"index": 0
}
]
]
},
"Upload media": {
"main": [
[
{
"node": "Re-assemble slides",
"type": "main",
"index": 0
}
]
]
},
"Create a post": {
"main": [
[]
]
},
"Basic LLM Chain": {
"main": [
[
{
"node": "Parse slides JSON",
"type": "main",
"index": 0
}
]
]
},
"Parse slides JSON": {
"main": [
[
{
"node": "Split into slides",
"type": "main",
"index": 0
}
]
]
},
"Split into slides": {
"main": [
[
{
"node": "theme_color",
"type": "main",
"index": 0
}
]
]
},
"Re-assemble slides": {
"main": [
[
{
"node": "Generate text carousel PDF",
"type": "main",
"index": 0
}
]
]
},
"DeepSeek Chat Model": {
"ai_languageModel": [
[
{
"node": "Basic LLM Chain",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Generate text carousel PDF": {
"main": [
[
{
"node": "Create a post",
"type": "main",
"index": 0
}
]
]
},
"Download generated background": {
"main": [
[
{
"node": "Upload media",
"type": "main",
"index": 0
}
]
]
},
"Generate media using AI model": {
"main": [
[
{
"node": "Download generated background",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Execute workflow\u2019": {
"main": [
[
{
"node": "Get many social accounts",
"type": "main",
"index": 0
},
{
"node": "RSS Read",
"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.
deepSeekApifalAiApipostaApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow fetches the latest blog post from an RSS feed, uses DeepSeek to generate 5-slide carousel copy, creates AI background images with fal.ai, builds a PDF carousel in Posta, and publishes the post to LinkedIn via a connected Posta social account. Starts when you…
Source: https://n8n.io/workflows/16309/ — 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.
Create LinkedIn carousel post from blog post. Uses rssFeedRead, n8n-nodes-posta, httpRequest, chainLlm. Event-driven trigger; 30 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
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
Turn your blog into a set-and-forget content engine: every new article is instantly repurposed into channel-specific social posts with visuals, keeping your brand visible on LinkedIn, X, and Reddit wi
This workflow is designed for content creators, social media managers, digital marketers, and business owners who want to automate their content creation and distribution process across multiple platf