Skip to content

waynegeorge/YouTube-transcript-downloader

Repository files navigation

YouTube Transcript Downloader

Download YouTube video transcripts as Markdown files — from a single video, a playlist, or an entire channel. Use the desktop GUI, the command line, or the built-in channel watcher that polls your favourite channels for new videos.

YouTube Transcript Downloader GUI

Features

  • Whole channels, playlists, or single videos — paste any YouTube URL (or a bare video ID) and it works out what to fetch
  • Markdown output — each video becomes a tidy .md file with title, channel, date, and the full transcript
  • Skip existing videos — re-run against the same channel and only new videos are downloaded
  • Rate-limit friendly — configurable delay between requests (default 61 seconds) with a countdown timer in the GUI
  • Channel watcher — poll a list of channels on a schedule and download anything new automatically
  • URL history — the GUI remembers your recently used URLs in a dropdown
  • Cross-platform — Windows and macOS builds, or run from source anywhere Python runs

Installation

From a release

Download the latest build for your platform from the releases page and run it — no Python required.

From source

Requires Python 3.10+.

git clone https://github.com/waynegeorge/YouTube-transcript-downloader.git
cd YouTube-transcript-downloader
pip install -e .

Usage

GUI

Run the packaged executable, or from source:

pythonw "YouTube Transcript Downloader.pyw"

Paste a channel, playlist, or video URL, choose an output directory, and press Start. The progress bar shows how far through the list you are, with a countdown to the next request.

Command line

yt-transcript-dl <url> [options]
Option Description
--output, -o Output directory (default: ./output)
--language, -l Preferred transcript language (default: en)
--limit Maximum number of videos to process
--start Start from the Nth video in the list (1-indexed)
--sleep Delay in seconds between requests (default: 61)
--skip-existing Skip videos that already have a transcript file
--log-file Write log output to a file as well as the console
--verbose, -v Enable debug logging

Examples:

# Download every transcript from a channel, skipping ones you already have
yt-transcript-dl https://www.youtube.com/@SomeChannel --skip-existing

# Grab the 50 most recent videos from a playlist
yt-transcript-dl "https://www.youtube.com/playlist?list=PL..." --limit 50

# A single video
yt-transcript-dl https://www.youtube.com/watch?v=dQw4w9WgXcQ

Channel watcher

The watcher polls a list of channels on a schedule and downloads transcripts for any new videos. Channels are configured in a channels.yaml file in the project root:

channels:
  - handle: "@SomeChannel"
    folder: "Some Channel"        # subfolder under output/
    summary: "Some-Channel-Summary.md"
    enabled: true

poll_interval_minutes: 120
sleep_between_downloads: 61
language: "en"

Then run:

# Poll all channels once and exit
yt-transcript-watch --once

# Keep polling on the configured interval
yt-transcript-watch

See WATCHER.md for the full watcher documentation, including the watch.bat / watch.sh launchers.

Building

Standalone executables are built with PyInstaller using the included spec files, and releases are produced by the GitHub Actions workflow in .github/workflows/release.yml. See DISTRIBUTION.md for packaging and code-signing details.

Development

pip install -e ".[dev]"
pytest

About

Download YouTube video transcripts, with a GUI and channel watcher

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors