banner
约 2,100 字
7 分钟

飞牛 NAS 部署 AI 闲鱼监控机器人:ai-goofish-monitor 完整教程

飞牛 NAS 部署 AI 闲鱼监控机器人:ai-goofish-monitor 完整教程

摘要

在飞牛 NAS 上用 Docker 部署 ai-goofish-monitor,实现闲鱼多任务 AI 监控与多渠道推送。含仓库迁移说明、环境变量速查、登录态导入与排障清单。

飞牛 NAS 部署 AI 闲鱼监控机器人:ai-goofish-monitor 完整教程

想蹲一台成色好的二手相机,盯了半个月,每次刷新都被秒走。后来干脆把这件事交给了程序:NAS 24 小时替我刷,AI 替我看图看描述,符合要求的直接推到手机上。这篇就是把它跑起来之后的完整记录——从装 Docker 到排障清单,你照着做一遍就能用。

重要更新(2026):本项目仓库已从 dingyufei615/ai-goofish-monitor 迁移到 Usagi-org/ai-goofish-monitor,目前约 10.1k star。网上很多旧教程里的仓库地址、部署脚本都已失效,本文按迁移后的当前版本重写。

一、它能帮你做什么

ai-goofish-monitor 是一套基于 Playwright + AI 的闲鱼监控系统,带完整的 Web 管理界面。和单纯关键词轮询的工具相比,它的差别在于用多模态模型直接看图判断

  • AI 驱动筛选:用自然语言描述需求(比如"九成新以上、无拆修的索尼 A7M3"),模型会同时看图和描述给出判断

  • 多任务并发:每个任务独立配置关键词、价格区间、 AI Prompt 和定时规则

  • 高级筛选:包邮、发布时间范围、省/市/区三级区域筛选

  • 即时通知:ntfy.sh、Gotify、Bark、企业微信、Telegram、Webhook 多渠道

  • 账号与代理轮换:多账号 + 代理池,遇到风控自动切换重试

  • Docker 一键部署:镜像已内置 Chromium,宿主机不用另装浏览器

它的处理流程大致是:启动任务 → 搜索商品 → 发现新商品则抓取详情与卖家信息 → 下载商品图 → 调用 AI 分析 → 判定推荐才推送通知 → 结果落库;中途触发风控则轮换账号或代理重试。

跑起来之后,「结果查看」页会把市场行情和 AI 判定放在一起。下面是我监控 Apple Watch S10 时的实际界面——左侧是样本均价、最低价和价格曲线,右侧每张商品卡片都带 AI 匹配度评分与推荐结论:

ai-goofish-monitor 结果查看界面:Apple Watch S10 市场行情分析与 AI 判定卡片
ai-goofish-monitor 结果查看界面:Apple Watch S10 市场行情分析与 AI 判定卡片

二、部署前的准备

1. 在飞牛 NAS 上安装 Docker

进入飞牛 NAS 后台 → 应用商店 → 搜索 Docker → 安装,装完在「服务」里确认 Docker 已启动。

2. 准备一个 AI 接口

AI 判断是核心功能,没有它也能跑关键词模式,但会失去这个工具最大的价值。你需要一个 OpenAI 兼容接口的 OPENAI_API_KEYOPENAI_BASE_URL 和支持图片输入的模型名。

