New to Kestra?
Use blueprints to kickstart your first workflows.
Announce new YouTube uploads to Discord with Kestra. A polling trigger detects channel uploads and posts title, link, and publish time automatically.
Your community should hear about a new video from you, not from the algorithm. This blueprint attaches io.kestra.plugin.youtube.VideoTrigger to a channel: every 30 minutes it checks for uploads it has not seen before, and the moment one appears it starts an execution that posts a ready-made announcement to Discord, title, watch link, and publish time already filled in. No one has to remember to post, and the announcement lands while the video is still fresh.
on_new_video (io.kestra.plugin.youtube.VideoTrigger) polls the channel on a PT30M interval with the OAuth2 access token. When new uploads appear, it fires with scalar outputs for the latest video, title, videoId, videoUrl, channelTitle, publishedAt, and thumbnailUrl, plus newVideosCount and an allNewVideos array.log_upload writes the detection to the execution logs, giving announcement history a searchable audit trail.announce interpolates the scalar trigger outputs into a Discord webhook message. Only scalars enter the JSON payload; the allNewVideos array stays on the execution for inspection.errors block posts a distinct Discord alert when the announcement fails.disabled: true; point channelId at your channel and enable it to go live.The YouTube API can tell you a video exists; turning that into a reliable announcement still needs polling, state to avoid duplicates, a place to run, and an alert when the token dies. Kestra's trigger handles the polling and dedup state, the execution history shows every announcement ever sent, and the errors block guarantees a silent failure never costs you a launch window.
YOUTUBE_ACCESS_TOKEN: OAuth2 bearer token for the YouTube Data API.DISCORD_WEBHOOK_URL: Discord incoming webhook URL.channelId with your channel's ID.disabled: false on the on_new_video trigger and upload or schedule a video to see the announcement arrive.interval for faster announcements, keeping YouTube API quota in mind.{{ trigger.videoId }} into the YouTube stats to warehouse blueprint a day later to measure launch performance.{{ trigger.thumbnailUrl }} inside a Discord embed for a richer announcement card.