在信息爆炸的时代,如何从海量资讯中精准捕捉有价值的内容?TrendRadar 以其智能化、可视化的解决方案,正在重新定义信息获取的方式。
一、TrendRadar:是什么让它成为信息过滤的神器?
1.1 诞生背景:信息过载时代的解决方案
在当今信息爆炸的环境中,普通人每天平均要刷2.3小时社交媒体,却仍感叹"错过热点"。企业公关团队需同时监控数十个平台,却难逃"数据噪音"的干扰。各个平台的热搜榜刷到手指发酸,真正关心的内容却被淹没在信息洪流中。
TrendRadar 应运而生,作为一款开源的热点新闻聚合分析系统,它通过智能化的技术手段,为用户提供了一个高效、个性化的新闻获取解决方案。它不只是一个"爬虫脚本",而是一套完整的热点聚合 + 个性化筛选 + 多端推送 + AI 深度分析的开源方案。
1.2 核心价值:从被动刷屏到主动获取
TrendRadar 的核心价值在于它将被动刷屏 转变为主动获取,通过自动化流程帮助用户精准捕捉感兴趣的内容。其核心优势体现在:
- 跨平台统一监控:默认监控 11 个主流平台(微博、抖音、B站等),也可自行增加额外的平台
- 个性化筛选机制:通过智能关键词系统,只展示与你相关的信息
- 多维度分析能力:生成热点排名、词云、传播趋势图
- 灵活推送方式:支持多种通知渠道,适应不同用户场景
二、核心功能特点:全面解析TrendRadar的技术优势
2.1 全网热点聚合能力
TrendRadar 的核心能力之一是广泛的数据覆盖范围:
- 多平台支持:集成知乎、微博、抖音、百度热搜等 11+ 主流平台,也可自行增加额外的平台
- 统一数据接口:基于 newsnow 项目的 API,简化了多平台适配的复杂性
- 实时数据更新:支持不同的抓取频率,确保信息的时效性
2.2 智能内容筛选系统
TrendRadar 的智能筛选系统是其最核心的竞争力,支持三种关键词匹配语法:
python
# 智能关键词匹配系统示例
def matches_word_groups(title: str, word_groups: List[Dict], filter_words: List[str]) -> bool:
"""检查标题是否匹配词组规则"""
title_lower = title.lower()
# 1. 过滤词检查(优先级最高)
if any(filter_word.lower() in title_lower for filter_word in filter_words):
return False
# 2. 词组匹配检查
for group in word_groups:
required_words = group["required"] # 必须词(+)
normal_words = group["normal"] # 普通词
# 必须词检查:所有必须词都必须包含
if required_words:
all_required_present = all(
req_word.lower() in title_lower for req_word in required_words
)
if not all_required_present:
continue
# 普通词检查:包含任意一个即可
if normal_words:
any_normal_present = any(
normal_word.lower() in title_lower for normal_word in normal_words
)
if not any_normal_present:
continue
return True
return False
匹配规则详解:
- 普通词:标题包含任意一个即匹配
- 必须词(+):标题必须同时包含所有必须词
- 过滤词(!):包含过滤词直接排除,优先级最高
- 词组管理:通过空行分隔不同词组,独立统计分析
2.3 个性化热点排序算法
TrendRadar 的独特之处在于它不简单按"抓到的时间顺序"或"平台原始排名"展示新闻,而是引入自定义的综合权重算法:
python
def calculate_news_weight(title_data: Dict, rank_threshold: int = CONFIG["RANK_THRESHOLD"]) -> float:
"""计算新闻权重,用于排序"""
ranks = title_data.get("ranks", [])
count = title_data.get("count", len(ranks))
weight_config = CONFIG["WEIGHT_CONFIG"]
# 排名权重:Σ(11 - min(rank, 10)) / 出现次数
rank_scores = [11 - min(rank, 10) for rank in ranks]
rank_weight = sum(rank_scores) / len(ranks) if ranks else 0
# 频次权重:min(出现次数, 10) × 10
frequency_weight = min(count, 10) * 10
# 热度加成:高排名次数 / 总出现次数 × 100
high_rank_count = sum(1 for rank in ranks if rank <= rank_threshold)
hotness_ratio = high_rank_count / len(ranks) if ranks else 0
# 综合权重计算
total_weight = (rank_weight * weight_config["rank_weight"] +
frequency_weight * weight_config["frequency_weight"] +
hotness_ratio * weight_config["hotness_weight"])
return total_weight
该算法综合考虑了三个核心维度:
- 排名权重(60%):新闻在各平台榜单中的位置
- 频次权重(30%):新闻在不同平台出现的次数
- 热度权重(10%):新闻在高位排名出现的比例
2.4 多渠道推送支持
TrendRadar 支持多种推送方式,适应不同用户的使用习惯:
| 推送渠道 | 适用场景 | 配置方式 |
|---|---|---|
| 企业微信 | 企业团队协作 | Webhook URL |
| 飞书 | 互联网企业 | Webhook URL |
| 钉钉 | 传统企业 | Webhook URL |
| Telegram | 个人用户 | Bot Token + Chat ID |
| 电子邮件 | 正式报告 | SMTP 配置 |
| ntfy | 技术爱好者 | 服务器地址 |
2.5 AI智能分析功能
TrendRadar v3.0.0 新增了基于 MCP(Model Context Protocol)协议的对话式分析功能,通过 FastMCP 搭建 trendradar-news MCP Server,对外暴露 13 个工具,能被 Claude、Cursor、Cherry Studio、Cline 等 MCP 客户端调用,完成自然语言查询与分析。
三、安装部署:从零开始快速搭建
3.1 环境准备与要求
在开始部署 TrendRadar 之前,需要确保系统满足以下基本要求:
- Python 环境:Python 3.x
- 容器支持(可选):Docker 和 Docker Compose
- 版本控制:Git
- 网络要求:能正常访问国内主流社交平台
3.2 GitHub Pages 快速部署(最适合新手)
对于只想快速体验 TrendRadar 的用户,GitHub Pages 是最简单的部署方式:
步骤一:Fork 项目
- 访问 TrendRadar GitHub 仓库
- 点击右上角的 'Fork' 按钮,将项目复制到自己的 GitHub 账户
步骤二:启用 GitHub Pages
- 进入你 Fork 后的仓库 →
Settings→Pages - Source 选择
GitHub Actions,保存
步骤三:自动生成日报
- 仓库自带 GitHub Actions 工作流,会每天自动抓取热榜并生成 HTML
- 部署完成后,你会得到一个
https://<你的用户名>.github.io/TrendRadar/的访问地址
3.3 Docker Compose 部署(推荐用于生产环境)
对于需要实时推送功能的用户,Docker Compose 是最可靠的部署方式:
步骤一:获取部署文件
bash
# 创建目录结构
mkdir -p trendradar/{config,docker}
cd trendradar
# 下载配置文件模板
wget https://raw.githubusercontent.com/sansan0/TrendRadar/master/config/config.yaml -P config/
wget https://raw.githubusercontent.com/sansan0/TrendRadar/master/config/frequency_words.txt -P config/
# 下载 docker-compose 配置
wget https://raw.githubusercontent.com/sansan0/TrendRadar/master/docker/.env -P docker/
wget https://raw.githubusercontent.com/sansan0/TrendRadar/master/docker/docker-compose.yml -P docker/
步骤二:配置推送渠道
bash
cd docker/
vi .env
# Webhook 配置示例
FEISHU_WEBHOOK_URL=https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxx
TELEGRAM_BOT_TOKEN=1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZ
TELEGRAM_CHAT_ID=-1001234567890
# 运行配置
CRON_SCHEDULE=*/30 * * * * # 每 30 分钟执行一次
RUN_MODE=cron # 运行模式:cron/once
IMMEDIATE_RUN=true # 启动时立即执行一次
步骤三:启动服务
bash
# 拉取最新镜像并启动
docker-compose pull
docker-compose up -d
# 查看运行日志
docker logs -f trend-radar
3.4 配置详解:打造个性化信息雷达
TrendRadar 的核心配置主要通过两个文件实现:
config.yaml 主要配置:
yaml
app:
version_check_url: "https://.../version"
show_version_update: true
crawler:
request_interval: 1000
enable_crawler: true
use_proxy: false
report:
mode: "daily" # daily | incremental | current
rank_threshold: 5
notification:
enable_notification: true
push_window:
enabled: false
time_range:
start: "20:00"
end: "22:00"
once_per_day: true
weight:
rank_weight: 0.6
frequency_weight: 0.3
hotness_weight: 0.1
frequency_words.txt 关键词配置:
diff
# 普通词:出现一个就算命中
# 必须词(+):所有必须词都出现才算
# 过滤词(!):出现就直接排除
iPhone
华为
OPPO
+发布
A股
上证
深证
+涨跌
!预测
世界杯
欧洲杯
亚洲杯
+比赛
四、使用指南:从入门到精通
4.1 三种推送模式的选择
TrendRadar 提供三种推送模式,适应不同用户需求:
| 推送模式 | 描述 | 适用场景 | 推送频率 |
|---|---|---|---|
| daily(当日汇总) | 每天汇总当日热点 | 企业管理者/普通用户,日报总结 | 每日一次 |
| current(实时榜单) | 推送当前时刻的热榜 | 自媒体/创作者,热点追踪 | 按计划定时 |
| incremental(增量监控) | 只推送新增热点 | 投资人/交易员,高频监控 | 高频率监控 |
4.2 关键词策略配置技巧
有效的关键词配置是发挥 TrendRadar 威力的关键:
基础关键词策略:
- 行业监控:公司名、产品名、技术术语
- 竞品监控:竞争对手品牌词、产品词
- 风险监控:负面词汇、危机相关关键词
高级匹配技巧:
- 组合使用必须词 :
+发布 +新品确保捕捉产品发布信息 - 排除干扰信息 :
科技 !娱乐圈过滤不相关领域 - 多维度覆盖:同一主题的不同表述方式
4.3 推送渠道配置实战
以企业微信配置为例,详细步骤:
- 创建企业微信群聊
- 添加群机器人 :
- 点击群聊右上角菜单 → 添加群机器人 → 新建
- 记录 Webhook URL
- 配置 TrendRadar :
- 在
.env文件中设置WEWORK_WEBHOOK_URL - 重启 Docker 服务
- 在
4.4 高级功能:AI智能分析
TrendRadar 的 AI 智能分析功能基于 MCP 协议,可以通过以下方式使用:
-
启动 MCP 服务器:
bashpython mcp_server.py -
配置 AI 客户端:
- 支持 Claude、Cursor、Cherry Studio 等
- 配置连接至 TrendRadar MCP 服务器
-
使用自然语言查询:
- "最近一周关于 AI 技术的趋势如何?"
- "对比华为和小米的产品发布热度"
- "分析科技领域的情绪倾向"
五、企业实战案例:多场景应用解析
5.1 投资金融行业:实时监控市场动态
挑战:投资者需要实时掌握市场动态、行业政策和公司新闻,但传统方式效率低下,容易错过关键信号。
解决方案:
- 关键词配置: A股 港股 美股 +涨跌 央行 +政策 !娱乐
- 推送模式:增量监控模式,每30分钟执行一次
- 推送渠道:企业微信 + 邮件备份
成效:实时追踪股市、行业动态,避免错过关键信号。
5.2 内容创作领域:热点捕捉与选题策划
挑战:自媒体人需要第一时间掌握爆款选题,但人工刷榜耗时耗力,且容易遗漏跨平台趋势。
解决方案:
- 关键词配置: 爆款 viral +方法 教程 +步骤 行业报告 +下载
- 推送模式:当前榜单模式,捕捉当下热榜趋势
- 特殊技巧:利用必须词捕捉完整教程,利用排除词过滤低质内容
成效:自媒体人第一时间掌握爆款选题,快速生成选题灵感。
5.3 企业公关:品牌舆情监控与危机预警
挑战:企业公关需要快速捕捉潜在危机话题,传统监控工具滞后性明显。
解决方案:
- 品牌关键词:公司名、产品名、高管名
- 风险关键词 :
投诉、质量问题、裁员、法律诉讼 - 推送策略:增量监控 + 即时推送,设立24小时监控机制
成效:企业公关可快速捕捉潜在危机话题,危机响应速度提升3倍。
六、技术架构深度解析
6.1 系统架构设计
TrendRadar 采用单体应用架构,所有功能集中在 main.py 文件中,这种设计便于用户快速部署和升级。系统整体架构可以分为以下几个核心模块:
scss
TrendRadar/
├── 配置管理模块 (config/*.yaml, config/frequency_words.txt)
├── 数据获取模块 (DataFetcher)
├── 数据处理模块 (数据解析、统计分析)
├── 报告生成模块 (HTML/Markdown 生成)
├── 通知推送模块 (多渠道适配器)
├── AI 分析模块 (MCP 服务器)
└── 自动化部署 (GitHub Actions)
6.2 核心技术栈
| 技术领域 | 使用技术 | 说明 |
|---|---|---|
| 开发语言 | Python 3.x | 主要编程语言 |
| 配置管理 | YAML | 配置文件格式,支持复杂配置结构 |
| 网络请求 | requests | HTTP 客户端库,支持代理和重试机制 |
| 数据处理 | pytz | 时区处理,支持北京时间标准化 |
| 通知服务 | Webhook API | 支持企业微信、飞书、钉钉等多种平台 |
| AI 协议 | MCP (Model Context Protocol) | 标准化的 AI 工具调用协议 |
| 部署平台 | GitHub Actions | 自动化运行和版本管理 |
6.3 数据流与处理流程
TrendRadar 的数据处理流程可以概括为以下几个阶段:
- 数据采集:通过 DataFetcher 从各平台 API 获取原始数据
- 数据解析:提取关键信息并标准化处理
- 关键词匹配:应用用户配置的筛选规则
- 权重计算:基于排名、频次和热度计算综合权重
- 报告生成:生成 HTML 和 Markdown 格式的报告
- 消息推送:通过配置的渠道推送最终结果
七、总结:为什么TrendRadar值得使用?
7.1 核心优势总结
TrendRadar 作为一个开源热点聚合工具,在以下几个方面表现突出:
- 信息过滤精准性:三层关键词配置(基础词+必须词+过滤词),精准屏蔽广告、谣言等噪音
- 部署便捷性:支持 GitHub Pages 和 Docker 两种部署方式,适合不同技术水平的用户
- 使用灵活性:三种推送模式满足不同场景需求
- 功能扩展性:基于 MCP 协议的 AI 分析功能,支持自然语言交互
- 成本优势:完全开源免费,相比商业舆情监控工具具有明显价格优势
7.2 适用人群分析
TrendRadar 特别适合以下人群使用:
- 投资者和交易员:实时监控市场动态和公司新闻
- 内容创作者和自媒体人:捕捉热点趋势和爆款选题
- 企业公关和品牌团队:监控品牌声誉和舆情风险
- 行业研究人员:跟踪特定领域的技术和发展动态
- 普通信息消费者:从信息过载中解脱,获取个性化资讯
7.3 未来发展趋势
随着 AI 技术的发展,TrendRadar 这类信息聚合工具的未来可能朝着以下方向演进:
- 多模态融合:结合视频逐帧分析、语音情感识别,提升信息完整性
- 预测模型普及:引入强化学习,实现热点传播路径的精准模拟
- 语义理解增强:更好理解反讽、俚语等复杂表达
- 个性化推荐深化:基于用户行为反馈持续优化推荐算法
项目地址 :github.com/sansan0/Tre... 在线体验:通过 GitHub Pages 部署后即可访问个性化热点页面
无论是个人用户还是企业团队,TrendRadar 都能帮助您从繁杂的信息洪流中抽身而出,精准捕捉真正有价值的内容。立即尝试部署属于您自己的信息雷达,开启高效的信息获取新时代!