TrendRadar 本地部署指南
本文基于 TrendRadar 项目,详细拆解如何通过 Docker 本地部署一套个人专属的 AI 热点情报系统。涵盖从环境准备、Docker 镜像拉取、局域网访问配置、飞书推送修复到 Cherry Studio MCP 服务对接的全流程。
1. 背景与需求
在大数据算法横行的时代,我们每天被平台投喂大量信息,容易陷入信息茧房。核心需求如下:
- 拒绝算法绑架:需要个人定制化的新闻推送服务。
- 趋势追踪:按周期追踪特定领域的趋势和热点。
- AI 深度分析:不仅看新闻,还要 AI 总结、分析情感倾向,甚至通过对话深度探索。
TrendRadar 的核心价值:
- 零成本 AI 分析:支持接入免费的 NVIDIA 模型接口。
- 定制推送:定期推送到飞书、钉钉等即时通讯软件。
- MCP 协议支持:通过 Model Context Protocol (MCP) 协议,让 AI 工具直接读取新闻数据库。
2. 环境准备
确保拥有以下基础环境:
- 操作系统:Ubuntu 22.04(实体机或虚拟机均可)。
- 网络环境:需要能够通畅访问 GitHub 和 Docker Hub。
- 基础工具:Git, Docker, Docker Compose。
- AI 资源:大模型 API Key(推荐申请 NVIDIA 的免费 API,或者使用 DeepSeek、OpenAI)。
- 客户端工具:Cherry Studio(用于通过 MCP 与 AI 对话)。
3. 部署实战
3.1 下载代码仓
将项目代码克隆到本地:
git clone https://github.com/sansan0/TrendRadar.git
3.2 启动 Docker 容器
⚠️ 提示:必须进入
docker子目录才能执行 compose 命令。
# 1. 进入项目 docker 目录
cd TrendRadar/docker
# 2. 拉取最新镜像
docker compose pull
# 3. 启动所有服务
docker compose up -d
4. 关键配置调整
默认配置通常只适合本机测试,需修改 docker/docker-compose.yml 和 config/config.yaml。
4.1 局域网访问配置
默认 Web Server 仅监听 127.0.0.1,需去掉 IP 限制以允许局域网访问。
修改文件:docker/docker-compose.yml
# 修改前
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
4.2 配置新闻源与 AI 模型
修改文件:config/config.yaml
配置 AI 模型(以 NVIDIA 免费 API 为例):
ai:
# 格式:provider/model_name
model: "openai/minimaxai/minimax-m2.5"
api_key: "nvapi-your_custom_api_key..."
# 关键:自定义 API 端点
api_base: "https://integrate.api.nvidia.com/v1"
timeout: 120
temperature: 1.0
max_tokens: 131072
定制新闻源:根据自己的兴趣保留或删除平台。
platforms:
enabled: true
sources:
- id: "toutiao"
name: "今日头条"
- id: "bilibili-hot-search"
name: "bilibili 热搜"
- id: "github"
name: "GitHub"
# ... 更多平台配置
4.3 优化关键词匹配
修改文件:config/frequency_words.txt
建议使用正则表达式进行精准匹配。
[WORD_GROUPS]
# AI 相关
/\bai\b/i => AI
/\bDeepSeek\b/ => DeepSeek
/\bOpenAI\b/ => OpenAI
# 企业与品牌
/英伟达|黄仁勋|\bNVIDIA\b/i => 英伟达
/微软|\bMicrosoft\b/i => 微软
4.4 推送配置
修改文件:config/config.yaml
notification:
enabled: true
channels:
feishu:
webhook_url: "https://open.feishu.cn/open-apis/bot/v2/hook/xxx***xxx"
4.5 Docker 全局配置
# 启动时开启 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
5. 避坑指南:解决飞书推送 Markdown 不渲染问题
默认代码在推送飞书消息时使用的是 text 类型,导致无法渲染 Markdown 语法。
原因分析:飞书 API 要求 Markdown 内容必须通过 interactive(卡片)类型的 lark_md 标签发送。
🛠️ 修复方案:
修正 1:trendradar/notification/senders.py
找到 send_to_feishu 函数,将 payload 替换为 interactive 卡片类型。
# 修改后
if is_flow_webhook:
payload = {"msg_type": "text", "content": {"text": batch_content}}
else:
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。
修正 2:docker/docker-compose.yml
volumes 中添加代码映射以便修改源码。
--- a/docker/docker-compose.yml
+++ b/docker/docker-compose.yml
@@ -5,11 +5,12 @@ 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
6. 成果展示
6.1 飞书推送
修复后可正确显示加粗、链接等格式。
6.2 Webserver
局域网内可正常访问生成的 AI 新闻报告。
7. 进阶玩法:接入 Cherry Studio 进行 AI 对话
7.1 Server 端配置
确保开放了 3333 端口,且包含 trendradar-mcp 服务。
局域网地址示例:http://192.168.1.100:3333
7.2 Cherry Studio 客户端配置
- 添加模型服务:设置中添加 NVIDIA 或其他兼容 OpenAI 的服务商,填入 API Key。
- 添加 MCP 服务器:
- 名称:TrendRadar MCP
- 类型:可流式传输的 HTTP (streamableHttp)
- URL:
http://192.168.xxx.xxx:3333/mcp
7.3 效果展示
连接成功后,可在 Cherry Studio 中提问:
Prompt: "我想了解 'AI' 这个话题,请依次完成以下步骤:搜索今天的相关新闻,分析最近一周的热度趋势,对比各平台的关注度,分析最近一周的情感倾向。"
AI 将会自动调用 TrendRadar 的数据库,生成包含图表数据的专业分析报告。
8. 总结
通过本次本地部署,成功实现了:
- 数据自主:所有新闻数据存储在本地 SQLite/Docker 卷中。
- 体验升级:修复了飞书推送的渲染 bug。
- 智能加持:利用免费的 NVIDIA 大模型实现了零成本的热点摘要。
- 深度交互:通过 MCP + Cherry Studio,把'看新闻'变成了'研判情报'。
参考资料:


