Home

Awesome

FeedCord Banner

FeedCord: Self-hosted RSS Reader for Discord

FeedCord is a dead-simple RSS Reader designed to integrate seamlessly with Discord. With just a few configuration steps, you can have a news feed text channel up and running in your server.


4/25/2024 - A Slight Pause In Development

Due to work and relocating, I will be taking a brief pause in development for this software. I plan to pick development back up in late June/beginning of July this year. Feel free to open issues, but know that I myself won't be getting to them for some time. I will gladly take pull requests in the meantime. Thanks for the support!

Features


If you wish to show your support to help development

<a href="https://www.buymeacoffee.com/Qolors" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/default-orange.png" alt="Buy Me A Coffee" height="41" width="174"></a>

Quick Setup (Docker)

Discord Webhook


Setting up appsettings.json

Your appsettings.json is a collection of instances:

{
    "Instances": [],
}

Each webhook gets one instance. Here's an example of a single instance:

{
     "Id": "Gaming News Channel",
     "RssUrls": [
       "https://examplesrssfeed1.com/rss",
       "https://examplesrssfeed2.com/rss",
       "https://examplesrssfeed3.com/rss",
     ],
     "YoutubeUrls": [ "" ],
     "DiscordWebhookUrl": "https://discord.com/api/webhooks/...",
     "RssCheckIntervalMinutes": 3,
     "EnableAutoRemove": true,
     "Color": 8411391,
     "DescriptionLimit": 200,
     "Forum": true
}

Here is an appsettings.json example of running two webhooks for two different channels:

{
	"Instances": [
		{
			"Id": "Gaming News Channel",
			"Username": "Gaming News",
			"RssUrls": [
				"https://examplesrssfeed1.com/rss",
				"https://examplesrssfeed2.com/rss",
				"https://examplesrssfeed3.com/rss"
			],
			"YoutubeUrls": [ "" ],
			"DiscordWebhookUrl": "https://discord.com/api/webhooks/...",
			"RssCheckIntervalMinutes": 3,
			"EnableAutoRemove": true,
			"Color": 8411391,
			"DescriptionLimit": 200,
			"Forum": true
		},
		{
			"Id": "Tech News Channel",
			"Username": "Tech News",
			"RssUrls": [
				"https://examplesrssfeed4.com/rss",
				"https://examplesrssfeed5.com/rss",
				"https://examplesrssfeed6.com/rss"
			],
			"YoutubeUrls": [ "" ],
			"DiscordWebhookUrl": "https://discord.com/api/webhooks/...",
			"RssCheckIntervalMinutes": 3,
			"EnableAutoRemove": true,
			"Color": 8411391,
			"DescriptionLimit": 200,
			"Forum": true
		}
	]
}

There are more optional properties to configure. You can view all properties and their purpose here


Setting up docker-compose.yaml

Your docker-compose.yaml will look be set up like this:

version: "3.9"

services:
  myfeedcord:
    image: qolors/feedcord:latest # for amd64 architecture
    # image: qolors/feedcord:latest-arm64  # For arm64 architecture (Uncomment this line and comment the above if using arm64)
    container_name: FeedCord
    restart: unless-stopped
    volumes:
      - ./PATH/TO/MY/JSON/FILE/appsettings.json:/app/config/appsettings.json

Replace ./PATH/TO/MY/JSON/FILE/ with the actual path to your appsettings.json.

Note: Depending on your architecture, use qolors/feedcord:latest for amd64 architecture, or qolors/feedcord:latest-arm64 for arm64 architecture. Ensure to uncomment the appropriate line in the docker-compose.yml as per your system's architecture. If you need a different please open a request.


Running FeedCord

In the folder you created, run the following command from your terminal:

docker-compose up -d

This will pull the latest FeedCord image from Docker Hub and start the service.

If you want to update your current image to latest it's quite simple. In your FeedCord directory run:

docker-compose pull

followed by

docker-compose up -d

This will pull the latest image and restart your current container with it


Done

With the above steps completed, FeedCord should now be running and posting updates from your RSS feeds directly to your Discord channel.


Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

<details> <summary>[2.1.1] - 2024-04-25</summary>

Added

</details> <details> <summary>[2.1.0] - 2024-02-28</summary>

Added

Changed

</details> <details> <summary>[2.0.1] - 2024-02-19</summary>

Added

</details> <details> <summary>[2.0.0] - 2024-01-30</summary>

Added

Changed

</details> <details> <summary>[1.3.0] - 2024-01-20</summary>

Added

Changed

Fixed

</details> <details> <summary>[1.2.1] - 2024-01-17</summary>

Changed

</details> <details> <summary>[1.2.0] - 2023-10-25</summary>

Added

Changed

Fixed

</details> <details> <summary>[1.1.0] - 2023-10-16</summary>

Added

Changed

Fixed

</details> <details> <summary>[1.0.0] - 2023-10-15</summary>

Added

</details>