EchoScript
A YouTube URL in, a searchable transcript and a set of notes out — with the text and the video kept in sync.
The problem
A two-hour talk contains maybe eight minutes you need, and video is the worst possible medium for finding them: you cannot search it, skim it, or quote it. Transcription alone does not fix that. A raw wall of transcript is only marginally easier to work with than the video, because once you find the sentence you wanted you have lost the one thing the video had — the ability to go and hear it said.
The solution
A Flask backend pulls audio with yt-dlp, normalises it through ffmpeg, and transcribes with Whisper or Faster-Whisper at a model size the user picks. Because Whisper returns timestamped segments rather than flat text, the React frontend can make every line a seek target: click a sentence, the player jumps to it. The same segments feed AI-generated notes, full-text search, and export to PDF, TXT or Notion.
Outcomes
- Click any line of the transcript to jump the video to that moment — the segment timestamps Whisper already returns are what make this free.
- Model size is a user choice, not a build-time constant: tiny for a quick pass, large when accuracy matters, with Faster-Whisper for machines without a GPU.
- Full-text transcript search with keyboard navigation — Enter to search, F3 and Shift+F3 through hits, Escape to clear.
+3 more in the write-up
Inside the write-up
- The pipeline
- Why the sync is the feature
- GPU optional, and honest about it
- Things it does not do