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:
- Trigger & URL Definition: The workflow is initiated manually. A
Functionnode immediately follows, defining a static list of RSS feed URLs (in this case, for n8n's Medium and Dev.to blogs). - Looping Mechanism: The
SplitInBatchesnode is configured with a batch size of 1. This is the starting point of a loop that processes one URL at a time. - Fetch RSS Data: Inside the loop, the
RSS Feed Readnode takes a single URL from the current batch and fetches all the articles from that feed. - Check for Completion: An
IFnode checks if there are any more URLs left to process (noItemsLeft).- If false, it loops back to the
SplitInBatchesnode to process the next URL. - If true, the loop is complete, and the workflow proceeds to the final step.
- If false, it loops back to the
- Aggregate Data: Once all feeds have been read, the
Merge Datanode (a Function node) collects all the items generated by theRSS Feed Readnode 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
- Download workflow JSON
- Import into n8n
- Configure node parameters as needed
- Test and enable the workflow
💡 Tips
After importing, verify all connectors and credentials match your environment.
Preview
Workflow Visualization
Nodes
On clicking 'execute'
manualTrigger
Merge Data
function
Function
function
RSS Feed Read
rssFeedRead
SplitInBatches
splitInBatches
IF
if
Statistics
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
Technical Specs
Compatibility
License
This workflow template follows MIT license, you can freely use, modify and distribute.
Please comply with relevant third-party service terms when using.