This workflow corresponds to n8n.io template #17810 — we link there as the canonical source.
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": "TWgTKZVC7RNEXMsC",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Article-to-Carousel Draft Pipeline",
"tags": [],
"nodes": [
{
"id": "89f8472a-eedc-453b-97d4-f4af93376d75",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1280,
-864
],
"parameters": {
"width": 480,
"height": 864,
"content": "## Article-to-Carousel Draft Pipeline\n\n### How it works\n\nThis workflow monitors an RSS feed for new article items, limits how many articles are processed, and turns an article URL into AI-generated carousel/post content using PostNitro. The generated content is then used to create a scheduled post or draft, with Gmail notifications sent from both the generation step and the final draft creation step.\n\n### Setup steps\n\n- Configure the RSS Feed Trigger with the source feed URL and polling settings.\n- Connect PostNitro credentials and configure the AI generation node to use the desired article URL field from the RSS item.\n- Configure the PostNitro draft/scheduling node with the target workspace, post settings, and whether posts should be drafts or scheduled.\n- Connect Gmail credentials and set the recipients, subject lines, and message bodies for both notification nodes.\n- Adjust the Limit node to control how many RSS items are processed per workflow run.\n\n### Customization\n\nYou can change the RSS feed source, the Limit value, PostNitro generation settings, scheduling behavior, and the Gmail notification recipients/content to match your publishing workflow."
},
"typeVersion": 1
},
{
"id": "a940b1b2-0511-4bad-9e19-b2c7022ec139",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-720,
-672
],
"parameters": {
"color": 7,
"width": 656,
"height": 336,
"content": "## Fetch and generate draft\n\nStarts from the RSS feed, limits the number of incoming articles, and sends the selected article URL to PostNitro to generate carousel/post content with AI. These nodes form the main left-side horizontal processing cluster."
},
"typeVersion": 1
},
{
"id": "fcfb672e-73f8-4615-bcf7-de946dd97b58",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
128,
-864
],
"parameters": {
"color": 7,
"width": 448,
"height": 336,
"content": "## Create draft and notify\n\nUses the generated PostNitro content to create a scheduled post or draft, then sends a Gmail notification about that created draft. This is the upper-right output branch."
},
"typeVersion": 1
},
{
"id": "ee958e37-3d42-4d13-a2ad-c30586a909c6",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
224,
-496
],
"parameters": {
"color": 7,
"width": 240,
"height": 464,
"content": "## Send generation notification\n\nSends a separate Gmail message directly after AI generation, likely to report generation status or provide an alternate notification path. This node is visually separated on the lower-right branch."
},
"typeVersion": 1
},
{
"id": "1953f10d-1994-48a3-86e4-a4bf96898201",
"name": "Generate AI Post from Article URL",
"type": "@postnitro/n8n-nodes-postnitro-ai.postNitro",
"notes": "={{ $json.error.message }}",
"onError": "continueErrorOutput",
"position": [
-208,
-496
],
"parameters": {
"brandId": "cmrabdq3r003jmf1fkirr1avg",
"presetId": "cmr96cp9i0001k1040wqqpip9",
"operation": "aiFromArticle",
"articleUrl": "={{ $json.link }}",
"templateId": "cmrnc0pvm000ql504luhyx3at"
},
"credentials": {
"postNitroApi": {
"name": "<your credential>"
}
},
"typeVersion": 1,
"alwaysOutputData": false
},
{
"id": "b1935ac6-4c49-40d6-8032-42b259d1aa13",
"name": "Limit to 10 Articles",
"type": "n8n-nodes-base.limit",
"position": [
-480,
-496
],
"parameters": {},
"typeVersion": 1
},
{
"id": "5db3d2ce-d129-45ff-a592-02cda9f9745d",
"name": "Schedule Post Creation",
"type": "@postnitro/n8n-nodes-postnitro-ai.postNitro",
"position": [
176,
-688
],
"parameters": {
"status": "DRAFT",
"designId": "={{ $json.data.result.designId }}",
"resource": "scheduledPost",
"postContent": {},
"scheduledAt": "={{ $now.plus({ days: 1 }).toISO() }}",
"platformSettings": {
"linkedinPostSettings": "{\n \"postType\": \"document\",\n \"postTitle\": null\n}"
},
"selectedAccounts": [
"cmrabkwrp0001jp04tateajp3"
]
},
"credentials": {
"postNitroApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "71f66960-c3da-411d-93ab-7bd7739521ab",
"name": "When RSS Feed Updates",
"type": "n8n-nodes-base.rssFeedReadTrigger",
"position": [
-672,
-496
],
"parameters": {
"feedUrl": "https://techcrunch.com/feed/",
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
}
},
"typeVersion": 1
},
{
"id": "166e9fc7-046b-4fb1-b243-48022a0b58db",
"name": "Email Post Confirmation",
"type": "n8n-nodes-base.gmail",
"position": [
432,
-688
],
"parameters": {
"sendTo": "user@example.com",
"message": "=A new carousel draft was generated from a TechCrunch article.\nTitle: {{ $json.designDetails.name }} \nReview it here: https://postnitro.ai/app/...",
"options": {},
"subject": "\ud83d\udcdd New draft ready for review"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
},
{
"id": "d5de0915-a798-452e-ab36-54af007a3fad",
"name": "Email Draft Creation Notice",
"type": "n8n-nodes-base.gmail",
"position": [
272,
-192
],
"parameters": {
"sendTo": "user@example.com",
"message": "=Error: {{ $json.error }} Article: {{ $json.link }}",
"options": {},
"subject": "\u26a0\ufe0f Failed to generate draft from article"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
}
],
"active": false,
"settings": {
"binaryMode": "separate",
"availableInMCP": false,
"executionOrder": "v1"
},
"versionId": "7ab7c755-2abd-4563-984c-78a4c646861a",
"nodeGroups": [],
"connections": {
"Limit to 10 Articles": {
"main": [
[
{
"node": "Generate AI Post from Article URL",
"type": "main",
"index": 0
}
]
]
},
"When RSS Feed Updates": {
"main": [
[
{
"node": "Limit to 10 Articles",
"type": "main",
"index": 0
}
]
]
},
"Schedule Post Creation": {
"main": [
[
{
"node": "Email Post Confirmation",
"type": "main",
"index": 0
}
]
]
},
"Generate AI Post from Article URL": {
"main": [
[
{
"node": "Schedule Post Creation",
"type": "main",
"index": 0
}
],
[
{
"node": "Email Draft Creation Notice",
"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.
gmailOAuth2postNitroApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow polls the TechCrunch RSS feed for new articles, uses PostNitro to generate carousel content from each article URL, creates a PostNitro draft scheduled for the next day (LinkedIn document format), and sends Gmail notifications for both successful draft creation and…
Source: https://n8n.io/workflows/17810/ — 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 polls the TechCrunch RSS feed for new articles, uses PostNitro AI to generate a LinkedIn carousel design from each article URL, saves it as a draft scheduled for the next day, and sends
This n8n template demonstrates how to use Reka API via HTTP to AI generate a clip automatically from a YouTube video and send email notifications. Looking at the RSS feed of a YouTube channel, the flo
This n8n template demonstrates how to use Reka Vision to automatically generate a customized video clip from a YouTube video using AI. The workflow keeps you informed by sending an email when the work
email. Uses gmailTrigger, gmail, ftp, mattermost. Event-driven trigger; 81 nodes.
Gmail Workflow. Uses gmail, googleCalendar, executeWorkflowTrigger, whatsApp. Event-driven trigger; 61 nodes.