TrendRadar 本地部署:Docker 配置、AI 模型接入与 MCP 服务对接
TrendRadar 项目支持通过 Docker 本地部署构建个人 AI 热点情报系统。文章详解环境准备、镜像拉取、局域网访问配置及飞书推送修复方案。利用 NVIDIA 免费模型 API 实现零成本深度分析,并通过 MCP 协议对接 Cherry Studio 进行对话式情报研判。涵盖配置文件修改、关键词正则匹配优化及通知渠道设置等关键步骤。

TrendRadar 项目支持通过 Docker 本地部署构建个人 AI 热点情报系统。文章详解环境准备、镜像拉取、局域网访问配置及飞书推送修复方案。利用 NVIDIA 免费模型 API 实现零成本深度分析,并通过 MCP 协议对接 Cherry Studio 进行对话式情报研判。涵盖配置文件修改、关键词正则匹配优化及通知渠道设置等关键步骤。

在这个大数据算法横行的时代,我们每天被头条、抖音等平台投喂大量信息,不仅容易陷入信息茧房,还浪费了大量时间筛选有效资讯。
核心需求:
TrendRadar 的核心价值:
在开始之前,请确保你拥有以下基础环境:
首先,将项目代码克隆到本地:
git clone https://github.com/sansan0/TrendRadar.git
⚠️ 避坑提示:官方文档中容易忽略的一点是,必须进入
docker子目录才能执行 compose 命令。
# 1. 进入项目 docker 目录
cd TrendRadar/docker
# 2. 拉取最新镜像(注意网络连接)
docker compose pull
# 3. 启动所有服务(trendradar 推送服务 + trendradar-mcp AI 分析服务)
docker compose up -d
默认配置通常只适合本机测试,为了在局域网访问以及更符合个人习惯,我们需要修改 docker/docker-compose.yml 和 config/config.yaml。
默认情况下,Web Server 仅监听 127.0.0.1,导致局域网其他设备无法查看生成的 AI 新闻报告。
修改文件:docker/docker-compose.yml
修改内容:去掉 IP 限制,直接暴露端口。
# 修改前
ports:
- "127.0.0.1:${WEBSERVER_PORT:-8080}:${WEBSERVER_PORT:-8080}"
- "127.0.0.1:3333:3333"
# 修改后(允许局域网访问 Web 报告和 MCP 服务)
ports:
- "${WEBSERVER_PORT:-8080}:${WEBSERVER_PORT:-8080}"
- "3333:3333"
同时,在 docker/.env 中确保开启了 Web 服务:
ENABLE_WEBSERVER=true
修改文件:config/config.yaml
配置 AI 模型(以 NVIDIA 免费 API 为例):
💡 小技巧:NVIDIA 提供了许多免费的 API 端点(build.nvidia.com),兼容 OpenAI 格式。model 参数注意添加『openai/』头部。
ai:
# 格式:provider/model_name
# NVIDIA 提供的模型示例
model: "openai/minimaxai/minimax-m2.5"
# 你的 API Key
api_key: "nvapi-your_custom_api_key..."
# 关键:自定义 API 端点(NVIDIA 需要这个地址)
api_base: "https://integrate.api.nvidia.com/v1"
timeout: 120
temperature: 1.0
max_tokens: 131072
定制新闻源:根据自己的兴趣保留或删除平台(如只看 GitHub、掘金、华尔街见闻)。
platforms:
enabled: true
sources:
# 综合类
- id: "toutiao"
name: "今日头条"
- id: "baidu"
name: "百度热搜"
- id: "ifeng"
name: "凤凰网"
- id: "thepaper"
name: "澎湃新闻"
- id: "tencent-hot"
name: "腾讯新闻 综合早报"
# 财经投资
- id: "wallstreetcn-hot"
name: "华尔街见闻"
- id: "cls-hot"
name: "财联社热门"
- id: "gelonghui"
name: "格隆汇"
- id: "xueqiu"
name: "雪球"
- id: "jin10"
name: "金十数据"
- id:
修改文件:config/frequency_words.txt
建议使用正则表达式进行精准匹配,避免误报。例如:
[WORD_GROUPS]
# ═══════════════════════════════════════════════════════════════
# 科技领域
# ═══════════════════════════════════════════════════════════════
# ▼ 优化:改用 /\bai\b/i,等价于原正则但更简洁规范,/i 负责忽略大小写,\b 负责边界
[AI 相关]
/\bai\b/i
人工智能 大模型 神经网络 机器学习
/深度求索 | 幻方量化 | 梁文锋|\bDeepSeek\b/ => DeepSeek
/\bOpenAI\b|\bChatGPT\b|\bSora\b|\bDALL-E\b|\bSam Altman\b|\bGreg Brockman\b/i => OpenAI
/\bAnthropic\b|\bClaude\b|\bDario Amodei\b/i => Claude
[字节跳动]
/字节 | 张一鸣 | 梁汝波 | 抖音|\bByteDance\b|\bTikTok\b|\bDouyin\b|\bLark\b|\bCapCut\b/ @10
# ▼ 优化:补全主流国产大模型;加 /i 忽略大小写,统一去除大小写重复变体,补全 \b 边界
/通义千问|\bqwen\b|\bminimax\b|智谱|\bglm\b|月之暗面|\bKimi\b|零一万物 | 阶跃星辰 | 混元 | 文心|\bERNIE\b|豆包|\bDoubao\b/i => 国产大模型
/自动驾驶 | 无人驾驶 | 智驾/ => 自动驾驶
[具身智能]
机器人 机器狗 机械臂
[芯片]
芯片 光刻机 半导体 内存 存储 显存 显卡
# ═══════════════════════════════════════════════════════════════
# 企业与品牌
# ═══════════════════════════════════════════════════════════════
/英伟达 | 黄仁勋|\bNVIDIA\b|\bGeForce\b|\bRTX\b|\bCUDA\b|\bJensen Huang\b/i => 英伟达
/苏姿丰 | 锐龙 | 霄龙|\bAMD\b|\bRyzen\b|\bEPYC\b|\bRadeon\b|\bLisa Su\b/i => AMD
/机械狗 | 四足/ => 机器狗
/宇树 | 王兴兴|\bUnitree\b/ => 宇树机器人
/智元 | 灵犀 | 稚晖君 | 彭志辉|\bAgiBot\b/ => 智元机器人
/众擎|\bEngineAI\b|赵同阳/ => 众擎机器人
/微软|\bMicrosoft\b|\bWindows\b|\bAzure\b|\bSatya Nadella\b|\bCopilot\b/i => 微软
/谷歌 | 皮查伊 | 安卓 | 油管|\bGoogle\b|\bAlphabet\b|\bAndroid\b|\bChrome\b|\bYouTube\b|\bGemini\b|\bDeepMind\b|\bWaymo\b/i => 谷歌
/库克|\biPhone\b|\biPad\b|\bMacBook\b|\biOS\b|\bVision Pro\b|\bAirPods\b|\bApple\b|\bTim Cook\b/i => 苹果
config/config.yaml 配置信息
notification:
enabled: true
# 是否启用通知功能(总开关)
# ⚠️ 开启调度系统后,此项仍为总开关:
# false → 永远不推送(无论调度怎么设置)
# true → 由调度的 push 字段控制何时推送
channels:
feishu:
webhook_url: "https://open.feishu.cn/open-apis/bot/v2/hook/xxx***xxx"
# 启动时开启 webserver 服务
ENABLE_WEBSERVER=true
# 开启 AI 分析
AI_ANALYSIS_ENABLED=true
# 每天 08:30 和 20:30 进行消息推送
CRON_SCHEDULE=30 8,20 * * *
# 运行模式:cron/once
RUN_MODE=cron
# 启动时立即执行一次
IMMEDIATE_RUN=true
这是本次部署中最大的坑。默认代码在推送飞书消息时,使用的是 text 类型,导致飞书无法渲染 Markdown 语法(如 加粗、[链接]),体验极差。
问题现象:飞书收到的消息全是 **加粗** 这样的源码,没有格式。
原因分析:飞书 API 要求 Markdown 内容必须通过 interactive(卡片)类型的 lark_md 标签发送。
🛠️ 修复方案(代码修正):
我们需要修改 Python 源码。如果你使用 Docker 映射了代码目录,可以直接修改;否则需要进入容器修改。
trendradar/notification/senders.py找到 send_to_feishu 函数,将原来的 text 类型 payload 替换为 interactive 卡片类型。
# 修改前:
# payload = {
# "msg_type": "text",
# "content": {
# "text": batch_content,
# },
# }
# 修改后:
if is_flow_webhook:
# 兼容飞书捷径/自动化流程的 Webhook
payload = {"msg_type": "text", "content": {"text": batch_content}}
else:
# 标准飞书机器人 Webhook,使用卡片渲染 Markdown
payload = {
"msg_type": "interactive",
"card": {
"header": {
"title": {"tag": "plain_text", "content": "AI 热点推送"},
"template": "blue"
},
"elements": [
{
"tag": "div",
"text": {
"tag": "lark_md",
# 关键标签
"content": batch_content
}
}
]
}
}
注意:同样的逻辑也需要应用到
trendradar/notification/dispatcher.py和mcp_server/tools/notification.py中,确保所有推送入口(包括 RSS 更新通知和 MCP 工具调用)都能正确渲染 Markdown。
docker/docker-compose.ymlvolumes 中添加 - ../trendradar:/app/trendradar
services:
restart: unless-stopped
ports:
- "${WEBSERVER_PORT:-8080}:${WEBSERVER_PORT:-8080}"
volumes:
- ../config:/app/config:ro
- ../output:/app/output
- ../trendradar:/app/trendradar
environment:
- TZ=Asia/Shanghai
修复后的飞书推送将正确显示 Markdown 格式,包含标题、列表和表格。
局域网内可通过浏览器访问生成的 AI 新闻报告。
部署了 MCP 服务后,TrendRadar 就不再只是一个单向的推送工具,而是可以对话的知识库。
确保在步骤 4.1 中已经开放了 3333 端口,且 docker-compose.yml 中包含了 trendradar-mcp 服务。
局域网地址示例:http://192.168.1.100:3333
http://192.168.xxx.xxx:3333/mcp (请替换为你部署机器的实际 IP)连接成功后,你可以在 Cherry Studio 中直接在这个 MCP 频道下提问:
Prompt: "我想了解 'AI' 这个话题,请依次完成以下步骤:搜索今天的相关新闻分析最近一周的热度趋势对比各平台的关注度分析最近一周的情感倾向 请展示每个步骤的完整结果。"
AI 将会自动调用 TrendRadar 的数据库,生成包含图表数据(如热度指数、情感占比、平台覆盖率)的专业分析报告。
# AI 话题分析与总结
## 🧑💻 User
我想了解'ai'这个话题,请依次完成以下步骤,并【展示每个步骤的完整结果】:
1. 搜索今天的相关新闻
2. 分析最近一周的热度趋势
3. 对比各平台的关注度
4. 分析最近一周的情感倾向
【重要】:请将 4 个步骤的结果全部展示出来,不要只展示最后一步。
---
## 🤖 Assistant
我来帮你完成关于"AI"话题的全面分析。让我依次执行 4 个步骤,并展示每个步骤的完整结果。
## 步骤 1:搜索今天的 AI 相关新闻
## 步骤 2:分析最近一周的热度趋势
## 步骤 3:对比各平台的关注度
## 步骤 4:分析最近一周的情感倾向
# AI 话题综合分析报告
根据 4 个步骤的完整分析结果,以下是关于"AI"话题的全面洞察:
...
通过本次本地部署,我们成功实现了:

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online