使用docker-compose搭建Trendradar,打造自己的热点新闻小助手

2025-11-15 16:01:53    104    0    0
admin

项目地址:https://github.com/sansan0/TrendRadar

一、项目构建

# 自行安装好docker docker-compose git
# 直接拉取项目
git clone https://github.com/sansan0/TrendRadar.git

# config/config.yaml - 应用主配置(报告模式、推送设置等)
# config/frequency_words.txt - 关键词配置(设置你关心的热点词汇)
# docker/.env - 环境变量配置(webhook URLs 和定时任务)
# 根据需要结合项目说明进行修改,通常需要配置通知
# 切到docker目录
cd docker

# 拉取最新镜像并启动
docker-compose pull
docker-compose up -d
# 启动完成
# 命令使用
# 查看日志
docker logs -f trend-radar

# 查看容器状态
docker ps | grep trend-radar

# 服务管理命令
# 查看运行状态
docker exec -it trend-radar python manage.py status

# 手动执行一次爬虫
docker exec -it trend-radar python manage.py run

# 查看实时日志
docker exec -it trend-radar python manage.py logs

# 显示当前配置
docker exec -it trend-radar python manage.py config

# 显示输出文件
docker exec -it trend-radar python manage.py files

# 查看帮助信息
docker exec -it trend-radar python manage.py help

# 重启容器
docker restart trend-radar

# 停止容器
docker stop trend-radar

# 删除容器(保留数据)
docker rm trend-radar

二、将docker部署的热点页面配置外部访问

    1. 修改docker/entrypoint.sh,增加启动http服务

#!/bin/bash
set -e

# 检查配置文件
if [ ! -f "/app/config/config.yaml" ] || [ ! -f "/app/config/frequency_words.txt" ]; then
    echo "❌ 配置文件缺失"
    exit 1
fi

# 保存环境变量
env >> /etc/environment

echo "🔄 启动http服务。。。。。。"
nohup python3 -m http.server 8101 &

echo "🔄 启动http服务完成"

case "${RUN_MODE:-cron}" in
"once")
    echo "🔄 单次执行"
    exec /usr/local/bin/python main.py
    ;;
"cron")
    # 生成 crontab
    echo "${CRON_SCHEDULE:-*/30 * * * *} cd /app && /usr/local/bin/python main.py" > /tmp/crontab
    
    echo "📅 生成的crontab内容:"
    cat /tmp/crontab

    if ! /usr/local/bin/supercronic -test /tmp/crontab; then
        echo "❌ crontab格式验证失败"
        exit 1
    fi

    # 立即执行一次(如果配置了)
    if [ "${IMMEDIATE_RUN:-false}" = "true" ]; then
        echo "▶️ 立即执行一次"
        /usr/local/bin/python main.py
    fi

    echo "⏰ 启动supercronic: ${CRON_SCHEDULE:-*/30 * * * *}"
    echo "🎯 supercronic 将作为 PID 1 运行"
    
    exec /usr/local/bin/supercronic -passthrough-logs /tmp/crontab
    ;;
*)
    exec "$@"
    ;;
esac       

    2. 修改docker/docker-compose.yml  增加端口映射

services:
  trend-radar:
    image: wantcat/trendradar:latest
    container_name: trend-radar
    restart: unless-stopped
    ports:
      - 8101:8101

    3. 重载配置 docker-compose up -d

    4. docker外部的nginx 配置反向代理 供外部访问,配置好之后重启nginx

server {
    listen 80;
    #server_name 改为你的域名;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/dk_project/wwwroot/; #随便建一个index.html

    # 主要是下面的代理,需要mcp服务就加,不需要就不用
    location ^~ / {
      proxy_pass http://127.0.0.1:8101;
    }
    location ^~ /mcp {
      proxy_pass http://127.0.0.1:3333/mcp;
      # API 密钥验证
      if ($http_x_api_key != "修改为自己的mcp密钥") {
        return 401 "Unauthorized: Invalid API Key";
      }
    }
} 

三、配置MCP服务

    1. 按照TrendRadar/README-Cherry-Studio.md at master · sansan0/TrendRadar进行部署

📥 第一步:下载 Cherry Studio
Windows 用户
访问官网下载:https://cherry-ai.com/ 或直接下载:Cherry-Studio-Windows.exe

Mac 用户
访问官网下载:https://cherry-ai.com/ 或直接下载:Cherry-Studio-Mac.dmg

📦 第二步:获取项目代码
为什么需要获取项目代码?

AI 分析功能需要读取项目中的新闻数据才能工作。无论你使用 GitHub Actions 还是 Docker 部署,爬虫生成的新闻数据都保存在项目的 output 目录中。因此,在配置 MCP 服务器之前,需要先获取完整的项目代码(包含数据文件)。

根据你的技术水平,可以选择以下任一方式获取::

方法一:Git Clone(推荐给技术用户)
如果你熟悉 Git,可以使用以下命令克隆项目:

