agentic-workflows-portfolio

Skool Video Tool: AI-Ready Transcripts

A local-first browser tool that captures audio from any video playing in a tab (Skool, YouTube, Loom, internal training) and turns it into structured markdown that an AI can actually understand. No API keys. Nothing leaves your machine. Record, transcribe, and hand the output straight to Claude.

hero

The Problem

I consume a lot of training videos: Skool courses, Loom walkthroughs, recorded webinars. The insight density is high, but videos are a terrible format for AI to work with. Pasting “here’s a YouTube link, summarize it” is unreliable. Paid transcription services cost money and ship my audio to someone else’s server. Raw transcript dumps are wall-of-text noise that tokenize badly.

I wanted: record the video locally, get back a markdown file that Claude can ingest cleanly as structured context, and never send the audio anywhere.

The Solution

A one-page web app that runs on your laptop. Open it, click record, share the browser tab the video is playing in (with tab audio), hit play on the video, and when it’s done you get a markdown file structured for AI consumption, all local, no API keys, no cloud.

What the output file looks like:

All transcription happens locally via whisper-cpp running on CPU against the base.en quantized model. Nothing leaves the machine.

Screenshots

Red record button, live waveform, timer, “Also share tab audio” reminder in red when silent. Browser-based, no install step beyond npm start.

YAML frontmatter + auto-sectioned transcript + paragraph chunking. Ready to hand to Claude as context.

Result

Key Decisions

Under the Hood

Stack: Node.js + Express (server), ffmpeg (audio conversion: webm → wav, 16kHz mono for Whisper), whisper-cpp (local CPU inference, base.en quantized model at /usr/local/share/whisper-cpp/models/ggml-base.en.bin), MediaRecorder API (browser capture), Web Audio API (live waveform visualization), vanilla JavaScript UI.

Dependencies: express, uuid. That’s it. Zero ML libraries: whisper-cpp is a shell binary, and the Node server just orchestrates the pipeline (ffmpeg → whisper-cli → markdown post-processor).

How to Demo It

  1. npm start, Express server on localhost.
  2. Open the web UI. Click the red record button.
  3. In the Chrome tab picker, pick the tab playing the video and check “Also share tab audio.”
  4. Play the video. Show the live waveform and timer as audio streams in.
  5. Stop recording. Watch ffmpeg → whisper-cli → markdown post-processor run in the Node console.
  6. Open the output markdown file. Show the YAML frontmatter, sectioned transcript, and the AI-optimized footer line.
  7. Drop the markdown into Claude and ask a question about the video. The answer is grounded and specific, because the input was structured, not a wall of text.

Limitations & Setup

Demo Pitch

“It’s a browser tool that records any video playing in a tab, transcribes it locally with Whisper, nothing leaves your machine, and gives you back a markdown file that’s structured for AI to read, not just humans. So instead of asking ChatGPT to summarize a YouTube link and hoping, you drop a clean, sectioned markdown file into Claude and get grounded answers about what was actually in the video.”