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.
- Configuration β switch LLM provider at runtime (local Ollama default; BYOK cloud optional).
- History β every run saved locally, with feedback buttons.
- Report Dashboard β usage KPIs: runs, goals, latency, distributions by area, LLM, and feedback.
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)