Youtube rss channels without shorts
26 Dec 2025
For a long time, i’ve been “subscribing” to youtube channels by using an rss channel that looks something like this:
https://www.youtube.com/feeds/videos.xml?channel_id=UC2PA-AKmVpU6NKCGtZq_rKQ
The trouble is, a few of the channels i like have started making shorts. These shorts tend not to have a level of depth or quality that interests me. Luckily, MacKenzie has found an alternative solution which allows us to subscribe to an rss channel and also avoid shorts:
https://www.youtube.com/feeds/videos.xml?playlist_id=UULF2PA-AKmVpU6NKCGtZq_rKQ
What’s changed? First, we are using a playlist_id instead of a channel_id. Second, the UC at the start of the id is now UULF. This prefix means all public videos, but no shorts, livestreams, or other content i’m not interested in. There are a few other prefixes for different types of content, but this is the only one useful for me.
An issue with this approach is that all these rss channels have the same title “Videos”. My rss client allows me to change the title, and i think most others probably do to, so this is only an inconvenience once. Still, it would be nice if google changed this to make the experience of those of us who don’t want to use a youtube account to subscribe to people a little bit more pleasant.
Once i’ve subscribed, if i see a video that looks interesting, i add it to my download queue:
(defvar noa/video-queue "~/Videos/Youtube/00download"
"File where the urls of videos to download are stored, one per line.")
(defun noa/enqueue-video-url-at-point ()
"Append the url at point to the file `noa/video-queue'."
(interactive)
(let ((url (or (thing-at-point 'url t)
(user-error "No url at point"))))
(with-temp-buffer
(insert url "\n")
(write-region (point-min) (point-max) noa/video-queue t))))
Then, when i’m connected to a vpn, i can run my super simple fetch script, which uses yt-dlp to download any new videos:
#!/usr/bin/env sh
yt-dlp \
-a ~/Videos/Youtube/00download \
--download-archive ~/Videos/Youtube/00downloaded \
-o "~/Videos/Youtube/%(title)s.%(ext)s"
This means i never have to interact with the youtube website directly, and i also avoid any buffering when watching a video.