在绿联 NAS 上部署 AI 选题生成器:new-api + MiniMax M3 + 飞书自动推送
项目目标
部署完成后,你的绿联 NAS 会自动帮你做三件事:
⏰ 每天 8:00 自动起床 —— 跑 Python 脚本调用 MiniMax M3,生成 5 个内容选题
📁 自动落盘 —— 结果保存到
/volume1/docker/scripts/topics/output/daily-YYYY-MM-DD.md📲 自动推送飞书 —— 通过飞书自定义机器人,把当日选题卡片发到指定群
支持的 6 个内容模板:
整体架构
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ systemd │ 8:00 │ topics.py │ ───→ │ new-api │ ───→ MiniMax M3
│ timer │─────→│ (生成选题) │ │ (4152:3000) │
└──────────────┘ └──────┬───────┘ └──────────────┘
│ Markdown
↓
┌──────────────┐
│ output/ │
│ daily-*.md │
└──────┬───────┘
│ 读取
↓
┌──────────────┐ ┌──────────────┐
│ push_feishu │ ───→ │ 飞书自定义机器人│ ───→ 手机
│ .py │ │ (webhook) │
└──────────────┘ └──────────────┘
所有组件都跑在同一台绿联 NAS 上,没有外部服务器依赖。
前置准备
完整部署步骤
步骤 1:开启 NAS 的 SSH 访问
绿联 NAS 默认不开启 SSH,需要先在控制面板里打开。
打开浏览器,访问 NAS 管理后台(通常是 http://NAS内网IP),进入 控制面板:

左侧菜单选择 终端机:

勾选 启用 SSH,端口保持默认 22,自动关闭时间按需选择(推荐 6 小时或更长),点击 应用 保存。
⚠️ 开启 SSH 等于给 NAS 开了"后门",强烈建议:
NAS 管理员账号使用强密码
在路由器上设置 NAS 仅内网可访问(不要开公网 SSH)
启用 NAS 自带的"自动封锁"功能(控制面板 → 安全性 → 账户安全)
步骤 2:Mac 终端 SSH 登录 NAS
打开 Mac 终端(Terminal.app 或 iTerm2):

执行 SSH 登录命令:
ssh 你的用户名@NAS内网IP
# 例如: ssh 你的用户名@192.1.1.1(你的nas的ip)
# 密码是 NAS 管理员密码
绿联 NAS 默认用户名不是
root,是你创建的管理员账号(教程里用zs2025作为示例)。
登录后切到 root(后续所有操作需要 root 权限):
sudo -i
# 输入 NAS 管理员密码
看到 # 提示符就说明已经在 root 模式下了。
步骤 3:建目录 + 安装 Python 依赖
# 建工作目录
mkdir -p /volume1/docker/scripts/topics(用自己的路径)
cd /volume1/docker/scripts/topics
# 装 Python(绿联 DXP 系统 apt 经常有依赖冲突,先尝试直接装)
apt update && apt install -y python3 python3-pip python3-venv
如果 apt 装包报依赖错误,先尝试修复:
apt --fix-broken install -y
apt install -y python3-venv python3-pip
📌 为什么用
/volume1/docker/scripts/而不是/opt/?/volume1是绿联 NAS 的用户数据挂载点,重装系统、迁移数据时不会丢失。/opt是系统目录,可能会被清空。
继续建虚拟环境:
# 创建 Python 虚拟环境
python3 -m venv venv
source venv/bin/activate
# 安装 requests 库(调用 API 用)
pip install requests
看到 Successfully installed requests-2.x.x 就成功了。后续所有 Python 命令都要先 source venv/bin/activate 激活虚拟环境。
部署完成后,打开 NAS 文件管理能看到这样的目录结构:

步骤 4:new-api 后台配置 MiniMax M3 渠道
这一步是最容易漏掉的 —— new-api 光跑起来没用,还要在后台加渠道,否则 Python 调过去会 404。
浏览器访问
http://NAS内网IP:4152默认账号
admin / 123456(第一次登录立刻改密码)进入 渠道管理 → 添加渠道:
类型:选
MiniMax或OpenAI 兼容名称:随便起,比如
MiniMax-M3密钥:填你手头的 MiniMax 官方 API key
模型:先在 new-api 模型列表里查准确名字(可能是
MiniMax-M3或MiniMax/M3)
保存后点 测试连通性,看到绿色"通过"再继续
进入 令牌管理 → 添加令牌:
名称:
topics-script额度:随便填,比如 100
模型:选刚加的 channel
复制生成的 sk-xxx 令牌 —— 这个才是 topics.py 要用的 API_KEY(不是你 MiniMax 那个)
⚠️ 划重点:new-api 的令牌和 MiniMax 官方 key 是两码事,别搞混了。
步骤 5:部署 topics.py(核心脚本)
接下来部署核心脚本 topics.py。考虑到 SSH 终端复制粘贴大段代码容易出乱码(特别是中文字符 + 终端宽度问题),我用 base64 单行命令 的方式部署。
完整复制下面这一整行(注意 base64 字符串很长,复制时务必完整,建议复制后先在文本编辑器里看末尾有没有 ==):



