Skip to main content

Turn any YouTube channel into an AI assistant skill that answers questions with verbatim quotes and timestamped video links.

Project description

youtube-advisor

youtube-advisor

Turn any YouTube channel into an AI assistant skill that answers questions with verbatim quotes and timestamped video links.

GitHub Stars Latest release License: MIT 100% Local No API key


What it feels like

You: build an advisor on @ycombinator,
     last 200 videos, hiring + fundraising

AI:  ✓ Resolving @ycombinator (200 videos)
     ✓ Fetching transcripts (3 min)
     ✓ Indexing + embedding
     ✓ Advisor ready: /yc-advisor

You: /yc-advisor how should I think about hiring my first engineer?
AI:  → answer with quoted videos and timestamps

Install

Paste this in your AI chat (Claude Code, Cursor, Codex CLI, etc.):

Install youtube-advisor for me. The repo is https://github.com/AlexanderAbramovPav/youtube-advisor.

The AI clones, runs scripts/install.sh, checks ffmpeg and uv, sets up the venv. You walk away.

Use it

Create an advisor. Drop a channel URL or handle in chat with a one-sentence intent:

build an advisor on @ycombinator from the last 200 videos,
focused on hiring and fundraising
make an advisor on @lexfridman, interviews from 2024 onwards

The assistant resolves the channel, fetches transcripts, builds indices, drafts the advisor's voice, and runs a self-check. No flags, no paths, no shell. You get a new slash command like /yc-advisor.

Ask the advisor.

/yc-advisor how should I think about hiring my first engineer?

Every answer comes back with verbatim quotes and clickable timestamps linking to the exact second of the source.

Refresh later. One sentence:

refresh @ycombinator — check for new videos this week

The assistant replays your original selection filter, fetches only what's new, re-indexes the delta, and tells you what changed.

Why

  • Local-first. Transcripts and indices live on your disk. No SaaS account, no per-query fees, no vendor that can take your corpus offline.
  • Verbatim quotes with timestamps. Every answer is grounded in real transcript text and links to youtube.com/watch?v=ID&t=SECONDS — click and the video opens at that exact second.
  • Uses your AI's brain. Skill drafting and answering run through whatever assistant you're already using — nothing extra to configure.
  • Free captions when available; local Whisper when not. A three-tier cascade keeps cost near zero and falls back to on-device transcription only when YouTube has none.
  • Incremental updates that respect your filter. Your original selection (channel + date range + title filters + max count) is saved and replayed on every refresh.

What an answer looks like

"The scariest fundraising stories are the ones where the founder spends six months on an 'almost-yes' from an investor who eventually just ghosts."

Dalton & Michael: Fundraising Mistakes (2024-03-12), 14:22

Each citation is a real line from a real video, anchored to the second. Click through and verify.

Limitations

  • One channel per advisor. Multi-channel rollups ("YC + Naval + a16z combined") are planned for v0.2.
  • Whisper fallback is CPU-bound. Videos without YT captions fall back to local Whisper — roughly 1 hour of compute per 1 hour of audio on Apple Silicon. The assistant warns you and asks before going that route.
  • YouTube anti-bot. Defaults (1–5s randomized sleep, exponential-backoff retries on 429) handle most cases. On persistent blocks the assistant will offer to use cookies from your logged-in browser.

Works with other AI tools

AGENTS.md is a tool-agnostic mirror of SKILL.md. Wire it into whichever tool you use:

Your tool Where to point it How to invoke
Claude Code clone into ~/.claude/skills/youtube-advisor/ /youtube-advisor <request>
OpenAI Codex CLI clone anywhere, place AGENTS.md at ~/.codex/AGENTS.md (or project root) "build me an advisor on <channel>"
Cursor clone anywhere, copy AGENTS.md to .cursor/rules/youtube-advisor.md @youtube-advisor or natural language
Continue.dev clone anywhere, register youtube-advisor as a custom slash command /youtube-advisor <request>
Aider clone anywhere, aider --read <install-dir>/AGENTS.md natural language in chat
Goose (Block) clone anywhere, add as a shell-command extension mention youtube-advisor in chat
No AI at all clone anywhere youtube-advisor bootstrap --channel @… --out …
Advanced — for CI and scripting

Everything below is for power users running outside an AI chat (CI, cron, scripts). You almost never need this.

Manual install

git clone https://github.com/AlexanderAbramovPav/youtube-advisor ~/.claude/skills/youtube-advisor
cd ~/.claude/skills/youtube-advisor && bash scripts/install.sh

