- 新增「添加监听来源」一节:来源怎么填(含私有频道的数字 ID)、用样例消息接入与手动添加、 来源卡片上各项设置、测试识别与识别规则、生效与排查 - 推荐来源 @QukanMovie,附作者在用的过滤与识别设置,并说明由第三方运营、与本项目无关 - 免责声明、CONTRIBUTING 与 README 同步:不内置来源,快速开始里的推荐来源是唯一例外 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Reelay
Turn the releases that scroll past in Telegram into an organized media library on your 115 drive.
Self-hosted · AI recognition · You decide · Every transfer verified
简体中文 · English
The channels and bots you follow post a flood of releases every day, and you only want a few of them. Reelay watches them with your own Telegram account. An LLM reads each message to work out the title, season, episodes and release details, and TMDB plus the actual files in the share double-check it. When you tap Save in Telegram, Reelay saves the share into your own 115 cloud drive and renames and files it the way Jellyfin / Emby expect. The next time you open your media server, the new episode is already there.
Set it up once in the web console; after that, approving, correcting, following shows and reading the daily report all happen in Telegram.
Reel + Relay: relaying releases from your message feed into your library.
Note
The web console, Telegram messages and the documentation are in Simplified Chinese. The examples below are translated.
✨ Highlights
🧠 Understands messagesAI reads title, episodes and release details; TMDB fixes the title. Rules take over when AI is down. |
📱 Done in TelegramSave, reroute or follow a show in one tap; fix a wrong match with one line. |
🛡️ Transfers you can trustCheckpoint before every call, verify after. Uncertain results are re-checked, never re-sent. |
🗂️ Organized on arrivalAuto-filed and renamed by template; duplicates go to you, are skipped, kept, or upgraded. |
📺 Follows shows for youNew episodes save themselves, missing ones are flagged daily, and finished seasons unsubscribe. |
🧩 Works everywhereWeb console, Telegram bot and MCP; one folder is one plugin. |
💬 What it looks like in Telegram
| Approval card | Saved notification |
|---|---|
|
|
What you can do without opening the web console:
| When | In Telegram |
|---|---|
| Recognition is wrong | Tap ✏️ Fix on the card and send one line such as title Blossoms season 2; anything you leave out stays the same. Or ask for re-recognition |
| A transfer or organize step stops | The alert offers the right buttons: verify the transfer, continue with what arrived, reorganize, delete or overwrite, retry |
| Things piled up | /pending opens each card, or approves / ignores everything at once |
| Following shows | /subs shows what's saved and missing, cancels or resumes subscriptions and handles suggestions; missing-episode reminders can be marked "don't wait" |
| Never want a title again | Tap ⛔ Stop receiving on the card; /ignored brings it back |
| How is it running | /status for an overview; a daily report arrives every day |
| Just ask | With AI configured: "What's pending?", "Approve these episodes of X and save them to Anime" |
Re-scanning the QR code after the 115 login expires, and all configuration, happen in the web console. See the Telegram and agents guide.
🚀 Quick start
All you need is Docker and a compose.yaml. Images are published for amd64 and arm64:
mkdir reelay && cd reelay
curl -fsSLO https://raw.githubusercontent.com/Derrors/reelay/main/compose.yaml
docker compose pull
docker compose up -d web # console at http://127.0.0.1:28080
The first time you open the console, set a login password. Then fill in Telegram, AI and 115 under Settings, log in with your personal Telegram account and start listening:
docker compose run --rm --no-deps -it worker python -m reelay.login
docker compose up -d
Then add the channels or bots to watch under Settings → Sources: paste a few sample messages, let AI draft the source's rules, and tap Test recognition on the card to check the result. Where to get each account and how to verify your first release is covered in the quick start (Chinese).
Without Docker, or try a simulation first
Simulation mode runs the whole pipeline with a built-in config, sample messages and an in-memory drive. It reads none of your local config or secrets and needs no accounts:
git clone https://github.com/Derrors/reelay && cd reelay
python3.12 -m venv .venv && source .venv/bin/activate
pip install -e .
python -m reelay.main --dry-run
Running directly on your machine:
pip install -e ".[all]"
(cd web && npm ci && npm run build)
python -m reelay.web # web console
python -m reelay.login # log in with your personal Telegram account
python -m reelay.main # listener and background worker (separate terminal)
🎞️ What the library looks like
Filed by category by default (or by media type, or flat). Naming templates are editable in the console, and Preview organizing shows the result before you save. The default episode template adds the Chinese episode label 第 N 集 ("episode N"); remove it from the template if you don't want it:
Movies/
└── Chinese Movies/
└── The Wandering Earth II (2023) [tmdbid=…]/
└── The Wandering Earth II (2023) - 2160p H265.mkv
TV/
└── Chinese TV/
└── The Long Season (2023) [tmdbid=…]/
└── Season 01/
├── The Long Season - S01E01 - 第 1 集 - 2160p H265.mkv
└── The Long Season - S01E02 - 第 2 集 - 2160p H265.mkv
Anime/
└── Japanese Anime/
└── …
Other/
└── Documentaries/
└── …
🧭 Design
AI proposes → sources of truth verify → you decide → your decisions feed back to the AI.
AI reads messages and makes suggestions; TMDB and the real files in the share keep it honest, and anything uncertain goes to you. Every fix you make on a card makes the next recognition from the same source more accurate. Transferring, renaming and deduplication are always done by deterministic code and verified by reading back. See architecture (Chinese).
📚 Documentation
The documentation is in Chinese.
| Document | Contents |
|---|---|
| Quick start | Accounts, first launch, initial setup, verifying your first release |
| Deployment | Docker, access and security, upgrades and rollback, backups, health checks and recovery |
| Configuration | System settings, per-source recognition rules, plugin settings, secrets and runtime files |
| Telegram and agents | Control bot buttons, commands and chat; MCP for Claude and other agents |
| Plugins | Extension points, PipelineContext, calling AI, metadata conventions |
| Architecture | State machine, how AI and rules divide the work, transfer and recovery boundaries |
| Changelog | What changed in each release |
📌 Status
Note
1.0. The author uses it daily, and the full manual-approval flow runs continuously on a real account. From 1.0 on the project follows semantic versioning: config and data formats stay compatible within 1.x. Feedback is welcome, especially on automatic approval and running many sources. Runs on macOS / Linux; on Windows, use Docker.
Warning
Reelay does not provide or index any content. It only processes messages your own account can see and saves to your own drive. Automating a personal Telegram account may get it banned, and calling 115 APIs too often may trigger rate limits or risk control. Read the disclaimer (Chinese) before use.
🤝 Contributing
Issues and PRs are welcome. See CONTRIBUTING for the development setup and commit conventions, and report security issues privately as described in SECURITY.
License
MIT © Derrors