Reads your recent uploads and drafts alternative titles, a fuller description and tags for each into a Google Doc.
Uses
Claude
Google Docs
YouTube
Draft better titles, descriptions and tags for your videos
Every Monday at 09:00, your most recent uploads are read from YouTube and, for each one, AI drafts alternative titles, a fuller description and a list of tags. Everything lands in a new Google Doc, one section per video, with a link back so you can compare the draft against what is live.
Nothing is published. The workflow can only read your channel, so the document is a working draft and you copy whatever you want to keep into YouTube Studio yourself. A fresh document is created on every run, so nothing you already use is ever overwritten. Every suggestion is written from that video's own current title and description, and the AI is told to invent nothing: a video with too little to go on is recorded as skipped rather than given a made-up title, and the drafted and skipped counts are written at the end. One video that cannot be read is logged and skipped.
You need your YouTube channel ID and connections to YouTube and Google Docs.
channelId to blank.Set channelId to blank.videosToDraft to 5.Set videosToDraft to 5.titleOptionsPerVideo to 3.Set titleOptionsPerVideo to 3.audienceNotes to blank.Set audienceNotes to blank.channelId. Save it as channel.Get the details of channelId. Save it as channel.channelName to your channel.Set channelName to your channel.channelNameErrorIf a step below fails, save the error as channelNameErrorchannel.title and save it as channelName.Trim channel.title and save it as channelName.That channel came back without a name; calling it 'your channel'..Show in the output: That channel came back without a name; calling it 'your channel'..channelName is emptyIf channelName is emptychannelName to your channel.Change channelName to your channel.uploadsPlaylistId to blank.Set uploadsPlaylistId to blank.uploadsErrorIf a step below fails, save the error as uploadsErrorchannel.related_playlists.uploads and save it as uploadsPlaylistId.Trim channel.related_playlists.uploads and save it as uploadsPlaylistId.That channel did not come back with an uploads playlist..Show in the output: That channel did not come back with an uploads playlist..uploadsPlaylistId is emptyIf uploadsPlaylistId is emptyuploadsPlaylistId. Save it as uploads.List the videos in uploadsPlaylistId. Save it as uploads.videos to uploads.items.Set videos to uploads.items.videoCount to 0.Set videoCount to 0.videoListErrorIf a step below fails, save the error as videoListErrorvideos and save it as videoCount.Count the items in videos and save it as videoCount.YouTube did not return a list of videos for that playlist..Show in the output: YouTube did not return a list of videos for that playlist..videoCount is 0If videoCount is 0taskBrief to:Set taskBrief to:You are helping a video creator improve the metadata on one of their own YouTube videos. Work only from the facts about that video given at the end of this message.
Reply using exactly these three headings, in this order, and nothing else.
TITLEStitleInstruction to Write titleOptionsPerVideo alternative titles, one per line, each under 70 characters. Do not number them.Set titleInstruction to Write titleOptionsPerVideo alternative titles, one per line, each under 70 characters. Do not number them.
DESCRIPTION
Four to six sentences saying what the video actually covers, written for someone deciding whether to watch it.
TAGS
One line of 10 to 15 comma-separated tags.groundingRules to:Set groundingRules to:Rules you must follow:
- Use only what the current title and description below actually say. Do not invent facts, names, numbers, products, dates, guests or claims that are not there.
- Do not promise anything the video may not contain.
- Keep the creator's subject matter. You are rewording what is already there, not pitching something new.
- If the current title and description together do not say enough about the video to write honest metadata, reply with exactly NOT ENOUGH INFORMATION and nothing else.audienceLine to blank.Set audienceLine to blank.audienceNotes isn't blankIf audienceNotes isn't blankaudienceLine to Change audienceLine to
About this channel and who it is for, from the creator:
audienceNotes
.promptPreamble to taskBrief plus titleInstruction plus groundingRules plus audienceLine.Set promptPreamble to taskBrief plus titleInstruction plus groundingRules plus audienceLine.runDate.Get today's date and save it as runDate.docTitle to Video metadata drafts - channelName - runDate.Set docTitle to Video metadata drafts - channelName - runDate.docTitle. Save it as newDoc.Create the document docTitle. Save it as newDoc.docId to blank.Set docId to blank.docErrorIf a step below fails, save the error as docErrornewDoc.document_id and save it as docId.Trim newDoc.document_id and save it as docId.Google Docs did not return an id for the new document..Show in the output: Google Docs did not return an id for the new document..docId is emptyIf docId is emptyintroText to Drafted runDate for channelNameSet introText to Drafted runDate for channelName
These are drafts, not changes. Nothing on your YouTube channel has been touched - this workflow can only read your videos, so copy anything you want to keep into YouTube Studio yourself.
Every suggestion below was written from that video's own current title and description. Where there was not enough to go on, the video is listed as skipped instead of being given an invented title.docId.Add text to docId.introTextdraftedCount to 0.Set draftedCount to 0.skippedCount to 0.Set skippedCount to 0.video in videos:For each video in videos:videoErrorIf a step below fails, save the error as videoErrorvideo.video_id and save it as videoId.Trim video.video_id and save it as videoId.video.title and save it as videoTitle.Trim video.title and save it as videoTitle.videoId is empty or videoTitle is emptyIf videoId is empty or videoTitle is emptySkipped a playlist entry with no video id or title..Show in the output: Skipped a playlist entry with no video id or title..skippedCount.Add 1 to skippedCount.videoId. Save it as details.Get the details of videoId. Save it as details.currentDescription to blank.Set currentDescription to blank.descriptionErrorIf a step below fails, save the error as descriptionErrordetails.description and save it as currentDescription.Trim details.description and save it as currentDescription.That video came back without a description..Show in the output: That video came back without a description..currentDescription is emptyIf currentDescription is emptycurrentDescription to (this video has no description on YouTube).Change currentDescription to (this video has no description on YouTube).videoFacts to Set videoFacts to
The video:
Current title: videoTitle
Current description:
currentDescription
.prompt to promptPreamble plus videoFacts.Set prompt to promptPreamble plus videoFacts.prompt. Save it as draft.Ask Claude: prompt. Save it as draft.
Maximum response length: 900draft.response_text and save it as draftText.Trim draft.response_text and save it as draftText.draftText is empty or draftText starts with NOT ENOUGH INFORMATION (ignoring…If draftText is empty or draftText starts with NOT ENOUGH INFORMATION (ignoring…videoTitle.Show in the output: Not enough in the current title and description to draft metadata for: videoTitle.skippedCount.Add 1 to skippedCount.videoTitle to docId.Add the heading videoTitle to docId.videoBlock to Watch: https://www.youtube.com/watch?v=@videoIdSet videoBlock to Watch: https://www.youtube.com/watch?v=@videoId
draftText
.docId.Add text to docId.videoBlockdraftedCount.Add 1 to draftedCount.videoError as text.Show in the output: Could not draft metadata for one video: videoError as text.skippedCount.Add 1 to skippedCount.summaryText to Set summaryText to
Drafted draftedCount of videoCount videos. Skipped skippedCount.docId.Add text to docId.summaryTextdraftedCount is 0If draftedCount is 0None of the videos read had enough in their current title and description to draft honest metadata from..Show in the output: None of the videos read had enough in their current title and description to draft honest metadata from..