How to Automate RSS News Monitor with AI — Smart Alerts by Topic & Urgency with n8n
Your competitors published a breaking product update at 6:47 AM. A regulator dropped new compliance guidance in a niche industry blog. A funding round in your space hit TechCrunch. By the time you saw
Your competitors published a breaking product update at 6:47 AM. A regulator dropped new compliance guidance in a niche industry blog. A funding round in your space hit TechCrunch. By the time you saw any of it — buried under 340 unread items in an RSS reader you stopped opening weeks ago — the window to react had closed. RSS solved distribution, but it never solved attention. You still have to read everything to find the one thing that matters. This is the workflow that flips that: an n8n automation where GPT-4o reads every feed for you, judges each item by your topics and its urgency, and pings your Telegram only when something is worth interrupting your day for.
The problem: RSS gives you volume, not signal
A traditional RSS reader is a firehose with no valve. Subscribe to 20 industry sources and you get 200–500 items a day. The relevant ones — a competitor launch, a security disclosure affecting your stack, a shift in your customer's world — are maybe three. The other 497 are press-release noise, republished wire stories, and SEO filler.
Keyword filters don't fix this. "AI" matches everything. "Acquisition" misses "buys," "snaps up," and "merges with." Boolean rules are brittle, high-maintenance, and blind to context — they can't tell that "Stripe raises prices" is urgent for a fintech ops team but irrelevant to a logistics one. What you actually need is a reader that understands intent and severity. That's a language model's job, and it's cheap to run at RSS scale.
The solution: an LLM sits between the feed and your inbox
The architecture is deliberately simple. n8n polls your RSS feeds on a schedule, deduplicates against what it has already seen, and hands each new item to GPT-4o with a structured prompt: "Here are my topics of interest. Classify this article's relevance, assign a topic tag, and rate its urgency from 1 to 5." The model returns strict JSON. n8n filters on that JSON — anything below your urgency threshold is silently dropped — and formats the survivors into a clean Telegram alert with title, one-line why-it-matters, and the source link.
The result: instead of 500 items you scan, you get three Telegram messages a day that read like a smart analyst tapped you on the shoulder. No app to open. No reader to maintain. No FOMO, because the filter is intelligent, not literal.
Step-by-step: building it in n8n
Here is the node-by-node build. It runs comfortably on n8n Cloud or a self-hosted instance.
1. Schedule Trigger. Set the Schedule Trigger node to run every 15–30 minutes. Faster than 15 minutes rarely helps — most feeds don't update that often — and it keeps your token spend low. For breaking-news feeds, drop to 5 minutes on a separate branch.
2. RSS Read. Add one RSS Read node per feed, or loop a list of feed URLs through a single node using a Split In Batches pattern. Point each at the feed's XML URL. The node outputs an array of items with title, link, content, pubDate, and guid.
3. Deduplicate. This is the step people skip and regret. Without it, the same article re-alerts every polling cycle. Use n8n's built-in Remove Duplicates node in "Remove items seen in previous executions" mode, keyed on guid (or link if guids are unreliable). This persists state between runs so each article is processed exactly once. If you're on an older n8n version, back it with a Data Store or a small database check.
4. AI classification (the core). Add a Basic LLM Chain node wired to an OpenAI Chat Model set to gpt-4o (or gpt-4o-mini to cut cost by ~15×; it's plenty capable for triage). Attach a Structured Output Parser so the model is forced to return valid JSON. Your system prompt should be explicit:
"You are a news triage assistant for a [your industry] team. Our priority topics are: [list them]. For the article below, return JSON: {relevant: boolean, topic: string, urgency: integer 1-5, reason: string (max 15 words)}. Urgency 5 = act today; 1 = background interest. Mark relevant:false for republished wire copy, opinion pieces, and off-topic items." Pass the article title and content in the user message.
5. Filter. Add an IF or Filter node. Condition: relevant === true AND urgency >= 3. Tune the threshold to your tolerance — a founder might want ≥2, an on-call ops lead only ≥4. Everything failing this test exits the workflow silently.
6. Format and route. Use a Set node (or an Edit Fields node) to build the message body. A clean Telegram alert looks like: 🔴 [urgency emoji] {topic}\n{title}\n{reason}\n{link}. Map urgency to emoji so severity is scannable at a glance — red for 5, orange for 4, yellow for 3.
7. Telegram send. Finish with the Telegram node in "Send Message" mode. Create a bot via @BotFather, grab the token, and set your chat ID. Enable disable_web_page_preview: false so the source link renders a preview card. For a team, point it at a group chat instead of a DM.
Benefits: what changes once this is running
You reclaim the reading tax. The 30–45 minutes a day someone spends skimming feeds collapses to reading three targeted alerts. Across a small team that's real hours back every week.
You react in minutes, not days. When a competitor moves or a critical CVE lands in a feed you watch, you know within one polling cycle — not when you next happen to open a reader.
The filter improves as your prompt does. Missed something? Add the topic to the system prompt. Getting noise? Tighten the urgency definition. There's no rule engine to rebuild — you're editing plain English.
It's nearly free to run. With gpt-4o-mini, classifying a few hundred short articles a day costs cents. The whole thing runs on infrastructure you likely already have.
Common pitfalls (and how to avoid them)
Skipping deduplication. The single most common failure. Without persistent dedup, every poll re-alerts the same stories and your team mutes the bot within a day. Get Remove Duplicates working before you ever wire up Telegram.
Feeding the model full HTML. Some feeds dump raw markup or 3,000-word bodies into content. That inflates token cost and can confuse the classifier. Add a small Code or HTML Extract node to strip tags and truncate content to the first ~500 characters — the headline and lede carry almost all the signal.
Not forcing structured output. If you parse the model's reply as free text, one malformed response breaks the Filter node and the run dies. Always use the Structured Output Parser so downstream nodes get guaranteed-shape JSON.
Setting the urgency bar too low at launch. Start strict (≥4) for the first few days, watch what gets through, then loosen. It's easier to earn trust by under-alerting than to win it back after you've spammed the channel.
Polling too aggressively. A 1-minute schedule on 20 feeds burns tokens and hits feed rate limits for no gain. Match your cadence to how fast your sources actually publish — 15 minutes is the right default for almost everyone.
Build it once and it runs forever in the background — a quiet analyst that reads everything so you can read almost nothing and still miss nothing that matters.
Ja construimos isso pra voce
Nao comece do zero. O RSS News Monitor with AI — Smart Alerts by Topic & Urgency e um workflow n8n pronto para instalar — conecta suas ferramentas em minutos, sem codigo.
Instalar por $199 →