RSS to Discord, a ranked news digest your team reads
Your “quick scan” of the news turns into 40 open tabs, a half-read Reddit thread, and the nagging feeling you missed the one story you actually needed. Then you do it again tomorrow. And somehow that’s the system.
This hits marketing leads who need timely angles, but operators and agency owners feel it too. A simple RSS Discord digest automation gives you one ranked daily briefing your team will actually read, instead of a pile of links nobody opens.
Below is the exact n8n workflow behind it: how it collects RSS and Reddit, removes duplicates, asks Gemini to score relevance, then posts the top stories to Discord every morning.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: RSS to Discord, a ranked news digest your team reads
flowchart LR
subgraph sg0["Scheduled Morning Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Scheduled Morning Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:cog", form: "rounded", label: "Fetch Phoenix Times Feed", pos: "b", h: 48 }
n2@{ icon: "mdi:cog", form: "rounded", label: "Retrieve AZ Free Feed", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "Pull Phoenix Reddit Feed", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Pull Scottsdale Reddit Feed", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Pull Arizona Reddit Feed", pos: "b", h: 48 }
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Combine RSS Streams"]
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Cleanse and Prep Items"]
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Assemble Gemini Payload"]
n9["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Gemini Relevance Request"]
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Apply Relevance Scores"]
n11@{ icon: "mdi:cog", form: "rounded", label: "Rank by Relevance", pos: "b", h: 48 }
n12@{ icon: "mdi:cog", form: "rounded", label: "Cap to Top Five", pos: "b", h: 48 }
n13["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Compose Discord Digest"]
n14["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/discord.svg' width='40' height='40' /></div><br/>Dispatch to Discord"]
n12 --> n13
n10 --> n11
n2 --> n6
n0 --> n1
n0 --> n2
n0 --> n3
n0 --> n4
n0 --> n5
n11 --> n12
n8 --> n9
n5 --> n6
n3 --> n6
n6 --> n7
n7 --> n8
n1 --> n6
n4 --> n6
n13 --> n14
n9 --> n10
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n9 api
class n7,n8,n10,n13 code
classDef customIcon fill:none,stroke:none
class n6,n7,n8,n9,n10,n13,n14 customIcon
The Problem: Too Many Feeds, Not Enough Signal
Local news is scattered. The city paper has one angle, an independent outlet has another, and Reddit often spots what nobody’s written up yet. So you try to keep up by checking “just a few feeds,” which turns into a daily routine of scanning headlines, clicking duplicates, and second-guessing what matters. The worst part is the mental load. You’re not only reading, you’re filtering, ranking, and summarizing in your head before you’ve even started real work. Miss a day and you feel behind.
It adds up fast. Here’s where it breaks down in practice.
- You spend about 30–45 minutes each morning bouncing between RSS readers, Reddit, and bookmarks.
- Duplicate stories show up with slightly different titles, so you waste time opening the same thing twice.
- Teams don’t share a single source of “what’s important today,” which means decisions get made on partial context.
- Even when you collect links, you still have to format and post them somewhere people will actually see.
The Solution: A Daily Ranked Digest Posted to Discord
This workflow turns scattered sources into one clean briefing, delivered where your team already communicates. Every morning (8AM by default), n8n pulls fresh items from several RSS feeds and Reddit feeds. It merges everything into one stream, cleans up the article data, and removes obvious repeats so you’re not seeing the same story five different ways. Then it sends the cleaned list to Google Gemini (via an HTTP request) to score relevance. Finally, the workflow sorts by score, keeps the top five items, formats them into a readable Discord message, and posts the digest to your chosen channel.
The workflow starts on a schedule, not on someone’s motivation. In the middle, it does the boring but crucial work: deduping, structuring, and getting AI relevance scores you can trust. The end result is a short, ranked list that feels curated, not noisy.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you monitor 5 sources (3 RSS feeds plus 2 Reddit feeds) and you spend maybe 8 minutes per source each morning skimming and grabbing links. That’s roughly 40 minutes a day, and you still have to paste the “best” items into Discord. With this workflow, you spend about 2 minutes tweaking feeds when needed, then the 8AM run posts the top 5 stories automatically. Even if Gemini scoring and formatting takes a few minutes in the background, your time cost is basically gone.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Discord for posting the daily digest message
- Google Gemini API to score and rank relevance
- Gemini API key (get it from Google AI Studio / Google Cloud)
Skill level: Intermediate. You’ll paste in feed URLs, connect Discord, and add an API key for Gemini.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A scheduled morning trigger runs the workflow. By default it fires at 8AM, so you start the day with a fresh briefing without anyone remembering to push a button.
RSS and Reddit items are collected and merged. Several feeds are pulled in parallel, then combined into a single stream so the workflow can treat them consistently from that point on.
Cleanup and relevance scoring happen in the middle. n8n cleans up titles and URLs, removes duplicates, builds a request payload, and sends it to Gemini for relevance scores (through an HTTP request). Those scores are applied back onto each story so sorting is straightforward.
The top stories are ranked and sent to Discord. The workflow sorts by relevance, limits the output to five items, formats a readable message, then dispatches the digest to your Discord channel.
You can easily modify the list of sources to match your city or niche, and you can also change the destination from Discord to another channel later. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Scheduled Morning Trigger
Set the daily schedule that kicks off the entire news digest workflow.
- Add and open Scheduled Morning Trigger.
- Set the cron expression in Rule to
0 8 * * *for a daily 8 AM run. - Confirm the trigger fans out in parallel: Scheduled Morning Trigger outputs to both Fetch Phoenix Times Feed and Retrieve AZ Free Feed and Pull Phoenix Reddit Feed and Pull Scottsdale Reddit Feed and Pull Arizona Reddit Feed in parallel.
Step 2: Connect RSS Sources and Combine Streams
Pull local news and community content from five RSS sources and merge them for downstream processing.
- Configure the RSS URLs for all five feed nodes (grouped by function): Fetch Phoenix Times Feed (
https://www.phoenixnewtimes.com/phoenix/Rss.xml), Retrieve AZ Free Feed (https://azfreenews.com/feed/), Pull Phoenix Reddit Feed (https://www.reddit.com/r/Phoenix/.rss), Pull Scottsdale Reddit Feed (https://www.reddit.com/r/Scottsdale/.rss), and Pull Arizona Reddit Feed (https://www.reddit.com/r/Arizona/.rss). - Open Combine RSS Streams and set Number Inputs to
5. - Ensure each RSS node connects into the correct input of Combine RSS Streams (inputs 1–5).
Step 3: Set Up AI Relevance Scoring
Clean and deduplicate articles, prepare a compact payload, and score relevance using Gemini.
- In Cleanse and Prep Items, keep the JavaScript as provided to deduplicate by URL/title, tag local mentions, and limit to the newest 50 items.
- In Assemble Gemini Payload, keep the JavaScript that compiles the title-only list into
titlesTextand includesarticlesCount. - In Gemini Relevance Request, set URL to
=https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-lite:generateContent?key=[CONFIGURE_YOUR_API_KEY]. - Set JSON Body in Gemini Relevance Request to the provided expression:
{{ JSON.stringify({ "contents": [{ "parts": [{ "text": "You are a local news relevance scorer for Phoenix, Scottsdale, and Paradise Valley area. Score the following " + $json.articlesCount + " article TITLES based on their local relevance.\n\nScore each from 0-100 based on:\n- Local relevance (50%): Is it about Phoenix/Scottsdale/Paradise Valley?\n- Community impact (30%): Will locals care?\n- News value (20%): Is it newsworthy?\n\nArticle titles:\n" + $json.titlesText + "\n\nReturn ONLY a JSON array with scores in the same order. Example: [85, 72, 45, 90, 33]\nBe strict - only highly local news should score above 70." }] }], "generationConfig": { "temperature": 0.3, "topK": 40, "topP": 0.95, "maxOutputTokens": 512 } }) }}. - In Apply Relevance Scores, keep the code that parses Gemini’s response and attaches
relevanceScoreto each article; it references Assemble Gemini Payload internally.
[CONFIGURE_YOUR_API_KEY] with a valid Gemini API key in the URL.Step 4: Rank, Trim, and Format the Discord Digest
Sort by relevance, cap the list to the top items, and format the final digest text.
- Open Rank by Relevance and ensure the sort field is relevanceScore with Order set to
descending. - In Cap to Top Five, set Max Items to
5. - In Compose Discord Digest, keep the provided JavaScript to build the message, strip HTML, and split messages to stay under Discord’s 2000-character limit.
Step 5: Configure the Discord Output
Send the formatted digest to your Discord channel via webhook.
- Open Dispatch to Discord and set Authentication to
webhook. - Set Content to
{{ $json.content }}so each message chunk posts separately. - Credential Required: Connect your discordWebhookApi credentials.
Step 6: Test and Activate Your Workflow
Verify the full pipeline and then schedule it for daily runs.
- Click Execute Workflow to run the full chain from Scheduled Morning Trigger through Dispatch to Discord.
- Confirm Combine RSS Streams outputs items, Gemini Relevance Request returns a response, and Dispatch to Discord posts the digest.
- If results are empty, test each RSS node individually to validate feed availability.
- Once successful, toggle the workflow to Active to enable the scheduled run every morning.
Common Gotchas
- Discord credentials can expire or lack the right server/channel permissions. If posting fails, check your Discord bot/app access and the channel ID settings in n8n first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Gemini prompts and scoring criteria can be too generic if you leave them untouched. Add your location, niche, and “what counts as relevant” early or you will keep second-guessing the rankings.
Frequently Asked Questions
About 30 minutes if your feeds, Discord channel, and Gemini key are ready.
No. You’ll mostly connect accounts and paste in feed URLs. The workflow already includes the cleanup, scoring, and formatting logic.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Gemini API usage costs, which depend on how many items you score each day.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, but you’ll swap the final delivery step. Replace the “Dispatch to Discord” node with a Slack message node, then reuse the same “Compose Discord Digest” formatting logic (or tweak it for Slack’s markdown). Common customizations include changing the scheduled time, adding or removing RSS/Reddit sources, and adjusting the cap from top 5 to top 10.
Most of the time it’s permissions. Make sure the Discord bot is actually added to the server and has access to post in the target channel. If it worked before and suddenly stopped, re-authenticate the Discord credential in n8n and confirm the channel reference hasn’t changed. Also check for rate limits if you increased the number of items or posts.
Plenty for a daily briefing. Most teams run a few dozen items through scoring each morning, then publish the top five. On n8n Cloud, your limit is mainly monthly executions on your plan; if you self-host, it’s constrained by your server and how fast Gemini responds. If you scale up to hundreds of items a day, you’ll want tighter deduping and possibly batching to keep API costs predictable.
It depends on how picky you are about ranking and deduping. Zapier and Make can post RSS to Discord, sure, but once you add “merge multiple feeds,” “clean up inconsistent fields,” “deduplicate,” and “send a scoring request to an AI model,” you’re in multi-step territory that gets expensive and brittle fast. n8n handles branching and code-based cleanup in one place, which is honestly the difference between a neat demo and something you trust every morning. If you only need a basic “new RSS item → send message” flow, simpler tools can be fine. Talk to an automation expert if you want help picking the right stack.
Once this is running, your team gets a short, ranked briefing every morning and you get your focus back. Set it up once, then let the workflow handle the daily noise.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.