This workflow corresponds to n8n.io template #17814 — we link there as the canonical source.
This workflow follows the Agent → 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 →
{
"id": "bDQlTb3hD9Duq3Rc",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Multi-Angle Article-to-Carousel Publisher",
"tags": [],
"nodes": [
{
"id": "7edbc230-cae5-48c3-83ec-98a4e92d1ecd",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2272,
-640
],
"parameters": {
"width": 480,
"height": 896,
"content": "## Multi-Angle Article-to-Carousel Publisher\n\n### How it works\n\nThis workflow monitors an RSS feed for new articles, uses an AI agent with Gemini to extract multiple content angles, and turns selected results into carousel-style social posts. It generates a PostNitro post from the article URL, schedules variants for LinkedIn and Instagram, then sends email notifications for the generated and scheduled outputs.\n\n### Setup steps\n\n- Configure the RSS Feed Trigger with the target feed URL and polling settings.\n- Add Google Gemini credentials for the AI Agent chat model and verify the structured output parser schema matches the expected article-angle format.\n- Configure PostNitro credentials and posting parameters for carousel generation, LinkedIn scheduling, and Instagram scheduling.\n- Connect Gmail credentials and set the recipients, subject lines, and message templates for both notification nodes.\n- Review the Limit node value to control how many AI-generated article angles are processed per RSS item.\n\n### Customization\n\nAdjust the AI prompt and structured parser schema to change the number, style, or format of content angles. Update the PostNitro nodes to target different platforms, schedules, or carousel templates."
},
"typeVersion": 1
},
{
"id": "c08b61e1-fdec-4318-b281-8308be2b1ceb",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1712,
-448
],
"parameters": {
"color": 7,
"width": 240,
"height": 320,
"content": "## Monitor RSS feed\n\nStarts the workflow when a new item appears in the configured RSS feed."
},
"typeVersion": 1
},
{
"id": "37a7051c-c005-4e27-9c7b-339be4de6a97",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1424,
-464
],
"parameters": {
"color": 7,
"width": 384,
"height": 512,
"content": "## Analyze article angles\n\nUses the AI Agent, Gemini chat model, and structured parser to transform the RSS article into structured content angles for downstream processing."
},
"typeVersion": 1
},
{
"id": "4b23f66a-cb72-41d2-9e37-fd1efba4159f",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-992,
-448
],
"parameters": {
"color": 7,
"width": 368,
"height": 320,
"content": "## Select generated angles\n\nSplits the AI output into individual items and limits how many article angles continue into post generation."
},
"typeVersion": 1
},
{
"id": "1b861270-359b-4b74-8019-678f3ab6874a",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-576,
-496
],
"parameters": {
"color": 7,
"width": 240,
"height": 368,
"content": "## Generate carousel post\n\nCreates a social carousel post from the selected article URL or angle before branching to scheduling and notification paths."
},
"typeVersion": 1
},
{
"id": "ede8001a-0a8f-45a7-8a41-ed97f7ba798f",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-304,
-640
],
"parameters": {
"color": 7,
"width": 432,
"height": 496,
"content": "## Schedule social posts\n\nSchedules the generated content for LinkedIn and Instagram, then merges both scheduling results into a single stream."
},
"typeVersion": 1
},
{
"id": "462447de-8bb1-41dc-9a94-2ae406b33f03",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
176,
-576
],
"parameters": {
"color": 7,
"width": 240,
"height": 336,
"content": "## Send schedule summary\n\nSends an email after the LinkedIn and Instagram scheduling results have been merged."
},
"typeVersion": 1
},
{
"id": "ebec13ba-4d9b-4df4-aef4-033086010c2a",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-224,
16
],
"parameters": {
"color": 7,
"width": 240,
"height": 336,
"content": "## Send generation alert\n\nA separate lower branch sends an immediate Gmail notification from the initial generated post output."
},
"typeVersion": 1
},
{
"id": "c4e3f660-eee6-44a4-9ef7-87180e5a20f4",
"name": "When New Article Published",
"type": "n8n-nodes-base.rssFeedReadTrigger",
"position": [
-1664,
-288
],
"parameters": {
"feedUrl": "https://techcrunch.com/feed/",
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
}
},
"typeVersion": 1
},
{
"id": "5fdc04c9-06c3-40da-982d-6838045a0b2f",
"name": "Content Generation Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-1344,
-288
],
"parameters": {
"text": "=You are an expert content strategist.\n\nAnalyze this TechCrunch article.\n\nTitle:\n{{ $('When New Article Published').item.json.title }}\n\nContent:\n{{ $('When New Article Published').item.json.contentSnippet }}\n\nURL:\n{{ $('When New Article Published').item.json.link }}\n\nYour task is to identify 3 unique LinkedIn content angles.\n\nEach angle should target a different audience.\n\nPossible audiences:\n- Developers\n- Founders\n- Marketers\n- SaaS builders\n- AI enthusiasts\n\nReturn ONLY valid JSON.\n\n{\n \"angles\": [\n {\n \"audience\": \"\",\n \"angle\": \"\",\n \"hook\": \"\"\n }\n ]\n}",
"options": {},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 3.1
},
{
"id": "adb93799-9793-481d-aff2-54605a21ae8f",
"name": "Parse Structured Content",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-1168,
-96
],
"parameters": {
"jsonSchemaExample": "{\n \"angles\": [\n {\n \"audience\": \"Developers\",\n \"angle\": \"How autonomous vehicles are changing software engineering\",\n \"hook\": \"Everyone is talking about AI replacing developers. The bigger shift is happening elsewhere.\"\n },\n {\n \"audience\": \"Founders\",\n \"angle\": \"What startups can learn from robotaxi competition\",\n \"hook\": \"The next billion-dollar opportunity isn't another chatbot.\"\n },\n {\n \"audience\": \"Marketers\",\n \"angle\": \"How this news can become engaging LinkedIn content\",\n \"hook\": \"Most people will share this news. Here's how to stand out instead.\"\n }\n ]\n}"
},
"typeVersion": 1.3
},
{
"id": "5d5369a8-0fc1-4122-ba29-a6cb6990a1ef",
"name": "Google Gemini Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
-1376,
-96
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.1
},
{
"id": "1844a01c-e96d-49ee-8913-34a0fb02cb19",
"name": "Split Content Angles",
"type": "n8n-nodes-base.splitOut",
"position": [
-944,
-288
],
"parameters": {
"options": {},
"fieldToSplitOut": "output.angles"
},
"typeVersion": 1
},
{
"id": "f4da0538-11a1-42e7-ba12-83bf7c5ca21f",
"name": "Generate AI-Enhanced Post",
"type": "@postnitro/n8n-nodes-postnitro-ai.postNitro",
"onError": "continueErrorOutput",
"position": [
-528,
-288
],
"parameters": {
"brandId": "cmi93qz66000wl504dtl0nloh",
"presetId": "cmr96cp9i0001k1040wqqpip9",
"operation": "aiFromArticle",
"articleUrl": "={{ $('When New Article Published').item.json.link }}",
"templateId": "cmrnc0pvm000ql504luhyx3at"
},
"credentials": {
"postNitroApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "f4abd467-9967-4b5b-b0a8-4bd86c730e26",
"name": "Limit to 10 Angles",
"type": "n8n-nodes-base.limit",
"position": [
-768,
-288
],
"parameters": {},
"typeVersion": 1
},
{
"id": "49cae764-d733-440f-a340-053d32582272",
"name": "Schedule Instagram Post",
"type": "@postnitro/n8n-nodes-postnitro-ai.postNitro",
"position": [
-256,
-304
],
"parameters": {
"status": "DRAFT",
"designId": "={{ $json.data.result.designId }}",
"resource": "scheduledPost",
"postContent": {
"instagram": "={{ $('Split Content Angles').item.json.hook }}"
},
"scheduledAt": "={{ $now.plus(1, 'day').toFormat('yyyy-MM-dd HH:mm:ss') }}",
"platformSettings": {
"instagramPostSettings": "{\n \"postType\": \"carousel\",\n \"postAsStory\": false\n}"
},
"selectedAccounts": [
"cms5zbt61000ijw04kgql7mzx"
]
},
"credentials": {
"postNitroApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "c34719ff-1812-4314-882f-c7375e7a8430",
"name": "Schedule LinkedIn Post",
"type": "@postnitro/n8n-nodes-postnitro-ai.postNitro",
"position": [
-256,
-480
],
"parameters": {
"status": "DRAFT",
"designId": "={{ $json.data.result.designId }}",
"resource": "scheduledPost",
"postContent": {
"linkedin": "={{ $('Split Content Angles').item.json.hook }}"
},
"scheduledAt": "={{ $now.plus(1, 'day').toFormat('yyyy-MM-dd HH:mm:ss') }}",
"platformSettings": {
"linkedinPostSettings": "{\n \"postType\": \"document\",\n \"postTitle\": null\n}"
},
"selectedAccounts": [
"cmrabkwrp0001jp04tateajp3"
]
},
"credentials": {
"postNitroApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "cbc43f64-2154-4d9d-9ebe-873910fd9050",
"name": "Send Article Summary Email",
"type": "n8n-nodes-base.gmail",
"position": [
-176,
192
],
"parameters": {
"sendTo": "user@example.com",
"message": "=Error: {{ $json.error }} Article: {{ $('When New Article Published').item.json.link }} Angle attempted: {{ $('Split Content Angles').item.json.angle }}",
"options": {},
"subject": "=\u26a0\ufe0f Failed to generate post \u2014 {{ $('Split Content Angles').item.json.angle }}"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
},
{
"id": "075f8147-4f1f-4a25-a50c-9d8c0a62ec0b",
"name": "Combine Posts Results",
"type": "n8n-nodes-base.merge",
"position": [
-16,
-400
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition"
},
"typeVersion": 3.2
},
{
"id": "00cd78ec-b2b0-4c39-9563-36974a6c1c22",
"name": "Send Combined Summary Email",
"type": "n8n-nodes-base.gmail",
"position": [
224,
-400
],
"parameters": {
"sendTo": "user@example.com",
"message": "=A new post was generated and scheduled as a draft on both platforms. Angle: {{ $('Split Content Angles').item.json.angle }} Audience: {{ $('Split Content Angles').item.json.audience }} LinkedIn: {{ $('Schedule LinkedIn Post').item.json.status }} (scheduled {{ $('Schedule LinkedIn Post').item.json.scheduledFor }}) Instagram: {{ $('Schedule Instagram Post').item.json.status }} (scheduled {{ $('Schedule Instagram Post').item.json.scheduledFor }}) Review both drafts in your PostNitro dashboard before publishing.",
"options": {},
"subject": "=\u2705 Post scheduled \u2014 {{ $('Split Content Angles').item.json.audience }}"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
}
],
"active": false,
"settings": {
"binaryMode": "separate",
"availableInMCP": false,
"executionOrder": "v1"
},
"versionId": "a670f390-9695-4211-8d3d-4246ecf7c549",
"nodeGroups": [],
"connections": {
"Limit to 10 Angles": {
"main": [
[
{
"node": "Generate AI-Enhanced Post",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Model": {
"ai_languageModel": [
[
{
"node": "Content Generation Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Split Content Angles": {
"main": [
[
{
"node": "Limit to 10 Angles",
"type": "main",
"index": 0
}
]
]
},
"Combine Posts Results": {
"main": [
[
{
"node": "Send Combined Summary Email",
"type": "main",
"index": 0
}
]
]
},
"Schedule LinkedIn Post": {
"main": [
[
{
"node": "Combine Posts Results",
"type": "main",
"index": 0
}
]
]
},
"Schedule Instagram Post": {
"main": [
[
{
"node": "Combine Posts Results",
"type": "main",
"index": 1
}
]
]
},
"Content Generation Agent": {
"main": [
[
{
"node": "Split Content Angles",
"type": "main",
"index": 0
}
]
]
},
"Parse Structured Content": {
"ai_outputParser": [
[
{
"node": "Content Generation Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Generate AI-Enhanced Post": {
"main": [
[
{
"node": "Schedule LinkedIn Post",
"type": "main",
"index": 0
},
{
"node": "Schedule Instagram Post",
"type": "main",
"index": 0
}
],
[
{
"node": "Send Article Summary Email",
"type": "main",
"index": 0
}
]
]
},
"When New Article Published": {
"main": [
[
{
"node": "Content Generation Agent",
"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.
gmailOAuth2googlePalmApipostNitroApi
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 Google Gemini to generate three LinkedIn content angles, then uses PostNitro to create a carousel design and schedule draft posts for LinkedIn and Instagram, sending Gmail notifications on success or failure.…
Source: https://n8n.io/workflows/17814/ — 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 monitors the TechCrunch RSS feed, uses Google Gemini to generate three distinct LinkedIn content angles per article, then uses PostNitro AI to build a carousel design and schedule matchi
22-Automate_Multi_Platform_Social_Media_Content_Creation. Uses outputParserStructured, lmChatGoogleGemini, lmChatOpenAi, httpRequest. Event-driven trigger; 57 nodes.
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
This comprehensive n8n workflow automates the complete process of generating professional interior design moodboards from concept to client delivery. Users submit a design brief through a form, and th
Youtube Video: https://youtu.be/42-oHh9w9Eo This workflow listens for Slack @mentions, uses Google Gemini to classify the request and extract invoice details, then reads and updates Google Sheets, gen