Announce new YouTube uploads in Discord
Automatically post a rich embed to your Discord server the moment a new video goes up on your YouTube channel.
Every 15 minutes, check my YouTube channel for new uploads and announce each one in a Discord channel as a rich embed. This is fully deterministic — no reasoning, no drafting — so build it as a code workflow with concrete steps.
Trigger: cron on a 15 minute cadence. YouTube does not send outgoing webhooks for uploads and is not a first-class poll provider on the platform, so the cron + list pattern is the right shape here. 15 minutes is a sensible default because YouTube's Search Videos costs 100 quota units per call and the daily quota is 10,000 units.
Configuration (both user-configurable at workflow install time):
1) youtubeChannelId — the YouTube channel to monitor (a UC... string).
2) discordChannelId — the Discord channel to post announcements into.
Workflow state: persist lastSeenPublishedAt (ISO 8601 timestamp). On the very first run, if it is unset, initialize it to the current time so we do not backfill the whole channel history — we only announce videos uploaded from now onward.
Step 1 — Fetch new videos with YouTube's Search Videos operation. Pass channelId = youtubeChannelId, order = date, type = video, publishedAfter = lastSeenPublishedAt, and a small maxResults (e.g. 10). Search results use items[].id.videoId (not items[].id), so parse accordingly.
Step 2 — If there are zero new items, exit early without touching state. Otherwise sort the returned items by snippet.publishedAt ascending so we announce oldest-first.
Step 3 — For each new video, build a Discord embed with: title = the video title, description = the first 200 characters of the video description (trim trailing whitespace, append an ellipsis if truncated), url = https://www.youtube.com/watch?v=<videoId>, thumbnail.url = the highest-resolution thumbnail available on snippet.thumbnails (prefer maxres, then high, then medium, then default), and color = 0xED4245 (Discord's red).
Step 4 — Call Discord's Send a Message operation to discordChannelId with that embed. Send them in publish order.
Step 5 — Only after every message posts successfully, update lastSeenPublishedAt to the newest snippet.publishedAt from this batch. If any Discord post fails, do not advance the cursor — the next run will retry from where we left off, so we never lose a video and never double-post.
Additional information
What does this prompt do?
- Checks your YouTube channel for new uploads every 15 minutes
- Posts each new video to a Discord channel as a rich red embed with the title, first 200 characters of the description, thumbnail, and watch link
- Remembers the timestamp of the last video it saw so consecutive runs never double-post
- Runs entirely on a schedule, no manual work once it is set up
What do I need to use this?
- A YouTube channel you want to monitor (you will need its channel ID)
- A Discord server where you can post announcements, plus the channel ID for the announcement channel
- A YouTube account with access to the channel
- A Discord login with permission to post in the target channel
How can I customize it?
- Swap the announcement channel or point it at multiple servers
- Change how often the check runs (every 5, 15, or 60 minutes) to balance freshness against your YouTube quota
- Tweak the embed styling: color, description length, or add extra fields like publish date
Frequently asked questions
How fast will my Discord server hear about a new video?
Will it post the same video twice?
Can I monitor a channel that isn't mine?
Can I announce in more than one Discord channel?
What happens if YouTube is slow or down when the workflow runs?
Related templates
On the mornings your club plays, get a plain-English rundown of who is out, who is doubtful, and how it reshapes the team, posted straight to Discord.
Every Monday at 9am, roll up the week's activity across your key Discord channels into a pinned embed digest with trends, unanswered questions, and shoutouts.
The moment you publish a GitHub release, rewrite the notes for real humans and post them as a rich embed in your community Discord channel.
The moment someone submits your Typeform, classify the response and post a formatted card to the right Discord channel with a triage thread underneath.
Each morning, draft and publish a companion blog post on your WordPress site for every new YouTube video you uploaded the day before.
Every night at 11pm, log views, likes, comments, and duration for every video on your channel to a Google Sheet so you can chart growth over time.
Never miss telling your community about a new upload.
Set this up once and every future YouTube video shows up in Discord on its own.