系统架构
TrendRadar 由主程序和 MCP 分析服务两部分组成。主程序负责数据采集、处理和推送; MCP 服务提供基于 AI 的数据查询和分析能力。
主程序三段式流水线
主程序的核心工作流程分为三个阶段,每次运行时依次执行:
第一阶段:数据采集
从多个数据源获取原始信息。热榜数据通过 newsnow API 获取, 涵盖知乎、微博、抖音、百度等多个平台的实时热点。 同时从用户配置的 RSS/Atom 订阅源中拉取最新内容。
第二阶段:数据处理
对采集到的原始数据进行多层处理。首先通过关键词匹配和 AI 智能过滤筛选相关内容; 然后使用加权算法(综合排名、出现频率、热度值等因素)进行评分排序; 最后进行去重处理,并对新出现的内容标记「新」标识,实现增量检测。
第三阶段:输出与推送
将处理后的结果以多种形式输出。生成 HTML 格式的可视化报告; 向已配置的推送渠道发送消息(共支持 9 种推送渠道); 如果启用了 AI 分析功能,分析结果会附加到推送内容中; 如果启用了翻译功能,内容会被翻译为指定语言。
数据流向
以下展示了数据从采集到最终输出的完整流转过程:
数据源(newsnow API / RSS 订阅)
|
v
数据采集模块
|
v
原始新闻数据
|
v
关键词匹配 / AI 过滤
|
v
匹配的新闻条目
|
v
加权评分与排序
|
v
排序后的结果
|
+----+----+--------+
| | |
v v v
HTML 报告 推送消息 AI 分析MCP 分析服务
MCP Server 是一个独立的服务,基于 Model Context Protocol(模型上下文协议)提供 AI 对话式的数据分析能力。它与主程序分开运行,可以独立部署。
功能:提供 27 个工具函数,用于查询和分析 TrendRadar 采集到的本地数据。 支持按日期、关键词、平台等维度进行数据检索和趋势分析。
通信方式:支持两种通信协议:
HTTP-- 通过端口 3333 提供 HTTP 接口,适合远程调用STDIO-- 标准输入输出流,适合本地集成
数据来源:MCP 分析的是本地
output/ 目录中的数据, 不会访问互联网。因此需要先运行主程序完成数据采集,MCP 才有数据可供分析。配置文件说明
TrendRadar 的行为由以下配置文件控制,每个文件负责不同方面的设置:
配置优先级
当使用 Docker 部署时,环境变量(
.env 文件中的值)的优先级高于 config.yaml 中的配置。建议将密钥类信息(API Key、Webhook URL 等) 放在环境变量中,将业务逻辑配置放在 config.yaml 中。存储架构
TrendRadar 支持两种存储方式,根据部署环境自动选择:
本地存储
使用 SQLite 数据库,文件存放在
output/ 目录中。 适用于 Docker 部署和本地部署场景。数据文件包括新闻数据库、RSS 数据库、HTML 报告和运行日志。远程存储
支持 S3 兼容的云存储服务(如 Cloudflare R2、阿里云 OSS、腾讯云 COS 等)。 主要用于 GitHub Actions 部署场景,因为 Actions 每次运行不保留本地文件, 需要远程存储来持久化数据。
模块结构
项目的主要目录和对应的功能模块: