← ClaudeAtlas

broll-picklisted

Claude picks CONTEXTUAL/scene-level anchors from a clip transcript (literal objects, establishing shots, evocative concept footage matched to the story's tone — not just keyword nouns) and sources full-bleed B-roll cutaways via keyless yt-dlp YouTube search + mcptube frame-sampling + Claude vision verify. The verify step gets the spoken context and rejects literal-but-wrong matches (e.g. a cat laser toy for a tense "red dot" beat). Aims dense (8-12 windows, targeting cutaway footage on ~60%+ of the runtime; emits cutaway_coverage in the plan and WARNs below BROLL_MIN_COVER, default 0.6). Emits broll_plan.json with per-cutaway placement [t0,t1] and source metadata; clip files are namespaced per-clip. Windows snap to whole chunk-captions boundaries; vision calls capped by BROLL_VISION_CAP (default 16).
jperrello/C0BALT_CUT · ★ 2 · Data & Documents · score 68
Install: claude install-skill jperrello/C0BALT_CUT
# broll-pick Selects B-roll cutaways for one short. Claude reads the clip transcript + `chunks.json` (from chunk-captions) + the source `ingest.json`, picks the 3-5 strongest visualizable nouns/topics (NOUN/VERB/EMOTION/PIVOT), and spawns multiple short cutaway windows per topic — each intercut with the speaker, each preferring distinct footage. Windows are expressed as whole chunk-index ranges so no cut lands mid-word. Per window: keyless YouTube discovery via the mcptube-bundled `yt-dlp` (`ytsearchN:<query>` — `mcptube discover` is NOT used, it requires an LLM API key the stack doesn't have), then `mcptube add` the candidate, sample 3 frames via `mcptube frame`, and show Claude the frame grid (`claude -p` vision) to pick the best on-subject shot or reject. On reject, the query is rewritten once (literal↔metaphorical) and retried; a second miss drops the window — no fallback footage. Chosen segments download via `yt-dlp --download-sections` into `work/<id>/broll/broll_NN.mp4`. ## Invoke ``` .claude/skills/broll-pick/broll-pick.sh <clip_transcript.json> <chunks.json> <ingest.json> <out_broll_plan.json> ``` - `clip_transcript`: per-clip transcript with `words[]` (clip-local times) - `chunks`: chunk-captions output (`chunks[]` with `t0/t1/text`) - `ingest`: `work/<id>/ingest.json` (title + source url) - `out`: path for `broll_plan.json`; b-roll clips land in `<ingest_dir>/broll/` ## Env - `BROLL_VISION_CAP` (default 10) — max Claude vision calls per clip. - `BROLL_PICK=0