yt-channel-mirror
Offline Youtube Channel Mirror
A command-line tool that downloads a YouTube channel's videos to a local folder and serves them through a Docker web server so anyone on the same network can watch offline in a regular browser.
yt-channel-mirror is a tool for creating an offline copy of a YouTube channel that anyone on a local network can browse and watch in a regular web browser. The core idea is simple: you run a command-line program on a machine that has internet access to download the channel's videos, then copy the resulting folder to a machine that has no internet access, where a small web server makes those videos available to users.
The download step uses three tools that need to be installed beforehand: Deno (a JavaScript runtime), yt-dlp (a widely used YouTube downloader), and ffmpeg (a video processing tool). You point the command at a YouTube channel URL and optionally set a limit on how many videos to download. If you run the command again later, it only fetches new uploads, so keeping the library current does not mean re-downloading everything from scratch.
Once the videos are downloaded into a folder called "library", you copy that folder to the offline server using a standard file transfer command. The server itself runs inside Docker, a container system, so starting it is a single command. After that, anyone who can reach the server on the local network can open a browser and watch the videos.
The project README specifically mentions users in Iran as a use case, noting that an example archive is available for download for people who cannot access YouTube directly. This gives a sense of the intended audience: communities or individuals who face internet restrictions or unreliable connectivity and want to maintain access to educational or community video content.
The codebase is intentionally kept simple. The maintainers note in the README that they actively want to avoid a complicated technology stack, and contributions that simplify things further are welcome. Development uses Deno built-in formatting and linting tools.
Where it fits
- Create an offline browsable copy of a YouTube channel for communities with limited or restricted internet access
- Run the download command on a schedule so the local archive stays current without re-downloading existing videos
- Set up a local video server with one Docker command so anyone on the network can watch without installing anything