/b-roll-finder
Source b-roll for a video edit — classify each moment, scope the search, return vetted candidates, place on the word. Use when the user says "find b-roll", "/find-broll", "source clips for this edit", or wants footage/memes/screenshots to lay over a talking-head video.
$ npx -y skills add louisedesadeleer/b-roll-finder --skill b-roll-finder --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/b-roll-finder
Context preview
The summary Claude sees to decide when to auto-load this skill.
Source b-roll for a video edit — classify each moment, scope the search, return vetted candidates, place on the word. Use when the user says "find b-roll", "/find-broll", "source clips for this edit", or wants footage/memes/screenshots to lay over a talking-head video.
SKILL.md
b-roll-finder.SKILL.mdname: find-broll
description: Source b-roll for a video edit — classify each moment, scope the search, return vetted candidates, place on the word. Use when the user says "find b-roll", "/find-broll", "source clips for this edit", or wants footage/memes/screenshots to lay over a talking-head video.
B-Roll Finder — skill methodology
> A reusable methodology for sourcing and placing b-roll on talking-head video. > Genericized from a working agent skill. Adapt paths and brand tokens to your own setup.
⛔ USER OVERRIDES ARE LAW — and they persist
When the user states a preference or ban mid-run ("no memes", "no text cards", "nothing political"), it applies IMMEDIATELY and for the rest of the session, AND gets written into the profile's Guardrails right then — not at the end. A banned category is never sourced again, never proposed again, never "just one candidate to check". Violating a stated ban is the worst failure this skill can make: it tells the user the agent doesn't listen.
⛔ STEP 0 — ONBOARDING GATE (run this check before ANYTHING else, every session)
Open the profile (TASTE.md or the user's fork). **The ONLY thing that skips onboarding is a literal `Confirmed-by: <name> (<date>)` line at the top of the profile.** No line → ask the four onboarding questions (below) out loud, write the answers into the profile, add the line. This is NOT optional and NOT inferable:
- Do **NOT** infer the answers from CLAUDE.md, memory, prior conversations, or this profile's prose — even if you are confident you know them. Asking IS the feature.
- The shipped TASTE.md is an EXAMPLE, **even if the current user is its original author**. Author ≠ confirmed.
- A CLAUDE.md pointer that says "load my taste profile" does not count as confirmation either — check for the line.
- "redo my profile" re-triggers onboarding at any time.
The one rule that governs everything
**The agent NEVER picks the final b-roll. The user does.** The right clip is often a taste call. This skill's job is to **narrow the funnel** — classify each moment, scope the search to trusted/authoritative sources, score candidates, and hand back a tight contact sheet. The user makes the final pick.
The taste profile — load it before sourcing anything
Curation is half the skill. Every run starts by loading a **taste profile**: the b-roll fingerprint (which types, how fast to cut), the trusted-source list tagged by topic, and the guardrails. This repo ships with a working default — **[TASTE.md](TASTE.md)**, revealed from real published videos — so the skill has good taste out of the box. Use it as-is until the user builds their own (TASTE.md's "Make it yours" section covers the import-then-prune mechanism: pull their YouTube subscriptions via `yt-dlp --cookies-from-browser`, prune together, then reveal their fingerprint from their own published videos).
Onboarding preferences (ask once, store in the profile)
**When onboarding fires:** the shipped [TASTE.md](TASTE.md) is an EXAMPLE profile (the author's), not the user's. On first run, check the profile for a `Confirmed-by:` line naming the current user. Absent → run onboarding: ask the questions below, write the answers into the user's profile (their fork of TASTE.md), and add `Confirmed-by: <user> (<date>)` at the top. Present → skip onboarding and just load it. The user can re-trigger anytime with "redo my profile".
Ask these on first run and write the answers into the taste profile (TASTE.md ships with one set of answers; confirm they fit):
1. **Audio** — does the user talk over b-roll (strip ALL audio: `ffmpeg -an`) or want the clip's sound? 2. **Stills motion** — static images get a **very subtle Ken Burns zoom-in by default** (~1.5%/sec, centered, capped ~2%/sec); offer opt-out to fully static. **Method matters more than the setting** — see "Stills motion" below. 3. **Source attribution** — credit each b-roll's source in small text bottom-right? Options: `off` · `white` · `black` · `auto` (contrast-pick per clip). The credit is the source's canonical name + platform ("Vinexposium / YouTube", "Decanter") — short, never a URL. If the footage already carries its own badge bottom-right, move the credit bottom-left for that clip. Note: an on-screen credit is etiquette, not a license — official/authoritative sources remain the real copyright posture. 4. **Concept motion graphics (Remotion)** — generate on-brand motion graphics for concept/stat/chart beats? If yes, ask for the path to an EXISTING Remotion project (+ brand tokens) and write it into the profile. Rendering a comp in an existing project is part of the lean path; **scaffolding a new project is a one-time setup step that needs explicit permission** (never mid-run). No project + no permission → concept beats use real authoritative footage or get flagged, never silently skipped. 5. **AI-generated b-roll** — off by default; opt-in only for beats with no real footage, via a quality model the user names. Never silently substitute cheap AI stock.
🔓 Standing authorization — invoking the skill IS the permission
Do NOT ask conversational permission for access or searches while sourcing — running /find-broll already authorizes the skill to act on the user's behalf. Never ask "want me to search/look up/access X?" for:
- Web searches, news/headline lookups, oEmbed/embed endpoints
- `yt-dlp` metadata searches and downloads of public videos/channels
- Headless-browser captures of public pages (incl. clicking through cookie/consent walls)
- The user's logged-in browser or browser cookies **for sourcing/reading** (profiles, posts, walled pages)
- Reading local files, transcripts, prior project folders, the user's asset library
Just do it and show the result. The user's taste checkpoints stay: the **plan approval** before sourcing and the **final pick** on taste-route beats. The ONLY things that still warrant a question: publishing/posting anything outward, paid actions, deleting user files, and installing he
Read more
name: find-broll description: Source b-roll for a video edit — classify each moment, scope the search, return vetted candidates, place on the word. Use when the user says "find b-roll", "/find-broll", "source clips for this edit", or wants footage/memes/screenshots to lay over a talking-head video.
B-Roll Finder — skill methodology
> A reusable methodology for sourcing and placing b-roll on talking-head video. > Genericized from a working agent skill. Adapt paths and brand tokens to your own setup.
⛔ USER OVERRIDES ARE LAW — and they persist
When the user states a preference or ban mid-run ("no memes", "no text cards", "nothing political"), it applies IMMEDIATELY and for the rest of the session, AND gets written into the profile's Guardrails right then — not at the end. A banned category is never sourced again, never proposed again, never "just one candidate to check". Violating a stated ban is the worst failure this skill can make: it tells the user the agent doesn't listen.
⛔ STEP 0 — ONBOARDING GATE (run this check before ANYTHING else, every session)
Open the profile (TASTE.md or the user's fork). **The ONLY thing that skips onboarding is a literal `Confirmed-by: <name> (<date>)` line at the top of the profile.** No line → ask the four onboarding questions (below) out loud, write the answers into the profile, add the line. This is NOT optional and NOT inferable:
- Do **NOT** infer the answers from CLAUDE.md, memory, prior conversations, or this profile's prose — even if you are confident you know them. Asking IS the feature.
- The shipped TASTE.md is an EXAMPLE, **even if the current user is its original author**. Author ≠ confirmed.
- A CLAUDE.md pointer that says "load my taste profile" does not count as confirmation either — check for the line.
- "redo my profile" re-triggers onboarding at any time.
The one rule that governs everything
**The agent NEVER picks the final b-roll. The user does.** The right clip is often a taste call. This skill's job is to **narrow the funnel** — classify each moment, scope the search to trusted/authoritative sources, score candidates, and hand back a tight contact sheet. The user makes the final pick.
The taste profile — load it before sourcing anything
Curation is half the skill. Every run starts by loading a **taste profile**: the b-roll fingerprint (which types, how fast to cut), the trusted-source list tagged by topic, and the guardrails. This repo ships with a working default — **[TASTE.md](TASTE.md)**, revealed from real published videos — so the skill has good taste out of the box. Use it as-is until the user builds their own (TASTE.md's "Make it yours" section covers the import-then-prune mechanism: pull their YouTube subscriptions via `yt-dlp --cookies-from-browser`, prune together, then reveal their fingerprint from their own published videos).
Onboarding preferences (ask once, store in the profile)
**When onboarding fires:** the shipped [TASTE.md](TASTE.md) is an EXAMPLE profile (the author's), not the user's. On first run, check the profile for a `Confirmed-by:` line naming the current user. Absent → run onboarding: ask the questions below, write the answers into the user's profile (their fork of TASTE.md), and add `Confirmed-by: <user> (<date>)` at the top. Present → skip onboarding and just load it. The user can re-trigger anytime with "redo my profile".
Ask these on first run and write the answers into the taste profile (TASTE.md ships with one set of answers; confirm they fit):
1. **Audio** — does the user talk over b-roll (strip ALL audio: `ffmpeg -an`) or want the clip's sound? 2. **Stills motion** — static images get a **very subtle Ken Burns zoom-in by default** (~1.5%/sec, centered, capped ~2%/sec); offer opt-out to fully static. **Method matters more than the setting** — see "Stills motion" below. 3. **Source attribution** — credit each b-roll's source in small text bottom-right? Options: `off` · `white` · `black` · `auto` (contrast-pick per clip). The credit is the source's canonical name + platform ("Vinexposium / YouTube", "Decanter") — short, never a URL. If the footage already carries its own badge bottom-right, move the credit bottom-left for that clip. Note: an on-screen credit is etiquette, not a license — official/authoritative sources remain the real copyright posture. 4. **Concept motion graphics (Remotion)** — generate on-brand motion graphics for concept/stat/chart beats? If yes, ask for the path to an EXISTING Remotion project (+ brand tokens) and write it into the profile. Rendering a comp in an existing project is part of the lean path; **scaffolding a new project is a one-time setup step that needs explicit permission** (never mid-run). No project + no permission → concept beats use real authoritative footage or get flagged, never silently skipped. 5. **AI-generated b-roll** — off by default; opt-in only for beats with no real footage, via a quality model the user names. Never silently substitute cheap AI stock.
🔓 Standing authorization — invoking the skill IS the permission
Do NOT ask conversational permission for access or searches while sourcing — running /find-broll already authorizes the skill to act on the user's behalf. Never ask "want me to search/look up/access X?" for:
- Web searches, news/headline lookups, oEmbed/embed endpoints
- `yt-dlp` metadata searches and downloads of public videos/channels
- Headless-browser captures of public pages (incl. clicking through cookie/consent walls)
- The user's logged-in browser or browser cookies **for sourcing/reading** (profiles, posts, walled pages)
- Reading local files, transcripts, prior project folders, the user's asset library
Just do it and show the result. The user's taste checkpoints stay: the **plan approval** before sourcing and the **final pick** on taste-route beats. The ONLY things that still warrant a question: publishing/posting anything outward, paid actions, deleting user files, and installing he
An agent skill that sources accurate, on-brand b-roll for talking-head video — and places each cutaway on the exact word.

