yt-expert

Created: January 21, 2026
YouTube video ingestionLLM (large language model) workflowsRAG (retrieval-augmented generation)embeddingstranscription / speech-to-textsearch & QAoffline/local-first data packstimestamped citationsRAG = retrieval-augmented generationLLM = Large Language Modelyt-dlp = youtube-dl (fork)pnpm = pnpm (Node package manager)bedrock = AWS BedrockAnthropic Claude = Claude / anthropicwhisper = OpenAI Whisperembeddings_local = local embeddingsAWS Secrets Manager = Secrets Manager / ARNYTEXPERT_* = YTEXPERT env vars / configyt-expert CLI = yt-expert command-line toolyt-expert CLI (yt-expert ingest, yt-expert serve)python venv (python -m venv)pip (pip install, pip install -e)pnpm (pnpm demo:api, pnpm demo:ui)yt-dlp (YouTube downloader)Whisper (speech-to-text)embeddings_local (local embeddings extras)AWS Bedrock (LLM provider)Anthropic Claude (model id: anthropic.claude-3-*)AWS Secrets Manager (secret ARN support)Environment variables / config (YTEXPERT_*, PUBLIC_API_BASE, AWS_REGION)cookies file support (cookies.txt)legacy env var compatibility (DEMO_API_YTDLP_COOKIES*)
README.md

yt-expert — Monorepo (core + demo UI/API)

This repo hosts the yt-expert Python package plus a small demo API/UI that consumes it.

  • Core package: src/yt_expert/
  • Docs: src/docs/
  • Demo API: services/demo-api
  • Demo UI: apps/demo-ui

Core quickstart (local)

python -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -e ".[dev,whisper,embeddings_local]"

# Ingest
yt-expert ingest channel --channel-id UCxxxxxxxxxxxxxxxxxxxxxx --recent 5 --pack-name "my-pack"

# Serve API
yt-expert serve --host 0.0.0.0 --port 8000

See src/README.md for the full core README.


Demo app (API + UI)

pnpm demo:api:setup
pnpm demo:api
pnpm demo:ui:install
pnpm demo:ui

The UI talks to the demo API at http://localhost:8000 by default. Set PUBLIC_API_BASE if your API runs elsewhere.

LLM settings

The demo API now uses yt-expert settings. Configure via YTEXPERT_* env vars, e.g.:

export YTEXPERT_LLM_PROVIDER=bedrock
export YTEXPERT_BEDROCK_LLM_MODEL_ID=anthropic.claude-3-sonnet-20240229-v1:0
export AWS_REGION=us-east-1

If YTEXPERT_LLM_PROVIDER is none (default), the API uses a no-op model that returns the most relevant context.

YouTube cookies

If YouTube blocks yt-dlp, provide cookies:

  • YTEXPERT_COOKIES_FILE=/path/to/cookies.txt, or
  • YTEXPERT_COOKIES_SECRET_ARN=...

Legacy demo env vars (DEMO_API_YTDLP_COOKIES*) are still honored.