bibi-proxy
by spherica233
README.md
# bibi-proxy
BibiGPT 视频总结本地 MCP 代理 · 多账号 API Key 轮询
A local MCP proxy for [BibiGPT](https://bibigpt.co) (AI video & audio summarizer).
Clients configure only the proxy URL; the proxy injects BibiGPT API keys with
**round-robin rotation**, retry-on-auth-error, and hot-reload.
```
Qwen Code / any MCP client ──> http://localhost:8788 (this proxy)
│ injects Authorization: Bearer <rotated key>
▼
https://bibigpt.co/api/mcp (BibiGPT remote MCP)
```
## 功能特性 Features
- 🔑 **多账号轮询**:`keys.json` 数组里放任意数量的 BibiGPT API Key,每个请求轮换使用
- 🔄 **坏 Key 自动切换**:认证失败(HTTP 401/403/429 或 JSON-RPC `UNAUTHORIZED`)自动换下一个 Key 重试
- ♻️ **热重载**:修改 `keys.json` 无需重启,`fs.watch` 自动加载
- 🔐 **Key 不进客户端**:客户端只连代理地址,不接触任何 Key;日志全程打码
- 🚀 **32 个 MCP 工具**:总结、分章节、字幕、异步长视频任务、个人库、笔记、合集、频道订阅、Feed、Notion 导出、思维导图、画面分析等
- ⚙️ **可作 Windows 服务**:随附 NSSM 脚本,开机自启、崩溃自愈
## 目录结构 Project Structure
```
bibi-proxy/
├── src/index.ts # 代理源码(Node.js,零依赖,仅用 node:http)
├── package.json # npm 脚本:build / start / dev
├── tsconfig.json
├── keys.example.json # Key 配置模板(提交到仓库的占位符)
├── keys.json # 真实 Key(本地创建,已被 .gitignore 排除,勿提交)
├── setup-service.cmd # NSSM 服务安装脚本(可移植,自动探测 node/nssm)
├── nssm-2.24-101-g897c7ad/ # 随附的 NSSM 工具(win32/win64)
└── dist/ # 编译产物(npm run build 生成,已被忽略)
```
## 快速开始 Quick Start(中文)
### 1. 环境要求
- [Node.js](https://nodejs.org) 18+(推荐 20+),`node` 在 PATH 中
- Windows / macOS / Linux 均可运行;Windows 服务化需要 Windows + NSSM(已随附)
- BibiGPT API Key:登录 https://bibigpt.co/user/integration 获取(多个账号可多放几个)
### 2. 安装依赖并构建
```bash
npm install
npm run build
```
### 3. 配置 API Key
```bash
copy keys.example.json keys.json
```
编辑 `keys.json`,填入你的 Key:
```json
[
"key_1",
"key_2",
"key_3"
]
```
> Key 数量不限;`keys.json` 已被 `.gitignore` 排除,不会误提交。
### 4. 启动代理
```bash
npm run start # 前台运行(开发调试用)
```
启动后应看到:
```
[proxy] keys reloaded (3) reason=startup
bibi-proxy listening on http://localhost:8788
Upstream: https://bibigpt.co/api/mcp
```
验证代理可用:
```bash
curl -s -X POST http://localhost:8788/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\"}"
```
应返回 BibiGPT 的 MCP 工具列表 JSON(HTTP 200)。
### 5. 接入 Qwen Code
```bash
qwen mcp add bibigpt http://localhost:8788 --transport http
```
然后在对话里直接说:
```
总结这个视频 https://www.bilibili.com/video/BV1xxxxxxxx
```
其他 MCP 客户端(Claude Desktop、Cursor 等)配置示例:
```json
{
"mcpServers": {
"bibigpt": {
"url": "http://localhost:8788",
"type": "http"
}
}
}
```
## 安装为 Windows 服务(NSSM)
> 让代理开机自启、崩溃自动重启。**需要管理员权限**——请右键"以管理员身份运行"或在管理员终端中执行(会弹 UAC 由你确认)。
### 安装
```bat
setup-service.cmd
```
脚本会自动:
1. 用脚本所在目录定位项目根和随附的 NSSM(`nssm-2.24-101-g897c7ad\win64\nssm.exe`)
2. 从 PATH 探测 `node.exe`
3. 若 `dist` 缺失先自动 `npm run build`
4. 注册服务 `bibi-proxy`(自动启动,异常退出自动重启,日志写入 `_service.log`)
5. 启动服务
成功输出:`SERVICE_INSTALLED_AND_STARTED`
验证:
```bat
sc query bibi-proxy
netstat -ano | findstr :8788
```
### 管理命令
```bat
net start bibi-proxy rem 启动
net stop bibi-proxy rem 停止
sc query bibi-proxy rem 查状态
```
- **更新 Key**:直接编辑 `keys.json`,服务内自动热重载,无需重启服务
- **更新代码**:`npm run build` 后 `net stop bibi-proxy && net start bibi-proxy`
### 卸载
在项目目录执行:
```bat
nssm-2.24-101-g897c7ad\win64\nssm.exe remove bibi-proxy confirm
```
## 使用示例 Usage
### 常用 MCP 工具
| 用户意图 | 工具 |
|---|---|
| 总结视频/音频 URL | `summarize_video` |
| 自定义 prompt/模型/语言总结 | `summarize_video_with_config` |
| 分章节总结 | `summarize_by_chapter` |
| 提取字幕/转写 | `get_subtitle` |
| 长视频异步总结(>30 分钟) | `create_summary_task` + `get_task_status` 轮询 |
| 查账户/剩余额度 | `get_account_info` |
| 浏览/搜索已保存的视频 | `list_saved_videos` / `search_saved_videos` |
| 笔记、合集、频道、Feed、Notion 导出、思维导图等 | 详见 `tools/list` 返回的完整工具列表 |
### curl 调用总结
```bash
curl -s -X POST http://localhost:8788/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"summarize_video\",\"arguments\":{\"url\":\"https://www.bilibili.com/video/BV1xxxxxxxx/\"}}}"
```
## 环境变量 Environment Variables
| 变量 | 默认值 | 说明 |
|---|---|---|
| `PORT` | `8788` | 监听端口 |
| `KEYS_FILE` | `./keys.json` | Key 文件路径 |
| `BIBIGPT_MCP_BASE_URL` | `https://bibigpt.co/api/mcp` | 上游 MCP 地址 |
| `MAX_BODY_BYTES` | `1048576` | 请求体大小上限(字节) |
| `MAX_ERROR_BODY_BYTES` | `262144` | 错误响应体缓冲上限(字节) |
| `MAX_RESPONSE_BODY_BYTES` | `8388608` | JSON 响应缓冲上限(字节,用于认证错误检测) |
## 安全说明 Security
- `keys.json` 与 `*.log` 已被 `.gitignore` 排除,**提交前请确认 Key 未入库**
- 代理注入 `Authorization: Bearer <key>`,忽略客户端自带认证头
- 日志只记录 key 序号(`key #1/5`),绝不输出明文 Key
## 常见问题 Troubleshooting
| 症状 | 原因 | 解决 |
|---|---|---|
| 启动报 `No API keys available` | `keys.json` 缺失或为空 | 按上文第 3 步创建并填写 |
| 调用返回 `UNAUTHORIZED` 且全部 Key 都失败 | 所有 Key 均无效或额度用尽 | 检查 Key 有效性:`curl https://api.bibigpt.co/api/version -H "Authorization: Bearer <key>"`;调用 `get_account_info` 查看剩余额度 |
| 端口 8788 被占用 | 已有进程监听 | `netstat -ano \| findstr :8788` 找到 PID,停掉或改用 `PORT` 环境变量 |
| 改了 `keys.json` 没生效 | — | 正常会自动热重载;日志应出现 `keys reloaded (N) reason=fs.watch:rename` |
| 服务注册失败 | 未以管理员运行 | 以管理员运行 `setup-service.cmd`(会弹 UAC) |
## English Quick Start
```bash
npm install && npm run build
copy keys.example.json keys.json # then fill in your BibiGPT API keys
npm run start
```
Connect from Qwen Code:
```bash
qwen mcp add bibigpt http://localhost:8788 --transport http
```
Install as a Windows service (elevated):
```bat
setup-service.cmd
```
Get API keys at https://bibigpt.co/user/integration.
## 第三方组件 Third-party components
- [NSSM](https://nssm.cc) — bundled under `nssm-2.24-101-g897c7ad/` for Windows service management (see its own `README.txt` / `ChangeLog.txt` inside the folder).
- [BibiGPT](https://bibigpt.co) — remote MCP service being proxied; API docs: https://docs.bibigpt.co
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues