--- name: youtube-video-kit description: > Produce YouTube-ready video packaging: a branded thumbnail, an animated opening title, background music via ElevenLabs Music, and the upload metadata bundle. Use whenever you make or publish a video (deep dives, demos, blog companions) or want thumbnails, intros, video music, or channel and playlist consistency. --- # YouTube video kit Package videos like a channel, not a screen recording. The template fuses two reference styles: cinematic stills with minimal text (the Anthropic channel) and dark IDE screenshots with huge boxed text, one accent word, readable at 320px (AI-coding channels). It uses the dark lane-art language from the `social-media-kit` skill. ## Configuration Scripts read environment variables, so nothing personal is hardcoded. | Setting | Env var | Default | |---|---|---| | Signature text (bottom-left) | `BRAND_URL` | `yourblog.example` | | Avatar PNG with a white background (optional) | `AVATAR_PATH` | unset (no avatar drawn) | | Accent word color | `ACCENT` | `D97757` (terracotta, configurable) | | Fonts | `HEADLINE_FONT`, `MONO_FONT` | macOS Helvetica Neue and Menlo, DejaVu on Linux | | Opening eyebrow and chip text | `OPEN_EYEBROW`, `OPEN_CHIP` | example strings | | ElevenLabs key | `ELEVENLABS_API_KEY` | none, required for music | Your channel ID, handle and avatar belong in your own config. ## Requirements - Python 3 with Pillow - ffmpeg - `ELEVENLABS_API_KEY` for music generation - A CDP-driven Chrome logged in to YouTube Studio, for publishing (for example the `browser-harness` skill) ## Thumbnail `scripts/ytthumb.py`, 1280x720 (rendered at 2560x1440, then downscaled). Keep the template identical across a playlist and vary only headline, accent word and lane pattern. - Background `#0A0B0D` plus lane art on the right third, with green and red end dots. - Your avatar, if you set one, is keyed (white above 235 becomes transparent), resized with NEAREST, and placed bottom-right over the lanes. Use one consistent avatar as the channel identity rather than varying photo cutouts. - Headline: 2 lines at most, about 5 words, bold sans around 210px at 2x, white, with one accent word. It must stay legible at 320px wide (squint test). - One mono chip with real numbers and a green dot. - Signature and a cursor block, bottom-left. ```bash AVATAR_PATH=./avatar.png BRAND_URL=myblog.dev python3 .claude/skills/youtube-video-kit/scripts/ytthumb.py "MY AI TESTS|MY PRODUCT." AI "7 passed ยท 4 failed" thumb.png ``` ## Opening title `scripts/ytopen.py [out.mp4]` renders 4.2s at 30fps, 1920x1080, with PIL frames piped to ffmpeg (rawvideo to libx264 crf 19). Sequence: lanes draw in, staggered (0-1.2s); eyebrow (0.6s); headline fades in by line (0.9, 1.2, 1.5s, accent word colored); chip (2.2s); avatar rises (1.6-2.6s); signature with a blinking cursor (2.6s); 0.5s fade to black. Edit `HEAD` in the script for the headline. To join it to the main video, give the opening a silent AAC track (`-f lavfi -i anullsrc=r=44100:cl=mono -shortest`) matching the main video's audio params, then use the concat demuxer with `-c copy`. ## Music with ElevenLabs ```bash curl -X POST "https://api.elevenlabs.io/v1/music" \ -H "xi-api-key: $ELEVENLABS_API_KEY" -H "Content-Type: application/json" \ -d '{"prompt": "