n8n Workflow
Intermediate

Aggregate Multiple RSS Feeds

Automate the aggregation of multiple RSS feeds into a single, unified list. This workflow loops through a list of URLs, fetches data from each, and combines them into one output.

Overview

This workflow fetches and combines articles from several RSS feeds, such as Medium and Dev.to, into a single consolidated list, perfect for content curation and monitoring.

🔄 Description & Use Case

This workflow demonstrates a powerful pattern for fetching data from multiple sources and aggregating the results. It takes a list of RSS feed URLs, iterates through each one to read its content, and then merges all the articles into a single, unified list.

⚙️ How It Works:

  1. Trigger & URL Definition: The workflow is initiated manually. A Function node immediately follows, defining a static list of RSS feed URLs (in this case, for n8n's Medium and Dev.to blogs).
  2. Looping Mechanism: The SplitInBatches node is configured with a batch size of 1. This is the starting point of a loop that processes one URL at a time.
  3. Fetch RSS Data: Inside the loop, the RSS Feed Read node takes a single URL from the current batch and fetches all the articles from that feed.
  4. Check for Completion: An IF node checks if there are any more URLs left to process (noItemsLeft).
    • If false, it loops back to the SplitInBatches node to process the next URL.
    • If true, the loop is complete, and the workflow proceeds to the final step.
  5. Aggregate Data: Once all feeds have been read, the Merge Data node (a Function node) collects all the items generated by the RSS Feed Read node during each loop iteration and combines them into a single array.

✅ Real-World Use Cases:

  • Content Curation: Create a master feed of articles from your favorite blogs, news sites, or industry publications for easy review.
  • Market Intelligence: Monitor multiple competitor blogs or news sources and consolidate their updates into one place.
  • Personal News Dashboard: Build a custom news aggregator tailored to your specific interests.
  • Content for Newsletters: Easily gather relevant articles from various sources to include in a weekly or monthly newsletter.

Instructions

Basic steps

  1. Download workflow JSON
  2. Import into n8n
  3. Configure node parameters as needed
  4. Test and enable the workflow

💡 Tips

After importing, verify all connectors and credentials match your environment.

Preview

Workflow Visualization

6 nodes
100%
On clicking 'execute'manualTriggerMerge DatafunctionFunctionfunctionRSS Feed ReadrssFeedReadSplitInBatchessplitInBatchesIFif

Nodes

1

On clicking 'execute'

manualTrigger

v1
2

Merge Data

function

v1
3

Function

function

v1
4

RSS Feed Read

rssFeedRead

v1
5

SplitInBatches

splitInBatches

v1
6

IF

if

v1

Statistics

Total nodes:6
Disabled nodes:0
Node types:5
Connections:5
View full JSON structure
{
  "nodes": [
    {
      "name": "On clicking 'execute'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        270,
        330
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "name": "Merge Data",
      "type": "n8n-nodes-base.function",
      "position": [
        1230,
        430
      ],
      "parameters": {
        "functionCode": "const allData = []\n\nlet counter = 0;\ndo {\n  try {\n    const items = $items(\"RSS Feed Read\", 0, counter).map(item => item.json);\n    allData.push.apply(allData, items);\n  } catch (error) {\n    return [{json: {allData}}];  \n  }\n\n  counter++;\n} while(true);\n\n\n"
      },
      "typeVersion": 1
    },
    {
      "name": "Function",
      "type": "n8n-nodes-base.function",
      "position": [
        470,
        330
      ],
      "parameters": {
        "functionCode": "return [\n  {\n    json: {\n      url: 'https://medium.com/feed/n8n-io',\n    }\n  },\n  {\n    json: {\n      url: 'https://dev.to/feed/n8n',\n    }\n  }\n];"
      },
      "typeVersion": 1
    },
    {
      "name": "RSS Feed Read",
      "type": "n8n-nodes-base.rssFeedRead",
      "position": [
        870,
        330
      ],
      "parameters": {
        "url": "={{$json[\"url\"]}}"
      },
      "typeVersion": 1
    },
    {
      "name": "SplitInBatches",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        670,
        330
      ],
      "parameters": {
        "options": {},
        "batchSize": 1
      },
      "typeVersion": 1
    },
    {
      "name": "IF",
      "type": "n8n-nodes-base.if",
      "position": [
        1070,
        520
      ],
      "parameters": {
        "conditions": {
          "boolean": [
            {
              "value1": true,
              "value2": "={{$node[\"SplitInBatches\"].context[\"noItemsLeft\"]}}"
            }
          ]
        }
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "IF": {
      "main": [
        [
          {
            "node": "Merge Data",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "SplitInBatches",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Function": {
      "main": [
        [
          {
            "node": "SplitInBatches",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RSS Feed Read": {
      "main": [
        [
          {
            "node": "IF",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SplitInBatches": {
      "main": [
        [
          {
            "node": "RSS Feed Read",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On clicking 'execute'": {
      "main": [
        [
          {
            "node": "Function",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Actions

Share
Categories:
Tags:
manualtriggerfunctionrssfeedreadsplitinbatchesif

Technical Specs

Complexity:
Intermediate
Node Count:
6 nodes
Published:11 months ago
Updated:5 days ago

Compatibility

Platform:
N8N Cloud & Self-hosted
Min Version:
N8N v1.0.0+
Supports cloud and self-hosted deployment

License

This workflow template follows MIT license, you can freely use, modify and distribute.

Please comply with relevant third-party service terms when using.

Related Workflows