// free agents / rss-to-discord
📡 RSS to Discord
“Watch a few RSS feeds and post new items that match my keywords into a Discord channel.”
Free, no sign-up. MIT licence. Python standard library only, so there's nothing to pip install.
What it does
Watches any RSS or Atom feeds (blogs, subreddits, YouTube channels, patch notes, Hacker News) and posts new matching items to Discord. The first run just remembers what's already there, so your channel doesn't get flooded.
What you need
- Python 3.9+ (no extra packages) or n8n
- A Discord webhook URL
5-minute setup
Python
- Install Python 3.9+ and unzip the download.
- Try it with no accounts:
python3 rss_to_discord.py --dry-run - Copy
.env.exampleto.envand fill it in. - Run:
set -a; . ./.env; set +a; python3 rss_to_discord.py(Windows steps in the README).
n8n (no code)
- Workflows, then Import from file, then
rss-to-discord.n8n.json. - Follow the yellow “Read me” note (credentials or webhook).
- Test workflow, then switch it to Active.
Run it on a schedule
Every 15 minutes with cron:
*/15 * * * * cd /path/to/rss-to-discord && set -a && . ./.env && set +a && python3 rss_to_discord.py >> run.log 2>&1On Windows use Task Scheduler. With n8n, the Schedule node does it for you.
Settings
| Variable | What it does |
|---|---|
FEEDS | Comma-separated feed URLs (YouTube: https://www.youtube.com/feeds/videos.xml?channel_id=...) |
KEYWORDS | Comma-separated, case-insensitive; empty = everything |
DISCORD_WEBHOOK_URL | Your webhook |
MAX_PER_RUN | Cap per run, default 10 |
What we tested
- Ran against live Hacker News and Rock Paper Shotgun feeds with keyword filters.
- First run remembered 20 items and posted nothing; a later run posted only the new ones to a mock Discord webhook.
- Handles Discord rate limits (HTTP 429, then retry).
- n8n workflow imported and run end to end in a real n8n install (Discord mocked).
Honest limits
- Reddit often rate-limits feed readers (HTTP 429). The script skips it and tries again next run.
- Keyword matching is plain text matching, not AI.
- n8n version: the first run posts everything currently in the feeds (our test posted 90). Run it once with the Discord node disabled first.
- Telegram or Slack instead of Discord? Swap the webhook. Ask us and we'll build it.
Want one built for your task?
Describe it in one sentence. We build it, test it and hand it over, usually within 24h.