Skip to content
mediago-devPublic

About

Cross-platform video downloader β€” sniff and grab m3u8/HLS streams, Bilibili, YouTube and more. Desktop + Docker + 🦞.

Topics

Resources

Contributing

Security policy

Stars

9.3k stars

Watchers

50 watching

Forks

Latest commit

Β 

History

1,325 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

MediaGo

Quick Start Β Β β€’Β Β  Website Β Β β€’Β Β  Docs Β Β β€’Β Β  Discussions Β Β β€’Β Β  Discord Β Β β€’Β Β  Reddit

δΈ­ζ–‡ Β Β β€’Β Β  ζ—₯本θͺž Β Β β€’Β Β  Italiano

GitHub Downloads (all assets, all releases) GitHub Downloads (all assets, latest release) GitHub Repo stars GitHub forks GitCode
caorushizi%2Fmediago | Trendshift

A cross-platform video downloader with built-in sniffing β€” point it at a page, pick what you want, and save. No packet capture, no browser extensions to configure, no fiddling with command-line tools.

The app UI currently ships with English, Simplified Chinese, and Italian.

✨ What's inside

🌐 Browser extension for Chrome / Edge

See something you want on any site β†’ click the extension β†’ send it to MediaGo. Detects video resources automatically, shows the count on the toolbar badge, works with most mainstream video platforms including YouTube, Bilibili and more. Ships bundled with the Desktop app β€” open Settings β†’ More Settings β†’ Browser extension directory to find the install folder.

🎬 YouTube and 1000+ sites

Powered by yt-dlp under the hood. Supports YouTube, Twitter/X, Instagram, Reddit and over a thousand more video sites.

🦞 AI assistants can download for you β€” OpenClaw Skill

Using Claude Code, Cursor or another AI coding assistant? Install the MediaGo skill and just say "please download this video: <url>". The AI handles the rest.

npx clawhub@latest install mediago

πŸ”Œ Works with other tools

MediaGo exposes a full HTTP API β€” scripts, automation tools and other apps can create download tasks, query progress and manage the list directly. The browser extension uses this same API to talk to the desktop app; anyone else can tap in too.

🎞️ Built-in format conversion

After a download finishes, convert it to another format or quality without leaving MediaGo. No more opening a separate tool for ffmpeg.

🐳 One-line Docker deployment

Headless install on your server, then access the web UI from anywhere on the same network:

docker run -d --name mediago -p 8899:8899 -v /path/to/mediago:/app/mediago caorushizi/mediago:3.5.0

For builds that request an initialization code, read setup-token in the server config directory (docker exec mediago cat /app/mediago/data/setup-token for the default container), then enter it on the setup page. The file is deleted after successful setup; existing accounts do not need to initialize again.

Available on Docker Hub and GHCR (ghcr.io/caorushizi/mediago) β€” same image, pick whichever registry is faster for you. Supports both Intel / AMD (amd64) and ARM (arm64). On the desktop build, MediaGo listens on both 127.0.0.1 and your LAN IP out of the box, so phones and tablets on the same Wi-Fi can open the web UI too.

πŸ“· Screenshots

Home

Home β€” dark mode

Settings

Resource extraction

πŸ“₯ Download

v3.5.0 (stable)

Browsing older releases? See the GitHub Releases page.

πŸͺ„ One-click Docker deployment via BT Panel

  1. Install BT Panel using the official script.
  2. Log in to the panel, click Docker in the sidebar and finish the Docker service setup (just follow the prompts).
  3. Find MediaGo in the app store, click Install, configure your domain, and you're done.

πŸ“ What's new in v3.5.0

  • 🌐 Browser extension β€” sniff videos on any site, send to MediaGo in one click
  • 🎬 YouTube + 1000+ sites β€” powered by yt-dlp
  • 🦞 OpenClaw Skill β€” download videos via AI coding assistants
  • πŸ”Œ HTTP API β€” integrate with scripts, automation and third-party tools
  • 🎞️ In-app format conversion β€” choose output format and quality
  • 🐳 Simpler Docker deployment β€” mount a single folder, multi-arch images on GHCR
  • ⚑ Faster startup β€” backend rewrite, lower memory footprint, built-in video player

πŸ§‘β€πŸ’» Development from source

Install One CLI 0.1.24 or newer first.

macOS / Linux:

curl -fsSL https://1cli.dev/install.sh | bash

Windows (PowerShell):

irm https://1cli.dev/install.ps1 | iex

For manual installation, download the CLI archive for your operating system and architecture from GitHub Releases and add the one executable to PATH.

After installation, open a new terminal and run these commands from the repository root:

one --version
one mise trust
one mise install
one setup
one dev
one dev:web
one dev:electron
one check
one test

one.manifest.toml registers the existing projects. mise.toml pins Node, pnpm, Go and Task and exposes product workflows through One. Run one run to list tasks, one build -p core to build Core, or one build -p docs to build the documentation. one dev --dry-run -o json previews execution. After changing package scripts, run one init mise and review the diff. See CONTRIBUTING.md for configuration and validation.

The following Task commands remain compatible and are used by existing CI:

Repository workflows support Task v3.51.1 or newer within the v3 release line. Install the latest compatible v3 release on macOS, Linux, or Windows (PowerShell) with a Go toolchain, make sure the Go binary directory is on PATH, and verify it before running repository commands:

go install github.com/go-task/task/v3/cmd/task@latest
task --version

From the repository root, the primary clone-and-start flow is:

git clone https://github.com/caorushizi/mediago.git
cd mediago
task setup
task dev:all

task setup installs the Node workspace and the runtime tools needed by the application. Their only version source is packages/tooling/manifests/runtime-deps.json; Task does not automatically upgrade them. Running pnpm install alone installs only Node workspace packages, not runtime binaries such as BBDown.

One delegates product workflows to the existing Taskfile. Turbo, pnpm :raw scripts, Go commands, and utilities in packages/tooling remain implementation details used by Task and CI.

Use task dev:web for the web surface or task dev:electron for desktop-only development. The deployable Web product is the Docker image; there is no separate Node.js server package. Before submitting changes, run:

task check
task test

πŸ› οΈ Built with

React Electron Vite TypeScript Tailwind CSS shadcn/ui Go

πŸ™ Acknowledgements

βš–οΈ Disclaimer

This project is for educational and research purposes only. Do not use it for any commercial or illegal purposes.

  1. All code and functionality provided by this project are intended solely as a reference for learning about streaming media technologies. Users must comply with the laws and regulations of their jurisdiction.
  2. Any content downloaded using this project remains the property of its original copyright holders. Users should delete downloaded content within 24 hours or obtain proper authorization.
  3. The developers of this project are not responsible for any actions taken by users, including but not limited to downloading copyrighted content or impacting third-party platforms.
  4. Using this project for mass scraping, disrupting platform services, or any activity that infringes upon the legitimate rights of others is strictly prohibited.
  5. By using this project you acknowledge that you have read and agree to this disclaimer. If you do not agree, stop using the project and delete it immediately.

Building from source? See CONTRIBUTING.md.

Translating MediaGo? See TRANSLATION.md.

Security checks

Run pnpm security:js for the complete workspace dependency audit and pnpm security:go with official govulncheck v1.9.0 on PATH for affected Go function calls. GitHub runs these checks, CodeQL, and container dependency scans on pull requests and daily. Container scans cover OS and identifiable embedded packages; absence of findings does not validate every bundled native library.

The UI development server binds to 127.0.0.1 by default. For intentional LAN testing, set MEDIAGO_DEV_HOST=0.0.0.0 in .env.development.local.

The runtime container uses Distroless Debian 13 with the required ICU/zlib libraries and package provenance. It keeps the same port, volume paths and appended flag overrides. There is no shell or package manager inside the production image; use docker logs and the health/API endpoints for diagnostics. The external streaming engine is rebuilt from checksum-pinned v0.2.1 source with the patched Go toolchain.

Privacy and Code signing policy

Usage statistics are optional. See the Privacy policy for installer-time choice and in-app controls. Windows SignPath signing is pending approval/integration; existing unsigned releases remain unsigned. See the Code signing policy.

About

Cross-platform video downloader β€” sniff and grab m3u8/HLS streams, Bilibili, YouTube and more. Desktop + Docker + 🦞.

Topics

Resources

Contributing

Security policy

Stars

9.3k stars

Watchers

50 watching

Forks

Releases

Packages

Used by

Contributors

Languages