ytdl-sub
Declarative yt-dlp wrapper to download and prepare media libraries

ytdl-sub is a command-line tool that orchestrates yt-dlp to download media and prepare it for media servers and players. It uses a declarative YAML configuration and preset system to control what to download and how files and metadata are produced.
Key Features
- Declarative subscriptions and presets written in YAML to describe channels, playlists, formats, and destination library layouts.
- Wraps and runs yt-dlp for downloads and can remux/transcode using FFmpeg/ffprobe when needed.
- Rich plugin system (audio_extract, chapters, subtitles, file_convert, embed_thumbnail, music_tags, nfo_tags, video_tags, etc.) to control metadata, tagging, thumbnails, and post-processing.
- Presets for media server targets and media types (Plex, Jellyfin, Emby, Kodi, music players) to produce naming, NFO files, and metadata formats those servers expect.
- Scripting and template functions for conditional filtering, custom variables, and fine-grained automation of downloads.
- Docker images provided (headless and GUI/code-server variant) plus a standalone executable and PyPI package; recommended deployment via Docker Compose or cron for automation.
Use Cases
- Archive YouTube channels or playlists as TV shows or seasons for Plex/Jellyfin/Emby with server-compatible metadata.
- Build and tag local music/video libraries (music videos, concerts, SoundCloud/Bandcamp imports) with embedded tags and external NFOs.
- Automate periodic downloads via scheduled runs (cron/container) to keep a local media library in sync.
Limitations and Considerations
- Requires external dependencies: Python 3.10+ and FFmpeg/ffprobe; these are mandatory for post-processing and packaging tasks.
- CLI-first tool aimed at power users; configuration is flexible but has a steeper learning curve than polished web-UIs.
- Relies on yt-dlp for site extractor correctness; changes to source sites may require updating yt-dlp and the tool's dependencies.
ytdl-sub is focused on providing flexible, reproducible control over media download and metadata generation rather than a one-click consumer UI. It is well-suited for users who need precise filename/metadata control and integration with media servers.
Categories:
Tags:
Tech Stack:
Similar Services

Jellyfin
Self-hosted media server for managing and streaming your library
Jellyfin is a free, self-hosted media server to organize, manage, and stream movies, TV, music, and photos to web, mobile, and TV clients.

Cobalt
Ad-free web media downloader for public social platforms
Cobalt is a self-hostable web media downloader for saving publicly accessible videos and audio from supported social platforms via a simple paste-a-link interface and API...
SRS (Simple Realtime Server)
High-performance real-time media server for live streaming and WebRTC
SRS (Simple Realtime Server) is a high-efficiency media server supporting RTMP, WebRTC, HLS, HTTP-FLV, SRT, MPEG-DASH, and GB28181 for real-time streaming.

Kodi
Open source home theater and media center software
Kodi is an open source media center for organizing and playing local and networked video, music, and photos with a TV-friendly interface and add-on ecosystem.


Invidious
Privacy-focused alternative web front-end for YouTube
Invidious is a lightweight, privacy-focused alternative front-end for YouTube with subscriptions, playlists, and an API—without Google accounts, ads, or tracking.

PeerTube
Federated video hosting and streaming with P2P delivery
PeerTube is a decentralized, ActivityPub-federated video hosting platform with live streaming, P2P WebRTC delivery, and customizable community-run instances.
Docker
Python
Python runtime