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: truncated RSS feed entry

And makes them come into your feed like this: full RSS feed entry with images

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 pasting a url into full text rss’s web view

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: pasting the Full Text RSS feed into FreshRSS

That’s it! Enjoy full articles and images in your RSS feed.