{
  "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
          }
        ]
      ]
    }
  }
}