← Back
- Managing YouTube subscriptions via GitHub and Miniflux
- Overview
- Why?
- Implementation
- Screenshots
- Links
- Credits
- Recent Posts
Managing YouTube subscriptions via GitHub and Miniflux
By @DC 500 on @July 21, 2024
I watch too much YouTube. I'm not alone; 62% of US internet users visit the platform daily, and 92% weekly. It scratches an itch differently to Twitter/X or Instagram because I subscribe to channels that meaningfully impact my life. However, I often start well but become entranced by the “YouTube rabbit hole”.
The platform’s algorithm threads the needle by providing a balanced, never-ending stream of content that feels productive. It’s a completely different experience to Instagram Reels, for example, which feels like a gluttonous meal of content.
This post outlines how I migrated my use of YouTube to Miniflux, a self-hosted RSS reader, which I manage via a GitHub repo.
Overview
The goals of the system are:
- Host a Miniflux instance
- Manage the subscriptions for Miniflux via a YAML file
- Sync subscription changes automatically via a GitHub Action
- Create a single feed of content
Why?
Miniflux provides a single feed containing the news, videos, podcasts, and blog posts I subscribe to. It has no algorithm. It has an end. I completely manage its content. Miniflux consolidates everything I want to consume in one place.
I read it once a day, knowing the content is valuable. If I then go directly on a platform, e.g. Instagram, I know I'm enjoying a distraction. I’m not kidding myself that in some way it is good for me.
Automating the feeds that I subscribe to via GitHub is overengineering, however I prefer to manage configuration this way, see revett/dotfiles as another example.
Implementation
I initially used DigitalOcean to run my Miniflux instance. Last year, I migrated it to Railway as an excuse to try out the platform. I’ve been consistently impressed by the quality and pace of product development from the team — have a read of their changelogs.
I run the Miniflux instance in a Docker container (see docs), alongside Postgres. It costs around $3 per month to run.
Once you have the Miniflux instance up and running, head to /keys and create an API key.
Create a new GitHub repo with this file structure — see revett/feeds as an example.
repo:
- feeds.yml # List of subscriptions
- .github:
- workflows:
- sync.yml # GitHub ActionThe feeds.yml file lists the RSS feeds you want to subscribe to, grouped by category:
Set up a GitHub Action to sync your subscriptions to the Miniflux instance:
This GitHub Action uses the revett/miniflux-sync CLI to sync the Miniflux instance with the feeds in feeds.yml.
Head to /feeds/settings/secrets/actions in your GitHub repo and set the following repository secrets:
MINIFLUX_SYNC_ENDPOINT— e.g.https://your-domain.com/v1/MINIFLUX_SYNC_API_KEY— The API key that you generated earlier
On commits to main, the GitHub Action will sync changes. On all other branches, the revett/miniflux-sync CLI uses --dry-run to only output what would be changed, if you wish to check changes before syncing.
Screenshots
Links
- Frequency of YouTube use in the United States as of 3rd quarter (2020)
- Understanding the “YouTube rabbit hole” (2019)
- revett/feeds — My RSS feeds, managed in Miniflux
- revett/miniflux-sync — Manage and sync your Miniflux feeds with YAML
Credits
Cover image created by @viglomir.
Recent Posts
.jpg&w=1080&q=75)




.jpg&w=1080&q=75)
.png&w=1080&q=75)
.jpg&w=1080&q=75)