Bilibili Trending
获取 B 站热门数据 → 自动调用子 Agent 分析 → 持久化储存 → 趋势预测
安全说明
- 仅调用公开 API:使用 B 站公开排行榜 API,不涉及登录、Cookie、用户信息
- 无个人信息:只获取热门视频数据,不采集任何用户身份信息
- 本地存储:数据保存在本地工作区,不上传到任何外部服务器
- 标准请求头:仅使用标准 User-Agent,无特殊权限
- 自动重试:API 限流(-352)时自动等待并重试(最多 3 次)
环境要求
- Python 3.x
requests库- OpenClaw 环境(用于自动调用子 Agent)
支持 21 个榜单
| 类型 | 榜单 | |------|------| | 普通视频 | 全站、动画、游戏、音乐、舞蹈、鬼畜、影视、娱乐、知识、科技数码、美食、汽车、时尚美妆、体育运动、动物 | | PGC 内容 | 番剧、国创、纪录片、电影、电视剧 |
使用方式
以下命令在 skill 目录下执行(脚本会根据相对于工作区的位置自动创建所需目录)
抓取并分析单个榜单
cd skills/Bilibili-trending/scripts
python bilibili_all.py --rank <榜单>
示例:
python bilibili_all.py --rank game # 游戏榜
python bilibili_all.py --rank tv # 电视剧榜
python bilibili_all.py --rank anime # 番剧榜
python bilibili_all.py --rank all # 全站榜
列出所有榜单
python bilibili_all.py --list
手动模式(输出 prompt 不调用子 Agent)
python bilibili_all.py --rank game --manual
抓取并检测异常
python bilibili_all.py --rank game --alert # 抓取后自动运行异常检测
python bilibili_all.py --rank game -a -m # 手动模式 + 异常检测
完整流程
Step 1: 抓取数据
脚本自动完成:
- 调用 B 站 API 抓取数据
- 处理数据(计算互动率、提取关键词)
- 保存 JSON 到
{工作区}/json/output_{rank_type}.json - 更新趋势数据到
trend.json
Step 2: 自动分析
脚本自动 spawn 子 Agent,发送分析 prompt
Step 3: 保存报告
分析完成后,报告自动保存到:
{工作区}/memory/bilibili-analysis/{榜单名称}_{时间}.md
例如:游戏_2026-04-02-15-30-45.md
趋势分析命令
在
skills/Bilibili-trending/scripts目录下执行
查看趋势
python bili_trend.py trend # 全局趋势
python bili_trend.py trend game # 单榜单趋势
生成周总结
python bili_trend.py weekly # 全站周总结
python bili_trend.py weekly game # 单榜单周总结
生成月总结
python bili_trend.py monthly # 全站月总结
python bili_trend.py monthly game # 单榜单月总结
对已有数据重新分析
python bili_trend.py workflow game # 自动调用子 Agent
python bili_trend.py workflow game --manual # 仅输出 prompt
定时自动采集
python bili_trend.py daemon # 默认 2h 间隔,采集全部 21 个榜单
python bili_trend.py daemon --interval 30m # 每 30 分钟采集一次
python bili_trend.py daemon -i 4h -r game,anime # 每 4 小时采集游戏+番剧榜
python bili_trend.py daemon --no-alert # 关闭异常检测
按 Ctrl+C 优雅停止。
非 OpenClaw 环境
如果没有 OpenClaw 环境:
- 脚本检测到无法导入
sessions_spawn - 自动输出 prompt 供手动使用
- 用户可将 prompt 发送给子 Agent 手动分析
关键词提取逻辑
# 1. 正则提取 2-4 字中文
words = re.findall(r'[\u4e00-\u9fa5]{2,4}', title)
# 2. 统计词频
kw_counter = Counter(words)
# 3. 取 Top 10
top_keywords = [kw for kw, _ in kw_counter.most_common(10)]
环境变量
| 变量 | 说明 | 默认值 |
|------|------|--------|
| BILIBILI_WORKSPACE | 工作区路径(JSON 和报告的输出目录) | 自动检测(scripts/ 往上 3 级) |
异常检测
当使用 --alert 或 daemon 模式时,自动检测以下 4 类异常:
| 类型 | 级别 | 检测规则 | |------|------|----------| | 互动率飙升 | HOT | 视频互动率 > 历史均值 × 2.5 | | 新 UP 主上榜 | INFO | UP 主首次出现在该榜单 | | 分区热度突变 | WARN | 分区占比 > 历史均值 × 2.0 | | 关键词爆发 | INFO | 新关键词首次进入 Top 10 |
预警数据保存到 memory/bilibili-analysis/alerts.json(最近 200 条),UP 主历史记录保存到 up_history_{rank_type}.json。
需要至少 3 条历史趋势记录才会启动检测。
脚本结构
scripts/
├── config.py # 21 个榜单配置
├── common.py # 共享工具(路径、持久化、关键词、prompt、API 重试、抓取、Agent 调用)
├── alerts.py # 异常检测(互动率、新UP主、分区突变、关键词爆发)
├── bilibili_all.py # 主入口:抓取 → 处理 → 保存 → 分析(支持 --alert)
└── bili_trend.py # 趋势分析:trend / weekly / monthly / workflow / daemon
输出文件
脚本会在工作区自动创建以下目录结构:
{工作区}/
├── json/ # JSON 数据目录
│ └── output_{rank_type}.json # 原始数据(含 owner 字段)
└── memory/bilibili-analysis/ # 分析结果目录
├── trend.json # 趋势累计数据(最近 60 条)
├── alerts.json # 预警记录(最近 200 条)
├── up_history_game.json # 游戏榜历史 UP 主
├── 游戏_2026-04-02-15-30-45.md # 分析报告
├── weekly-2026-W14.md # 周总结
└── monthly-2026-04.md # 月总结
注意事项
- 频繁请求会触发 API 限流(-352 错误),脚本已内置自动重试 + 递增等待
- 趋势数据需长期积累(建议 30+ 次)才能形成可靠预测
- 子 Agent 分析完成后报告自动保存
- 普通视频数据包含
owner字段,支持 UP 主生态分析
微信扫一扫