TrendRadar 本地部署指南:构建个人 AI 热点情报系统
在大数据算法横行的时代,我们每天被平台'投喂'大量信息,不仅容易陷入信息茧房,还浪费了大量时间筛选有效资讯。我们需要一个个人定制化的新闻推送服务,能够按周期追踪特定领域的趋势和热点,并支持 AI 深度分析。
TrendRadar 项目通过 Docker 本地部署,接入免费的 NVIDIA 模型接口,实现零成本的深度热点分析与趋势追踪。它支持定期推送到飞书、钉钉等即时通讯软件,并通过 Model Context Protocol (MCP) 协议,让 AI 工具(如 Cherry Studio)直接读取新闻数据库,进行深度对话分析。
环境准备
在开始之前,请确保你拥有以下基础环境:
- 操作系统:Ubuntu 22.04(实体机或 VMware 虚拟机均可)。
- 网络环境:需要能够通畅访问 GitHub 和 Docker Hub。
- 基础工具:Git, Docker, Docker Compose。
- AI 资源:大模型 API Key(推荐申请 NVIDIA 的免费 API,或者使用 DeepSeek、OpenAI)。
- 客户端工具:Cherry Studio(用于通过 MCP 与 AI 对话)。
部署实战
1. 拉取代码
将项目代码克隆到本地:
git clone https://github.com/sansan0/TrendRadar.git
2. 启动容器
官方文档中容易忽略的一点是,必须进入 docker 子目录才能执行 compose 命令。
cd TrendRadar/docker
docker compose pull
docker compose up -d
关键配置调整
默认配置通常只适合本机测试,为了在局域网访问以及更符合个人习惯,我们需要修改配置文件。
开放局域网访问
默认情况下,Web Server 仅监听 127.0.0.1,导致局域网其他设备无法查看生成的 AI 新闻报告。我们需要修改 docker/docker-compose.yml,去掉 IP 限制,直接暴露端口。
# docker/docker-compose.yml
services:
trendradar:
ports:
- "${WEBSERVER_PORT:-8080}:${WEBSERVER_PORT:-8080}"
- "3333:3333"
同时,在 docker/.env 中确保开启了 Web 服务:
ENABLE_WEBSERVER=true
配置 AI 模型与新闻源
修改 config/config.yaml 来指定 AI 模型和抓取平台。
配置 AI 模型(以 NVIDIA 免费 API 为例): NVIDIA 提供了许多免费的 API 端点,兼容 OpenAI 格式。注意 model 参数添加『openai/』头部。
# config/config.yaml
ai:
model: "openai/minimaxai/minimax-m2.5"
api_key: "nvapi-your_custom_api_key..."
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: "juejin"
name: "掘金"
- id: "wallstreetcn-hot"
name: "华尔街见闻"
优化关键词匹配
修改 config/frequency_words.txt 建议使用正则表达式进行精准匹配,避免误报。
[WORD_GROUPS]
# AI 相关
/ai\b/i => AI
/\bDeepSeek\b/ => DeepSeek
/\bOpenAI\b|\bChatGPT\b/i => OpenAI
# 企业与品牌
/英伟达 | 黄仁勋 | \bNVIDIA\b/i => 英伟达
/苏姿丰 | \bAMD\b/i => AMD
推送配置
在 config/config.yaml 中配置通知渠道。开启调度系统后,此项仍为总开关。
notification:
enabled: true
channels:
feishu:
webhook_url: "https://open.feishu.cn/open-apis/bot/v2/hook/xxx***xxx"
全局配置可在 .env 文件中调整运行模式和时间表。
ENABLE_WEBSERVER=true
AI_ANALYSIS_ENABLED=true
CRON_SCHEDULE=30 8,20 * * *
RUN_MODE=cron
IMMEDIATE_RUN=true
避坑指南:解决飞书推送 Markdown 不渲染问题
这是本次部署中最大的坑。默认代码在推送飞书消息时,使用的是 text 类型,导致飞书无法渲染 Markdown 语法(如加粗、链接),体验极差。
原因分析:飞书 API 要求 Markdown 内容必须通过 interactive(卡片)类型的 lark_md 标签发送。
修复方案:我们需要修改 Python 源码。如果你使用 Docker 映射了代码目录,可以直接修改;否则需要进入容器修改。
修正 1: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中,确保所有推送入口都能正确渲染 Markdown。
修正 2:Docker 挂载
在 docker/docker-compose.yml 的 volumes 中添加代码目录映射,以便修改生效。
volumes:
- ../config:/app/config:ro
- ../output:/app/output
- ../trendradar:/app/trendradar
进阶玩法:接入 Cherry Studio 进行 AI 对话
部署了 MCP 服务后,TrendRadar 就不再只是一个单向的推送工具,而是可以对话的知识库。
- Server 端配置:确保在步骤 4.1 中已经开放了
3333端口,且docker-compose.yml中包含了trendradar-mcp服务。局域网地址示例:http://192.168.1.100:3333 - Cherry Studio 客户端配置:
- 添加模型服务:在设置中添加 NVIDIA 或其他兼容 OpenAI 的服务商,填入 API Key。
- 添加 MCP 服务器:名称设为 TrendRadar MCP,类型为可流式传输的 HTTP (streamableHttp),URL 指向你的部署机器 IP。
连接成功后,你可以在 Cherry Studio 中直接在这个 MCP 频道下提问,例如:'我想了解 'AI' 这个话题,请依次完成以下步骤:搜索今天的相关新闻,分析最近一周的热度趋势,对比各平台的关注度,分析最近一周的情感倾向。'
AI 将会自动调用 TrendRadar 的数据库,生成包含图表数据的专业分析报告。
总结
通过本次本地部署,我们成功实现了数据自主存储、体验升级(修复飞书推送 bug)、智能加持(利用免费大模型)以及深度交互(MCP + Cherry Studio)。如果你也厌倦了被算法支配,不妨动手试试这套方案。
参考项目:TrendRadar GitHub 仓库


