自托管的网盘转存管理工具:把「聚合搜索 → 转存到自己的网盘 → 媒体库刮削 → 生成 STRM → 刷新 Emby」串成一条可观测的流水线。
单容器、单端口、一个 SQLite 文件,不需要外部数据库。Web 界面适配桌面与手机。
📘 新用户请从《使用说明》开始:全部页面的功能与操作详解——搜索转存 / 自动转存 / 转存配置 / 网盘连接 / 系统设置 / 日志管理,以及「一次转存背后发生了什么」与常见问题。
🤖 已支持 AI Skill 一句话转存电影 / 电视剧:配套 AI Skill watch-movie——对 AI 说「我想看 xxx」或直接甩一个网盘分享链接,AI 自动搜资源、4K 优先挑正片、与你确认后调 PanKeeper 转存入队,后续队列 / 过滤 / 刮削 / 推送照旧全自动。安装与配置见《Skill 说明》。
- 多网盘适配:百度网盘 / 夸克 / 115,统一抽象(列目录、分享解析、转存、改名、目录管理),内置每账号限速闸与连败熔断
- 搜索转存:对接 pansou 聚合搜索,搜到资源直接勾选文件转存;支持建壳转存、剥壳平铺、更名、文件检测
- 自动转存:cron 定时任务监控分享链接,正则排除 + MD5 去重 + 双目录去重基线,转存历史/运行详情完整落库
- 媒体库联动:QMS(qMediaSync)与 LitePan 双后端——刮削触发、结果回填、STRM 等刮削完成后生成、Emby 刷库;转存 → 刮削 → 同步全链路可跟踪
- TMDB 识别:文件名自识别(年份容错、剧集解析、歧义候选卡片人工挑选),推送带海报/简介;连通支持 HTTP 代理与 SOCKS5,host 模式可按域名直连指定 IP(多 IP 自动择优)
- 推送通知:Server 酱富文本推送,推送历史与正文详情
- 队列引擎:单工串行 + 间隔节奏配置,前后端实时状态同步(SSE)
- 缓存预热:目录树缓存策略可配,支持一键全量预热与实时进度
- AI Skill 一句话转存:官方配套 watch-movie Skill,AI 帮你找片、挑 4K 正片、转存入队,全程一句话
| 层 | 技术 |
|---|---|
| 后端 | Python 3.12 · FastAPI · SQLAlchemy · SQLite · APScheduler |
| 前端 | Vue 3 · TypeScript · Vite · Ant Design Vue |
| 部署 | Docker Compose(单容器,前端由后端静态托管) |
镜像发布在 GHCR 与 Docker Hub(amd64 / arm64 双架构,push 自动构建):
- GHCR:
ghcr.io/xinyulo/pankeeper:latest - Docker Hub:
7yueyue/pankeeper:latest
docker run -d \
--name pankeeper \
--restart unless-stopped \
-p 8031:8000 \
-e TZ=Asia/Shanghai \
-v /your/path/pankeeper/data:/app/data \
ghcr.io/xinyulo/pankeeper:latest数据映射说明:容器的 /app/data 是唯一的持久化目录,必须挂载到宿主机,否则容器重建后数据全部丢失。目录里包含:
| 文件 | 内容 |
|---|---|
pankeeper.db |
SQLite 主库:账号、系统设置、转存配置、转存记录 |
jwt.key |
登录令牌签名密钥 |
cred.key |
网盘凭据加密密钥(Fernet) |
⚠️ 备份data目录时请三个文件一起备份——只备份数据库不备份两个密钥文件,已保存的网盘凭据将无法解密。
用 Docker Hub 镜像的话把最后一行换成 7yueyue/pankeeper:latest 即可。
新建 docker-compose.yml(仓库根目录已自带一份,可直接用):
services:
pankeeper:
image: ghcr.io/xinyulo/pankeeper:latest # Docker Hub 用户可改为 7yueyue/pankeeper:latest
container_name: pankeeper
restart: unless-stopped
ports:
- "8031:8000"
volumes:
- ./data:/app/data
environment:
- TZ=Asia/Shanghaimkdir data && docker compose up -d启动后访问 http://<主机IP>:8031,默认账号 admin / admin#123(登录后请立即修改,系统设置 → 账号安全)。
数据(SQLite + 加密密钥)全部在 data/ 目录,备份它即备份一切。
monorepo 自带前后端同构 Dockerfile(前端构建产物由 FastAPI 托管,同源零反代),前端源码通过额外构建上下文注入:
docker buildx build \
--build-context frontend=./pankeeper-vue3 \
-t pankeeper:local ./pankeeper-backend# 后端(默认 127.0.0.1:8000)
cd pankeeper-backend
python -m venv .venv
.venv/Scripts/pip install -r requirements.txt # Linux: .venv/bin/pip
.venv/Scripts/python run.py --port 8000
# 前端(5173,/api 由 vite 代理到 8000)
cd pankeeper-vue3
npm install
npm run dev前端默认走真实后端;纯离线联调可把 .env.development 里 VITE_USE_MOCK 置为 true。
- 网盘连接:登录后在各网盘页扫码/粘贴 Cookie 建立账号
- 搜索源:系统设置 → 搜索源,填 pansou 地址
- 媒体库联动:系统设置 → 联动后端,选 QMS 或 LitePan 并填连接参数
- 推送:系统设置 → 推送通知,填 Server 酱 SendKey
- TMDB:系统设置 → 代理配置,填 API Key(themoviedb.org 免费申请),按网络环境选代理或 Host 直连
pankeeper-git
├── pankeeper-backend # FastAPI 后端(adapters 网盘适配 / api 接口 / services 业务 / transfer 转存链路)
├── pankeeper-vue3 # Vue3 前端(views 页面 / api 双模式接口层 / queue 队列前端引擎)
├── skills/watch-movie # AI Skill:一句话找片转存(拷进 AI 的 skills 目录即可用)
└── docker-compose.yml
如果这个项目对你有帮助,请作者喝杯咖啡吧 ~
本项目仅用于个人学习与自托管场景,请遵守各网盘服务商的用户协议,自行承担使用风险。