下面以七牛云为例(国内可直接访问,其 OpenAI 兼容接口地址为 https://openai.qiniu.com/v1)。注册后在控制台创建 API Key,并在后台确认当前实际支持的模型名称再填入。

注意:一定要选支持图片输入的多模态模型,否则无法分析商品图。

三、Docker 部署

1. 拉取源码

SSH 登录 NAS,进入你的 Docker 目录后执行:

bash
git clone https://github.com/Usagi-org/ai-goofish-monitor
cd ai-goofish-monitor
cp .env.example .env

2. 国内加速(拉不到镜像时用)

官方镜像地址是 ghcr.io/usagi-org/ai-goofish:latest。如果下载不动,可以先从镜像源拉下来再打标签:

bash
docker pull ghcr.nju.edu.cn/usagi-org/ai-goofish:latest
docker tag ghcr.nju.edu.cn/usagi-org/ai-goofish:latest ghcr.io/usagi-org/ai-goofish:latest

3. 启动

编辑好 .env 之后:

bash
docker compose up -d
docker compose logs -f app

看到 logs 正常输出即启动成功。浏览器打开 http://<你的NAS内网IP>:8000,默认账号密码是 admin / admin123

生产环境务必修改默认密码,通过 WEB_USERNAMEWEB_PASSWORD 设置。

常用运维命令:

bash
docker compose down              # 停止
docker compose pull && docker compose up -d   # 更新镜像并重启

如果改了 .env 里的 SERVER_PORT必须同步修改 docker-compose.yaml 的端口映射,否则容器内外端口对不上。

四、环境变量速查

这张表建议直接收藏,配置时对照填:

变量

说明

必填

OPENAI_API_KEY

AI 模型 API Key

OPENAI_BASE_URL

OpenAI 兼容接口地址

OPENAI_MODEL_NAME

支持图片输入的模型名称

WEB_USERNAME / WEB_PASSWORD

Web UI 登录凭据,默认 admin/admin123

建议改

SERVER_PORT

后端监听端口,默认 8000

RUN_HEADLESS

无头模式,Docker 中保持 true

PROXY_URL

给 AI 请求单独指定 HTTP/SOCKS5 代理

NTFY_TOPIC_URL

ntfy.sh 推送地址

BARK_URL

Bark 推送地址

WX_BOT_URL

企业微信机器人地址

GOTIFY_URL / GOTIFY_TOKEN

Gotify 推送

TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID

Telegram 推送

PCURL_TO_MOBILE

PC 商品链接转移动端链接

一个最小可用的 .env 长这样:

bash
OPENAI_API_KEY=你的密钥
OPENAI_BASE_URL=https://openai.qiniu.com/v1
OPENAI_MODEL_NAME=你确认过支持图片的模型名
WEB_USERNAME=改成你自己的账号
WEB_PASSWORD=改成强密码

五、导入闲鱼登录态(最关键的一步)

程序要替你浏览闲鱼,就必须先用你自己的账号登录一次。项目提供了专门的 Chrome 扩展来导出登录状态。

  1. 在 Chrome 里加载 chrome-extension/ 目录(开发者模式 → 加载已解压的扩展程序)

  2. 打开闲鱼网页版完成登录

  3. 点击扩展图标,选择「获取环境+登录状态」(1.1 版本起会连同浏览器环境快照一起导出)

  4. 复制生成的 JSON

  5. 进入项目的「闲鱼账号管理」页面,粘贴导入

登录态会保存为 state/acc_1.json 之类的文件。每个任务可以绑定指定账号,也可以不绑定交给系统自动轮换。

排障要点:登录态会过期。一旦监控突然没结果了,第一件事就是重新导入登录态

六、创建第一个任务

在「任务管理」新建任务,有两条判断路线:

ai-goofish-monitor 任务管理界面:AI ENGINE 任务与价格区间配置
ai-goofish-monitor 任务管理界面:AI ENGINE 任务与价格区间配置

判断方式

适用场景

行为

AI 判断

需求复杂、需要看外观成色

填写「详细需求」,后台异步生成分析标准,提交后弹进度条

关键词判断

条件明确

直接填规则,立即创建任务,不经过 AI

几个实战建议:

  • 关键词用「精确型号 + 关键特征」,例如 MacBook Air M1 16GB,而不是泛泛的 MacBook

  • AI 任务提交后不会立刻完成,它要先生成分析标准,耐心等进度弹窗走完

  • 区域筛选默认留空。三级区域筛选会大幅缩小结果集,除非你明确只看某个区域

  • 高价值商品可以设短一点的间隔(比如每小时一次),普通任务别设太密,容易被风控

七、通知渠道

推荐先用 ntfy.sh 验证链路,它是免费的公共推送服务,装个 App 订阅一个主题就行:

bash
NTFY_TOPIC_URL=https://ntfy.sh/你的私密主题名

确认能收到之后再换 Bark(iOS)、企业微信机器人或 Telegram。多渠道可以同时配置。

八、数据、备份与升级

docker-compose.yaml 默认持久化这些目录,备份时打包 data/state/ 即可:

路径

内容

data/

SQLite 主库(任务、结果、价格历史)

state/

闲鱼登录态 cookie

prompts/

任务提示词

logs/

运行日志

images/

商品图片临时目录

当前主存储是 SQLite(data/app.sqlite3),启动时自动建库建表。升级时先确认数据正常,再决定是否清理旧的 config.jsonjsonl/price_history/

九、常见问题排查

现象

排查方向

监控一直没结果

登录态过期,重新导入;检查任务绑定的账号

AI 分析报错

API Key 是否有效、模型名是否支持图片、额度是否耗尽

任务卡住不动

AI 任务是后台异步 job,看进度弹窗;或查 logs/

页面打不开

缺前端构建产物,本地部署需先在 web-ui/ 执行 npm run build 并复制到根目录 dist/

./start.sh 提示缺 Playwright

执行 python3 -m playwright install chromium

容器起不来

SERVER_PORTdocker-compose.yaml 端口映射是否一致、端口是否被占用

频繁触发风控

降低任务频率、启用代理轮换、减少并发任务数

十、写在最后

请务必理性使用:控制请求频率,遵守闲鱼的用户协议和 robots.txt,项目本身 MIT 许可、仅供学习研究,不要用于商业爬取。给自己的 NAS 留一点余量,一个任务盯一个品类就够了。

这套东西真正的价值不在"抢得比别人快",而在于把你从反复刷新的动作里解放出来——你在睡觉的时候它在刷,你觉得可以了它就告诉你。折腾的过程记在这里,希望替你省下那几个反复试错的凌晨。

END