Wireburst monitors RSS/Atom feeds and posts new items into Discord, organized by category. Each feed gets its own dedicated text channel, grouped under a Discord category that matches your Wireburst categories. It turns Discord into an RSS reader — no separate app required.
- Polls all feeds every 15 minutes with conditional GET (ETag / Last-Modified) to minimize bandwidth
- Posts new items as rich embeds with title, full text, thumbnail, and source footer
- Each feed gets its own Discord channel, nested under its category group
- Managed from a local web admin panel and Discord slash commands
- OPML import/export for bulk feed management
- Categories and channels are created and moved automatically — no manual Discord setup needed
- Docker and Docker Compose
- A Discord account with admin access to a server
Python is not required on your host — everything runs inside the container.
- Go to https://discord.com/developers/applications
- Click New Application and give it a name (e.g. "Wireburst")
- Go to the Bot tab
- Click Reset Token, copy the token — you'll need it in step 3 (Clone and Configure)
- Under Privileged Gateway Intents, no additional intents are required — leave them all off
- Back on the Discord Developer Portal, open your application and go to OAuth2 → URL Generator
- Under Scopes, select:
botandapplications.commands- Both are required. Omitting
applications.commandscauses slash commands to silently fail
- Both are required. Omitting
- Under Bot Permissions, select:
- Manage Channels (required — the bot creates and moves channels automatically)
- Send Messages
- Embed Links (required for rich embeds)
- Attach Files (required for OPML export via
/feed export) - View Channel
- Use Application Commands
- Copy the generated URL, open it in a browser, and invite the bot to your server
You'll need this for step 3 (Clone and Configure).
- In Discord, go to User Settings → Advanced and enable Developer Mode
- Right-click your server icon and choose Copy Server ID
- Save that number
git clone https://github.com/cruftbox/wireburst.git
cd wireburst
cp .env.example .envOpen .env and fill in your values:
DISCORD_TOKEN=your-bot-token-here
DISCORD_GUILD_ID=your-server-id-here
WEB_PORT=8080docker compose up -dThe bot appears online in your server within a few seconds. Slash commands may take up to a minute to register on first launch — if they don't appear after 2 minutes, confirm you included both bot and applications.commands scopes in the invite URL.
On first run, Wireburst creates an Uncategorized channel group in Discord automatically.
The web panel is available at http://localhost:8080 (or whatever WEB_PORT you set). It provides a table-based UI for managing feeds and categories:
- Add feeds and categories
- Bulk category assignment — change the category for multiple feeds at once, then click Save Category Changes to apply them all in one step
- OPML import and export
- Remove feeds and categories
⚠️ Security note: The web panel has no authentication. It is intended for use on a trusted local network only. Do not expose it to the public internet without adding a reverse proxy with authentication.
Create a category — Wireburst creates the Discord channel group automatically:
/category add Tech News
/category add Sports
Add feeds — each feed gets its own channel under the category, and the last 5 items are posted immediately:
/feed add https://hnrss.org/frontpage Tech News
/feed add https://feeds.bbci.co.uk/sport/rss.xml Sports
Bulk import via OPML — type /feed import in Discord and attach your .opml file. Feeds nested under OPML folders are assigned to matching categories; any missing categories are created automatically.
After pulling new code or editing source files, rebuild and restart the container:
git pull
docker compose build
docker compose up -ddocker restart wireburst alone does not pick up code changes — you must rebuild the image.
| Variable | Description | Default |
|---|---|---|
DISCORD_TOKEN |
Bot token from the Developer Portal | (required) |
DISCORD_GUILD_ID |
Numeric server ID | (required) |
WEB_PORT |
Port for the web admin panel | 8080 |
| Command | Description |
|---|---|
/feed add <url> [category] |
Add a feed; validates the URL, creates a Discord channel, and posts the last 5 items immediately |
/feed remove <url> |
Remove a feed (Discord channel is left in place) |
/feed move <url> <new_category> |
Move a feed to a different category; moves its Discord channel too |
/feed list [category] |
List feeds with their channel, last-checked time, and failure count |
/feed refresh |
Immediately poll all feeds outside the 15-minute schedule |
/feed export |
Download all feeds as an OPML file |
/feed import <file> |
Import feeds from an attached OPML file |
/category add <name> |
Create a category and its Discord channel group |
/category remove <name> |
Remove a category; its feeds are moved to Uncategorized |
/category list |
List categories with Discord group and feed count |
/last5 |
Repost the last 5 items from the feed in the current channel |
/help |
Show all commands |
Wireburst manages Discord structure automatically:
- Each Wireburst category becomes a Discord channel group (category)
- Each feed within a category gets its own text channel inside that group
- When you move a feed to a different category (via web panel or
/feed move), its Discord channel moves too — within a few seconds - When you delete a category, its feeds move to Uncategorized and the empty Discord channel group is deleted automatically
You can freely drag channels and groups to reorder them within Discord — Wireburst doesn't touch ordering.
- Full-article scraping (embeds use feed-native content only)
- Per-user subscriptions
- Digest/batched posting
- Web panel authentication
MIT