DEV Community

Dmytro Voytko
Dmytro Voytko

Posted on

🎬 YouTube Insight Extractor

Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle Submission πŸ’Έ

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle

What I Built

Long-form YouTube is where the best ideas live β€” Tim Ferriss, Huberman, Diary of a CEO β€” but a two-to-three-hour interview buries a handful of personally relevant insights inside hours of conversation. Watching the whole thing to find them is why people give up.

YT Insight Extractor turns a YouTube link into a focused, timestamped action plan. You paste a URL, pick an Area of Life (Career, Fitness, Finance, Productivity…), and optionally describe a goal. The app returns two tabs β€” subtopic summaries and actionable ideas β€” each anchored to a clickable timestamp that jumps to the exact moment in the video. Results export to Markdown or JSON and are saved to a local history with πŸ‘/πŸ‘Ž feedback.

Who would pay for it? Self-directed learners, coaches, and creators who consume hours of long-form content weekly and want signal, not another bookmark.

Demo

No public deployment β€” deliberate. YouTube blocks cloud-provider IPs, so a hosted demo would fail at the transcript step. Instead the repo ships a local-first app you run yourself:

  • Insights β€” staged pipeline UI (extract transcript β†’ chunk & vectorize β†’ RAG & summarize) with per-step status, then the two result tabs with clickable timestamps.

Insights page

  • Configuration β€” switch LLM provider at runtime (local Ollama default; BYOK cloud optional).

Configuration page

  • History β€” every run saved locally, with feedback buttons.

History page

  • Report Dashboard β€” usage KPIs: runs, goals, latency, distributions by area, LLM, and feedback.

Report dashboard

Code

YT Insight Extractor repo on GitHub

app.py orchestrates core/, with each pipeline stage a small, independently testable module: core/rag_engine.py (retrieval), core/hybrid.py (RRF fusion), core/generator.py (schema-constrained output), core/prompts.py (v1/v2 prompts), plus offline evals in scripts/. Tests: python -m unittest discover -s tests/ (200 tests).

How I Built It

The stack is open-source end to end. Embeddings: ONNX all-MiniLM-L6-v2 via onnxruntime β€” chosen over sentence-transformers to avoid ~800 MB of PyTorch and stay runnable on a CPU laptop in a small container. Vector store: in-memory ChromaDB wrapped by LlamaIndex. Generation: schema-constrained output via Pydantic, defaulting to local Ollama llama3.2:1b, plus BYOK cloud models. Retrieval: vector | keyword | hybrid, where hybrid uses reciprocal-rank fusion written with the standard library β€” no new dependencies.

Why Does Open Innovation Matter?

Every meaningful constraint here was solvable only with open tooling. A closed API can't be pointed at a local Ollama model, can't ship ONNX weights instead of a torch dependency, and can't run entirely on your machine β€” no transcript, goal, or output leaving your laptop. When YouTube closed its public endpoints, the project didn't die; it adapted, because I owned the retrieval layer, not just a prompt. And because the models and evals are open, anyone can reproduce the numbers.

Top comments (0)