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