YouTube Downloader & Transcript Extractor
Go to file
Claude Fable 5 a7d7d1cf50 Handle untagged continuation lines in rolling auto-captions
Short continuations (e.g. a single trailing word) carry no inline timing
tags, so filtering by tags missed them. Instead, in files with inline
timing tags, drop leading cue lines that repeat the previous cue's last
line — covers both tagged and untagged new text.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-29 21:13:29 +02:00
.vscode Initial commit — yt-dlf YouTube downloader & transcript extractor 2026-05-16 20:33:23 +02:00
scripts Handle untagged continuation lines in rolling auto-captions 2026-08-29 21:13:29 +02:00
src Handle untagged continuation lines in rolling auto-captions 2026-08-29 21:13:29 +02:00
static Initial commit — yt-dlf YouTube downloader & transcript extractor 2026-05-16 20:33:23 +02:00
.gitignore Add login, ad columns and user management 2026-05-16 21:21:48 +02:00
.npmrc Initial commit — yt-dlf YouTube downloader & transcript extractor 2026-05-16 20:33:23 +02:00
ads-left.html Add login, ad columns and user management 2026-05-16 21:21:48 +02:00
ads-right.html Add login, ad columns and user management 2026-05-16 21:21:48 +02:00
Handoff.md Add Handoff.md (session handoff document) 2026-08-29 20:57:35 +02:00
INSTALL.md Add login, ad columns and user management 2026-05-16 21:21:48 +02:00
jsconfig.json Initial commit — yt-dlf YouTube downloader & transcript extractor 2026-05-16 20:33:23 +02:00
package-lock.json Initial commit — yt-dlf YouTube downloader & transcript extractor 2026-05-16 20:33:23 +02:00
package.json Initial commit — yt-dlf YouTube downloader & transcript extractor 2026-05-16 20:33:23 +02:00
README.md Initial commit — yt-dlf YouTube downloader & transcript extractor 2026-05-16 20:33:23 +02:00
start.sh Add login, ad columns and user management 2026-05-16 21:21:48 +02:00
svelte.config.js Initial commit — yt-dlf YouTube downloader & transcript extractor 2026-05-16 20:33:23 +02:00
vite.config.js Initial commit — yt-dlf YouTube downloader & transcript extractor 2026-05-16 20:33:23 +02:00

yt-dlf

YouTube Downloader & Transcript Extractor — a local web frontend for yt-dlp and ffmpeg.

Features

  • Paste a YouTube URL and download the best available video quality
  • Subtitles downloaded automatically in the video's original language, English, and German (where available)
  • Subtitles converted to clean Markdown (timestamps stripped, text deduplicated and paragraph-wrapped)
  • Optional audio extraction to MP3 via ffmpeg
  • Real-time progress log streamed to the browser
  • Files saved to ~/YouTube/<video title>/

Prerequisites

brew install yt-dlp ffmpeg

Node.js 16+ is required for the web app (tested with Node 26).

Project Layout

yt-dlf/
├── scripts/
│   └── subtitle_to_markdown.py   # standalone CLI converter
├── src/
│   ├── lib/
│   │   └── subtitle.js           # JS conversion module (used by web app)
│   └── routes/
│       ├── api/download/
│       │   └── +server.js        # SSE endpoint — runs yt-dlp / ffmpeg
│       ├── +layout.svelte
│       └── +page.svelte          # UI
└── vite.config.js

Running the web app

npm install       # first time only
npm run dev       # starts on http://localhost:5173

To use a custom port:

PORT=8080 npm run dev

Standalone subtitle converter

Convert a .vtt or .srt subtitle file to Markdown directly from the terminal:

./scripts/subtitle_to_markdown.py video.en.vtt
./scripts/subtitle_to_markdown.py video.en.vtt output.md

Output is saved next to the input file (same name, .md extension) unless a second argument is given.