Skip to content
SORA's Blog
Go back

我写了个 B站 AI Bot — 项目进度全记录

这是什么

一个运行在 B站的 AI Bot(账号叫 新顺德),当用户在评论区 @新顺德 时,自动分析视频内容并回复总结。


运行状态

项目状态
服务器X230i Ubuntu (192.168.1.226) · 7×24 运行
Bot 账号新顺德
凭证有效期~30 天(QR 扫码登录)
轮询间隔30 秒
技术栈bilibili-api-python + DeepSeek + bcut ASR

已实现功能(16 项)

基础流程

视频 @新顺德 总结一下 → QR 凭证认证 → 获取字幕 → DeepSeek 处理 → 回复。

#功能说明
1QR 扫码登录QrCodeLogin 扫码获取凭证,持久化 JSON 文件
2@通知轮询每 30 秒检查 session.get_at()
3字幕三层回退手动字幕 → AI 字幕 → bcut ASR 语音转文字
4DeepSeek 总结deepseek-chat 模型,800 tokens 输出
5观点提取分析 UP 主核心立场和逻辑链条
6歌词整理ASR 识别 → AI 校对准排版,适合音乐视频
7ASR 回退yt-dlp 下载音频 → bcut 云端免费转写 → LLM 整理

访问控制

#功能说明
8关注者限定仅已关注新顺德的用户可调用
9每日次数限制5 次/天/人(环境变量 DAILY_LIMIT 可调)
10主人白名单UID 329007652 跳过关注检查 + 次数限制

稳定性

#功能说明
11去重持久化processed_ids.json — 重启不重复回复旧 @
12崩溃安全先存 ID 再处理,中途崩溃也不重复消费 API

回复方式

#功能说明
13评论区回复默认模式,在 @ 的评论区公开回复
14私信回复@新顺德 总结 私信 — 悄悄发 B站私信
15邮箱发送@新顺德 总结 发邮件 → 三级降级:邮箱→私信→评论区
16非视频兼容动态/图文 @ 不会静默跳过,会提示仅支持视频

调用示例

@新顺德 总结一下              → 评论区 AI 总结
@新顺德 总结 私信             → B站私信送达
@新顺德 总结 发邮件            → QQ邮箱发送
@新顺德 观点提取              → 分析 UP 主立场
@新顺德 歌词                  → ASR→歌词排版整理

踩坑记录

项目花了约 8 小时,踩了不少坑:

根因
用户扫码 6 次失败check_state() 整数比较枚举,API 版本缺 save() 方法
重启后重复回复旧 @没有持久化已处理 ID → 加 processed_ids.json
动态/图文 @ 被静默吞掉business_id 过滤太死 → 放开 + 友好提示
主人被自己 Bot 拒绝忘了给自己加白名单 → 加 BOT_OWNER_UID 跳过
LLM API 被重复消费先处理再存 ID → 改为先存 ID 再处理

一条铁律:任何第三方库调用前,先 dir() + 读源码确认 API 契约,不靠”我记得”写代码。


项目架构

用户 @新顺德


bilibili-api-python ──→ QR 凭证认证


get_at() 轮询 @通知

    ├─ 关注检查 + 每日次数


获取字幕 (手动 → AI → bcut ASR)


DeepSeek API ──→ 总结/观点/歌词


回复 (邮箱 → 私信 → 评论区 三级降级)

待办

优先级任务
P2私信回复交互优化
P3视频总结直接私信送达
P4接入 bilibili-mcp → Claude Desktop 调用

相关链接


Share this post on:

Previous Post
B站 AI Bot 使用指南 — @新顺德
Next Post
HTML5 Drag & Drop 踩坑记录