Skip to content
Projects

krau/SaveAny-Bot has 2,597 GitHub stars and 300 forks. GitHot measured +1 stars in 24 hours. Last checked 2026-11-07 20:12 UTC. Last push 2026-11-02.

How these counts are measured

Save Any Telegram File to Anywhere 📂 (Alist, Disk, Webdav, S3, Rclone...) . Support restrict saving content and files beyond telegram.

What you can do

  • Support documents / videos / photos / stickers… and even Telegraph
  • Bypass "restrict saving content" media
  • Streaming transfer
  • Multi-user support

Measured star growth

in 24h
+1
in 7 days
Update delayed
in 15 days
Update delayed
in 1 month
Update delayed

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

README.md

Original

Save Any Bot

English | 简体中文

Save Any Telegram File to Anywhere 📂. Support restrict saving content and beyond telegram.

Release Date tag Build Status Stars Downloads Issues Pull Requests License

🎯 Features

  • Support documents / videos / photos / stickers… and even Telegraph
  • Bypass "restrict saving content" media
  • Batch download
  • Streaming transfer
  • Multi-user support
  • Auto organize files based on storage rules
  • Watch specified chats and auto-save messages, with filters
  • Transfer files between different storage backends
  • Integrate with yt-dlp to download and save media from 1000+ websites
  • Aria2 integration to download files from URLs/magnets and save to storages
  • Write JS parser plugins to save files from almost any website
  • Storage backends:
    • Alist
    • S3
    • WebDAV
    • Local filesystem
    • Rclone (via command line)
    • Telegram (re-upload to specified chats)

📦 Quick Start

SaveAny-Bot is configured in the web console. Start it with empty data, downloads, and cache directories:

docker run -d --name saveany-bot \
    -p 28080:28080 \
    -e SAVEANY_LISTEN=0.0.0.0:28080 \
    -v ./data:/app/data \
    -v ./downloads:/app/downloads \
    -v ./cache:/app/cache \
    ghcr.io/krau/saveany-bot:latest

The web UI listens on 127.0.0.1:28080 by default. The startup log prints a direct URL with an access token:

docker logs saveany-bot | grep -E "Web UI available at|Generated web admin password"

For a binary deployment, pass the address directly:

./saveany-bot --listen 0.0.0.0:28080

Open the URL to sign in. On the first start, the same log also contains the generated admin password; use it to change the password from the sidebar after signing in. Unless an access token is set under Settings → Web, a new token is generated on every start. The Guide page covers the required setup:

  1. Connect your Telegram bot.
  2. Add a storage destination.
  3. Allow your Telegram account.

Then send files or message links to the bot and watch them in the Tasks page.

To run the binary, download a release, extract it, and start it. It creates data/ and prints the same tokenized URL:

./saveany-bot

Please read the docs for storage backends and usage.

Sponsors

This project is supported by YxVM and NodeSupport.

If this project is helpful to you, consider sponsoring me via:

Thanks To

Contact

  • Group
  • Discussion
  • PersonalChannel

Explore related projects