This release is a pre-release and may not be stable for production use.
Openlist-Ani
🎬 RSS 订阅 → 自动下载 → AI 重命名,一站式番剧自动化管理
Openlist-Ani,简称O-Ani,从动漫番剧相关的 RSS 订阅源中自动获取番剧更新,通过 Openlist 离线下载至对应网盘,
并结合 LLM 分析资源名,将资源重命名为 Emby / Jellyfin 可解析的格式。
✨ 特点
- 📡 自动追番 — 自动获取 RSS 番剧更新并下载
- 📦 多网盘支持 — 基于OpenList实现,支持 PikPak、115 等离线下载
- 🗂️ 合集整理 — 一次下载多集文件,逐集解析元数据、匹配字幕并归类到媒体库
- 🤖 AI 重命名 — AI 分析资源名 + TMDB 搜索,精准获取番剧名、季度、集数
- 💬 智能助理 — 挂载至 Telegram / 微信ClawBot / 飞书机器人,通过自然语言让 AI 帮你搜索并下载资源
- 🔔 更新通知 — 通过 PushPlus、Telegram、微信ClawBot、飞书等渠道推送更新
📋 准备工作
- 参照 Openlist 官方文档 部署 Openlist,并搭建好离线下载
- 准备好 RSS 订阅链接(如 Mikan Project)
- 可选:准备 AI API Key,或安装并登录 Pi / Claude Code / Codex Agent(均未配置时元数据使用本地正则 + TMDB)
非 Docker 安装支持 Python 3.11、3.12 和 3.13,使用 libtorrent>=2.0.13,<2.1
(当前锁定版本为 2.0.13)。Windows x64 会在这三个 Python 版本上执行兼容性测试;
如果本机原生模块导入失败,请先升级到受支持的 Python 和最新项目版本,再按
PIP 安装指南中的 Windows 检查步骤验证。
源码或 PIP 安装无需 Node.js/npm。首次使用默认 Pi Assistant 时,程序会下载
官方锁定版本的独立二进制,校验 SHA-256 后原子安装到配置文件旁的
data/assistant/runtime/pi/。显式配置的 executable 和 PATH 中已有的 Pi
仍然优先,不会被覆盖。Windows 如果没有可用的 Bash,程序还会下载官方
PortableGit、校验固定 SHA-256,并将 Git Bash 安装到
data/assistant/runtime/git-bash/;不会修改系统安装或全局 PATH。
API source(包括旧 [llm] 自动迁移得到的 source)会自动注入 Pi,无需重新
配置模型;完全没有 AI source 时才使用 Pi 自己的登录和模型配置。Docker 镜像
已预装 Pi。如果使用 Claude Code 或 Codex source,则安装并登录对应的原生 CLI。
内置 Skills 不再复制到临时会话目录:Pi 直接使用 --skill,Claude Code 使用
--plugin-dir,Codex 则在每个隔离会话的 .agents/skills 中建立指向
随包 Skill 目录的临时符号链接,不复制内容或修改 Codex 的持久配置。
🚀 快速开始
方式一:源码安装(推荐)
前置:安装 uv
|
Linux / macOS curl -LsSf https://astral.sh/uv/install.sh | sh
|
Windows powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
更多安装方式参考 uv 官方文档
1. 安装
git clone https://github.com/TwooSix/Openlist-Ani.git
cd Openlist-Ani
# 推荐切换到最新 Release tag;master 为开发分支,不保证稳定
# Release 版本以 tag 为准
git fetch --tags
git checkout tags/v*** # 将 v*** 替换为 Release 页面中的版本号
uv sync --no-dev --frozen
2. 创建配置文件
在运行目录下新建 config.toml,填入以下内容:
config_version = 2
[rss]
urls = ["RSS订阅链接"]
[downloader]
download_path = "/PikPak/Anime"
rename_format = "{anime_name} S{season:02d}E{episode:02d} {fansub} {quality} {languages}"
# 可选年份:"{anime_name} ({year}) S{season:02d}E{episode:02d}"
[downloader.openlist]
url = "http://localhost:5244"
token = "" # 令牌,见「设置 → 其他 → 令牌」
offline_download_tool = "qBittorrent"
[metadata]
pipeline = ["regex", "tmdb"] # 默认配置;推荐配置 AI source 后改为 ["ai", "tmdb"]
# 可选:API source。Metadata 直接调用 API,Assistant 由内置 Pi 承载。
# [ai.sources.primary]
# type = "api"
# provider = "openai-compatible"
# api_key = "sk-xxx"
# base_url = "https://api.deepseek.com/v1"
# model = "deepseek-chat"
完整配置项请参考
config.toml.example及 配置说明
3. 启动
uv run openlist-ani
4.(可选)启动 AI 助理
在配置文件中补充助理配置后运行:
[assistant]
enabled = true
[assistant.telegram]
enabled = true
bot_token = "" # 从 @BotFather 获取
allowed_users = [123456789] # 必填;只有这些用户可以使用 Assistant
uv run openlist-ani-assistant
内置 Skills 会随程序包加载并由 Agent 原生发现。./skills 可向 Pi/Claude Code
直接提供自定义 Skills;Codex 会将其与内置 Skills 一起投影到隔离会话的
.agents/skills 目录,同名 Skill 目录以用户版本为准。
方式二:Docker 部署
1. 准备文件
在运行目录下创建:
config.toml— 配置文件(内容同上)data/— 数据目录
2. 启动容器
docker run -d \
--name openlist-ani \
--network host \
-e ENABLE_ASSISTANT=false \
-v /path/to/config.toml:/config.toml \
-v /path/to/data:/data \
twosix26/openlist-ani:latest
将
/path/to/替换为你的实际路径。
如需启用 AI 助理,填写好配置后将ENABLE_ASSISTANT设为true。
详细说明见 Docker 部署指南。
方式三:PIP 安装
pip install openlist-ani
openlist-ani
# 可选:启动 AI 助理
openlist-ani-assistant
📖 文档
🖼️ 效果展示
| 重命名结果 | 智能助理 |
|---|---|
Release files for openlist-ani 1.0.0.dev260809
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| openlist_ani-1.0.0.dev260809.tar.gz | 261.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| openlist_ani-1.0.0.dev260809-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 612.4 kB
Release files / openlist_ani-1.0.0.dev260809.tar.gz
| Download URL | openlist_ani-1.0.0.dev260809.tar.gz |
|---|---|
| Size | 261.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0b69910a09909fe03e11e01dc594a8a62f7dc502267aad68a07a596d0f0650e7
|
|
BLAKE2b-256 checksum How to use checksums |
29425aaf927aa7abefc2710fa190f804d55da4e1042557cebe1116a2080712d7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / openlist_ani-1.0.0.dev260809-py3-none-any.whl
| Download URL | openlist_ani-1.0.0.dev260809-py3-none-any.whl |
|---|---|
| Size | 350.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2f86fbef2ce5a4327d15841e85c147c1de7983f344334356f697223cb02e3d5a
|
|
BLAKE2b-256 checksum How to use checksums |
7908ab23dc498aa7aa0654e676b255402818b30b19bd4032725f44f6af611665
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|