YouTube is crap, so I fixed it.
Regular readers will know that I’ve been recording Let’s Plays on YouTube for a while. I have a regular series that runs on Fridays, plus on Tuesdays I try out different games to see what people might want to see more of.
YouTube has some very basic tools to schedule videos. Videos have a status of Private (only you can see it) Unlisted (only people with the direct link can see it) or Public. You can schedule videos to go live at any time and date, but only if they’re set to Private not Unlisted. I used video scheduling to set up a buffer, so I could record videos in advance and didn’t have to be around at 3pm on Tuesdays and Fridays. I tried to remember to post about a video on Mastodon when it went live, but I frequently forgot or was busy doing something else.
There may be better controls once you’re big enough to get on the partner program, but I don’t have anywhere near the subscriber count to qualify (I get that, watching a middle-aged bloke fumble his way through games is an acquired taste).
This became a bit of a problem for me when a mate didn’t enjoy the game I was currently playing on Fridays (Star Wars Jedi: Fallen Order) and gifted me a copy of Outer Wilds to play next. I didn’t want to make him have to wait too long for me to start it, and I started wondering if I could give him early access to videos without losing the ability to schedule them going live. It turned out that with YouTube’s basic tools I couldn’t.
It was also around this time that I discovered that adding unlisted videos to a playlist would make them visible in that playlist, which was somewhat vexing. I also started mirroring all my videos to my self-hosted Peertube instance.
Patreon was my first red herring. You can upload videos there, but only up to 1080p. I record my videos in 1440p and didn’t want to make early access a worse experience. Of course, you wouldn’t be here reading this if the answer was as simple as “just use Patreon”, because you read these posts for my ridiculous overkill solutions to trivial problems.Β To cut a long story short, I ended up installing n8n, an automation platform.
I have a Google Sheet that serves as a single source of truth for videos. Their title, description, YouTube & Peertube IDs and playlists are all listed along with a go-live date and an Early Access date, 4 weeks earlier.

Every day at 3pm my n8n workflow fires. It checks the spreadsheet (authorised by a Google Service Account), and spits out the video with today’s YouTube date. It matches that video from a request to the YouTube API for my most recent videos and uses the “compare datasets” node to merge them. From there it sets title and description, sets the video to public, assigns it to the relevant playlist and marks the playlist as public if it’s the first video in the playlist. All this is also repeated on Peertube.
Once the video’s public, I then have to take care of all the notifications that I’m terrible at handling manually. The workflow posts a canned message with a link to the video on Mastodon and Xitter (I don’t use the site any more, but if it can give something I’m posting on a different site a boost then why not). I also set up a Discord server. Among all the usual channels (tech, memes, pets, cursed memes) there’s one where the workflow posts regular releases.

It also pulls out the details of the early access video for the same date (which is saved as Unlisted when I upload it) and posts it to the early access channel, gated behind a special role.
I have a second workflow that monitors the Free Games Finders Steam group’s RSS feed and posts it to a channel in the Discord server, because I know a lot of folks don’t use RSS.
Is it a ridiculously overkill solution? Probably. But that’s half the fun. Pointless having all these machines around if they don’t make my life easier.