git clone https://github.com/你的用户名/你的项目名.git
cd 你的项目名
优点:

可以随时拉取一个命令就可以更新最新数据到本地了(git pull)
方法二:直接下载 ZIP 压缩包(推荐给初学者)
访问 GitHub 项目页面

项目链接:https://github.com/你的用户名/你的项目名
下载压缩包

点击绿色的 "Code" 按钮
选择 "Download ZIP"
或直接访问:https://github.com/你的用户名/你的项目名/archive/refs/heads/master.zip
注意事项:

步骤稍微麻烦,后续更新数据需要重复上面步骤,然后覆盖本地数据(output 目录)
🚀 第三步:一键部署 MCP 服务器
Windows 用户
双击运行项目文件夹中的 setup-windows.bat
等待安装完成
记录显示的配置信息(命令路径和参数)
Mac 用户
打开终端(在启动台搜索"终端")
拖拽项目文件夹中的 setup-mac.sh 到终端窗口
按回车键
记录显示的配置信息
🔧 第四步:配置 Cherry Studio
1. 打开设置
启动 Cherry Studio,点击右上角 ⚙️ 设置 按钮

2. 添加 MCP 服务器
在设置页面找到:MCP → 点击 添加

3. 填写配置(重要!)
根据刚才的安装脚本显示的信息填写

4. 保存并启用
点击 保存 按钮
确保 MCP 服务器列表中的开关是 开启 状态 ✅
✅ 第五步:验证是否成功
1. 测试连接
在 Cherry Studio 的对话框中输入:

帮我爬取最新的新闻
或者尝试其他测试命令:

搜索最近3天关于"人工智能"的新闻
查找2025年1月的"特斯拉"相关报道
分析"iPhone"的热度趋势
提示:当你说"最近3天"时,AI会自动计算日期范围并搜索。

2. 成功标志
如果配置成功,AI 会:

✅ 调用 TrendRadar 工具
✅ 返回真实的新闻数据
✅ 显示平台、标题、排名等信息
🎯 进阶配置
HTTP 模式(可选)
如果需要远程访问或多客户端共享,可以使用 HTTP 模式:

Windows
双击运行 start-http.bat

Mac
./start-http.sh
然后在 Cherry Studio 中配置:

类型: streamableHttp
URL: http://localhost:3333/mcp 

    2. 需要配置认证的,不能随便让人访问,按照上方的nginx配置,修改项目根目录的start-http.sh

#!/bin/bash

echo "╔══════════════════════════════════════════════════╗"
echo "║          TrendRadar MCP Server (HTTP 模式)      ║"
echo "║                 🔐 认证版本 - 后台运行          ║"
echo "╚══════════════════════════════════════════════════╝"
echo ""

# 检查虚拟环境
if [ ! -d ".venv" ]; then
    echo "❌ [错误] 虚拟环境未找到"
    echo "请先运行 ./setup-mac.sh 进行部署"
    echo ""
    exit 1
fi

# API Key
API_KEY="填入你的API KEY 随机生成即可"
LOG_FILE="mcp_server.log"
PID_FILE="mcp_server.pid"

echo "🔐 [认证信息]"
echo "   API Key: $API_KEY"
echo ""
echo "🌐 [服务信息]"
echo "   模式: HTTP (适合远程访问)" 
echo "   地址: http://localhost:3333/mcp"
echo "   日志文件: $LOG_FILE"
echo "   PID 文件: $PID_FILE"
echo ""

# 检查是否已在运行
if [ -f "$PID_FILE" ]; then
    PID=$(cat "$PID_FILE")
    if ps -p $PID > /dev/null 2>&1; then
        echo "⚠️ [警告] 服务已在运行 (PID: $PID)"
        echo "   停止命令: kill $PID 或 ./stop-mcp.sh"
        echo ""
        exit 1
    else
        rm -f "$PID_FILE"
    fi
fi

echo "⏳ [状态] 启动后台服务..."
# export MCP_API_KEY="$API_KEY"

# 使用 nohup 后台运行
nohup uv run python -m mcp_server.server --transport http --host 0.0.0.0 --port 3333 > "$LOG_FILE" 2>&1 &

# 保存 PID
echo $! > "$PID_FILE"

echo "✅ [成功] 服务已启动"
echo "   PID: $(cat $PID_FILE)"
echo "   日志: tail -f $LOG_FILE"
echo "   停止: kill $(cat $PID_FILE)"
echo "   状态: ps -p $(cat $PID_FILE)"
echo ""
 

    3. 给mcp配置验证后需要在Cherry Studio请求头部分将验证的API KEY 配置上,之后就可以愉快的调用MCP服务了    

    4. 效果图

    钉钉通知

    

    网站效果

    

    cherry studio调用效果

    

104
Sign in to leave a comment.
No Leanote account? Sign up now.
0 comments