scout-sources
Deterministic source-video discovery — the clip-channel "outlier" method, keyless. Searches seed niche queries via yt-dlp ytsearch, prefilters to long-form candidates, fetches full metadata, and ranks
SKILL.md.claude/skills/scout-sources/SKILL.md
GitHubscout-sources
Answers "what video should we clip next?" deterministically instead of by vibes. Professional clip channels hunt outliers — videos performing far above their channel's baseline. The cheap keyless proxies, all available from yt-dlp:
- velocity
2 * log10(1 + views/day)— reach × freshness - outlier
min(10, views/subscribers)— 3x+ is real signal, 5–10x is strong - engagement
min(5, comments per 1k views)— talked-about-ness - peaky
min(3, 10 * stdev(replay heatmap))— a spiky most-replayed graph means the video CONTAINS clippable moments; flat means evenly mediocre - curiosity
min(1.5, question/superlative framing in the title)— sources whose own title is a curiosity hook ("how come…", "richest woman ever") yield the cold-open question moments the pipeline now leads with
score = velocity + outlier + engagement + peaky + curiosity (see score.py).
Invoke
.claude/skills/scout-sources/scout-sources.sh [out.json] [query ...]
out.json(optional): defaultwork/_scout/candidates.jsonquery ...(optional): seed searches; default readsniches.txt(channel analytics — humor pods + productivity/AI — plus visually-rich, question-driven niches: space, wealth, true-crime, nature, history)
Env knobs: SCOUT_PER_QUERY (12 results/query), SCOUT_SHORTLIST (20 full
fetches), SCOUT_MIN_VIEWS (100000), SCOUT_DUR_MIN/SCOUT_DUR_MAX
(900/10800s — long-form only).
Output
candidates.json with ranked candidates (url, title, channel, score +
components, seen: true when work/<sha1(url)[:10]> already exists) and a
ranked table on stdout. Feed the winner straight to start.sh <url>.
How
- Parallel flat
ytsearchper query —view_count/duration/channelonly (one cheap call per niche). - Merge, dedup, drop live/short/low-view, keep top-N by views.
- 4-way-parallel full
yt-dlp -Jper shortlisted id — addsupload_date,channel_follower_count,comment_count,heatmap. score.pyranks and writescandidates.json.
NOT part of the per-video pipeline — run it before start.sh to decide what
to feed the pipeline. Uses plain yt-dlp ytsearch (NEVER mcptube discover,
which needs a forbidden LLM API key).