Getting Full Articles With Images In An RSS Feed
I am a big fan of RSS.
However, one of the issues with RSS feeds in 2024 is that they often don’t provide the full content of the posts they aggregate, which makes RSS readers a lot more like link aggregators and less like content readers.
Fortunately, there’s a solution: Full Text RSS
This is a service that pulls the full content from RSS entries, along with images, and generates new RSS feeds from them. It’s a bit like the ‘reader mode’ on many mobile browsers - you just get the main text and embedded images.
In other words, it takes RSS feed items that normally look like this:
And makes them come into your feed like this:
This is a paid service, but there is also a docker image that you can host yourself. If you’re hosting your own RSS reader, you can run this alongside it. I use FreshRSS as my RSS reader.
The setup
I start with a pretty simple docker-compose.yml which contains the two services:
version: '3.3'
services:
freshrss:
restart: unless-stopped
logging:
options:
max-size: 10m
ports:
- '8080:80' # Change this to your preference
environment:
- TZ=America/Chicago # Change to your timezone
- 'CRON_MIN=1,31' # How often RSS feeds are checked
volumes:
- './data:/var/www/FreshRSS/data'
- './extensions:/var/www/FreshRSS/extensions'
- './config:/config'
extra_hosts:
- 'host.docker.internal:host-gateway'
container_name: freshrss
image: 'lscr.io/linuxserver/freshrss:latest'
fivefilters-full-text-rss:
container_name: full-text-rss
restart: unless-stopped
ports:
- '8081:80' # Change this to your preference
image: 'heussd/fivefilters-full-text-rss:latest'
Place this on your server that has Docker installed and run
docker compose up -d
This will give you two services that I’ve mentioned: FreshRSS and Full Text RSS. You’ll find them at the ports specified in the docker-compose.yml, and ideally you’ll point a reverse proxy to them to give them a domain name and https on your local network.
Creating Full Text RSS Feeds
After signing up for your local FreshRSS account, go to the Full Text RSS service’s address and paste the RSS feed url of something you wish to follow
After clicking Create Feed
, you’ll see a preview of the scraped RSS feed. The URL of this feed will be what to add as a feed to FreshRSS.
However, since we made an internal docker network in our docker-compose file, one change I like to make is to point FreshRSS to that internal network instead of the IP or URL of the Full Text RSS service. The main reason I do this is for portability: if I move this service to another network, or change my local domain, all of my feeds will still work.
This is done by simply replacing the base domain of the Full Text RSS Service with
http://host.docker.internal:8081
Note that 8081
is the port specified for the service in the docker-compose.yml above.
Example change:
- http://192.168.100.23:8081/makefulltextfeed.php?url=...
+ http://host.docker.internal:8081/makefulltextfeed.php?url=...
We simply paste this as a new feed into FreshRSS and set a category and click Add:
That’s it! Enjoy full articles and images in your RSS feed.