Every YouTube channel quietly publishes a feed of its newest videos. Point a small script at the channels you actually care about and you get their uploads in your inbox, without opening the app and losing an hour to the sidebar.
Collect channel IDs
For each channel, open its page on YouTube, click the more link in the channel description, then Share channel and Copy channel ID. The ID starts with
UC.Start a new script
Go to script.google.com, click New project and name it New videos.
Paste the script
Replace everything in the editor with this, and put your channel IDs in the list:
const CHANNELS = [ 'UCxxxxxxxxxxxxxxxxxxxxxx', ]; function sendNewVideos() { const atom = XmlService.getNamespace('http://www.w3.org/2005/Atom'); const since = new Date(Date.now() - 24 * 60 * 60 * 1000); let html = ''; for (const id of CHANNELS) { const url = 'https://www.youtube.com/feeds/videos.xml?channel_id=' + id; const feed = XmlService.parse(UrlFetchApp.fetch(url).getContentText()).getRootElement(); const channel = feed.getChildText('title', atom); for (const entry of feed.getChildren('entry', atom)) { if (new Date(entry.getChildText('published', atom)) < since) continue; const link = entry.getChild('link', atom).getAttribute('href').getValue(); html += '<p><b>' + channel + '</b>: <a href="' + link + '">' + entry.getChildText('title', atom) + '</a></p>'; } } if (html) { MailApp.sendEmail({ to: Session.getActiveUser().getEmail(), subject: 'New videos today', htmlBody: html, }); } }Run it once and allow access
Click Run and allow access. If any channel uploaded in the last day, an email arrives; if not, nothing is sent, which is also correct.
Run it every evening
Open Triggers, click Add trigger, choose
sendNewVideos, Time-driven, Day timer, 6 pm to 7 pm, and save.
Paste this into Claude Code, Codex or any coding agent. The agent writes and sets up the automation, then tells you what to click.
Build a Google Apps Script that emails me new uploads from YouTube channels I follow, once a day. - I'll give you channel links or @handles; look up each channel ID (it starts with UC) and put them in a list at the top. - Read each channel's feed at https://www.youtube.com/feeds/videos.xml?channel_id=ID (Atom format). - Include only videos published since the last run (store the time in Script Properties), with the thumbnail, title and link, grouped by channel. - Add an option to leave out Shorts (their links contain /shorts/). - Skip a channel whose feed fails, and mention it at the end of the email. - Add a daily trigger for 6-7 pm and tell me where to paste it on script.google.com and what to click.
You still need to
- Give the agent the channel names or links.
- Sign in to Google and click Allow when the script first runs.
Things that trip people up
- The feed includes Shorts as well as full videos. The agent version can filter them out.
- The feed only lists a channel's most recent uploads, so this tells you what's new; it isn't a full archive.