跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

TrendRadar 本地部署:构建个人专属 AI 热点情报系统

TrendRadar 本地部署教程。通过 Docker 容器化部署 TrendRadar 项目,实现基于 NVIDIA 免费 API 的零成本 AI 热点分析。支持自定义新闻源抓取、飞书消息推送及 Markdown 渲染修复。集成 MCP 协议与 Cherry Studio 进行深度对话交互。配置 Web 服务局域网访问,优化关键词匹配规则。最终达成数据自主存储、个性化资讯推送及智能趋势研判,摆脱算法推荐限制。

CryptoLab发布于 2026/3/21更新于 2026/9/458 浏览
TrendRadar 本地部署:构建个人专属 AI 热点情报系统

TrendRadar 本地部署指南

1. 背景与需求:为什么我们需要 TrendRadar?

在这个大数据算法横行的时代,我们每天被头条、抖音等平台投喂大量信息,不仅容易陷入信息茧房,还浪费了大量时间筛选有效资讯。

核心需求:

  1. 拒绝算法绑架:需要一个个人定制化的新闻推送服务。
  2. 趋势追踪:能够按周期追踪特定领域的趋势和热点。
  3. AI 深度分析:不仅要看新闻,还要 AI 帮我总结、分析情感倾向,甚至通过对话深度探索。

TrendRadar 的核心价值:

  • 零成本 AI 分析:支持接入免费的 NVIDIA 模型接口,体验信息提炼。
  • 定制推送:定期推送到飞书、钉钉等即时通讯软件。
  • MCP 协议支持:通过 Model Context Protocol (MCP) 协议,让 AI 工具(如 Cherry Studio)直接读取新闻数据库,进行深度对话分析。

2. 环境准备

在开始之前,请确保你拥有以下基础环境:

  • 操作系统:Ubuntu 22.04(实体机或 VMware 虚拟机均可)。
  • 网络环境:需要能够通畅访问 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. 启动所有服务(trendradar 推送服务 + trendradar-mcp AI 分析服务)
docker compose up -d

4. 关键配置调整

默认配置通常只适合本机测试,为了在局域网访问以及更符合个人习惯,我们需要修改 docker/docker-compose.yml 和 config/config.yaml。

4.1 让 Web Server 支持局域网访问

默认情况下,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

4.2 配置新闻源与 AI 模型

修改文件: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: "fastbull"
      name: "快讯通"
    # 短视频、社区
    - id: "zhihu"
      name: "知乎"
    - id: "bilibili-hot-search"
      name: "bilibili 热搜"
    - id: "douyin"
      name: "抖音"
    - id: "tieba"
      name: "贴吧"
    - id: "weibo"
      name: "微博"
    # 科技
    - id: "github"
      name: "GitHub"
    - id: "hackernews"
      name: "Hacker News"
    - id: "juejin"
      name: "掘金"
    - id: "nowcoder"
      name: "牛客网"

4.3 优化关键词匹配

修改文件: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 => 苹果

4.4 推送配置

config/config.yaml 配置信息

notification:
  enabled: true
  # 是否启用通知功能(总开关)
  # ⚠️ 开启调度系统后,此项仍为总开关:
  # false → 永远不推送(无论调度怎么设置)
  # true → 由调度的 push 字段控制何时推送
  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 标签发送。

🛠️ 修复方案(代码修正):

我们需要修改 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 中,确保所有推送入口(包括 RSS 更新通知和 MCP 工具调用)都能正确渲染 Markdown。

修正 2:docker/docker-compose.yml

volumes 中添加 - ../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

6. 成果展示

6.1 飞书推送

飞书推送结果

6.2 Webserver

Webserver 界面

7. 进阶玩法:接入 Cherry Studio 进行 AI 对话

部署了 MCP 服务后,TrendRadar 就不再只是一个单向的推送工具,而是可以对话的知识库。

7.1 Server 端配置

确保在步骤 4.1 中已经开放了 3333 端口,且 docker-compose.yml 中包含了 trendradar-mcp 服务。 局域网地址示例:http://192.168.1.100:3333

7.2 Cherry Studio 客户端配置

  1. 添加模型服务:在设置中添加 NVIDIA 或其他兼容 OpenAI 的服务商,填入 API Key。
  2. 添加 MCP 服务器:
    • 名称:TrendRadar MCP
    • 类型:可流式传输的 HTTP (streamableHttp)
    • URL:http://192.168.xxx.xxx:3333/mcp (请替换为你部署机器的实际 IP)

7.3 效果展示

连接成功后,你可以在 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"话题的全面洞察:
...

8. 总结

通过本次本地部署,我们成功实现了:

  1. 数据自主:所有新闻数据存储在本地 SQLite/Docker 卷中。
  2. 体验升级:修复了飞书推送的渲染 bug,阅读体验大幅提升。
  3. 智能加持:利用免费的 NVIDIA 大模型实现了零成本的热点摘要。
  4. 深度交互:通过 MCP + Cherry Studio,把'看新闻'变成了'研判情报'。

