explaingit

fullstacksjs/yt-channel-mirror

17TypeScriptAudience · ops devopsComplexity · 3/5Setup · moderate

TLDR

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.

Mindmap

mindmap
  root((yt-channel-mirror))
    Download step
      yt-dlp downloader
      Incremental updates
      Channel URL input
    Serve step
      Docker container
      Local network access
      Browser playback
    Tools required
      Deno runtime
      yt-dlp
      ffmpeg
      Docker
    Use cases
      Internet restrictions
      Offline environments
      Local video library
    Design goal
      Intentional simplicity
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Create an offline browsable copy of a YouTube channel for communities with limited or restricted internet access

USE CASE 2

Run the download command on a schedule so the local archive stays current without re-downloading existing videos

USE CASE 3

Set up a local video server with one Docker command so anyone on the network can watch without installing anything

Tech stack

TypeScriptDenoyt-dlpffmpegDocker

Getting it running

Difficulty · moderate Time to first run · 1h+

Requires Deno, yt-dlp, ffmpeg, and Docker installed before running, transfer the downloaded library folder manually to the serving machine.

No license information was provided in the explanation.

In plain English

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.

Copy-paste prompts

Prompt 1
I want to use yt-channel-mirror to download a YouTube channel for offline viewing. Walk me through installing Deno, yt-dlp, and ffmpeg on Ubuntu and running the first download command.
Prompt 2
I ran yt-channel-mirror and the download finished. Now walk me through copying the library folder to a Raspberry Pi and starting the Docker server so my home network can access it.
Prompt 3
I want to set up a cron job that runs the yt-channel-mirror download command every night at 2am to keep the archive current. Write the crontab entry and the command I need.
Prompt 4
The yt-channel-mirror README mentions an example archive for users who cannot access YouTube. How do I download it and point the Docker server at it instead of running my own download?
Prompt 5
I want to add a simple search bar to the yt-channel-mirror web UI so users can filter videos by title. How would I modify the frontend given the project's goal of keeping the stack simple?
Open on GitHub → Explain another repo

← fullstacksjs on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.