CLI

# Bootstrap
youtube-advisor bootstrap \
  --channel @ycombinator \
  --since 2022-01-01 \
  --max 200 \
  --title-include "Founder Stories|How to" \
  --title-exclude "shorts|#shorts" \
  --out ~/.claude/skills/yc-advisor \
  --yes

# Update (replays the saved selection filter)
youtube-advisor update --advisor ~/.claude/skills/yc-advisor --yes

# Update — override date, reindex only, or run regression evals
youtube-advisor update --advisor ~/.claude/skills/yc-advisor --since 2026-01-01 --yes
youtube-advisor update --advisor ~/.claude/skills/yc-advisor --reindex-only
youtube-advisor update --advisor ~/.claude/skills/yc-advisor --run-evals --yes

youtube-advisor bootstrap --help and youtube-advisor update --help print the full flag list.

Bypassing YT anti-bot with browser cookies

When unauthenticated channel-resolution gets 429-blocked, pass cookies from a logged-in browser. yt-dlp reads them straight from the browser profile — no copy-paste:

youtube-advisor bootstrap --channel @ycombinator --out ~/.claude/skills/yc-advisor \
  --cookies-from-browser chrome --yes

# Or a Netscape-format cookies.txt:
youtube-advisor bootstrap --channel @ycombinator --out ~/.claude/skills/yc-advisor \
  --cookies ~/secrets/yt-cookies.txt --yes

Resolution order: explicit flag → YOUTUBE_ADVISOR_COOKIES_BROWSER / YOUTUBE_ADVISOR_COOKIES_FILE env → ~/.config/youtube-advisor/cookies.txt if present → none. With cookies set the captions pool stays at concurrency 8; without them it drops to 2 + per-call jitter so YT is less likely to block you.

Vendoring _lib

youtube-advisor bootstrap --vendor copies the youtube_advisor Python package into the emitted advisor's scripts/_lib/. Useful if you want the advisor directory to be fully portable (pushed to a separate Git repo and cloned elsewhere without a Python install of youtube-advisor).

Eval-driven regression detection

youtube-advisor update --advisor <path> --run-evals reruns the channel's generated benchmark after sync and prompts to roll back if pass rate dropped.

License

MIT — © 2026 Alexander Abramov.

Runtime dependencies (yt-dlp, youtube-transcript-api, fastembed, faster-whisper, rank-bm25, ffmpeg, scriba) are installed locally, not vendored. Their licenses are catalogued in THIRD_PARTY_LICENSES.md.

Acknowledgments

This tool is glue around several excellent OSS projects:

  • yt-dlp — channel resolution, caption download, audio extraction.
  • youtube-transcript-api — Jonas Depoix — Tier 1 captions fetcher.
  • fastembed — Qdrant — local embedding inference with bge-small-en-v1.5 (BAAI).
  • rank-bm25 — Dorian Brown — BM25 ranking.
  • faster-whisper — SYSTRAN — local ASR fallback.
  • scriba — sibling skill — alternative Whisper transcription backend.
  • uv (Astral) for env setup, and ffmpeg for audio extraction.
  • Conceptual lineage: yc-avisor — the hand-rolled YC-channel-specific predecessor.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

youtube_advisor-0.1.0.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

youtube_advisor-0.1.0-py3-none-any.whl (54.0 kB view details)

Uploaded Python 3

File details

Details for the file youtube_advisor-0.1.0.tar.gz.

File metadata

  • Download URL: youtube_advisor-0.1.0.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.15 {"installer":{"name":"uv","version":"0.9.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for youtube_advisor-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c41a6d6df08a662d092afec410903a14567e80d20871ef64ab43df2865420a43
MD5 555c6fd5aa2c79c3c725090004f818e6
BLAKE2b-256 0482d6050f334caa68d39820358530c30b9cdcd5eeafcdcd9877e25edd740c2c

See more details on using hashes here.

File details

Details for the file youtube_advisor-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: youtube_advisor-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 54.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.15 {"installer":{"name":"uv","version":"0.9.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for youtube_advisor-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f331a1b1654c94fc0dd4eb750d5c76f518c10736dc2fdbdb6dd6cff02a9359fa
MD5 6354d141202022f3e92ecba0a06251c8
BLAKE2b-256 7f3be3cae7658905478c5d9f3857790613dbd8974a6c1dcd7a8e5456ff5a57f9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page