🎯 专注于AI短剧领域的舆情监控分析系统 - 多平台热点聚合+智能分析工具
- 📱 多平台监控:支持抖音、B站、微博、小红书、知乎等主流平台
- 🤖 AI短剧关键词:内置AI短剧相关关键词库,智能筛选相关内容
- 📊 智能排序:基于排名、频次、热度的权重算法
- 🔔 多渠道推送:支持企业微信、飞书、钉钉、Telegram、邮件推送
- 📈 数据分析:生成HTML报告,可视化展示舆情趋势
- ⚙️ 灵活配置:支持关键词配置、推送时间窗口、运行模式等
trend_radar/
├── config/ # 配置文件目录
│ ├── config.yaml # 主配置文件
│ └── ai_drama_keywords.txt # AI短剧关键词库
├── crawlers/ # 爬虫模块
│ ├── __init__.py
│ ├── base.py # 基础爬虫类
│ ├── douyin.py # 抖音爬虫
│ ├── bilibili.py # B站爬虫
│ ├── weibo.py # 微博爬虫
│ └── xiaohongshu.py # 小红书爬虫
├── analyzers/ # 分析模块
│ ├── __init__.py
│ ├── keyword_filter.py # 关键词筛选
│ └── ranker.py # 排序算法
├── notifiers/ # 通知模块
│ ├── __init__.py
│ ├── wechat.py # 企业微信
│ ├── feishu.py # 飞书
│ ├── dingtalk.py # 钉钉
│ ├── telegram.py # Telegram
│ └── email.py # 邮件
├── reports/ # 报告生成
│ ├── __init__.py
│ └── html_generator.py # HTML报告生成器
├── output/ # 输出目录
├── main.py # 主程序入口
└── requirements.txt # 依赖包
# 使用 pip
pip install -r requirements.txt
# 或使用 conda
conda install --file requirements.txtcp config/config.yaml.example config/config.yaml编辑 config/config.yaml,配置以下内容:
- 通知渠道:至少配置一个通知渠道(企业微信/飞书/钉钉/Telegram/邮件)
- 运行模式:选择
daily(每日汇总)、current(当前榜单)或incremental(增量监控) - 推送时间窗口:设置允许推送的时间范围
- 分析参数:调整权重配置、热度阈值等
编辑 config/ai_drama_keywords.txt,配置AI短剧相关关键词。系统已内置常用关键词,可根据需要调整。
# 单次运行(测试用)
python main.py --once
# 定时运行(生产环境)
python main.py在 config/ai_drama_keywords.txt 中配置关键词,支持三种类型:
- 普通关键词:直接匹配,包含任意一个即可
- 必须关键词(+前缀):必须包含,所有必须关键词都要匹配
- 过滤关键词(!前缀):排除包含该词的内容
示例:
AI短剧 # 普通关键词
微短剧+ # 必须关键词
数字人短剧 # 普通关键词
!广告 # 过滤关键词(排除广告内容)
!营销号 # 过滤关键词
- daily(每日汇总):每天在指定时间(默认8:00、12:00、18:00)运行,推送所有匹配内容
- current(当前榜单):每小时运行一次,推送最新榜单
- incremental(增量监控):每30分钟运行一次,仅推送新增内容
- 在企业微信群中添加"群机器人"
- 获取 Webhook URL
- 在配置文件中填入
webhook_url
- 在飞书群中添加"自定义机器人"
- 获取 Webhook URL
- 在配置文件中填入
webhook_url
- 在钉钉群中添加"自定义机器人"
- 获取 Webhook URL 和 Secret
- 在配置文件中填入
webhook_url和secret
- 与 @BotFather 对话创建机器人
- 获取 Bot Token
- 获取 Chat ID(与 @userinfobot 对话)
- 在配置文件中填入
bot_token和chat_id
- 配置 SMTP 服务器信息
- 填入发送邮箱和密码(QQ邮箱需使用授权码)
- 填入接收邮箱列表
- 抖音:抓取热点榜单和搜索内容
- B站:抓取热门视频和搜索结果
- 微博:抓取热搜榜单
- 小红书:抓取热门内容(需处理登录)
- 基于关键词库进行内容筛选
- 支持必须关键词、过滤关键词等复杂规则
- 自动计算关键词匹配度
综合以下因素进行排序:
- 排名权重(60%):平台排名越靠前得分越高
- 频次权重(30%):匹配的关键词越多得分越高
- 热度权重(10%):热度值越高得分越高
- 生成美观的HTML报告
- 包含统计数据、内容列表、关键词标签等
- 同时保存JSON格式的原始数据
- 支持同时配置多个通知渠道
- 自动格式化消息内容
- 支持时间窗口控制,避免深夜打扰
程序运行后会在 output/ 目录下生成:
ai_drama_report_YYYYMMDD_HHMMSS.html:HTML格式报告ai_drama_data_YYYYMMDD_HHMMSS.json:JSON格式数据history.json:历史数据(用于增量模式)
-
反爬虫机制:部分平台有反爬虫机制,可能需要:
- 使用代理IP
- 增加请求间隔
- 使用Selenium等工具
-
API限制:某些平台的API可能需要:
- 登录认证
- API密钥
- 处理验证码
-
数据准确性:爬虫数据仅供参考,建议结合官方数据源验证
-
合规使用:请遵守各平台的使用条款,合理使用爬虫功能
- 在
crawlers/目录下创建新的爬虫类 - 继承
BaseCrawler基类 - 实现
crawl_trending()方法 - 在
main.py中注册新爬虫
修改 analyzers/ranker.py 中的权重配置和计算方法。
- 在
notifiers/目录下创建新的通知器类 - 实现
send()方法 - 在
main.py中注册新通知器
Q: 爬虫无法获取数据?
A: 检查网络连接、请求间隔设置,部分平台可能需要登录或处理反爬虫机制。
Q: 通知推送失败?
A: 检查配置是否正确,特别是Webhook URL、Token等参数。
Q: 如何调整筛选规则?
A: 修改 config/ai_drama_keywords.txt 文件,添加或删除关键词。
Q: 如何修改推送时间?
A: 在 config/config.yaml 中修改 push_time_window 配置。
GPL-3.0 License
本项目参考了 TrendRadar 的设计思路,专门针对AI短剧领域进行了优化和定制。