First public beta. Build a Claude Code advisor skill from any YouTube channel.
Added
- Two-action user UX: paste a channel + intent in chat → AI builds the advisor → invoke
/<channel-slug>-advisorto ask questions. - Three-tier transcript cascade:
youtube-transcript-api(free YT captions) →yt-dlpVTT fallback → local Whisper viafaster-whisperor scriba. - Hybrid retrieval: BM25 + dense embeddings (
fastembedwithbge-small-en-v1.5default,bge-m3opt-in for multilingual) fused via Reciprocal Rank Fusion. - Citation-first answer contract: every answer carries verbatim quotes with
youtube.com/watch?v=ID&t=SECONDSdeep-links. - LLM-drafted SKILL.md and benchmark per advisor (when
ANTHROPIC_API_KEYis set) — OR — handoff to the AI agent in chat via.pending-llm-draft.jsonwhen no API key is set (--no-llmmode, auto-detected). - Incremental updates: saved selection filter is replayed on
update, only new videos are fetched and indexed. - Eval scaffolding: generated benchmark + runner with regression detection (
--run-evals). - Selection DSL:
--channel,--playlist,--since,--until,--max,--title-include,--title-exclude,--ids. - Anti-bot defaults: 1–5s randomized sleep between yt-dlp requests, exponential-backoff retries on HTTP 429.
- Live progress: bootstrap writes
<advisor>/.progress.jsonon every stage change and per-video ingest;scripts/status.sh <advisor>(andyoutube-advisor status <advisor>) print a one-line snapshot for a peek from a side terminal. - YouTube JS-challenge solver: yt-dlp invocations now pass
--remote-components ejs:github(auto-detected viayt-dlp --helpprobe — silently omitted on older yt-dlp builds without the flag) and--extractor-args youtube:formats=missing_potto avoid HTTP 429s and PO-token errors. Requiresdenoon PATH at runtime;install.shnow warns if missing. - Cookie support:
--cookies-from-browser {chrome,firefox,safari,brave,edge,…},--cookies <file>, env varsYOUTUBE_ADVISOR_COOKIES_BROWSER/YOUTUBE_ADVISOR_COOKIES_FILE, and auto-discovery of~/.config/youtube-advisor/cookies.txt. - OSS scaffolding: MIT license, scriba-style README, CONTRIBUTING, THIRD_PARTY_LICENSES,
bash scripts/install.shhelper. - Python package uses
src/layout (src/youtube_advisor/). - 183 tests (unit + integration + E2E).
Known limitations
- Single channel per advisor (multi-channel rollups planned for v0.2).
- Length-based filtering (e.g. "interviews > 60 minutes") not yet a selection flag.
- LangDetect on update doesn't re-fire — corpus language persists from bootstrap.