RSS is not dead. It is the most reliable way to monitor competitor blogs, job boards, news sources, and podcast feeds without fragile HTML scraping. n8n's RSS Feed Read node pulls any RSS 2.0 or Atom feed into your workflow in one step â no authentication dance, no HTML parser, no API key.
This guide covers every field the node exposes, three real-world patterns, the gotchas that trip people up, and a free workflow JSON you can import today.
What the RSS Feed Read node does
The node fetches the feed URL you provide, parses every <item> (RSS) or <entry> (Atom), and outputs one n8n item per entry. That means a feed with 20 posts produces 20 items downstream â ready for filtering, deduplication, storage, or notification.
Configuration fields
| Field | What it does |
|---|---|
| URL | The full feed URL (supports both RSS 2.0 and Atom 1.0) |
| Limit | Max items to return per execution. Default: 50. Set lower for high-volume feeds. |
That is the entire configuration surface. Simple by design.
Output fields per item
| Field | Description |
|---|---|
title |
Entry headline |
link |
Canonical URL of the article/episode |
pubDate |
Publication timestamp (string â normalize with DateTime node) |
content |
Full entry body or summary (may be HTML) |
guid |
Unique identifier for the entry (use for deduplication) |
author |
Author name if present |
categories |
Array of category/tag strings |
enclosure |
Object with url, type, length â podcast audio files live here |
Pattern 1: Competitive blog monitor -> Slack
Get a Slack DM whenever a competitor publishes a post containing a keyword you care about.
Schedule Trigger (every hour)
-> RSSFeed Read (competitor blog feed URL)
-> IF: {{ $json.title.toLowerCase().includes('your-keyword') || $json.content.toLowerCase().includes('your-keyword') }}
True -> Slack (send message: "New post: {{ $json.title }} - {{ $json.link }}")
False -> (nothing)
Tip: Use {{ $json.pubDate }} in the Slack message so you can see at a glance how fresh the post is. Pair the DateTime node to convert pubDate to a readable local time if your team is not UTC.
Pattern 2: Multi-feed job board aggregator -> Google Sheets
Aggregate jobs from several RSS feeds (LinkedIn Jobs, Indeed, Greenhouse-based career pages all offer RSS) into a single Sheet, deduplicating by guid so re-runs do not create duplicate rows.
Schedule Trigger (every 6 hours)
-> RSSFeed Read [feed 1]
-> RSSFeed Read [feed 2] -> Merge (Append mode)
-> RSS Feed Read [feed 3]
-> Item Lists (Remove Duplicates: field = guid)
-> Google Sheets (Append or Update: match on guid column)
Why dedup by guid not link? Some job boards generate UTM-suffixed links that change between runs; guid is the stable canonical identifier.
Pattern 3: Podcast feed -> transcription queue
Detect new podcast episodes and queue them for automatic transcription (Whisper API, AssemblyAI, etc.).
Schedule Trigger (every 30 minutes)
-> RSS Feed Read (podcast feed URL, Limit: 1)
-> IF: {{ new Date($json.pubDate) > new Date(Date.now() - 3600000) }}
True -> HTTP Request (POST to transcription API, body: { url: $json.enclosure.url })
False -> (nothing)
The enclosure.url field is where the MP3/M4A audio file URL lives in podcast feeds. Pass it directly to any transcription API as the source URL.
Limit: 1 fetches only the most recent episode -- perfect for a "new episode" trigger. Increase to 5-10 if you need to catch up after a gap.
Gotchas and fixes
| Gotcha | Fix |
|---|---|
| Feed requires authentication | RSS Feed Read has no auth option. Use HTTP Request node instead (Basic Auth or header token), then parse the XML with a Code node or HTML Extract node |
| pubDate format varies wildly | Never compare raw pubDate strings. Use the DateTime node to parse and normalize: {{ DateTime.fromRFC2822($json.pubDate).toISO() }}
|
| Duplicate items on re-run | Use Item Lists -> Remove Duplicates on guid. For Sheets, use "Append or Update" with guid as the match column |
| Feed uses Atom 1.0 | Fully supported. The node maps Atom id -> guid, updated -> pubDate, summary/content -> content automatically |
| Feed returns 429 / rate-limits | Slow your Schedule Trigger. Most feeds are fine at hourly; aggressive polling (every 5 min) can get you blocked |
| Content field is HTML | Strip tags in a Code node: items[0].json.content.replace(/<[^>]+>/g, '') |
| Feeds with no guid | Fall back to link for deduplication. Most well-formed feeds include guid; Atom feeds always include id |
Free workflow JSON -- Competitive blog monitor
Import this directly into n8n (copy -> n8n canvas -> Ctrl+Shift+V):
{
"name": "RSS Competitive Monitor -> Slack",
"nodes": [
{
"parameters": { "rule": { "interval": [{ "field": "hours", "hoursInterval": 1 }] } },
"name": "Every Hour",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [240, 300]
},
{
"parameters": { "url": "https://feeds.feedburner.com/oreilly/radar", "limit": 20 },
"name": "RSS Feed Read",
"type": "n8n-nodes-base.rssFeedRead",
"typeVersion": 1,
"position": [440, 300]
},
{
"parameters": {
"conditions": {
"string": [{
"value1": "={{ $json.title.toLowerCase() }}",
"operation": "contains",
"value2": "automation"
}]
}
},
"name": "Keyword Filter",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [640, 300]
},
{
"parameters": {
"select": "channel",
"channelId": { "value": "YOUR_SLACK_CHANNEL_ID" },
"text": "New post: {{ $json.title }}\n{{ $json.link }}\n{{ $json.pubDate }}",
"otherOptions": {}
},
"name": "Slack Alert",
"type": "n8n-nodes-base.slack",
"typeVersion": 2.2,
"position": [840, 200]
}
],
"connections": {
"Every Hour": { "main": [[{ "node": "RSS Feed Read", "type": "main", "index": 0 }]] },
"RSS Feed Read": { "main": [[{ "node": "Keyword Filter", "type": "main", "index": 0 }]] },
"Keyword Filter": { "main": [[{ "node": "Slack Alert", "type": "main", "index": 0 }], []] }
}
}
To adapt: replace the feed URL and keyword, add your Slack credential, point the channel ID to your workspace.
When to use RSS Feed Read vs HTTP Request
- RSS Feed Read -> any public RSS/Atom feed. Zero config.
- HTTP Request -> feeds behind auth, or when you need request headers (User-Agent spoofing, API keys).
- HTTP Request + HTML Extract -> pages with no RSS feed at all.
If you want a plug-and-play pack of 30+ pre-built n8n workflows (RSS monitors, Slack alerts, lead capture, database integrations), the n8n Workflow Starter Pack has you covered for $29.
What are you monitoring with RSS in n8n? Competitor blogs, job boards, government data feeds, something unusual? Drop it in the comments!
Top comments (1)
What RSS feeds are you monitoring with n8n? Competitor blogs, job boards, or something else? Drop your use case below — curious what people are building.