fix: 修复 get_available_date_range() 扫描错误目录导致 search_news 始终返回 NO_DATA_AVAILABLE (#952) get_available_date_range() 委托给 parser.get_available_date_range(), 并透传 db_type 参数以支持 news/rss 两种数据类型 get_system_status() 同步修复,复用 get_available_date_range() 获取日期范围 移除已无调用者的 _parse_date_folder_name()
fix: 修复 get_available_date_range() 扫描错误目录导致 search_news 始终返回 NO_DATA_AVAILABLE (#952)
最快30秒部署的热点助手 —— 告别无效刷屏,只看真正关心的新闻资讯
中文 | English
本项目以轻量,易部署为目标
💡 点击下方链接可快速跳转到对应章节。部署推荐从「快速开始」入手,需要详细自定义请看「配置详解」
💡 特别说明: 关于名单:下方表格记录了项目起步阶段(天使轮)的支持者。因早期人工统计繁琐,难免存在疏漏或记录不全的情况,如有遗漏,实非本意,万望海涵。 未来规划:为了将有限的精力回归代码与功能迭代,即日起不再人工维护此名单。 无论名字是否上榜,你们的每一份支持都是 TrendRadar 能够走到今天的基石。🙏
💡 特别说明:
无论名字是否上榜,你们的每一份支持都是 TrendRadar 能够走到今天的基石。🙏
感谢 GitHub 免费提供的基础设施,这是本项目得以一键 fork便捷运行的最大前提。
本项目使用 newsnow 项目的 API 获取多平台数据,特别感谢作者提供的服务。
经联系,作者表示无需担心服务器压力,但这是基于他的善意和信任。请大家:
感谢以下平台和个人的推荐(按时间排列)
感谢给予资金支持的朋友们,你们的慷慨已化身为键盘旁的零食饮料,陪伴着项目的每一次迭代。 关于”一元点赞”的回归: 随着 v5.0.0 版本的发布,项目迈入了一个新的阶段。为了支持日益增长的 API 成本和咖啡因消耗,”一元点赞”通道现已重新开启。你的每一份心意,都将转化为代码世界里的 Token 和动力。🚀 前往支持
感谢给予资金支持的朋友们,你们的慷慨已化身为键盘旁的零食饮料,陪伴着项目的每一次迭代。
关于”一元点赞”的回归: 随着 v5.0.0 版本的发布,项目迈入了一个新的阶段。为了支持日益增长的 API 成本和咖啡因消耗,”一元点赞”通道现已重新开启。你的每一份心意,都将转化为代码世界里的 Token 和动力。🚀 前往支持
虚位以待
若 TrendRadar 曾为你捕捉价值,不妨为它注入动力,助其持续进化 金额随意,1 元也是对开源的鼓励。欢迎在赞赏时备注留言 (´▽`ʃ♡ƪ)
若 TrendRadar 曾为你捕捉价值,不妨为它注入动力,助其持续进化
金额随意,1 元也是对开源的鼓励。欢迎在赞赏时备注留言 (´▽`ʃ♡ƪ)
如果你在项目中使用或借鉴了本项目的思路、核心代码,非常欢迎在 README 或文档中注明来源并附上本仓库链接。
这将有助于项目的持续维护和社区发展,感谢你的尊重与支持!❤️
友情提示:本项目为开源分享,非商业产品。把作者当朋友而非客服,沟通效率会更高哦!
📌 查看最新更新:**原仓库更新日志** :
Breaking Change:配置文件升级(config.yaml 2.0.0),旧版 push_window 和 analysis_window 配置不再兼容,请参考新版 config.yaml 迁移
push_window
analysis_window
timeline.yaml
always_on
morning_evening
office_hours
night_owl
custom
presets:
schedule.preset
ai_analysis.include_standalone
include_rank_timeline
standalone_summaries
get_channel_format_guide
和 mcp 功能一样, 这个小工具我也不新开一个仓库维护了, 反正纯前端, 都搁一起吧
search_news(query="关键词", include_url=True)
read_article(url=...)
{success, summary, data, error}
asyncio.to_thread()
get_latest_rss
get_trending_topics
/pattern/
display_name
make_cache_key()
重大重构:AI 模块迁移至 LiteLLM
provider
model: "provider/model_name"
num_retries
fallback_models
ai.provider
ai.base_url
ai.api_base
AI_PROVIDER
AI_BASE_URL
AI_API_BASE
deepseek/deepseek-chat
openai/gpt-4o
gemini/gemini-2.5-flash
anthropic/claude-3-5-sonnet
主要见 config.yaml 描述
🌐 AI 翻译功能
🔧 配置架构优化
✨ AI 分析增强
🔧 多模型适配
🐛 Bug 修复
开发小插曲: 致敬那个陪伴我两年多、却在刚续费后反手弹出 "This organization has been disabled" 的某 C 厂模型
"This organization has been disabled"
✨ 推送内容”五大板块”重构
本次更新对推送消息进行了区域化重构,现在推送内容清晰地划分为五大核心板块:
✨ AI 智能分析推送功能
only_analysis
both
config/ai_analysis_prompt.txt
📋 独立展示区功能
📊 推送体验重构
🔧 配置优化
[组别名]
#
AI_API_KEY
💡 详细配置教程见 让 AI 帮我分析热点
ai
training
=> 备注
/\bai\b/ => AI相关
search_rss
get_rss_feeds_status
search_news
include_rss
keyword
platform
output/{type}/{date}.db
sort_by_position_first
config.yaml
MCP 模块更新 - 优化工具集,新增聚合对比功能,合并冗余工具:
aggregate_news
compare_periods
find_similar_news
search_related_news_history
find_related_news
auto_extract
band_rank
MCP 模块更新:
sync_from_remote
get_storage_status
list_available_dates
🎉 重大更新:全面重构存储和核心架构
🎉 核心功能增强
多账号推送支持
;
FEISHU_WEBHOOK_URL=url1;url2
推送区域配置
display.region_order
reverse_content_order
display.regions
全局过滤关键词
[GLOBAL_FILTER]
🐳 Docker 双路径 HTML 生成优化
index.html
output/index.html
🐳 Docker MCP 镜像支持
wantcat/trendradar-mcp
🌐 Web 服务器支持
manage.py
docker exec -it trendradar python manage.py start_webserver
http://localhost:8080
📖 文档优化
🔧 升级说明:
main.py
config/config.yaml
🔧 格式优化
Bark 推送增强
Slack 格式精准化
<url|text>
*text*
性能提升
🎉 新增 Slack 推送支持
团队协作推送渠道
多种部署方式
SLACK_WEBHOOK_URL
📖 详细配置教程:快速开始 - Slack 推送
.github/workflows/crawler.yml
🎉 新增 Bark 推送支持
iOS 专属推送渠道
BARK_URL
📖 详细配置教程:快速开始 - Bark 推送
ntfy_server_url
🎯 新增高级定制功能
关键词排序优先级配置
显示数量精准控制
@数字
📖 详细配置教程:关键词配置 - 高级配置
'float' object has no attribute 'lower'
升级说明(GitHub Fork 用户):
markdown
text
WEWORK_MSG_TYPE
enable_crawler
report_mode
重大更新 - AI 分析功能上线 ✨
核心功能:
分析能力:
更新提示:
更新内容:
感谢 nidaye996 发现的体验问题
新增 ntfy 推送通知
使用场景:
修复说明:
使用说明:
核心改进:
修复问题:
重大重构:
daily
current
incremental
配置文件说明:
config/frequency_words.txt
功能新增:增加增量推送(在 main.py 头部配置 FOCUS_NEW_ONLY),该开关只关心新话题而非持续热度,只在有新内容时才发通知。
修复问题: 某些情况下,由于新闻本身含有特殊符号导致的偶发性排版异常。
企业微信 和 Telegram 的推送消息有长度限制,对此我采用将消息拆分推送的方式。开发文档详见企业微信 和 Telegram
在本版本之前的旧版本,不仅 main.py 需要复制替换, crawler.yml 也需要你复制替换 https://github.com/sansan0/TrendRadar/blob/master/.github/workflows/crawler.yml
感谢 claude research 整理的各平台 api ,让我快速完成各平台适配(虽然代码更多冗余了~
200 star⭐ 了, 继续给大伙儿助兴~近期,在我的”怂恿”下,挺多人在我公众号点赞分享推荐助力了我,我都在后台看见了具体账号的鼓励数据,很多都成了天使轮老粉(我玩公众号才一个多月,虽然注册是七八年前的事了哈哈,属于上车早,发车晚),但因为你们没有留言或私信我,所以我也无法一一回应并感谢支持,在此一并谢谢!
100 star⭐ 了,写个小功能给大伙儿助助兴 frequency_words.txt 文件增加了一个【必须词】功能,使用 + 号
+唐僧 +猪八戒
+唐僧 !唐僧念经
默认监控 11 个主流平台,也可自行增加额外的平台
💡 详细配置教程见 配置详解 - 平台配置
支持 RSS/Atom 订阅源抓取,按关键词分组统计(与热榜格式一致):
💡 RSS 使用与热榜相同的 frequency_words.txt 进行关键词过滤
frequency_words.txt
提供基于 Web 的图形化配置界面,无需手动编辑 YAML 文件,通过表单即可完成所有配置项的修改与导出。
👉 在线体验:https://sansan0.github.io/TrendRadar/
三种推送模式:
💡 快速选择指南: 不想看到重复新闻 → 用 incremental(增量监控) 想看完整榜单趋势 → 用 current(当前榜单) 需要每日汇总报告 → 用 daily(当日汇总) 详细对比和配置教程见 配置详解 - 推送模式详解
💡 快速选择指南:
详细对比和配置教程见 配置详解 - 推送模式详解
附加功能(可选):
💡 详细配置教程见 推送内容怎么显示? 和 什么时候给我推送?
设置个人关键词(如:AI、比亚迪、教育政策),只推送相关热点,过滤无关信息
💡 基础配置教程:关键词配置 - 基础语法 💡 高级配置教程:关键词配置 - 高级配置 💡 也可以不做筛选,完整推送所有热点(将 frequency_words.txt 留空)
💡 基础配置教程:关键词配置 - 基础语法
💡 高级配置教程:关键词配置 - 高级配置
💡 也可以不做筛选,完整推送所有热点(将 frequency_words.txt 留空)
实时追踪新闻热度变化,让你不仅知道”什么在热搜”,更了解”热点如何演变”
💡 推送格式说明见 消息样式说明
不再被各个平台的算法牵着走,TrendRadar 会重新整理全网热搜
💡 三个比例可以调整,详见 配置详解 - 热点权重调整
支持企业微信(+ 微信推送方案)、飞书、钉钉、Telegram、邮件、ntfy、Bark、Slack,消息直达手机和邮箱
💡 详细配置教程见 推送到多个群/设备
将推送内容翻译为任意语言,打破语言壁垒,无论是阅读国内热点还是通过 RSS 订阅海外资讯,都能以母语轻松获取
ai_translation.enabled: true
ai_translation_prompt.txt
# config.yaml 快速启用示例 ai_translation: enabled: true language: "English" # 翻译目标语言
💡 翻译功能与 AI 分析功能共享模型配置,只需配置一次 ai.api_key 即可同时使用两个功能
ai.api_key
RSS 源参考:以下是一些 RSS 订阅源合集,可按需选用
⚠️ 部分海外媒体内容可能涉及敏感话题,AI 模型可能拒绝翻译,建议根据实际需求筛选订阅源
多存储后端支持:
💡 详细说明见 数据保存在哪里?
使用 AI 大模型对推送内容进行深度分析,自动生成热点洞察报告
为指定平台提供完整热榜展示,不受关键词过滤影响
💡 详细配置教程见 推送内容怎么显示? - 独立展示区
基于 MCP (Model Context Protocol) 协议的 AI 对话分析系统,让你用自然语言深度挖掘新闻数据
💡 使用提示:AI 功能需要本地新闻数据支持 项目自带测试数据,可立即体验功能 建议自行部署运行项目,获取更实时的数据 详见 AI 智能分析
💡 使用提示:AI 功能需要本地新闻数据支持
详见 AI 智能分析
运行后根目录生成 index.html,即为完整的新闻报告页面。
部署方式:点击 Use this template 创建仓库,可部署到 Cloudflare Pages 或 GitHub Pages 等静态托管平台。 💡 提示:启用 GitHub Pages 可获得在线访问地址,进入仓库 Settings → Pages 即可开启。效果预览 ⚠️ 原 GitHub Actions 自动存储功能已下线(该方案曾导致 GitHub 服务器负载过高,影响平台稳定性)。
部署方式:点击 Use this template 创建仓库,可部署到 Cloudflare Pages 或 GitHub Pages 等静态托管平台。
💡 提示:启用 GitHub Pages 可获得在线访问地址,进入仓库 Settings → Pages 即可开启。效果预览
⚠️ 原 GitHub Actions 自动存储功能已下线(该方案曾导致 GitHub 服务器负载过高,影响平台稳定性)。
从”被算法推荐绑架”变成”主动获取自己想要的信息”
适合人群: 投资者、自媒体人、企业公关、关心时事的普通用户
典型场景: 股市投资监控、品牌舆情追踪、行业动态关注、生活资讯获取
提醒:建议先 **查看最新官方文档**,确保配置步骤是最新的。
点击本仓库页面右上角的绿色 [Use this template] 按钮 → 选择 “Create a new repository”。
⚠️ 提醒: 后续文档中提到的 “Fork” 均可理解为 “Use this template” 使用 Fork 可能导致运行异常,详见 Issue #606
⚠️ 提醒:
在你 Fork 后的仓库中,进入 Settings > Secrets and variables > Actions > New repository secret
Settings
Secrets and variables
Actions
New repository secret
📌 重要说明(请务必仔细阅读):
WEWORK_WEBHOOK_URL
FEISHU_WEBHOOK_URL
配置示例:
如上图所示,每一行是一个配置项:
GitHub Secret 配置(⚠️ Name 名称必须严格一致):
机器人设置步骤:
由于该方案是基于企业微信的插件机制,推送样式为纯文本(无 markdown 格式),但可以直接推送到个人微信,无需安装企业微信 App。
Name(名称):WEWORK_WEBHOOK_URL(请复制粘贴此名称,不要手打)
Secret(值):你的企业微信应用 Webhook 地址
Name(名称):WEWORK_MSG_TYPE(请复制粘贴此名称,不要手打)
Secret(值):text
设置步骤:
说明:
若启用 AI 分析,飞书推送偶发(约 5% 概率)会有数分钟延迟(推测为平台对 AI 生成内容的合规性审核)。
有两个方案,方案一配置简单,方案二配置复杂(但是稳定推送)
其中方案一,由 ziventian发现并提供建议,在这里感谢他,默认是个人推送,也可以配置群组推送操作#97 ,
方案一:
对部分人存在额外操作,否则会报”系统错误”。需要手机端搜索下机器人,然后开启飞书机器人应用(该建议来自于网友,可参考)
电脑浏览器打开 https://botbuilder.feishu.cn/home/my-command
点击”新建机器人指令”
点击”选择触发器”,往下滑动,点击”Webhook 触发”
此时你会看到”Webhook 地址”,把这个链接先复制到本地记事本暂存,继续接下来的操作
“参数”里面放上下面的内容,然后点击”完成”
{ "message_type": "text", "content": { "text": "{{内容}}" } }
点击”选择操作” > “通过官方机器人发消息”
消息标题填写”TrendRadar 热点监控”
最关键的部分来了,点击 + 按钮,选择”Webhook 触发”,然后按照下面的图片摆放
方案二:
电脑浏览器打开 https://botbuilder.feishu.cn/home/my-app
点击”新建机器人应用”
进入创建的应用后,点击”流程设计” > “创建流程” > “选择触发器”
往下滑动,点击”Webhook 触发”
点击”选择操作” > “发送飞书消息”,勾选 “群消息”,然后点击下面的输入框,点击”我管理的群组”(如果没有群组,你可以在飞书 app 上创建群组)
DINGTALK_WEBHOOK_URL
创建机器人(仅 PC 端支持):
配置机器人:
完成设置:
注意:移动端只能接收消息,无法创建新机器人。
Name(名称):TELEGRAM_BOT_TOKEN(请复制粘贴此名称,不要手打)
TELEGRAM_BOT_TOKEN
Secret(值):你的 Telegram Bot Token
Name(名称):TELEGRAM_CHAT_ID(请复制粘贴此名称,不要手打)
TELEGRAM_CHAT_ID
Secret(值):你的 Telegram Chat ID
说明:Telegram 需要配置两个 Secret,请分别点击两次”New repository secret”按钮添加
创建机器人:
@BotFather
/newbot
123456789:AAHfiqksKZ8WmR2zSjiQ7_v4TMAKdiHm9T0
获取 Chat ID:
方法一:通过官方 API 获取
https://api.telegram.org/bot<你的Bot Token>/getUpdates
"chat":{"id":数字}
方法二:使用第三方工具
@userinfobot
/start
配置到 GitHub:
⚠️ 重要配置依赖:邮件推送需要 HTML 报告文件。请确保 config/config.yaml 中的 storage.formats.html 设置为 true: storage: formats: sqlite: true txt: false html: true # 必须启用,否则邮件推送会失败 如果设置为 false,邮件推送时会报错:错误:HTML文件不存在或未提供: None
⚠️ 重要配置依赖:邮件推送需要 HTML 报告文件。请确保 config/config.yaml 中的 storage.formats.html 设置为 true:
storage.formats.html
true
storage: formats: sqlite: true txt: false html: true # 必须启用,否则邮件推送会失败
如果设置为 false,邮件推送时会报错:错误:HTML文件不存在或未提供: None
false
错误:HTML文件不存在或未提供: None
Name(名称):EMAIL_FROM(请复制粘贴此名称,不要手打)
EMAIL_FROM
Secret(值):发件人邮箱地址
Name(名称):EMAIL_PASSWORD(请复制粘贴此名称,不要手打)
EMAIL_PASSWORD
Secret(值):邮箱密码或授权码
Name(名称):EMAIL_TO(请复制粘贴此名称,不要手打)
EMAIL_TO
Secret(值):收件人邮箱地址(多个收件人用英文逗号分隔,也可以和 EMAIL_FROM 一样,自己发送给自己)
Name(名称):EMAIL_SMTP_SERVER(可选配置,请复制粘贴此名称)
EMAIL_SMTP_SERVER
Secret(值):SMTP服务器地址(可留空,系统会自动识别)
Name(名称):EMAIL_SMTP_PORT(可选配置,请复制粘贴此名称)
EMAIL_SMTP_PORT
Secret(值):SMTP端口(可留空,系统会自动识别)
说明:邮件推送需要配置至少3个必需 Secret(EMAIL_FROM、EMAIL_PASSWORD、EMAIL_TO),后两个为可选配置
支持的邮箱服务商(自动识别 SMTP 配置):
自动识别:使用以上邮箱时,无需手动配置 EMAIL_SMTP_SERVER 和 EMAIL_SMTP_PORT,系统会自动识别。 反馈说明: 如果你使用其他邮箱测试成功,欢迎开 Issues 告知,我会添加到支持列表 如果上述邮箱配置有误或无法使用,也请开 Issues 反馈,帮助改进项目 特别感谢: 感谢 @DYZYD 贡献天翼邮箱(189.cn)配置并完成自发自收测试 (#291) 感谢 @longzhenren 贡献阿里云邮箱(aliyun.com)配置并完成测试 (#344) 感谢 @ACANX 贡献 Yandex 邮箱(yandex.com)配置并完成测试 (#663) 感谢 @Sleepy-Tianhao 贡献 iCloud 邮箱(icloud.com)配置并完成测试 (#728)
自动识别:使用以上邮箱时,无需手动配置 EMAIL_SMTP_SERVER 和 EMAIL_SMTP_PORT,系统会自动识别。
反馈说明:
特别感谢:
常见邮箱设置:
高级配置: 如果自动识别失败,可手动配置 SMTP:
**如果有多个收件人(注意是英文逗号分隔)**:
两种使用方式:
特点:
快速开始:
下载 ntfy 应用:
订阅主题(选择一个难猜的名称):
建议格式:trendradar-{你的名字缩写}-{随机数字} 不能使用中文 ✅ 好例子:trendradar-zs-8492 ❌ 坏例子:news、alerts(太容易被猜到)
配置 GitHub Secret(⚠️ Name 名称必须严格一致):
Name(名称):NTFY_TOPIC(请复制粘贴此名称,不要手打)
NTFY_TOPIC
Secret(值):填写你刚才订阅的主题名称
Name(名称):NTFY_SERVER_URL(可选配置,请复制粘贴此名称)
NTFY_SERVER_URL
Secret(值):留空(默认使用 ntfy.sh)
Name(名称):NTFY_TOKEN(可选配置,请复制粘贴此名称)
NTFY_TOKEN
Secret(值):留空
说明:ntfy 至少需要配置 1 个必需 Secret (NTFY_TOPIC),后两个为可选配置
测试:
curl -d "测试消息" ntfy.sh/你的主题名称
适合人群:有服务器、追求完全隐私、技术能力强
优势:
Docker 一键部署:
docker run -d \ --name ntfy \ -p 80:80 \ -v /var/cache/ntfy:/var/cache/ntfy \ binwiederhier/ntfy \ serve --cache-file /var/cache/ntfy/cache.db
配置 TrendRadar:
NTFY_SERVER_URL: https://ntfy.yourdomain.com NTFY_TOPIC: trendradar-alerts # 自托管可用简单名称 NTFY_TOKEN: tk_your_token # 可选:启用访问控制
在应用中订阅:
常见问题:
每天 250 条消息对大多数用户足够。按 30 分钟抓取一次计算,每天约 48 次推送,完全够用。
如果你选择随机的、足够长的名称(如 trendradar-zs-8492-news),暴力破解几乎不可能:
trendradar-zs-8492-news
推荐选择:
相关链接:
Bark 简介:
Bark 是一款 iOS 平台的免费开源推送工具,特点是简单、快速、无广告。
使用方式:
下载 Bark App:
获取推送 URL:
https://api.day.app/your_device_key
docker run -d \ --name bark-server \ -p 8080:8080 \ finab/bark-server
BARK_URL: http://your-server-ip:8080/your_device_key
注意事项:
Slack 简介:
Slack 是团队协作工具,Incoming Webhooks 可以将消息推送到 Slack 频道。
访问 Slack API 页面:
选择创建方式:
填写 App 信息:
TrendRadar
热点新闻监控
导航到 Incoming Webhooks:
启用功能:
OFF
ON
添加新的 Webhook:
选择目标频道:
#热点新闻
授权应用:
查看生成的 URL:
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
复制 URL:
配置到 TrendRadar:
slack_webhook_url
docker/.env
消息格式预览:
*[第 1/2 批次]* 📊 *热点词汇统计* 🔥 *[1/3] AI ChatGPT* : 2 条 1. [百度热搜] 🆕 ChatGPT-5正式发布 *[1]* - 09时15分 (1次) 2. [今日头条] AI芯片概念股暴涨 *[3]* - [08时30分 ~ 10时45分] (3次)
Name(名称):GENERIC_WEBHOOK_URL(请复制粘贴此名称,不要手打)
GENERIC_WEBHOOK_URL
Secret(值):你的 Webhook URL
Name(名称):GENERIC_WEBHOOK_TEMPLATE(可选配置,请复制粘贴此名称)
GENERIC_WEBHOOK_TEMPLATE
Secret(值):JSON 模板字符串,支持 {title} 和 {content} 占位符
{title}
{content}
通用 Webhook 简介:
通用 Webhook 支持任意接受 HTTP POST 请求的平台,包括但不限于:
获取 Webhook URL:
配置模板:
{"content": "{content}"}
GitHub Secret 配置:
模板支持两个占位符:
模板示例:
# 默认格式(留空时使用) {"title": "{title}", "content": "{content}"} # Discord 格式 {"content": "{content}"} # 自定义格式 {"text": "{content}", "username": "TrendRadar"}
⚠️ 提醒: 完成第 1-2 步后,请立即测试!测试成功后再根据需要调整配置(第 4 步) 请进入你自己的项目,不是本项目!
如何找到你的 Actions 页面:
https://github.com/你的用户名/TrendRadar/actions
示例对比:
https://github.com/sansan0/TrendRadar/actions
测试步骤:
⚠️ 提醒: 手动测试不要太频繁,避免触发 GitHub Actions 限制 点击 Run workflow 后需要刷新浏览器页面才能看到新的运行记录
默认配置已可正常使用,如需个性化调整,了解以下文件即可:
👉 详细配置教程:配置详解
v4.0.0 重要变更:引入「活跃度检测」机制,GitHub Actions 需定期签到以维持运行。
Check In
Run workflow
关于远程云存储配置(请根据部署方式选择):
GitHub Actions 用户:
Docker / 本地用户:
⚠️ 前置条件(重要):
根据 Cloudflare 平台规则,开通 R2 需绑定支付方式。
GitHub Secret 配置(需添加 4 项):
S3_BUCKET_NAME
trendradar-data
S3_ACCESS_KEY_ID
S3_SECRET_ACCESS_KEY
S3_ENDPOINT_URL
https://<account-id>.r2.cloudflarestorage.com
可选配置:
S3_REGION
auto
💡 更多存储配置选项:参见 数据保存在哪里?
详细操作步骤(获取凭据):
进入 R2 概览:
R2对象存储
创建存储桶:
概述
创建存储桶
创建 API 令牌:
Account Details
Manage
S3 API
创建 Account APl 令牌
github-action-write
管理员读和写
仅适用于指定存储桶
创建 API 令牌
Access Key ID
Secret Access Key
这是 v5.0.0 的核心功能,让 AI 帮你总结和分析新闻,建议尝试。
配置方法: 在 GitHub Secrets (或 .env / config.yaml) 中添加:
.env
deepseek
openai
就这样,无需复杂部署,下次推送时你就会看到智能分析报告了。
恭喜!现在你可以开始享受 TrendRadar 带来的高效信息流了。
💬 加入社区:欢迎关注公众号「**硅基茶水间**」,分享你的使用心得和高级玩法。
TrendRadar 提供了两种 AI 使用方式,满足不同需求:
👉 结论:先用 AI 分析推送 满足日常需求;如果你是数据分析师或需要深度挖掘,再尝试 **AI 智能分析**。
📖 提醒:本章节提供详细的配置说明,建议先完成 快速开始 的基础配置,再根据需要回来查看详细选项。
配置位置: config/config.yaml 的 platforms 部分
platforms
本项目的资讯数据来源于 newsnow ,你可以点击网站,点击[更多],查看是否有你想要的平台。
具体添加可访问 项目源代码,根据里面的文件名,在 config/config.yaml 文件中修改 platforms 配置:
platforms: enabled: true # 是否启用热榜平台抓取 sources: - id: "toutiao" name: "今日头条" - id: "baidu" name: "百度热搜" - id: "wallstreetcn-hot" name: "华尔街见闻" # 添加更多平台...
💡 快捷方式:如果不会看源代码,可以复制他人整理好的 平台配置汇总
⚠️ 注意:平台不是越多越好,建议选择 10-15 个核心平台。过多平台会导致信息过载,反而降低使用体验。
在 frequency_words.txt 文件中告诉机器人你想看什么,它就会帮你盯着。支持普通词、必须词、过滤词等多种玩法。
华为
+
+手机
!
!广告
@
@10
/\bai\b/
配置位置: config/frequency_words.txt
华为 OPPO 苹果
作用: 新闻标题包含其中任意一个词就会被捕获
+词汇
华为 OPPO +手机
作用: 必须同时包含普通词和必须词才会被捕获
!词汇
苹果 华为 !水果 !价格
作用: 包含过滤词的新闻会被直接排除,即使包含关键词
特斯拉 马斯克 @5
作用: 限制该关键词组最多显示的新闻条数
配置优先级: @数字 > 全局配置 > 不限制
[GLOBAL_FILTER] 广告 推广 营销 震惊 标题党 [WORD_GROUPS] 科技 AI 华为 鸿蒙 !车
作用: 在任何情况下过滤包含指定词的新闻,优先级最高
过滤优先级: 全局过滤 > 词组内过滤(!) > 词组匹配
区域说明:
[WORD_GROUPS]
匹配示例:
[GLOBAL_FILTER] 广告 [WORD_GROUPS] 科技 AI
普通关键词使用子字符串匹配,这在中文环境下很方便,但在英文环境可能会产生误匹配。例如 ai 会匹配到 training 中的 ai。
使用正则表达式语法 /pattern/ 可以实现精确匹配:
/(?<![a-z])ai(?![a-z])/ 人工智能
作用: 使用正则表达式进行匹配,支持所有 Python 正则语法
常用正则模式:
/\bword\b/
/(?<![a-z])ai(?![a-z])/
/^breaking/
/发布$/
/苹果|华为|小米/
|
# 配置 /(?<![a-z])ai(?![a-z])/ 人工智能
组合使用:
# 正则 + 普通词 + 过滤词 /\bai\b/ 人工智能 机器学习 !广告
re.IGNORECASE
/pattern/i
💡 不会写正则?让 AI 帮你生成!
如果你不熟悉正则表达式,可以直接让 ChatGPT / Gemini / DeepSeek 帮你生成。只需告诉 AI:
我需要一个 Python 正则表达式,用于匹配英文单词 “ai”,但不匹配 “training” 中的 “ai”。 请直接给出正则表达式,格式为 /pattern/,不需要额外解释。
AI 会给你类似这样的结果:/(?<![a-zA-Z])ai(?![a-zA-Z])/
/(?<![a-zA-Z])ai(?![a-zA-Z])/
正则表达式在推送消息和 HTML 页面显示时可能不太友好。使用 => 备注 语法可以设置显示名称:
/(?<![a-zA-Z])ai(?![a-zA-Z])/ => AI 相关 人工智能
作用: 推送消息和 HTML 页面显示 “AI 相关” 而不是复杂的正则表达式
语法格式:
# 正则 + 显示名称 /pattern/ => 显示名称 /pattern/i => 显示名称 # 支持 flags 写法(flags 被忽略) /pattern/=>显示名称 # => 两边空格可选 # 普通词 + 显示名称 deepseek => DeepSeek 动态
# 配置 /(?<![a-zA-Z])ai(?![a-zA-Z])/ => AI 相关 人工智能
人工智能
(?<![a-z])ai(?![a-z]) 人工智能
/(?<![a-z])ai(?![a-z])/ => AI 相关
AI 相关
核心规则: 用空行分隔不同的词组,每个词组独立统计
iPhone 华为 OPPO +发布 A股 上证 深证 +涨跌 !预测 世界杯 欧洲杯 亚洲杯 +比赛
第1组 - 手机新品类:
第2组 - 股市行情类:
第3组 - 足球赛事类:
# 第一步:先用宽泛关键词测试 人工智能 AI ChatGPT # 第二步:发现误匹配后,加入必须词限定 人工智能 AI ChatGPT +技术 # 第三步:发现干扰内容后,加入过滤词 人工智能 AI ChatGPT +技术 !广告 !培训
❌ 不推荐: 一个词组包含太多词汇
华为 OPPO 苹果 三星 vivo 一加 魅族 +手机 +发布 +销量 !假货 !维修 !二手
✅ 推荐: 拆分成多个精确的词组
华为 OPPO +新品 苹果 三星 +发布 手机 销量 +市场
配置位置: config/config.yaml
report: sort_by_position_first: false # 排序优先级配置
示例: 配置顺序 A、B、C,热点数 A(3条)、B(10条)、C(5条)
report: max_news_per_keyword: 10 # 每个关键词最多显示10条(0=不限制)
Docker 环境变量:
SORT_BY_POSITION_FIRST=true MAX_NEWS_PER_KEYWORD=10
综合示例:
# config.yaml report: sort_by_position_first: true # 按配置顺序优先 max_news_per_keyword: 10 # 全局默认每个关键词最多10条
# frequency_words.txt 特斯拉 马斯克 @20 # 重点关注,显示20条(覆盖全局配置) 华为 # 使用全局配置,显示10条 比亚迪 @5 # 限制5条
最终效果: 按配置顺序显示 特斯拉(20条) → 华为(10条) → 比亚迪(5条)
配置位置: config/config.yaml 的 report.mode
report.mode
report: mode: "daily" # 可选: "daily" | "incremental" | "current"
假设你监控”苹果”关键词,每小时执行一次:
💡 遇到这个问题? 👉 “每个小时执行一次,第一次执行完输出的新闻,在下一个小时执行时还会出现” 原因:你可能选择了 daily(当日汇总)或 current(当前榜单)模式 解决:改用 incremental(增量监控)模式,只推送新增内容
💡 遇到这个问题? 👉 “每个小时执行一次,第一次执行完输出的新闻,在下一个小时执行时还会出现”
选择了 incremental(增量监控)模式的用户请注意: 📌 增量模式只在有新增匹配新闻时才会推送 如果长时间没有收到推送,可能是因为: 当前时段没有符合你关键词的新热点出现 关键词配置过于严格或过于宽泛 监控平台数量较少 解决方案: 方案1:👉 优化关键词配置 - 调整关键词的精准度,增加或修改监控词汇 方案2:切换推送模式 - 改用 current 或 daily 模式,可以定时接收推送 方案3:👉 增加监控平台 - 添加更多新闻平台,扩大信息来源
选择了 incremental(增量监控)模式的用户请注意:
📌 增量模式只在有新增匹配新闻时才会推送
如果长时间没有收到推送,可能是因为:
解决方案:
配置位置: config/config.yaml 的 advanced.weight 部分
advanced.weight
advanced: weight: rank: 0.6 # 排名权重 frequency: 0.3 # 频次权重 hotness: 0.1 # 热度权重
当前默认的配置是平衡性配置
追实时热点型:
advanced: weight: rank: 0.8 # 主要看排名 frequency: 0.1 # 不太在乎持续性 hotness: 0.1
适用人群:自媒体博主、营销人员、想快速了解当下最火话题的用户
追深度话题型:
advanced: weight: rank: 0.4 # 适度看排名 frequency: 0.5 # 重视当天内的持续热度 hotness: 0.1
适用人群:投资者、研究人员、新闻工作者、需要深度分析趋势的用户
rank
frequency
核心思路:追求速度和时效性的用户提高排名权重,追求深度和稳定性的用户提高频次权重。
📊 热点词汇统计
🔥 [1/3] AI ChatGPT : 2 条
[百度热搜] 🆕 ChatGPT-5正式发布 [1] - 09时15分 (1次)
[今日头条] AI芯片概念股暴涨 [3] - [08时30分 ~ 10时45分] (3次)
━━━━━━━━━━━━━━━━━━━
📈 [2/3] 比亚迪 特斯拉 : 2 条
[微博] 🆕 比亚迪月销量破纪录 [2] - 10时20分 (1次)
[抖音] 特斯拉降价促销 [4] - [07时45分 ~ 09时15分] (2次)
📌 [3/3] A股 股市 : 1 条
🆕 本次新增热点新闻 (共 2 条)
百度热搜 (1 条):
微博 (1 条):
更新时间:2025-01-15 12:30:15
镜像说明:
TrendRadar 提供两个独立的 Docker 镜像,可根据需求选择部署:
wantcat/trendradar
💡 建议: 只需要推送功能:仅部署 wantcat/trendradar 镜像 需要 AI 分析功能:同时部署两个镜像
💡 建议:
创建项目目录和配置:
方式 1-A:使用 git clone(推荐,最简单)
# 克隆项目到本地 git clone https://github.com/sansan0/TrendRadar.git cd TrendRadar
方式 1-B:使用 wget 下载配置文件
# 创建目录结构 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/ wget https://raw.githubusercontent.com/sansan0/TrendRadar/master/config/ai_analysis_prompt.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/
💡 说明:Docker 部署需要的关键目录结构如下:
当前目录/ ├── config/ │ ├── config.yaml │ ├── frequency_words.txt │ └── ai_analysis_prompt.txt # AI 分析提示词(v5.0.0 新增,可选) └── docker/ ├── .env └── docker-compose.yml
配置文件说明:
配置分工原则(v4.6.0 优化):
💡 配置修改生效:修改 config.yaml 后,执行 docker compose up -d 重启容器即可生效
docker compose up -d
⚙️ 环境变量覆盖机制(v3.0.5+)
.env 文件中的环境变量会覆盖 config.yaml 中的对应配置:
ENABLE_WEBSERVER
WEBSERVER_PORT
8080
notification.channels.feishu.webhook_url
https://...
AI_ANALYSIS_ENABLED
ai_analysis.enabled
sk-xxx...
gemini
S3_*
storage.remote.*
配置优先级:环境变量 > config.yaml
使用方法:
启动服务:
选项 A:启动所有服务(推送 + AI 分析)
# 拉取最新镜像 docker compose pull # 启动所有服务(trendradar + trendradar-mcp) docker compose up -d
选项 B:仅启动新闻推送服务
# 只启动 trendradar(定时抓取和推送) docker compose pull trendradar docker compose up -d trendradar
选项 C:仅启动 MCP AI 分析服务
# 只启动 trendradar-mcp(提供 AI 分析接口) docker compose pull trendradar-mcp docker compose up -d trendradar-mcp
💡 提示: 大多数用户只需启动 trendradar 即可实现新闻推送功能 只有需要使用 ChatGPT/Gemini 进行 AI 对话分析时,才需启动 trendradar-mcp 两个服务相互独立,可根据需求灵活组合
💡 提示:
trendradar
trendradar-mcp
查看运行状态:
# 查看新闻推送服务日志 docker logs -f trendradar # 查看 MCP AI 分析服务日志 docker logs -f trendradar-mcp # 查看所有容器状态 docker ps | grep trendradar # 停止特定服务 docker compose stop trendradar # 停止推送服务 docker compose stop trendradar-mcp # 停止 MCP 服务
如果需要自定义修改代码或构建自己的镜像:
# 克隆项目 git clone https://github.com/sansan0/TrendRadar.git cd TrendRadar # 修改配置文件 vim config/config.yaml vim config/frequency_words.txt # 使用构建版本的 docker compose cd docker cp docker-compose-build.yml docker-compose.yml
构建并启动服务:
# 选项 A:构建并启动所有服务 docker compose build docker compose up -d # 选项 B:仅构建并启动新闻推送服务 docker compose build trendradar docker compose up -d trendradar # 选项 C:仅构建并启动 MCP AI 分析服务 docker compose build trendradar-mcp docker compose up -d trendradar-mcp
💡 架构参数说明: 默认构建 amd64 架构镜像(适用于大多数 x86_64 服务器) 如需构建 arm64 架构(Apple Silicon、树莓派等),设置环境变量:export DOCKER_ARCH=arm64 docker compose build
💡 架构参数说明:
amd64
arm64
export DOCKER_ARCH=arm64 docker compose build
# 方式一:手动更新(爬虫 + MCP 镜像) docker pull wantcat/trendradar:latest docker pull wantcat/trendradar-mcp:latest docker compose down docker compose up -d # 方式二:使用 docker compose 更新 docker compose pull docker compose up -d
可用镜像:
# 查看运行状态 docker exec -it trendradar python manage.py status # 手动执行一次爬虫 docker exec -it trendradar python manage.py run # 查看实时日志 docker exec -it trendradar python manage.py logs # 显示当前配置 docker exec -it trendradar python manage.py config # 显示输出文件 docker exec -it trendradar python manage.py files # Web 服务器管理(用于浏览器访问生成的报告) docker exec -it trendradar python manage.py start_webserver # 启动 Web 服务器 docker exec -it trendradar python manage.py stop_webserver # 停止 Web 服务器 docker exec -it trendradar python manage.py webserver_status # 查看 Web 服务器状态 # 查看帮助信息 docker exec -it trendradar python manage.py help # 重启容器 docker restart trendradar # 停止容器 docker stop trendradar # 删除容器(保留数据) docker rm trendradar
💡 Web 服务器说明: 启动后可通过浏览器访问 http://localhost:8080 查看最新报告 通过目录导航访问历史报告(如:http://localhost:8080/2025-xx-xx/) 端口可在 .env 文件中配置 WEBSERVER_PORT 参数 自动启动:在 .env 中设置 ENABLE_WEBSERVER=true 安全提示:仅提供静态文件访问,限制在 output 目录,只绑定本地访问
💡 Web 服务器说明:
http://localhost:8080/2025-xx-xx/
ENABLE_WEBSERVER=true
生成的报告和数据默认保存在 ./output 目录下,即使容器重启或删除,数据也会保留。
./output
📊 网页版报告访问路径:
TrendRadar 生成的当日汇总 HTML 报告会同时保存到两个位置:
output/html/YYYY-MM-DD/当日汇总.html
本地访问示例:
# 方式 1:通过 Web 服务器访问(推荐,Docker 环境) # 1. 启动 Web 服务器 docker exec -it trendradar python manage.py start_webserver # 2. 在浏览器访问 http://localhost:8080 # 访问最新报告(默认 index.html) http://localhost:8080/html/2025-xx-xx/ # 访问指定日期的报告 # 方式 2:直接打开文件(本地环境) open ./output/index.html # macOS start ./output/index.html # Windows xdg-open ./output/index.html # Linux # 方式 3:访问历史归档 open ./output/html/2025-xx-xx/当日汇总.html
为什么有两个 index.html?
💡 提示:两个文件内容完全相同,选择任意一个访问即可。
# 检查容器状态 docker inspect trendradar # 查看容器日志 docker logs --tail 100 trendradar # 进入容器调试 docker exec -it trendradar /bin/bash # 验证配置文件 docker exec -it trendradar ls -la /app/config/
如果需要使用 AI 分析功能,可以部署独立的 MCP 服务容器。
架构说明:
flowchart TB subgraph trendradar["trendradar"] A1[定时抓取新闻] A2[推送通知] end subgraph trendradar-mcp["trendradar-mcp"] B1[127.0.0.1:3333] B2[AI 分析接口] end subgraph shared["共享卷"] C1["config/ (ro)"] C2["output/ (ro)"] end trendradar --> shared trendradar-mcp --> shared
快速启动:
如果已按照 方式一:使用 docker compose 完成部署,只需启动 MCP 服务:
cd TrendRadar/docker docker compose up -d trendradar-mcp # 查看运行状态 docker ps | grep trendradar-mcp
单独启动 MCP 服务(不使用 docker compose):
# Linux/Mac docker run -d --name trendradar-mcp \ -p 127.0.0.1:3333:3333 \ -v $(pwd)/config:/app/config:ro \ -v $(pwd)/output:/app/output:ro \ -e TZ=Asia/Shanghai \ wantcat/trendradar-mcp:latest # Windows PowerShell docker run -d --name trendradar-mcp ` -p 127.0.0.1:3333:3333 ` -v ${PWD}/config:/app/config:ro ` -v ${PWD}/output:/app/output:ro ` -e TZ=Asia/Shanghai ` wantcat/trendradar-mcp:latest
⚠️ 注意:单独运行时,确保当前目录下有 config/ 和 output/ 文件夹,且包含配置文件和新闻数据。
config/
output/
验证服务:
# 检查 MCP 服务健康状态 curl http://127.0.0.1:3333/mcp # 查看 MCP 服务日志 docker logs -f trendradar-mcp
在 AI 客户端中配置:
MCP 服务启动后,根据不同客户端进行配置:
Cherry Studio(推荐,GUI 配置):
streamableHttp
http://127.0.0.1:3333/mcp
Claude Desktop / Cline(JSON 配置):
{ "mcpServers": { "trendradar": { "url": "http://127.0.0.1:3333/mcp", "type": "streamableHttp" } } }
💡 提示:MCP 服务仅监听本地端口(127.0.0.1),确保安全性。如需远程访问,请自行配置反向代理和认证。
配置位置: config/config.yaml 的 report 和 display 部分
report
display
report: mode: "daily" # 推送模式 display_mode: "keyword" # 显示模式(v4.6.0 新增) rank_threshold: 5 # 排名高亮阈值 sort_by_position_first: false # 排序优先级 max_news_per_keyword: 0 # 每个关键词最大显示数量 display: region_order: # 区域显示顺序(v5.2.0 新增) - new_items # 新增热点区域 - hotlist # 热榜区域 - rss # RSS 订阅区域 - standalone # 独立展示区 - ai_analysis # AI 分析区域
mode
display_mode
rank_threshold
5
max_news_per_keyword
0
你是想看”这个话题下有哪些新闻”,还是”这个平台上有哪些新闻”?
[平台名]
[关键词]
通过调整 display.region_order 列表的顺序,可以控制推送消息中各区域的显示位置。
默认顺序:新增热点 → 热榜 → RSS → 独立展示区 → AI 分析
自定义示例:想让 AI 分析放在最前面?
display: region_order: - ai_analysis # 移到第一行 - new_items - hotlist - rss - standalone
注意:区域需同时满足两个条件才会显示:
region_order
通过 display.regions 控制各区域是否在推送中显示:
display: regions: hotlist: true # 热榜区域(关键词匹配的热点新闻) new_items: false # 新增热点区域(含热榜新增 + RSS 新增) rss: true # RSS 订阅区域(关键词匹配的 RSS 内容) standalone: false # 独立展示区(完整热榜/RSS,不受关键词过滤) ai_analysis: true # AI 分析区域
hotlist
new_items
rss
standalone
ai_analysis
假设你配置了关键词:1.特斯拉,2.比亚迪。 实际热度:比亚迪(10条),特斯拉(3条)。
场景:有些平台(比如知乎热榜、HackerNews),我想完整看一遍,不管有没有匹配我的关键词。
display: regions: standalone: true # 推送中展示独立展示区(关闭不影响 AI 分析) standalone: platforms: ["zhihu", "weibo"] # 这些平台的热榜给我完整显示 rss_feeds: ["hacker-news"] # 这些RSS源的内容给我完整显示 max_items: 20 # 最多显示多少条
💡 推送展示与 AI 分析独立控制:regions.standalone 只控制推送中是否显示独立展示区。即使关闭推送展示,只要在 AI 配置中开启 include_standalone: true,AI 仍会分析这些平台的完整数据。适合想让 AI 做深度分析、但不想推送消息太长的用户。
regions.standalone
include_standalone: true
配置位置: config/config.yaml 的 schedule 部分 + config/timeline.yaml
schedule
config/timeline.yaml
只需在 config.yaml 中选一个预设模板,不需要编辑 timeline.yaml:
schedule: enabled: true preset: "morning_evening" # 改这里就行
如果预设模板都不满足需求,可以编辑 config/timeline.yaml 底部的 custom 段,自由定义时间段、日计划和周映射。详见 timeline.yaml 文件内的注释说明。
⚠️ 从旧版本升级的用户注意: v6.0.0 移除了旧的 notification.push_window 和 ai_analysis.analysis_window 配置 请改用新的 schedule + timeline.yaml 调度系统 旧的”每天推送一次”可用 morning_evening 预设替代 旧的”工作时间推送”可用 office_hours 预设替代
⚠️ 从旧版本升级的用户注意:
notification.push_window
ai_analysis.analysis_window
⚠️ GitHub Actions 用户注意: GitHub Actions 执行时间不稳定,可能有 ±15 分钟的偏差 时间段范围建议至少留足 2 小时 如果想要精准的定时推送,建议使用 Docker 部署在个人服务器上
⚠️ GitHub Actions 用户注意:
配置位置: .github/workflows/crawler.yml 的 schedule 部分
on: schedule: - cron: "0 * * * *" # 每小时运行一次
GitHub Actions 使用一种叫 “Cron” 的时间格式,不需要深入理解,直接复制下面的代码替换即可。
配置位置: .github/workflows/crawler.yml 文件中的 schedule 部分
- cron: "0 * * * *"
- cron: "*/30 * * * *"
- cron: "0 0 * * *"
- cron: "*/30 0-14 * * *"
- cron: "0 0,6,12 * * *"
时差问题:GitHub 的服务器在国外,用的是 UTC 时间。
不要太频繁:建议间隔不要少于 30 分钟。
cron: "..."
⚠️ 安全第一不要在 config.yaml 里直接写密码/Token! 如果你把包含密码的文件上传到 GitHub,全世界都能看到。 正确做法: GitHub Actions 用户:去 Settings -> Secrets 里添加 Docker 用户:写在 .env 文件里(这个文件不会被上传)
不要在 config.yaml 里直接写密码/Token! 如果你把包含密码的文件上传到 GitHub,全世界都能看到。
正确做法:
很简单,在配置时用分号 ; 把多个地址隔开就行了。
举个例子: 假设你有两个飞书群,想同时收到推送:
https://.../webhook/aaa
https://.../webhook/bbb
配置时填写: https://.../webhook/aaa;https://.../webhook/bbb
https://.../webhook/aaa;https://.../webhook/bbb
token1;;token3
# 飞书发给 3 个群 FEISHU_WEBHOOK_URL=https://hook1...;https://hook2...;https://hook3... # 钉钉发给 2 个群 DINGTALK_WEBHOOK_URL=https://oapi...;https://oapi... # Telegram 发给 2 个人 (注意一一对应) TELEGRAM_BOT_TOKEN=tokenA;tokenB TELEGRAM_CHAT_ID=userA;userB
提示:为了防止滥用,默认限制每个平台最多推送到 3 个账号。如果需要更多,可以修改 MAX_ACCOUNTS_PER_CHANNEL 配置。
MAX_ACCOUNTS_PER_CHANNEL
系统会自动帮你选择最合适的地方,你通常不需要操心:
如果你是用 GitHub Actions 运行,你需要一个”云端硬盘”来存数据。例如使用 Cloudflare R2(因为有免费额度)。
在 GitHub Secrets 里添加这 5 个变量:
STORAGE_BACKEND
remote
💡 详细教程:怎么申请 R2?请看 快速开始 - 远程存储配置
默认情况下,我们不会自动删除你的数据。但如果你觉得数据太多占空间,可以设置”自动清理”。
配置位置:config/config.yaml
storage: local: retention_days: 30 # 本地数据只保留 30 天 (0 表示永久) remote: retention_days: 30 # 云端数据只保留 30 天
如果你身在海外,或者发现推送时间跟你的本地时间对不上,可以修改时区。
app: timezone: "Asia/Shanghai" # 默认是中国时间
America/Los_Angeles
Europe/London
开启这个功能后,AI 会像一个专业的分析师,在推送每一批新闻时:
包含内容:热点趋势总结、舆论风向判断、跨平台关联分析、潜在影响评估等。
最简单的方法是通过环境变量配置(推荐 GitHub Secrets 或 .env)。
必需的配置项:
sk-xxxxxx
AI_MODEL
provider/model
支持的 AI 提供商(基于 LiteLLM,支持 100+ 提供商):
openai/gpt-4o-mini
gemini/gemini-1.5-flash
gemini/gemini-1.5-pro
💡 新特性:现已基于 LiteLLM 统一接口,支持 100+ AI 提供商,配置更简单、错误处理更完善。
可选配置项:
AI_TEMPERATURE
1.0
AI_MAX_TOKENS
5000
AI_TIMEOUT
120
AI_NUM_RETRIES
2
如果你关注了国外的 RSS 源(比如 Hacker News),AI 可以帮你把内容翻译成中文推送。
ai_translation: enabled: true # 开启翻译 language: "Chinese" # 翻译成什么语言 (Chinese, English, Japanese...)
觉得 AI 说话太官方?你可以修改它的提示词,让它变成你喜欢的风格(比如”毒舌评论员”、”资深投资顾问”)。
TrendRadar v3.0.0 新增了基于 MCP (Model Context Protocol) 的 AI 分析功能,让你可以通过自然语言与新闻数据对话,进行深度分析。
重要提示:AI 功能需要本地新闻数据支持
AI 分析功能不是直接查询网络实时数据,而是分析你本地已积累的新闻数据(存储在 output 文件夹中)
output
项目自带测试数据:output 目录默认包含 2025-12-21~2025-12-27 一周的热榜新闻数据,可用于快速体验 AI 功能
查询限制:
获取最新数据:
Cherry Studio 提供 GUI 配置界面,5 分钟快速部署,复杂的部分是一键安装的。
图文部署教程:现已更新到我的公众号,回复 “mcp” 即可
详细部署教程:README-Cherry-Studio.md
部署模式说明:
详细对话教程:README-MCP-FAQ.md
💡 提示:实际不建议一次性问多个问题。如果你选择的 AI 模型连下图的按顺序调用都无法做到,建议换一个。
TrendRadar MCP 服务支持标准的 Model Context Protocol (MCP) 协议,可以接入各种支持 MCP 的 AI 客户端进行智能分析。
/path/to/TrendRadar
C:\Users\YourName\TrendRadar
启动 HTTP 服务:
# Windows start-http.bat # Mac/Linux ./start-http.sh
配置 Cursor:
项目级配置(推荐): 在项目根目录创建 .cursor/mcp.json:
.cursor/mcp.json
{ "mcpServers": { "trendradar": { "url": "http://localhost:3333/mcp", "description": "TrendRadar 新闻热点聚合分析" } } }
全局配置: 在用户目录创建 ~/.cursor/mcp.json(同样内容)
~/.cursor/mcp.json
使用步骤:
搜索今天的"AI"相关新闻
创建 .cursor/mcp.json:
{ "mcpServers": { "trendradar": { "command": "uv", "args": [ "--directory", "/path/to/TrendRadar", "run", "python", "-m", "mcp_server.server" ] } } }
在 Cline 的 MCP 设置中添加:
HTTP 模式:
{ "trendradar": { "url": "http://localhost:3333/mcp", "type": "streamableHttp", "autoApprove": [], "disabled": false } }
STDIO 模式(推荐):
{ "trendradar": { "command": "uv", "args": [ "--directory", "/path/to/TrendRadar", "run", "python", "-m", "mcp_server.server" ], "type": "stdio", "disabled": false } }
编辑 ~/.continue/config.json:
~/.continue/config.json
{ "experimental": { "modelContextProtocolServers": [ { "transport": { "type": "stdio", "command": "uv", "args": [ "--directory", "/path/to/TrendRadar", "run", "python", "-m", "mcp_server.server" ] } } ] } }
使用示例:
分析最近7天"特斯拉"的热度变化趋势 生成今天的热点摘要报告 搜索"比特币"相关新闻并分析情感倾向
MCP Inspector 是官方调试工具,用于测试 MCP 连接:
启动 TrendRadar HTTP 服务:
启动 MCP Inspector:
npx @modelcontextprotocol/inspector
在浏览器中连接:
http://localhost:3333/mcp
任何支持 Model Context Protocol 的客户端都可以连接 TrendRadar:
服务地址:http://localhost:3333/mcp
基本配置模板:
{ "name": "trendradar", "url": "http://localhost:3333/mcp", "type": "http", "description": "新闻热点聚合分析" }
{ "name": "trendradar", "command": "uv", "args": [ "--directory", "/path/to/TrendRadar", "run", "python", "-m", "mcp_server.server" ], "type": "stdio" }
C:\Users\...
检查步骤:
确认端口 3333 未被占用:
# Windows netstat -ano | findstr :3333 # Mac/Linux lsof -i :3333
检查项目依赖是否安装:
# 重新运行安装脚本 # Windows: setup-windows.bat 或者 setup-windows-en.bat # Mac/Linux: ./setup-mac.sh
查看详细错误日志:
uv run python -m mcp_server.server --transport http --port 3333
尝试自定义端口:
uv run python -m mcp_server.server --transport http --port 33333
STDIO 模式:
which uv
where uv
通用检查:
可能原因:
数据不存在:
参数错误:
YYYY-MM-DD
zhihu
weibo
配置问题:
4 篇文章:
AI 开发:
📍 毛主席足迹地图 - 交互式动态展示1893-1976年完整轨迹。欢迎诸位同志贡献数据
哔哩哔哩(bilibili)评论区数据可视化分析软件
GPL-3.0 License
🔝 回到顶部
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
最快30秒部署的热点助手 —— 告别无效刷屏,只看真正关心的新闻资讯
中文 | English
📑 快速导航
👉 点击展开:致谢名单 (天使轮荣誉榜 🔥73+🔥 位)
早期支持者致谢
基础设施支持
感谢 GitHub 免费提供的基础设施,这是本项目得以一键 fork便捷运行的最大前提。
数据支持
本项目使用 newsnow 项目的 API 获取多平台数据,特别感谢作者提供的服务。
经联系,作者表示无需担心服务器压力,但这是基于他的善意和信任。请大家:
推广助力
观众支持
🪄 赞助商
❤️ 觉得好用?支持一下
🤝 二次开发与引用
如果你在项目中使用或借鉴了本项目的思路、核心代码,非常欢迎在 README 或文档中注明来源并附上本仓库链接。
这将有助于项目的持续维护和社区发展,感谢你的尊重与支持!❤️
💬 交流与反馈
📝 更新日志
2026/02/09 - v6.0.0
timeline.yaml,用一套配置控制「什么时间采集 / 推送 / AI 分析」always_on(全天候,默认)、morning_evening(早晚汇总)、office_hours(办公时间)、night_owl(夜猫子)、custom(自定义);也支持在presets:下新增自己的模板,只要 key 不重复,然后在 config.yaml 里填你的模板名即可timeline.yaml编辑标签页,与 config.yaml / frequency_words.txt 并列schedule.presetai_analysis.include_standalone):include_rank_timeline联动:开启时利用轨迹数据做深度趋势分析,关闭时基于排名做简要判断standalone_summariesJSON 字段(独立源点速览),所有推送渠道均已适配渲染2026/02/09 - mcp-v4.0.0
get_channel_format_guide工具,告诉 AI 每个渠道支持什么格式、有什么限制,生成的内容排版更好看👉 点击展开:历史更新
2026/01/28 - v5.5.0
2026/02/02 - mcp-v3.2.0
search_news(query="关键词", include_url=True)→read_article(url=...)读取正文2026/01/10 - mcp-v3.0.0~v3.1.5
{success, summary, data, error}结构asyncio.to_thread()包装同步调用get_latest_rss支持多日查询(days 参数),跨日期 URL 去重get_trending_topics支持/pattern/正则语法和display_namemake_cache_key()函数,参数排序+MD5 哈希确保一致性2026/01/23 - v5.4.0
2026/01/19 - v5.3.0
provider字段,改用model: "provider/model_name"格式num_retries)、备用模型 (fallback_models)ai.provider→ 移除(已合并到 model)ai.base_url→ai.api_baseAI_PROVIDER环境变量 → 移除AI_BASE_URL环境变量 →AI_API_BASEdeepseek/deepseek-chatopenai/gpt-4ogemini/gemini-2.5-flashanthropic/claude-3-5-sonnet2026/01/17 - v5.2.0
🌐 AI 翻译功能
🔧 配置架构优化
✨ AI 分析增强
🔧 多模型适配
🐛 Bug 修复
2026/01/10 - v5.0.0
✨ 推送内容”五大板块”重构
本次更新对推送消息进行了区域化重构,现在推送内容清晰地划分为五大核心板块:
✨ AI 智能分析推送功能
only_analysis(仅 AI 分析)、both(两者都推送)config/ai_analysis_prompt.txt文件自定义 AI 分析角色和输出格式📋 独立展示区功能
📊 推送体验重构
🔧 配置优化
[组别名]语法,支持#注释行,配置更清晰(感谢 @songge8 提出的建议)AI_API_KEY、AI_PROVIDER等)2026/01/02 - v4.7.0
/pattern/正则语法,解决英文子字符串误匹配问题(如ai匹配training)📖 查看语法详解=> 备注给复杂的正则表达式起个好记的名字,推送消息显示更清晰(如/\bai\b/ => AI相关)2025/12/30 - mcp-v2.0.0
get_latest_rss、search_rss、get_rss_feeds_statussearch_news支持include_rss参数同时搜索热榜和 RSS2026/01/01 - v4.6.0
keyword(按关键词分组)和platform(按平台分组)两种显示模式2025/12/30 - v4.5.0
output/{type}/{date}.dbsort_by_position_first同时影响热榜和 RSSconfig.yaml重新组织为 7 个逻辑分组(app、report、notification、storage、platforms、rss、advanced),配置路径更清晰2025/12/26 - mcp-v1.2.0
MCP 模块更新 - 优化工具集,新增聚合对比功能,合并冗余工具:
aggregate_news工具 - 跨平台新闻去重聚合compare_periods工具 - 时期对比分析(周环比/月环比)find_similar_news+search_related_news_history→find_related_newsget_trending_topics- 新增auto_extract模式自动提取热点2025/12/20 - v4.0.3
band_rank)导致的重复推送问题2025/12/17 - v4.0.1
2025/12/13 - mcp-v1.1.0
MCP 模块更新:
sync_from_remote、get_storage_status、list_available_dates2025/12/13 - v4.0.0
🎉 重大更新:全面重构存储和核心架构
2025/12/03 - v3.5.0
🎉 核心功能增强
多账号推送支持
;分隔多个账号,例如:FEISHU_WEBHOOK_URL=url1;url2推送区域配置
display.region_order自定义各区域的显示顺序(v5.2.0 替代原reverse_content_order)display.regions控制各区域是否显示(热榜、新增热点、RSS、独立展示区、AI 分析)全局过滤关键词
[GLOBAL_FILTER]区域标记,支持全局过滤不想看到的内容🐳 Docker 双路径 HTML 生成优化
index.html无法同步到宿主机的问题index.html(项目根目录):供 GitHub Pages 访问output/index.html:通过 Docker Volume 挂载,宿主机可直接访问🐳 Docker MCP 镜像支持
wantcat/trendradar-mcp🌐 Web 服务器支持
manage.py命令控制启动/停止:docker exec -it trendradar python manage.py start_webserverhttp://localhost:8080(端口可配置)📖 文档优化
🔧 升级说明:
main.py、config/config.yaml(新增多账号推送支持,无需修改现有配置)2025/11/26 - mcp-v1.0.3
MCP 模块更新:
2025/11/28 - v3.4.1
🔧 格式优化
Bark 推送增强
Slack 格式精准化
<url|text>和加粗语法:*text*性能提升
🔧 升级说明:
main.py,config.yaml2025/11/25 - v3.4.0
🎉 新增 Slack 推送支持
团队协作推送渠道
多种部署方式
SLACK_WEBHOOK_URLSecretSLACK_WEBHOOK_URLconfig/config.yaml配置文件🔧 升级说明:
main.py、config/config.yaml、.github/workflows/crawler.yml2025/11/24 - v3.3.0
🎉 新增 Bark 推送支持
iOS 专属推送渠道
多种部署方式
BARK_URLSecretBARK_URLconfig/config.yaml配置文件🐛 Bug 修复
config.yaml中ntfy_server_url配置不生效的问题 (#345)🔧 升级说明:
main.py、config/config.yaml、.github/workflows/crawler.yml2025/11/23 - v3.2.0
🎯 新增高级定制功能
关键词排序优先级配置
显示数量精准控制
@数字语法为特定关键词设置限制🔧 升级说明:
main.py、config/config.yaml2025/11/18 - mcp-v1.0.2
MCP 模块更新:
2025/11/22 - v3.1.1
'float' object has no attribute 'lower'错误升级说明(GitHub Fork 用户):
main.py2025/11/20 - v3.1.0
markdown(企业微信群机器人)和text(个人微信应用)WEWORK_MSG_TYPE环境变量配置,支持 GitHub Actions、Docker、docker compose 等多种部署方式text模式自动清除 Markdown 语法,提供纯文本推送效果升级说明(GitHub Fork 用户):
main.py、config/config.yaml.github/workflows/crawler.yml(如使用 GitHub Actions 部署)2025/11/12 - v3.0.5
enable_crawler、report_mode、push_window等)支持通过环境变量覆盖,解决 NAS 用户修改配置文件不生效的问题(详见 🐳 Docker 部署 章节)2025/10/26 - mcp-v1.0.1
MCP 模块更新:
2025/10/31 - v3.0.4
2025/10/23 - v3.0.3
2025/10/21 - v3.0.2
2025/10/20 - v3.0.0
重大更新 - AI 分析功能上线 ✨
核心功能:
分析能力:
更新提示:
2025/10/15 - v2.4.4
更新内容:
更新提示:
2025/10/10 - v2.4.3
更新内容:
更新提示:
2025/10/8 - v2.4.2
更新内容:
更新提示:
2025/10/2 - v2.4.0
新增 ntfy 推送通知
核心功能:
使用场景:
更新提示:
2025/09/26 - v2.3.2
修复说明:
2025/09/22 - v2.3.1
使用说明:
更新提示:
2025/09/17 - v2.2.0
使用说明:
2025/09/13 - v2.1.2
2025/09/04 - v2.1.1
2025/08/30 - v2.1.0
核心改进:
更新提示:
2025/08/27 - v2.0.4
2025/08/06 - v2.0.3
2025/07/28 - v2.0.2
2025/07/27 - v2.0.1
修复问题:
2025/07/17 - v2.0.0
重大重构:
config/config.yaml文件管理(main.py 我依旧没拆分,方便你们复制升级)daily(当日汇总)、current(当前榜单)、incremental(增量监控)配置文件说明:
config/config.yaml- 主配置文件(应用设置、爬虫配置、通知配置、平台配置等)config/frequency_words.txt- 关键词配置(监控词汇设置)2025/07/09 - v1.4.1
功能新增:增加增量推送(在 main.py 头部配置 FOCUS_NEW_ONLY),该开关只关心新话题而非持续热度,只在有新内容时才发通知。
修复问题: 某些情况下,由于新闻本身含有特殊符号导致的偶发性排版异常。
2025/06/23 - v1.3.0
企业微信 和 Telegram 的推送消息有长度限制,对此我采用将消息拆分推送的方式。开发文档详见企业微信 和 Telegram
2025/06/21 - v1.2.1
在本版本之前的旧版本,不仅 main.py 需要复制替换, crawler.yml 也需要你复制替换 https://github.com/sansan0/TrendRadar/blob/master/.github/workflows/crawler.yml
2025/06/19 - v1.2.0
2025/06/18 - v1.1.0
2025/06/16 - v1.0.0
2025/06/13+14
2025/06/09
100 star⭐ 了,写个小功能给大伙儿助助兴 frequency_words.txt 文件增加了一个【必须词】功能,使用 + 号
唐僧或者猪八戒必须在标题里同时出现,才会收录到推送新闻中
如果标题中过滤词匹配到唐僧念经,那么即使必须词里有唐僧,也不显示
2025/06/02
2025/05/26
✨ 核心功能
全网热点聚合
默认监控 11 个主流平台,也可自行增加额外的平台
RSS 订阅源支持(v4.5.0 新增)
支持 RSS/Atom 订阅源抓取,按关键词分组统计(与热榜格式一致):
config.yaml中添加 RSS 源可视化配置编辑器
提供基于 Web 的图形化配置界面,无需手动编辑 YAML 文件,通过表单即可完成所有配置项的修改与导出。
👉 在线体验:https://sansan0.github.io/TrendRadar/
智能推送策略
三种推送模式:
附加功能(可选):
display.region_order调整各区域(热榜、新增热点、RSS、独立展示区、AI 分析)的显示顺序;通过display.regions控制各区域是否显示(v5.2.0)keyword=按关键词分组,platform=按平台分组(v4.6.0 新增)精准内容筛选
设置个人关键词(如:AI、比亚迪、教育政策),只推送相关热点,过滤无关信息
热点趋势分析
实时追踪新闻热度变化,让你不仅知道”什么在热搜”,更了解”热点如何演变”
个性化热点算法
不再被各个平台的算法牵着走,TrendRadar 会重新整理全网热搜
多渠道多账号推送
支持企业微信(+ 微信推送方案)、飞书、钉钉、Telegram、邮件、ntfy、Bark、Slack,消息直达手机和邮箱
AI 多语言翻译(v5.2.0 新增)
将推送内容翻译为任意语言,打破语言壁垒,无论是阅读国内热点还是通过 RSS 订阅海外资讯,都能以母语轻松获取
config.yaml中设置ai_translation.enabled: true和目标语言即可ai_translation_prompt.txt自定义翻译风格和术语ai配置段的模型设置RSS 源参考:以下是一些 RSS 订阅源合集,可按需选用
灵活存储架构(v4.0.0 重大更新)
多存储后端支持:
多端部署
AI 分析推送(v5.0.0 新增)
使用 AI 大模型对推送内容进行深度分析,自动生成热点洞察报告
config/ai_analysis_prompt.txt自定义分析角度独立展示区(v5.0.0 新增)
为指定平台提供完整热榜展示,不受关键词过滤影响
AI 智能分析(v3.0.0 新增)
基于 MCP (Model Context Protocol) 协议的 AI 对话分析系统,让你用自然语言深度挖掘新闻数据
网页部署
运行后根目录生成
index.html,即为完整的新闻报告页面。减少 APP 依赖
从”被算法推荐绑架”变成”主动获取自己想要的信息”
适合人群: 投资者、自媒体人、企业公关、关心时事的普通用户
典型场景: 股市投资监控、品牌舆情追踪、行业动态关注、生活资讯获取
🚀 快速开始
请选择适合你的部署方式
🅰️ 方案一:Docker 部署(推荐 🔥)
🅱️ 方案二:GitHub Actions 部署(本章节内容 ⬇️)
1️⃣ 第一步:获取项目代码
点击本仓库页面右上角的绿色 [Use this template] 按钮 → 选择 “Create a new repository”。
2️⃣ 第二步:设置 GitHub Secrets
在你 Fork 后的仓库中,进入
Settings>Secrets and variables>Actions>New repository secret📌 重要说明(请务必仔细阅读):
WEWORK_WEBHOOK_URL、FEISHU_WEBHOOK_URL等),不能自己随意修改或创造新名称,否则系统无法识别配置示例:
如上图所示,每一行是一个配置项:
WEWORK_WEBHOOK_URL)👉 点击展开:企业微信机器人(配置最简单最迅速)
GitHub Secret 配置(⚠️ Name 名称必须严格一致):
WEWORK_WEBHOOK_URL(请复制粘贴此名称,不要手打,避免打错)机器人设置步骤:
手机端设置:
PC 端设置流程类似
👉 点击展开:个人微信推送(基于企业微信应用,推送到个人微信)
GitHub Secret 配置(⚠️ Name 名称必须严格一致):
Name(名称):
WEWORK_WEBHOOK_URL(请复制粘贴此名称,不要手打)Secret(值):你的企业微信应用 Webhook 地址
Name(名称):
WEWORK_MSG_TYPE(请复制粘贴此名称,不要手打)Secret(值):
text设置步骤:
WEWORK_MSG_TYPESecret,值设为text说明:
text为纯文本,markdown为富文本(默认)👉 点击展开:飞书机器人(消息显示相对友好)
若启用 AI 分析,飞书推送偶发(约 5% 概率)会有数分钟延迟(推测为平台对 AI 生成内容的合规性审核)。
GitHub Secret 配置(⚠️ Name 名称必须严格一致):
FEISHU_WEBHOOK_URL(请复制粘贴此名称,不要手打)有两个方案,方案一配置简单,方案二配置复杂(但是稳定推送)
其中方案一,由 ziventian发现并提供建议,在这里感谢他,默认是个人推送,也可以配置群组推送操作#97 ,
方案一:
电脑浏览器打开 https://botbuilder.feishu.cn/home/my-command
点击”新建机器人指令”
点击”选择触发器”,往下滑动,点击”Webhook 触发”
此时你会看到”Webhook 地址”,把这个链接先复制到本地记事本暂存,继续接下来的操作
“参数”里面放上下面的内容,然后点击”完成”
点击”选择操作” > “通过官方机器人发消息”
消息标题填写”TrendRadar 热点监控”
最关键的部分来了,点击 + 按钮,选择”Webhook 触发”,然后按照下面的图片摆放
FEISHU_WEBHOOK_URL方案二:
电脑浏览器打开 https://botbuilder.feishu.cn/home/my-app
点击”新建机器人应用”
进入创建的应用后,点击”流程设计” > “创建流程” > “选择触发器”
往下滑动,点击”Webhook 触发”
此时你会看到”Webhook 地址”,把这个链接先复制到本地记事本暂存,继续接下来的操作
“参数”里面放上下面的内容,然后点击”完成”
点击”选择操作” > “发送飞书消息”,勾选 “群消息”,然后点击下面的输入框,点击”我管理的群组”(如果没有群组,你可以在飞书 app 上创建群组)
消息标题填写”TrendRadar 热点监控”
最关键的部分来了,点击 + 按钮,选择”Webhook 触发”,然后按照下面的图片摆放
FEISHU_WEBHOOK_URL👉 点击展开:钉钉机器人
GitHub Secret 配置(⚠️ Name 名称必须严格一致):
DINGTALK_WEBHOOK_URL(请复制粘贴此名称,不要手打)机器人设置步骤:
创建机器人(仅 PC 端支持):
配置机器人:
完成设置:
DINGTALK_WEBHOOK_URL注意:移动端只能接收消息,无法创建新机器人。
👉 点击展开:Telegram Bot
GitHub Secret 配置(⚠️ Name 名称必须严格一致):
Name(名称):
TELEGRAM_BOT_TOKEN(请复制粘贴此名称,不要手打)Secret(值):你的 Telegram Bot Token
Name(名称):
TELEGRAM_CHAT_ID(请复制粘贴此名称,不要手打)Secret(值):你的 Telegram Chat ID
说明:Telegram 需要配置两个 Secret,请分别点击两次”New repository secret”按钮添加
机器人设置步骤:
创建机器人:
@BotFather(大小写注意,有蓝色徽章勾勾,有类似 37849827 monthly users,这个才是官方的,有一些仿官方的账号注意辨别)/newbot命令创建新机器人123456789:AAHfiqksKZ8WmR2zSjiQ7_v4TMAKdiHm9T0)获取 Chat ID:
方法一:通过官方 API 获取
https://api.telegram.org/bot<你的Bot Token>/getUpdates"chat":{"id":数字}中的数字方法二:使用第三方工具
@userinfobot并发送/start配置到 GitHub:
TELEGRAM_BOT_TOKEN:填入第 1 步获得的 Bot TokenTELEGRAM_CHAT_ID:填入第 2 步获得的 Chat ID👉 点击展开:邮件推送(支持所有主流邮箱)
GitHub Secret 配置(⚠️ Name 名称必须严格一致):
Name(名称):
EMAIL_FROM(请复制粘贴此名称,不要手打)Secret(值):发件人邮箱地址
Name(名称):
EMAIL_PASSWORD(请复制粘贴此名称,不要手打)Secret(值):邮箱密码或授权码
Name(名称):
EMAIL_TO(请复制粘贴此名称,不要手打)Secret(值):收件人邮箱地址(多个收件人用英文逗号分隔,也可以和 EMAIL_FROM 一样,自己发送给自己)
Name(名称):
EMAIL_SMTP_SERVER(可选配置,请复制粘贴此名称)Secret(值):SMTP服务器地址(可留空,系统会自动识别)
Name(名称):
EMAIL_SMTP_PORT(可选配置,请复制粘贴此名称)Secret(值):SMTP端口(可留空,系统会自动识别)
说明:邮件推送需要配置至少3个必需 Secret(EMAIL_FROM、EMAIL_PASSWORD、EMAIL_TO),后两个为可选配置
支持的邮箱服务商(自动识别 SMTP 配置):
常见邮箱设置:
QQ邮箱:
EMAIL_PASSWORD填写授权码,而非 QQ 密码Gmail:
EMAIL_PASSWORD填写应用专用密码163/126邮箱:
EMAIL_PASSWORD填写授权码高级配置: 如果自动识别失败,可手动配置 SMTP:
EMAIL_SMTP_SERVER:如 smtp.gmail.comEMAIL_SMTP_PORT:如 587(TLS)或 465(SSL)**如果有多个收件人(注意是英文逗号分隔)**:
👉 点击展开:ntfy 推送(开源免费,支持自托管)
两种使用方式:
方式一:免费使用(推荐新手) 🆓
特点:
快速开始:
下载 ntfy 应用:
订阅主题(选择一个难猜的名称):
配置 GitHub Secret(⚠️ Name 名称必须严格一致):
Name(名称):
NTFY_TOPIC(请复制粘贴此名称,不要手打)Secret(值):填写你刚才订阅的主题名称
Name(名称):
NTFY_SERVER_URL(可选配置,请复制粘贴此名称)Secret(值):留空(默认使用 ntfy.sh)
Name(名称):
NTFY_TOKEN(可选配置,请复制粘贴此名称)Secret(值):留空
说明:ntfy 至少需要配置 1 个必需 Secret (NTFY_TOPIC),后两个为可选配置
测试:
方式二:自托管(完全隐私控制) 🔒
适合人群:有服务器、追求完全隐私、技术能力强
优势:
Docker 一键部署:
配置 TrendRadar:
在应用中订阅:
常见问题:
Q1: 免费版够用吗?
每天 250 条消息对大多数用户足够。按 30 分钟抓取一次计算,每天约 48 次推送,完全够用。
Q2: Topic 名称真的安全吗?
如果你选择随机的、足够长的名称(如
trendradar-zs-8492-news),暴力破解几乎不可能:推荐选择:
相关链接:
👉 点击展开:Bark 推送(iOS 专属,简洁高效)
GitHub Secret 配置(⚠️ Name 名称必须严格一致):
BARK_URL(请复制粘贴此名称,不要手打)Bark 简介:
Bark 是一款 iOS 平台的免费开源推送工具,特点是简单、快速、无广告。
使用方式:
方式一:使用官方服务器(推荐新手) 🆓
下载 Bark App:
获取推送 URL:
https://api.day.app/your_device_key)BARK_URL方式二:自建服务器(完全隐私控制) 🔒
适合人群:有服务器、追求完全隐私、技术能力强
Docker 一键部署:
配置 TrendRadar:
注意事项:
相关链接:
👉 点击展开:Slack 推送
GitHub Secret 配置(⚠️ Name 名称必须严格一致):
SLACK_WEBHOOK_URL(请复制粘贴此名称,不要手打)Slack 简介:
Slack 是团队协作工具,Incoming Webhooks 可以将消息推送到 Slack 频道。
设置步骤:
步骤 1:创建 Slack App
访问 Slack API 页面:
选择创建方式:
填写 App 信息:
TrendRadar或热点新闻监控)步骤 2:启用 Incoming Webhooks
导航到 Incoming Webhooks:
启用功能:
OFF切换到ON步骤 3:生成 Webhook URL
添加新的 Webhook:
选择目标频道:
#热点新闻)授权应用:
步骤 4:复制并保存 Webhook URL
查看生成的 URL:
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX复制 URL:
配置到 TrendRadar:
SLACK_WEBHOOK_URLconfig/config.yaml的slack_webhook_url字段docker/.env文件的SLACK_WEBHOOK_URL变量注意事项:
消息格式预览:
相关链接:
👉 点击展开:通用 Webhook 推送(支持 Discord、Matrix、IFTTT 等)
GitHub Secret 配置(⚠️ Name 名称必须严格一致):
Name(名称):
GENERIC_WEBHOOK_URL(请复制粘贴此名称,不要手打)Secret(值):你的 Webhook URL
Name(名称):
GENERIC_WEBHOOK_TEMPLATE(可选配置,请复制粘贴此名称)Secret(值):JSON 模板字符串,支持
{title}和{content}占位符通用 Webhook 简介:
通用 Webhook 支持任意接受 HTTP POST 请求的平台,包括但不限于:
配置示例:
Discord 配置
获取 Webhook URL:
配置模板:
GitHub Secret 配置:
GENERIC_WEBHOOK_URL:Discord Webhook URLGENERIC_WEBHOOK_TEMPLATE:{"content": "{content}"}自定义模板
模板支持两个占位符:
{title}- 消息标题{content}- 消息内容模板示例:
注意事项:
;分隔)3️⃣ 第三步:手动测试新闻推送
如何找到你的 Actions 页面:
https://github.com/你的用户名/TrendRadar/actions示例对比:
https://github.com/sansan0/TrendRadar/actionshttps://github.com/你的用户名/TrendRadar/actions测试步骤:
4️⃣ 第四步:配置说明(可选)
默认配置已可正常使用,如需个性化调整,了解以下文件即可:
config/config.yamlconfig/frequency_words.txtconfig/ai_analysis_prompt.txt.github/workflows/crawler.yml👉 详细配置教程:配置详解
5️⃣ 第五步:远程云存储 & 签到配置
v4.0.0 重要变更:引入「活跃度检测」机制,GitHub Actions 需定期签到以维持运行。
Actions→Check In→Run workflow关于远程云存储配置(请根据部署方式选择):
GitHub Actions 用户:
Docker / 本地用户:
👉 点击展开:远程云存储配置教程(以 Cloudflare R2 为例)
⚠️ 前置条件(重要):
根据 Cloudflare 平台规则,开通 R2 需绑定支付方式。
GitHub Secret 配置(需添加 4 项):
S3_BUCKET_NAMEtrendradar-data)S3_ACCESS_KEY_IDS3_SECRET_ACCESS_KEYS3_ENDPOINT_URLhttps://<account-id>.r2.cloudflarestorage.com)可选配置:
S3_REGIONauto,部分服务商可能需要指定)详细操作步骤(获取凭据):
进入 R2 概览:
R2对象存储。创建存储桶:
概述创建存储桶(Create bucket)。trendradar-data),点击创建存储桶。创建 API 令牌:
Account Details找到并点击Manage(Manage R2 API Tokens)。S3 API:https://<account-id>.r2.cloudflarestorage.com(这就是 S3_ENDPOINT_URL)创建 Account APl 令牌。github-action-write)。管理员读和写。仅适用于指定存储桶并选中你的桶(如trendradar-data)。创建 API 令牌,立即复制 显示的Access Key ID和Secret Access Key(只显示一次!)。6️⃣ 第六步:开启 AI 分析推送
这是 v5.0.0 的核心功能,让 AI 帮你总结和分析新闻,建议尝试。
配置方法: 在 GitHub Secrets (或
.env/config.yaml) 中添加:AI_API_KEY: 你的 API Key(支持 DeepSeek、OpenAI 等)AI_PROVIDER: 服务商名称(如deepseek,openai)就这样,无需复杂部署,下次推送时你就会看到智能分析报告了。
7️⃣ 第七步:🎉 部署成功!
恭喜!现在你可以开始享受 TrendRadar 带来的高效信息流了。
💬 加入社区:欢迎关注公众号「**硅基茶水间**」,分享你的使用心得和高级玩法。
8️⃣ 第八步:进阶:选择你的 AI 助手
TrendRadar 提供了两种 AI 使用方式,满足不同需求:
👉 结论:先用 AI 分析推送 满足日常需求;如果你是数据分析师或需要深度挖掘,再尝试 **AI 智能分析**。
⚙️ 配置详解
1. 我要看哪些平台?
👉 点击展开:选择资讯来源
配置位置:
config/config.yaml的platforms部分本项目的资讯数据来源于 newsnow ,你可以点击网站,点击[更多],查看是否有你想要的平台。
具体添加可访问 项目源代码,根据里面的文件名,在
config/config.yaml文件中修改platforms配置:2. 我关心什么内容?
在
frequency_words.txt文件中告诉机器人你想看什么,它就会帮你盯着。支持普通词、必须词、过滤词等多种玩法。华为++手机!!广告@@10[GLOBAL_FILTER]/pattern//\bai\b/=> 备注/\bai\b/ => AI相关2.1 基础语法
👉 点击展开:基础语法教程
配置位置:
config/frequency_words.txt1. 普通关键词 - 基础匹配
作用: 新闻标题包含其中任意一个词就会被捕获
2. 必须词
+词汇- 限定范围作用: 必须同时包含普通词和必须词才会被捕获
3. 过滤词
!词汇- 排除干扰作用: 包含过滤词的新闻会被直接排除,即使包含关键词
4. 数量限制
@数字- 控制显示数量(v3.2.0 新增)作用: 限制该关键词组最多显示的新闻条数
配置优先级:
@数字> 全局配置 > 不限制5. 全局过滤
[GLOBAL_FILTER]- 全局排除指定内容(v3.5.0 新增)作用: 在任何情况下过滤包含指定词的新闻,优先级最高
使用场景:
过滤优先级: 全局过滤 > 词组内过滤(
!) > 词组匹配区域说明:
[GLOBAL_FILTER]:全局过滤区,包含的词在任何情况下都会被过滤[WORD_GROUPS]:词组区,保持现有语法(!、+、@)匹配示例:
注意事项:
!前缀)6. 正则表达式
/pattern/- 精确匹配模式(v4.7.0 新增)普通关键词使用子字符串匹配,这在中文环境下很方便,但在英文环境可能会产生误匹配。例如
ai会匹配到training中的ai。使用正则表达式语法
/pattern/可以实现精确匹配:作用: 使用正则表达式进行匹配,支持所有 Python 正则语法
常用正则模式:
/\bword\b//\bai\b/匹配 “AI” 但不匹配 “training”/(?<![a-z])ai(?![a-z])//^breaking//发布$//苹果|华为|小米/|)匹配示例:
组合使用:
注意事项:
re.IGNORECASE)/pattern/i等 JavaScript 风格写法(flags 会被忽略,因为默认已启用忽略大小写)+)、过滤词(!)💡 不会写正则?让 AI 帮你生成!
如果你不熟悉正则表达式,可以直接让 ChatGPT / Gemini / DeepSeek 帮你生成。只需告诉 AI:
AI 会给你类似这样的结果:
/(?<![a-zA-Z])ai(?![a-zA-Z])/7. 显示名称
=> 备注- 自定义显示文本(v4.7.0 新增)正则表达式在推送消息和 HTML 页面显示时可能不太友好。使用
=> 备注语法可以设置显示名称:作用: 推送消息和 HTML 页面显示 “AI 相关” 而不是复杂的正则表达式
语法格式:
匹配示例:
/(?<![a-z])ai(?![a-z])/+人工智能(?<![a-z])ai(?![a-z]) 人工智能/(?<![a-z])ai(?![a-z])/ => AI 相关+人工智能AI 相关注意事项:
🔗 词组功能 - 空行分隔的重要作用
核心规则: 用空行分隔不同的词组,每个词组独立统计
示例配置:
词组解释及匹配效果:
第1组 - 手机新品类:
匹配示例:
第2组 - 股市行情类:
匹配示例:
第3组 - 足球赛事类:
📝 配置技巧
1. 从宽到严
2. 避免过度复杂
❌ 不推荐: 一个词组包含太多词汇
✅ 推荐: 拆分成多个精确的词组
2.2 高级配置(v3.2.0 新增)
👉 点击展开:高级配置教程
关键词排序优先级
配置位置:
config/config.yamlfalse(默认)true示例: 配置顺序 A、B、C,热点数 A(3条)、B(10条)、C(5条)
false:B(10条) → C(5条) → A(3条)true:A(3条) → B(10条) → C(5条)全局显示数量限制
Docker 环境变量:
综合示例:
最终效果: 按配置顺序显示 特斯拉(20条) → 华为(10条) → 比亚迪(5条)
3. 推送模式选哪个?
👉 点击展开:三种推送模式详细对比
配置位置:
config/config.yaml的report.mode详细对比表格
daily+ 新增新闻区域
特点:看全天完整趋势,不漏掉任何热点
提醒:会包含之前推送过的新闻
current+ 新增新闻区域
特点:实时了解当前热度排名变化
提醒:持续在榜的新闻每次都会出现
incremental特点:零重复,只看首次出现的新闻
适合:高频监控、避免信息打扰
实际推送效果举例
假设你监控”苹果”关键词,每小时执行一次:
说明:
daily:累积展示当天所有新闻(A、B、C 都保留)current:展示当前榜单的新闻(排名变化,新闻D上榜,新闻A掉榜)incremental:只推送新出现的新闻(避免重复干扰)常见问题
⚠️ 增量模式重要提示
4. 调整热点算法
👉 点击展开:自定义热点权重
配置位置:
config/config.yaml的advanced.weight部分当前默认的配置是平衡性配置
两个核心场景
追实时热点型:
适用人群:自媒体博主、营销人员、想快速了解当下最火话题的用户
追深度话题型:
适用人群:投资者、研究人员、新闻工作者、需要深度分析趋势的用户
调整的方法
rank,在乎持续性就调大frequency核心思路:追求速度和时效性的用户提高排名权重,追求深度和稳定性的用户提高频次权重。
5. 我收到的消息长什么样?
👉 点击展开:消息样式预览
推送示例
📊 热点词汇统计
🔥 [1/3] AI ChatGPT : 2 条
[百度热搜] 🆕 ChatGPT-5正式发布 [1] - 09时15分 (1次)
[今日头条] AI芯片概念股暴涨 [3] - [08时30分 ~ 10时45分] (3次)
━━━━━━━━━━━━━━━━━━━
📈 [2/3] 比亚迪 特斯拉 : 2 条
[微博] 🆕 比亚迪月销量破纪录 [2] - 10时20分 (1次)
[抖音] 特斯拉降价促销 [4] - [07时45分 ~ 09时15分] (2次)
━━━━━━━━━━━━━━━━━━━
📌 [3/3] A股 股市 : 1 条
🆕 本次新增热点新闻 (共 2 条)
百度热搜 (1 条):
微博 (1 条):
更新时间:2025-01-15 12:30:15
消息格式说明
6. Docker 部署
镜像说明:
TrendRadar 提供两个独立的 Docker 镜像,可根据需求选择部署:
wantcat/trendradarwantcat/trendradar-mcp👉 点击展开:Docker 部署完整指南
方式一:使用 docker compose(推荐)
创建项目目录和配置:
方式 1-A:使用 git clone(推荐,最简单)
方式 1-B:使用 wget 下载配置文件
配置文件说明:
配置分工原则(v4.6.0 优化):
config/config.yaml- 功能配置(报告模式、推送设置、存储格式、推送窗口、AI 分析等)config/frequency_words.txt- 关键词配置(设置你关心的热点词汇)config/ai_analysis_prompt.txt- AI 提示词配置(自定义 AI 分析角色和输出格式,v5.0.0 新增)docker/.env- 敏感信息 + Docker 特有配置(webhook URLs、API Key、S3 密钥、定时任务)⚙️ 环境变量覆盖机制(v3.0.5+)
.env文件中的环境变量会覆盖config.yaml中的对应配置:ENABLE_WEBSERVERtrue/falseWEBSERVER_PORT8080FEISHU_WEBHOOK_URLnotification.channels.feishu.webhook_urlhttps://...;分隔)AI_ANALYSIS_ENABLEDai_analysis.enabledtrue/falseAI_API_KEYai.api_keysk-xxx...AI_PROVIDERai.providerdeepseek/openai/geminiS3_*storage.remote.*配置优先级:环境变量 > config.yaml
使用方法:
.env文件,填写需要的配置docker compose up -d启动服务:
选项 A:启动所有服务(推送 + AI 分析)
选项 B:仅启动新闻推送服务
选项 C:仅启动 MCP AI 分析服务
查看运行状态:
方式二:本地构建(开发者选项)
如果需要自定义修改代码或构建自己的镜像:
构建并启动服务:
镜像更新
可用镜像:
wantcat/trendradarwantcat/trendradar-mcp服务管理命令
数据持久化
生成的报告和数据默认保存在
./output目录下,即使容器重启或删除,数据也会保留。📊 网页版报告访问路径:
TrendRadar 生成的当日汇总 HTML 报告会同时保存到两个位置:
output/index.htmlindex.htmloutput/html/YYYY-MM-DD/当日汇总.html本地访问示例:
为什么有两个 index.html?
output/index.html:Docker Volume 挂载到宿主机,本地可直接打开index.html:GitHub Actions 推送到仓库,GitHub Pages 自动部署故障排查
MCP 服务部署(AI 分析功能)
如果需要使用 AI 分析功能,可以部署独立的 MCP 服务容器。
架构说明:
flowchart TB subgraph trendradar["trendradar"] A1[定时抓取新闻] A2[推送通知] end subgraph trendradar-mcp["trendradar-mcp"] B1[127.0.0.1:3333] B2[AI 分析接口] end subgraph shared["共享卷"] C1["config/ (ro)"] C2["output/ (ro)"] end trendradar --> shared trendradar-mcp --> shared快速启动:
如果已按照 方式一:使用 docker compose 完成部署,只需启动 MCP 服务:
单独启动 MCP 服务(不使用 docker compose):
验证服务:
在 AI 客户端中配置:
MCP 服务启动后,根据不同客户端进行配置:
Cherry Studio(推荐,GUI 配置):
streamableHttphttp://127.0.0.1:3333/mcpClaude Desktop / Cline(JSON 配置):
7. 推送内容怎么显示?
👉 点击展开:自定义推送样式和内容
配置位置:
config/config.yaml的report和display部分常用配置项说明
modedailydisplay_modekeywordkeyword=按关键词分组(如”AI”),platform=按平台分组(如”微博”)rank_threshold5sort_by_position_firstfalsefalse=热度高的排前面,true=你配置的词排前面max_news_per_keyword00表示不限制display.region_order分组方式对比(display_mode)
你是想看”这个话题下有哪些新闻”,还是”这个平台上有哪些新闻”?
keyword(默认)[平台名]platform[关键词]区域显示顺序(region_order)
通过调整
display.region_order列表的顺序,可以控制推送消息中各区域的显示位置。默认顺序:新增热点 → 热榜 → RSS → 独立展示区 → AI 分析
自定义示例:想让 AI 分析放在最前面?
注意:区域需同时满足两个条件才会显示:
region_order列表中display.regions中对应开关为true区域开关(regions)
通过
display.regions控制各区域是否在推送中显示:hotlisttruenew_itemsfalsersstruestandalonefalseai_analysistrue排序优先级(sort_by_position_first)
假设你配置了关键词:1.特斯拉,2.比亚迪。 实际热度:比亚迪(10条),特斯拉(3条)。
false(默认)true独立展示区(standalone)
场景:有些平台(比如知乎热榜、HackerNews),我想完整看一遍,不管有没有匹配我的关键词。
8. 什么时候给我推送?
👉 点击展开:设置推送时间(调度系统)
配置位置:
config/config.yaml的schedule部分 +config/timeline.yaml快速上手
只需在
config.yaml中选一个预设模板,不需要编辑timeline.yaml:可选预设模板
morning_eveningalways_onoffice_hoursnight_owlcustomtimeline.yaml底部的 custom 段完全自定义
如果预设模板都不满足需求,可以编辑
config/timeline.yaml底部的custom段,自由定义时间段、日计划和周映射。详见timeline.yaml文件内的注释说明。重要提示
9. 多久运行一次?
👉 点击展开:设置自动运行频率
配置位置:
.github/workflows/crawler.yml的schedule部分怎么修改运行频率?
GitHub Actions 使用一种叫 “Cron” 的时间格式,不需要深入理解,直接复制下面的代码替换即可。
配置位置:
.github/workflows/crawler.yml文件中的schedule部分- cron: "0 * * * *"- cron: "*/30 * * * *"- cron: "0 0 * * *"0是因为 UTC 时间 (0点) = 北京时间 (8点)- cron: "*/30 0-14 * * *"- cron: "0 0,6,12 * * *"⚠️ 两个重要提醒
时差问题:GitHub 的服务器在国外,用的是 UTC 时间。
不要太频繁:建议间隔不要少于 30 分钟。
手把手修改步骤
.github/workflows/crawler.yml文件cron: "..."那一行,把引号里的内容换成上面的”代码”10. 推送到多个群/设备
👉 点击展开:同时推送给多个接收者
怎么同时推送到多个地方?
很简单,在配置时用分号
;把多个地址隔开就行了。举个例子: 假设你有两个飞书群,想同时收到推送:
https://.../webhook/aaahttps://.../webhook/bbb配置时填写:
https://.../webhook/aaa;https://.../webhook/bbb支持多账号的平台
;分隔多个 Webhook URL;分隔多个 Key URL;分隔Token1 对应 ChatID1
Token2 对应 ChatID2
;分隔token1;;token3(中间那个是空的)常用配置示例 (GitHub Secrets / .env)
11. 数据保存在哪里?
👉 点击展开:选择数据存储位置
数据会存在哪里?
系统会自动帮你选择最合适的地方,你通常不需要操心:
output/文件夹里,随时可以查看。怎么配置云存储?(GitHub Actions 用户必看)
如果你是用 GitHub Actions 运行,你需要一个”云端硬盘”来存数据。例如使用 Cloudflare R2(因为有免费额度)。
在 GitHub Secrets 里添加这 5 个变量:
STORAGE_BACKENDremoteS3_BUCKET_NAMES3_ACCESS_KEY_IDS3_SECRET_ACCESS_KEYS3_ENDPOINT_URL数据会保存多久?
默认情况下,我们不会自动删除你的数据。但如果你觉得数据太多占空间,可以设置”自动清理”。
配置位置:
config/config.yaml推送时间不对?(时区设置)
如果你身在海外,或者发现推送时间跟你的本地时间对不上,可以修改时区。
配置位置:
config/config.yamlAmerica/Los_AngelesEurope/London12. 让 AI 帮我分析热点
👉 点击展开:开启 AI 智能分析功能
AI 能帮我做什么?
开启这个功能后,AI 会像一个专业的分析师,在推送每一批新闻时:
包含内容:热点趋势总结、舆论风向判断、跨平台关联分析、潜在影响评估等。
怎么开启 AI 分析?
最简单的方法是通过环境变量配置(推荐 GitHub Secrets 或 .env)。
必需的配置项:
AI_ANALYSIS_ENABLEDtrueAI_API_KEYsk-xxxxxxAI_MODELdeepseek/deepseek-chatprovider/model)支持的 AI 提供商(基于 LiteLLM,支持 100+ 提供商):
deepseek/deepseek-chatopenai/gpt-4oopenai/gpt-4o-minigemini/gemini-1.5-flashgemini/gemini-1.5-proAI_API_BASE使用可选配置项:
AI_API_BASEAI_TEMPERATURE1.0AI_MAX_TOKENS5000AI_TIMEOUT120AI_NUM_RETRIES2进阶玩法:AI 翻译
如果你关注了国外的 RSS 源(比如 Hacker News),AI 可以帮你把内容翻译成中文推送。
配置位置:
config/config.yaml进阶玩法:自定义 AI “人设”
觉得 AI 说话太官方?你可以修改它的提示词,让它变成你喜欢的风格(比如”毒舌评论员”、”资深投资顾问”)。
config/ai_analysis_prompt.txt✨ AI 智能分析
TrendRadar v3.0.0 新增了基于 MCP (Model Context Protocol) 的 AI 分析功能,让你可以通过自然语言与新闻数据对话,进行深度分析。
⚠️ 使用前必读
重要提示:AI 功能需要本地新闻数据支持
AI 分析功能不是直接查询网络实时数据,而是分析你本地已积累的新闻数据(存储在
output文件夹中)使用说明:
项目自带测试数据:
output目录默认包含 2025-12-21~2025-12-27 一周的热榜新闻数据,可用于快速体验 AI 功能查询限制:
获取最新数据:
1. 快速部署
Cherry Studio 提供 GUI 配置界面,5 分钟快速部署,复杂的部分是一键安装的。
图文部署教程:现已更新到我的公众号,回复 “mcp” 即可
详细部署教程:README-Cherry-Studio.md
部署模式说明:
2. 学习与 AI 对话的姿势
详细对话教程:README-MCP-FAQ.md
🔌 MCP 客户端
TrendRadar MCP 服务支持标准的 Model Context Protocol (MCP) 协议,可以接入各种支持 MCP 的 AI 客户端进行智能分析。
支持的客户端
注意事项:
/path/to/TrendRadar替换为你的项目实际路径C:\Users\YourName\TrendRadar👉 点击展开:Cursor
方式一:HTTP 模式
启动 HTTP 服务:
配置 Cursor:
项目级配置(推荐): 在项目根目录创建
.cursor/mcp.json:全局配置: 在用户目录创建
~/.cursor/mcp.json(同样内容)使用步骤:
搜索今天的"AI"相关新闻方式二:STDIO 模式(推荐)
创建
.cursor/mcp.json:👉 点击展开:VSCode (Cline/Continue)
Cline 配置
在 Cline 的 MCP 设置中添加:
HTTP 模式:
STDIO 模式(推荐):
Continue 配置
编辑
~/.continue/config.json:使用示例:
👉 点击展开:MCP Inspector(调试工具)
MCP Inspector 是官方调试工具,用于测试 MCP 连接:
使用步骤
启动 TrendRadar HTTP 服务:
启动 MCP Inspector:
在浏览器中连接:
http://localhost:3333/mcp👉 点击展开:其他支持 MCP 的客户端
任何支持 Model Context Protocol 的客户端都可以连接 TrendRadar:
HTTP 模式
服务地址:
http://localhost:3333/mcp基本配置模板:
STDIO 模式(推荐)
基本配置模板:
注意事项:
/path/to/TrendRadar为实际项目路径C:\Users\...常见问题
👉 点击展开:Q1: HTTP 服务无法启动?
检查步骤:
确认端口 3333 未被占用:
检查项目依赖是否安装:
查看详细错误日志:
尝试自定义端口:
👉 点击展开:Q2: 客户端无法连接到 MCP 服务?
解决方案:
STDIO 模式:
which uv或where uv)HTTP 模式:
http://localhost:3333/mcp)通用检查:
👉 点击展开:Q3: 工具调用失败或返回错误?
可能原因:
数据不存在:
参数错误:
YYYY-MM-DDzhihu,weibo等配置问题:
config/config.yaml存在config/frequency_words.txt存在📚 项目相关
其余项目
📄 许可证
GPL-3.0 License
🔝 回到顶部