YouTube Downloader & Transcript Extractor
Go to file
Stefan Waidele 3544a89609 Initial commit — yt-dlf YouTube downloader & transcript extractor
SvelteKit web frontend for yt-dlp and ffmpeg. Paste a YouTube URL to
download best-quality video, subtitles (original + EN + DE), and thumbnail.
Subtitles are converted to clean Markdown. Optional audio extraction to MP3.

Supports ZIP & Send mode: downloaded files are packed into a ZIP and
delivered to the browser, with optional server-side cleanup after delivery.
An extra directory (ZIP_EXTRA_DIR) can be bundled into every ZIP.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 20:33:23 +02:00
.vscode Initial commit — yt-dlf YouTube downloader & transcript extractor 2026-05-16 20:33:23 +02:00
scripts Initial commit — yt-dlf YouTube downloader & transcript extractor 2026-05-16 20:33:23 +02:00
src Initial commit — yt-dlf YouTube downloader & transcript extractor 2026-05-16 20:33:23 +02:00
static Initial commit — yt-dlf YouTube downloader & transcript extractor 2026-05-16 20:33:23 +02:00
.gitignore Initial commit — yt-dlf YouTube downloader & transcript extractor 2026-05-16 20:33:23 +02:00
.npmrc Initial commit — yt-dlf YouTube downloader & transcript extractor 2026-05-16 20:33:23 +02:00
INSTALL.md Initial commit — yt-dlf YouTube downloader & transcript extractor 2026-05-16 20:33:23 +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 Initial commit — yt-dlf YouTube downloader & transcript extractor 2026-05-16 20:33:23 +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.