Opening Problem Statement
Meet Emma, a content manager who follows multiple technical blogs to curate a weekly newsletter. Each morning, she spends over an hour visiting diverse platforms like Medium and Dev.to to check their RSS feeds, manually copying interesting articles into a single document. This repetitive process not only wastes her valuable time but also risks missing important posts due to human error. Imagine the frustration when Emma realizes she missed a trending article that could have been featured because she was overwhelmed managing multiple feed URLs separately.
This real-world scenario painfully illustrates a problem many content curators face: efficiently consolidating multiple RSS feeds into one cohesive list without tedious manual work. Emma needs a smarter way to automate this aggregation task seamlessly.
What This Automation Does
This unique n8n workflow automates the fetching, batching, and merging of multiple RSS feeds, streamlining Emma’s content curation process. Specifically, when you trigger this workflow, here’s what happens:
- Reads multiple RSS feeds one by one: The workflow fetches articles from specified URLs like Medium’s and Dev.to’s feeds.
- Processes feeds in batches: Using batch splitting, it handles one feed per batch to manage resources smartly.
- Conditionally checks completion: It loops through all feeds until none are left unprocessed.
- Merges all fetched articles: Combines all individual feed items into one unified dataset.
- Presents aggregated data: The combined result can be easily used further for newsletters, content analysis, or alerts.
- Saves significant time: Eliminates manual copying across multiple feeds, saving at least an hour daily for Emma.
Prerequisites ⚙️
- n8n automation platform account (cloud or self-hosted) ⏱️ 🔌
- No external API keys or credentials needed (public RSS feeds used)
- Basic familiarity with n8n workflow editor interface
Step-by-Step Guide
Step 1: Start With Manual Trigger Node
Navigate to the n8n editor. Click + New Workflow. Add a node by clicking + Add Node → Select Manual Trigger. This node initiates the workflow on demand. You’ll see a “On clicking ‘execute'” node ready to trigger manually.
Common mistake: Forgetting to trigger manually after designing the workflow will result in no data processing.
Step 2: Define RSS Feed URLs with a Function Node
Click + Add Node, select the Function node. Configure the code as follows to provide multiple feed URLs:
return [
{ json: { url: 'https://medium.com/feed/n8n-io' } },
{ json: { url: 'https://dev.to/feed/n8n' } }
];
This node outputs the list of RSS URLs. Replace or add URLs as needed with correct feed addresses.
Visual: You should see each feed URL as a separate item after this node execution.
Step 3: Split Feeds Into Individual Batches
Add the SplitInBatches node next. Configure to process one feed at a time by setting batchSize: 1. Connect the Function node output to this node.
Visual: This prepares feeds to be processed sequentially without overloading the RSS feed sources.
Step 4: Read the RSS Feed
Next, add the RSS Feed Read node. In the URL field, enter =<{{$json["url"]}}> to use dynamic input URLs from previous nodes.
This node fetches the feed items from each batch’s URL one by one.
Common mistake: Forgetting to use the expression format causes a static URL and broken iteration.
Step 5: Check if All Batches Processed with IF Node
Connect the RSS Feed Read node to an IF node. Configure it to check if there are no more batches left by comparing noItemsLeft context variable to true.
This conditional logic ensures the workflow knows when all feeds are processed.
Step 6: Loop or Finish
If there are more feeds, connect the IF node’s false output back to the SplitInBatches node to continue looping over feeds.
If all feeds processed, route the true output to a Function node named Merge Data.
Step 7: Merge All Feed Items in Function Node
Configure the Merge Data function node with this code to combine all items fetched from each feed:
const allData = []
let counter = 0;
do {
try {
const items = $items("RSS Feed Read", 0, counter).map(item => item.json);
allData.push.apply(allData, items);
} catch (error) {
return [{json: {allData}}];
}
counter++;
} while(true);
This block collects items from every batch dynamically until no more are found.
Outcome: You get a single merged array of all feed items as workflow output.
Customizations ✏️
- Add More Feeds: In the Function node labeled with URLs, add or remove RSS feed URLs to tailor your data sources.
- Change Batch Size: Modify
batchSizein the SplitInBatches node for bulk processing multiple feeds at once if resources allow. - Enhance with Filter Logic: Insert additional IF nodes after RSS Feed Read to filter articles based on keywords or publication date before merging.
Troubleshooting 🔧
Problem: “RSS Feed Read node returns empty or no items.”
Cause: Invalid or unreachable RSS feed URL.
Solution: Verify feed URLs manually in a browser or RSS reader to ensure they are live. Check expression syntax in RSS Feed Read node URL field.
Problem: “Workflow loops indefinitely or crashes at Merge Data function.”
Cause: Loop condition or error handling in Function node flawed.
Solution: Ensure the Merge Data function is correctly catching iteration end by relying on try-catch, and the IF node correctly breaks looping.
Pre-Production Checklist ✅
- Test manual trigger activates workflow properly.
- Confirm all feed URLs return expected RSS XML responses.
- Verify batch splitting processes feeds one at a time correctly.
- Check the IF node detects when no feed batches remain to exit loop.
- Run Merge Data function node outputs a combined article list.
Deployment Guide
Activate automation by saving workflow and hitting the manual trigger button. Consider setting a scheduled trigger if you want automatic periodic updates.
Monitor the workflow via execution logs in n8n. There are no external API keys or rate limits since public RSS feeds are used, so reliability depends mostly on feed uptime.
FAQs
Q1: Can I add non-technical RSS feeds?
A: Yes, you can add any valid RSS URLs following the same format in the Function node.
Q2: Does this workflow consume API credits or need authentication?
A: No, it processes public RSS feeds that don’t require authentication.
Q3: Can I use this to monitor many feeds simultaneously?
A: Yes, but increasing feed count drastically might require adjusting batch sizes or resources.
Conclusion
By building this RSS feed aggregator with n8n, you’ve automated a tedious, error-prone process, saving at least an hour daily for busy users like Emma. This consolidated feed provides a single source of truth, boosting content curation efficiency.
Next steps? Consider expanding to filter by keywords or automate sending featured feed items to email newsletters or messaging apps like Slack. Your content workflow just got a smart upgrade!