Uploading a video takes ten minutes. Writing the title, description, and metadata takes forty. That ratio is wrong, and it's fixable.
Why It Matters
The YouTube metadata problem is a good example of a class of work that looks like it needs human judgment but mostly just needs context applied consistently. A description isn't creative writing — it's a structured output: what the video covers, what the viewer will learn, who it's for, and where to go next. If you can describe your own voice and format precisely enough, an agent can do this reliably.
Claude Code skills and runbooks give you the primitive to make that description precise and repeatable. Once it's written down, every video gets consistent treatment without the tedium.
What You'll Learn
- What a Claude Code skill is and how to write one
- How runbooks extend skills into SOPs — step-by-step operational instructions an agent executes
- How to build a description generation pipeline: fetch transcript → apply voice profile → generate → push to YouTube via Data API
- How auto-title detection works: if the current title looks like a timestamp placeholder, the runbook flags it and generates a replacement
The Implementation
A skill is a markdown file that gives Claude additional context or instructions. The grill-me skill, for example, tells Claude to interview you relentlessly about a plan before generating anything. Skills are composable — you include them when you need them, skip them when you don't.
A runbook takes the skill format and turns it into an SOP. Where a skill describes intent, a runbook describes procedure: first fetch the video transcript, then apply the creator's voice profile, then generate a title and description using this template, then push the result to YouTube. It's the difference between "here's how I think about descriptions" and "here's the exact sequence of steps to produce one."
The update-description runbook does the following:
- Fetches the current video metadata from the YouTube Data API
- Detects auto-generated placeholder titles (timestamp format, e.g.
2026 04 15 12 24 13) and flags them for replacement - Pulls a creator voice profile from
website/.agents/memories/user-profile.md— tone, what to avoid, career facts, approved copy examples - Fetches the video transcript via
youtube-transcript-api(no OAuth required for public videos) - Passes transcript + voice profile + description template to the agent
- Writes the generated title and description back to a Google Doc tab for review, then pushes to YouTube on
--execute
The voice profile is the key piece. Without it, you get competent but generic copy. With it, the output reflects how you actually write — specific over vague, practitioner-to-practitioner, no marketing language.
# Generate description and push immediately (live stream workflow)
uv run python .agents/runbooks/youtube-channel/update-description/scripts/main.py \
--video https://youtu.be/VIDEO_ID \
--title "Your Real Title Here" \
--summary "What the video is actually about..." \
--push
# Full agent-generated workflow with review step
uv run python .agents/runbooks/youtube-channel/update-description/scripts/main.py \
--video https://youtu.be/VIDEO_ID \
--generate # writes to Google Doc for reviewThe full runbook code, voice profile format, and pipeline scripts are in the DataCrew open tooling repo at github.com/jaewilson07.



