193 lines
4.9 KiB
Markdown
193 lines
4.9 KiB
Markdown
# 我让openclaw做了一个B站弹幕分析工具自动抓取词云情感分析舆情报告开源
|
||
|
||
大家好,最近我让openclaw把我自己在内容运营里常用的一套“弹幕分析流程”做成了一个可复用的小项目:
|
||
|
||
👉 **bilibili-danmaku**
|
||
GitHub:[https://github.com/Smartloe/bilibili-danmaku](https://link.zhihu.com/?target=https%3A//github.com/Smartloe/bilibili-danmaku)
|
||
|
||
核心目标很直接:
|
||
|
||
* 给我一个 B 站视频链接
|
||
* 自动抓取弹幕
|
||
* 自动做分词清洗
|
||
* 自动输出词云图 + 情感分析 + 舆情报告
|
||
|
||
适合做内容复盘、热点观察、用户反馈提炼。
|
||
|
||
一、这个项目解决了什么问题?
|
||
--------------
|
||
|
||
日常做视频复盘时,常见痛点是:
|
||
|
||
1. **弹幕采集麻烦**:每次手动导出/复制,效率很低。
|
||
2. **词云质量不稳定**:不清洗会被“哈哈哈/666/这边那边”污染。
|
||
3. **舆情判断缺标准**:没有统一口径,沟通时容易“拍脑袋”。
|
||
|
||
这个项目把整条链路打通了:
|
||
|
||
> 抓取 → 清洗 → 关键词 → 词云 → 情感 → 报告
|
||
|
||
---
|
||
|
||
二、功能特性
|
||
------
|
||
|
||
* ✅ 自动解析 `BVID -> CID`,抓取弹幕 XML
|
||
* ✅ 导出结构化数据:CSV / JSON / TXT
|
||
* ✅ `jieba` 分词 + 干扰词清洗
|
||
* ✅ `SnowNLP` 情感分析(正/中/负分布)
|
||
* ✅ `wordcloud` 生成高密度中文词云 PNG
|
||
* ✅ 自动生成 Markdown 舆情报告
|
||
|
||
三、项目结构
|
||
------
|
||
|
||
```
|
||
bilibili-danmaku/
|
||
├── SKILL.md
|
||
├── README.md
|
||
├── README.en.md
|
||
├── requirements.txt
|
||
├── scripts/
|
||
│ ├── ensure_env.sh
|
||
│ ├── fetch_danmaku.py
|
||
│ ├── fetch.sh
|
||
│ ├── analyze_danmaku.py
|
||
│ └── analyze.sh
|
||
├── references/
|
||
│ ├── methodology.md
|
||
│ └── stopwords.default.txt
|
||
└── output/
|
||
```
|
||
|
||
四、在 OpenClaw 里一键使用(推荐)
|
||
----------------------
|
||
|
||
如果你本身就在用 OpenClaw,最省事的方式是直接从 ClawHub 安装:
|
||
|
||
```
|
||
clawhub install bilibili-danmaku
|
||
```
|
||
|
||
安装后开启一个新的 OpenClaw 会话,直接给视频链接即可调用技能完成:
|
||
|
||
* 弹幕抓取
|
||
* 词云生成
|
||
* 情感分析
|
||
* 舆情报告输出
|
||
|
||
五、源码方式(3 步)
|
||
-----------
|
||
|
||
### 1)安装依赖
|
||
|
||
```
|
||
cd bilibili-danmaku
|
||
bash scripts/ensure_env.sh
|
||
```
|
||
|
||
### 2)抓取弹幕
|
||
|
||
```
|
||
python3 scripts/fetch_danmaku.py \
|
||
--url "https://www.bilibili.com/video/BV17JfuBqEqg" \
|
||
--outdir "./output"
|
||
```
|
||
|
||
支持短链:
|
||
|
||
```
|
||
python3 scripts/fetch_danmaku.py --url "https://b23.tv/gO0nMGs" --outdir "./output"
|
||
```
|
||
|
||
### 3)分析并出报告
|
||
|
||
```
|
||
bash scripts/analyze.sh \
|
||
"./output/<xxx>_danmaku.csv" \
|
||
"./output/<xxx>_meta.json" \
|
||
"./output" \
|
||
"task_name"
|
||
```
|
||
|
||
输出文件:
|
||
|
||
* `task_name_top_words.json`
|
||
* `task_name_sentiment.json`
|
||
* `task_name_wordcloud.png`
|
||
* `task_name_report.md`
|
||
|
||
六、为什么这版词云更“干净”?
|
||
---------------
|
||
|
||
我在分词后做了数据清洗,重点是四件事:
|
||
|
||
1. **停用词过滤**:默认词表 + 自定义词表
|
||
2. **噪声词过滤**:比如 `哈哈哈 / 233 / 666 / 纯符号`
|
||
3. **token 规范化**:别名合并、重复字符压缩
|
||
4. **高文档频率短词剔除**:去掉“出现太广但信息量低”的词
|
||
|
||
你还可以临时追加干扰词:
|
||
|
||
```
|
||
./.venv/bin/python scripts/analyze_danmaku.py \
|
||
--csv "./output/<xxx>_danmaku.csv" \
|
||
--meta "./output/<xxx>_meta.json" \
|
||
--outdir "./output" \
|
||
--name "task_clean" \
|
||
--extra-stopwords "妈妈,亲戚,那边,这边"
|
||
```
|
||
|
||
七、情感分析怎么做?
|
||
----------
|
||
|
||
使用 `SnowNLP`,每条弹幕都会得到一个 `0~1` 的情绪分:
|
||
|
||
* `>= 0.60`:positive
|
||
* `<= 0.40`:negative
|
||
* 中间:neutral
|
||
|
||
最后汇总成:
|
||
|
||
* 正向/中性/负向占比
|
||
* 平均情绪分
|
||
* 代表性正负样本
|
||
|
||
这对“选题复盘”和“评论区风向判断”很实用。
|
||
|
||
八、适用场景
|
||
------
|
||
|
||
* 内容运营:复盘某条视频的用户反馈
|
||
* 新媒体团队:快速形成“可汇报”的舆情材料
|
||
* 创作者:看粉丝关注点与争议点
|
||
* 数据分析同学:做多视频横向对比
|
||
|
||
九、我自己的使用建议
|
||
----------
|
||
|
||
如果你要把它用于日常工作流,我建议:
|
||
|
||
1. **先跑单视频**,确认数据链路与参数
|
||
2. **再跑批量视频**,做横向对比
|
||
3. 维护一个自己的 `stopwords` 词表(按垂类持续迭代)
|
||
4. 报告里优先看三件事:
|
||
|
||
* 情绪结构是否异常
|
||
* 高频词是否偏离内容定位
|
||
* 负向样本是否集中在某个可改进点
|
||
|
||
十、开源地址
|
||
------
|
||
|
||
如果你刚好也在做内容分析,欢迎直接拿去用:
|
||
|
||
🔗 GitHub:[https://github.com/Smartloe/bilibili-danmaku](https://link.zhihu.com/?target=https%3A//github.com/Smartloe/bilibili-danmaku)
|
||
|
||
欢迎提 issue / PR,一起把它打磨成更顺手的中文内容分析工具。🚀
|
||
|
||
十一、免责声明
|
||
-------
|
||
|
||
请遵守 B站平台规则与相关法律法规。
|
||
本项目仅用于公开数据分析与研究,不用于违规抓取和滥用。 |