auto-research
Deep strategic research engine — decomposes questions into parallel research threads, spawns multiple agents, and synthesizes…
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
$ npx -y skills add huytieu/COG-second-brain --skill youtube-video-kit --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/youtube-video-kitContext preview
The summary Claude sees to decide when to auto-load this skill.
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
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.
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.
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.
`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.
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
`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`.
curl -X POST "https://api.elevenlabs.io/v1/music" \
-H "xi-api-key: $ELEVENLABS_API_KEY" -H "Content-Type: application/json" \
-d '{"prompt": "<style prompt>", "music_length_ms": 250000}' -o bgm.mp3Check that your plan includes the Music API first. For a narration bed, ask for "very minimal, unobtrusive, no melody hooks, no vocals". Mix the bed about 20dB under the voice-over, and louder only during the title:
ffmpeg -i video.mp4 -i bgm.mp3 -filter_complex \ "[1:a]atrim=0:<dur>,volume='if(lt(t,4.2),0.45,0.13)':eval=frame,afade=t=in:d=1.2,afade=t=out:st=<dur-3>:d=3[bg];\ [0:a][bg]amix=inputs=2:duration=first:normalize=0[a]" \ -map 0:v -map "[a]" -c:v copy -c:a aac -b:a 160k out.mp4
Sanity check with `volumedetect` on a narration window: mean near -25dB, max at or above -6dB. Store generated tracks durably so a playlist reuses the same music family.
The principle: every frame should show the concept being narrated, not print it. A text-list frame is a slide, and viewers skim it.
A highlight box once shipped floating over empty page space because its coordinates were guessed. Every screenshot segment passes this before concat:
1. Highlights are in card coordinates (the screenshot scaled to card width). Cursor waypoints are in screen coordinates. Do not mix them. 2. A highlight wraps one actual UI row or element edge to edge. It never slices through a row or floats in whitespace. Snap it to the real bounding box read off the image. 3. Audit before rendering: paste the highlight rect onto the scaled screenshot with PIL and look at it. After rendering, extract a frame at each highlight's midpoint (`ffmpeg -ss <t> -frames:v 1`) and look at it. 4. Highlights must not overlap zoom windows. The highlight rect does not scale with zoom, so end it before the zoom starts. 5. Cursor waypoints and click ripples land on
Cognition + Obsidian + Git — A self-evolving second brain powered by AI agents, markdown files, and version control. No database, no vendor lock-in — just .md files that think.
Deep strategic research engine — decomposes questions into parallel research threads, spawns multiple agents, and synthesizes…
Write and publish a post to your own static blog end to end: content checklist (embedded links, optional TL;DR), per-post ASCII…
Quick capture of raw thoughts with intelligent domain classification and competitive intelligence extraction
Run one task through the V-model verification loop: CP-2 plan → CP-3 build → CP-3v component verify → CP-4 integration verify…
Deep-dive 7-day analysis across all data sources for weekly reviews, board prep, and strategic planning
Autonomous content pipeline - scout announcements in your field, triage by trend momentum and personal angle, produce…