一套以 Python 打造的 YouTube 评论采集与舆情分析项目, 提供命令列工作流与 Streamlit Web UI,支持:
- 一键抓取指定影片的评论(含回覆)
- 轻量关键字/情感统计 + Top 留言展示
- Google/DeepSeek API 加持的翻译与高阶综述
- 美观的仪表板式界面,可下载文字与 JSON 报告
.
├── analyze_comments.py # 核心分析逻辑(CLI 用)
├── deepseek_client.py # DeepSeek Chat API 封装
├── fetch_youtube_comments.py# 调用 YouTube Data API 抓取评论
├── ui_app.py # Streamlit 仪表板入口
├── comments_*.json # 示例数据或你抓到的评论文件
└── README.md
| 组件 | 说明 |
|---|---|
| Python 3.9+ | 建议使用 venv/conda, 避免污染系统环境 |
| YouTube Data API v3 Key | 在 Google Cloud Console 建项目启用 API,复制 key |
| DeepSeek API Key (可选) | 用于高阶摘要,如无可关闭该功能 |
# 1. (可选)创建虚拟环境
python -m venv .venv
source .venv/bin/activate # Windows: .\.venv\Scripts\activate
# 2. 安装依赖
pip install streamlit requests pandas altair deep-translator如果要启用 DeepSeek,需要
requests即可;deep-translator用于自动翻译非中文留言。
# YouTube Data API
setx YOUTUBE_API_KEY "AIza..."
# DeepSeek API(使用仪表板或 CLI --deepseek 时必需)
setx DEEPSEEK_API_KEY "sk-..."setx写入使用者环境变量;设完需重新开终端。也可以直接在当次命令前设置Env:变量。
-
抓取评论
# 可用 env 覆盖 VIDEO_ID / OUTPUT_PATH $Env:VIDEO_ID = "nMsVhGy8LOM" python fetch_youtube_comments.py
生成
comments_<videoId>.json。 -
离线分析
python analyze_comments.py comments_<videoId>.json --deepseek --translate-all
--deepseek:启用高阶摘要--translate-all:运行前先翻译全部留言,默认只在热门列表中翻译
streamlit run ui_app.py功能分为两个分页:
- 抓取留言:
- 输入 YouTube API Key、影片 ID、抓取页数与排序
- 点击「开始抓取」→ 显示结果量并可下载 JSON
- 分析资料:
- 上传 JSON 或勾选「使用上一步抓取的数据」
- 可选翻译、DeepSeek 分析
- 输出统计卡片、图表、热门留言卡、DeepSeek 风险/主题/追问
- 支持下载文字报告与 DeepSeek JSON
界面默认采用浅色卡片主题,可在
ui_app.py内自订 CSS 或配色。
analyze_comments.py顶部的KEYWORD_BUCKETS、POSITIVE_WORDS等可自行扩展deepseek_client.py的 prompt 模板可根据行业需求调整- 如需批量分析多支影片,可写简单脚本循环调用
fetch_...与analyze_...
- 确认敏感资讯未写入源码(API key、JSON 数据等)
- 初始化 Git 仓库:
git init git add *.py README.md git commit -m "feat: youtube sentiment dashboard"
- (可选)加入示例截图与
.gitignore(例如忽略comments_*.json、.venv/) - 推送到 GitHub:
git remote add origin https://github.com/<user>/<repo>.git git push -u origin main
- 在 README 中附上截图/示例分析结果,方便读者快速了解。
- 仅供学习与内部舆情监测用途,若要对外提供服务,请确认 YouTube / DeepSeek API 合约
- 欢迎根据需要添加可视化、批次任务、数据库存储等功能
如果你在部署或扩展过程中需要更多协助,随时开 Issue 或留言。祝分析顺利!