基于 B站公开API 实现的视频评论与弹幕深度分析工具,无需登录即可使用。自动采集弹幕、评论数据,进行多维度情感分析、关键词提取、热度分析,生成专业级分析报告。
脚本已内置所有依赖,无需额外安装:
# 所需库(内置)
import requests # HTTP请求
import jieba # 中文分词
from snownlp import SnowNLP # 情感分析
import xml.etree.ElementTree as ET # XML解析
@skill://B站视频分析 请分析这个视频:https://www.bilibili.com/video/BV1ky97B9Efn
python analyze_video.py "https://www.bilibili.com/video/BV1ky97B9Efn"
python analyze_video.py "BV1ky97B9Efn" -o report.md
| 数据 | 接口URL | 参数 |
|------|---------|------|
| 视频信息 | https://api.bilibili.com/x/web-interface/view?bvid={bvid} | bvid |
| 弹幕数据 | https://api.bilibili.com/x/v1/dm/list.so?oid={cid} | oid(视频cid) |
| 评论数据 | https://api.bilibili.com/x/v2/reply/main?next={page}&type=1&oid={bvid}&mode=3 | oid, page |
DEFAULT_HEADERS = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...',
'Referer': 'https://www.bilibili.com/',
'Origin': 'https://www.bilibili.com'
}
输入URL/BV号
│
▼
1. 提取视频BV号 (正则匹配)
│
▼
2. 获取视频信息 (标题、播放量、点赞等) + 获取CID
│
▼
3. 弹幕采集 → XML解析 → 提取文本/时间/类型
│
▼
4. 评论采集 → JSON解析 → 提取内容/用户/点赞
│
▼
5. 多维度分析
├── 情感分析 (SnowNLP 0-1评分)
├── 关键词提取 (jieba分词+停用词过滤)
├── 内容分类 (技术型/情感型/玩梗型/疑问型)
├── 时间分布 (视频分段统计)
└── 互动热度 (点赞率/评论率/弹幕率)
│
▼
6. 生成Markdown专业报告
一、视频基本信息
├── 播放/点赞/投币/收藏/分享/评论/弹幕数量
└── 视频简介
二、弹幕深度分析
├── 2.1 弹幕概况 (总数、类型分布)
├── 2.2 弹幕情感分析 (正面/中性/负面占比+综合评分)
├── 2.3 弹幕时间分布特征 (可视化柱状图)
├── 2.4 弹幕内容分类 (技术型/情感型/玩梗型/疑问型)
└── 2.5 热门弹幕内容 (按长度排序+时间戳)
三、评论深度分析
├── 3.1 评论概况
├── 3.2 评论情感分析
└── 3.3 高赞评论TOP10
四、关键词与话题提取
└── 高频词TOP20
五、综合洞察
├── 5.1 用户情感倾向
├── 5.2 互动热度分析
└── 5.3 内容质量观察
六、总结评价
├── 核心发现
└── 总体评价
附录
└── 数据来源、接口、工具说明
用户输入:
@skill://B站视频分析 请分析这个视频:"https://www.bilibili.com/video/BV1ky97B9Efn"
视频信息:
执行流程:
BV1ky97B9Efn
```python
GET https://api.bilibili.com/x/web-interface/view?bvid=BV1ky97B9Efn
→ 返回: title, stat, duration, cid=xxx
```
```python
GET https://api.bilibili.com/x/v1/dm/list.so?oid={cid}
→ 解析XML获取1426条弹幕
```
```python
GET https://api.bilibili.com/x/v2/reply/main?next=1&type=1&oid=BV1ky97B9Efn&mode=3
→ 获取20条热评
```
| 分析维度 | 结果 |
|---------|------|
| 弹幕情感 | 0.53/1.0 (中性偏正) |
| 评论情感 | 0.78/1.0 (正向) |
| 高频词 | 导弹(97)、拦截(92)、反导(68)、核弹(63)、苏联(53) |
| 弹幕密集时段 | 4-7分钟 (488条) |
输出成果:《[花了天价造反导系统...]视频深度分析报告.md》
| 参数 | 说明 | 示例 |
|------|------|------|
| url | B站视频链接或BV号 | BV1ky97B9Efn |
| -o, --output | 输出报告路径 | -o report.md |
| 问题 | 原因 | 解决 |
|------|------|------|
| 弹幕为0 | CID获取失败或视频无弹幕 | 检查网络或视频有效性 |
| 评论为0 | 未登录限制或API变更 | 正常现象,不影响分析 |
| 412/403错误 | 风控拦截 | 添加延时或更换User-Agent |
B站视频分析/
├── SKILL.md # 本说明文件
├── _skillhub_meta.json # Skill元数据
└── scripts/
├── analyze_video.py # 核心分析脚本 (独立运行)
└── requirements.txt # 依赖列表
如需调整分析维度,可修改 analyze_video.py 中:
categorize_danmakus() - 弹幕分类逻辑
analyze_sentiment() - 情感分析阈值
extract_keywords() - 停用词表
generate_professional_report() - 报告模板
共 1 个版本