参考资料: TrendRadar GitHub 仓库 飞书自定义机器人开发文档 LiteLLM 模型支持列表

目录

  1. TrendRadar 本地部署指南
  2. 1. 背景与需求:为什么我们需要 TrendRadar?
  3. 2. 环境准备
  4. 3. 部署实战:关键步骤详解
  5. 3.1 下载代码仓
  6. 需要确保网络环境通畅
  7. 3.2 启动 Docker 容器
  8. 1. 进入项目 docker 目录
  9. 2. 拉取最新镜像(注意网络连接)
  10. 3. 启动所有服务(trendradar 推送服务 + trendradar-mcp AI 分析服务)
  11. 4. 关键配置调整
  12. 4.1 让 Web Server 支持局域网访问
  13. 修改前
  14. 修改后(允许局域网访问 Web 报告和 MCP 服务)
  15. 4.2 配置新闻源与 AI 模型
  16. 格式:provider/model_name
  17. NVIDIA 提供的模型示例
  18. 你的 API Key
  19. 关键:自定义 API 端点(NVIDIA 需要这个地址)
  20. 4.3 优化关键词匹配
  21. ═══════════════════════════════════════════════════════════════
  22. 科技领域
  23. ═══════════════════════════════════════════════════════════════
  24. ▼ 优化:改用 /\bai\b/i,等价于原正则但更简洁规范,/i 负责忽略大小写,\b 负责边界
  25. ▼ 优化:补全主流国产大模型;加 /i 忽略大小写,统一去除大小写重复变体,补全 \b 边界
  26. ═══════════════════════════════════════════════════════════════
  27. 企业与品牌
  28. ═══════════════════════════════════════════════════════════════
  29. 4.4 推送配置
  30. 是否启用通知功能(总开关)
  31. ⚠️ 开启调度系统后,此项仍为总开关:
  32. false → 永远不推送(无论调度怎么设置)
  33. true → 由调度的 push 字段控制何时推送
  34. 4.5 Docker 全局配置
  35. 启动时开启 webserver 服务
  36. 开启 AI 分析
  37. 每天 08:30 和 20:30 进行消息推送
  38. 运行模式:cron/once
  39. 启动时立即执行一次
  40. 5. 🔥 避坑指南:解决飞书推送 Markdown 不渲染问题
  41. 修正 1:trendradar/notification/senders.py
  42. 修改前:
  43. payload = {
  44. "msg_type": "text",
  45. "content": {
  46. "text": batch_content,
  47. },
  48. }
  49. 修改后:
  50. 修正 2:docker/docker-compose.yml
  51. 6. 成果展示
  52. 6.1 飞书推送
  53. 6.2 Webserver
  54. 7. 进阶玩法:接入 Cherry Studio 进行 AI 对话
  55. 7.1 Server 端配置
  56. 7.2 Cherry Studio 客户端配置
  57. 7.3 效果展示
  58. AI 话题分析与总结
  59. 🧑‍💻 User
  60. 🤖 Assistant
  61. 步骤 1:搜索今天的 AI 相关新闻
  62. 步骤 2:分析最近一周的热度趋势
  63. 步骤 3:对比各平台的关注度
  64. 步骤 4:分析最近一周的情感倾向
  65. AI 话题综合分析报告
  66. 8. 总结

更多推荐文章

查看全部
  • OpenPPT:基于 Web 的智能 PPT 在线编辑器
  • Stable Diffusion 入门教程:绘画原理与本地部署安装
  • 18 款免费 AI 生成 3D 模型工具盘点
  • Cogito-v1-preview-llama-3B:工业设备故障日志分析与维修建议
  • 低空经济下无人机光伏巡检技术与应用
  • 若依 (RuoYi) 低代码框架全面分析
  • DigitalOcean 注册、验证及云主机创建教程
  • 构建与 GitHub 深度集成的自动化工作流实战指南
  • VSCode 新版禁用 Ctrl+I 快捷键唤起 Copilot AI 对话框
  • 适配 imToken DApp 浏览器的区块链小游戏开发实战
  • 使用 Python 查询和下载 Sentinel-1 轨道数据
  • 计算机科学与技术专业核心技能学习与就业指南
  • Java 入门:IDEA 高效调试与数组
  • 基于 Zynq FPGA 的雷龙 SD NAND 测试
  • 基于 Netty 构建高性能 HTTP 服务器实战
  • 主流 AI 编程助手与 IDE 集成方案选型指南
  • Python 实现 AI 绘画用户评价自动分类与分析报告生成
  • AI 时代初级开发者创意生存指南:如何不被工具替代
  • Ubuntu 22.04 + RTX 50 显卡搭建 BeyondMimic 仿真训练环境
  • 毕业论文写作中 AI 辅助工具的功能与应用

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online