I came across documentation for this in the readme for the FreshRSS extension YoutubeChannel2RssFeed. The method involves running an instance of the Youtube-operational-API (there was a public instance that has been cease and desisted by Google, see here) and plugging the extension into it.
YoutubeChannel2RssFeed Extension
TL;DR install this extension
git clone https://github.com/cn-tools/cntools_FreshRssExtensions.git
cd cntools_FreshRssExtension
cp -r xExtension-YouTubeChannel2RssFeed <your_freshrss_data_directory>/config/www/freshrss/extensions
Youtube-operational-API instance
Here’s a Docker compose.yml for running both
services:
freshrss:
image: lscr.io/linuxserver/freshrss:latest
container_name: freshrss
environment:
- PUID=1000
- PGID=1000
- TZ=America/Los_Angeles
volumes:
- ./freshrss/config:/config
ports:
- "8811:80""
restart: unless-stopped
youtube-operational-api:
container_name: freshrss-yt-o-api
image: benjaminloison/youtube-operational-api:latest
restart: unless-stopped
ports:
- "8812:80"
depends_on:
- freshrss
Configuring extension
In FreshRSS, log in as admin and go to Configuration > Extensions. Turn on YoutubeChannel2RssFeed under User extensions and click the gear to configure.
Set Youtube Shorts to be marked as read or blocked completely. Enter the URL for your yt-o-api instance. Based on the above compose file it would be http://freshrss-yt-o-api:8812
. Submit changes.
For me this worked immediately, no shorts ever show up in FreshRSS for my Youtube feeds. I haven’t seen this documented anywhere else so I wanted to mirror it somewhere.