ai-goofish-monitor 是 Usagi-org 开源的闲鱼商品监控系统。
它的目标很明确:把闲鱼搜索、筛选、商品分析、结果记录和通知推送自动化,帮助用户从大量二手商品里更快找到符合条件的目标。项目基于 Playwright 做页面自动化,再接入支持图片输入的 AI 模型,对商品信息做进一步判断。
项目地址:https://github.com/Usagi-org/ai-goofish-monitor
先说结论
ai-goofish-monitor 更像一个“闲鱼采购情报面板”,而不是简单的关键词提醒脚本。
它有几个明显特点:
- 有完整 Web 管理界面,可以管理任务、账号、AI 标准、日志和结果。
- 支持多任务并发,每个任务可以配置关键词、价格、筛选条件和 AI Prompt。
- 使用 Playwright 抓取闲鱼页面,适合处理需要登录态和页面交互的场景。
- 使用 AI 判断商品是否符合需求,不只依赖关键词匹配。
- 支持 ntfy.sh、企业微信、Bark、Telegram、Webhook 等通知渠道。
- 支持 Cron 定时任务、多账号管理、代理轮换、失败重试和 Docker 部署。
它适合经常在闲鱼找特定商品的人,比如二手数码、摄影器材、显卡、硬盘、游戏机、乐器、家电和收藏品。但它也不是“自动捡漏神器”。闲鱼搜索结果本身会变化,账号登录态可能失效,平台风控也会影响自动化稳定性。使用时更应该把它当成辅助筛选工具,而不是完全替代人工判断。
它解决什么问题
在闲鱼上找二手商品,经常有几个痛点:
- 商品太多,手动翻很累。
- 标题和描述不规范,关键词很容易漏掉或误判。
- 好价格出现时间短,发现太晚就没了。
- 同一个商品可能有多个地区、价格、成色和卖家差异。
- 低价商品里混着配件、损坏品、翻新货和诱导性标题。
- 想持续盯多个关键词时,手动搜索很难坚持。
普通关键词提醒只能解决一部分问题。比如你搜索“ThinkPad X1”,可能会混入配件、坏屏、空盒、拆机件;你搜索“索尼 A7C”,又可能遇到镜头套装、租赁信息、标题党和价格异常。
ai-goofish-monitor 的思路是:先用自动化把候选商品抓出来,再交给 AI 按你的需求做二次判断,最后把值得关注的结果推送给你。
核心功能
项目 README 里列出的核心能力比较完整:
- Web 可视化管理:任务管理、账号管理、AI 标准编辑、运行日志、结果浏览。
- AI 驱动:支持自然语言创建任务,并用多模态模型分析商品。
- 多任务并发:不同任务可以独立配置关键词、价格、筛选条件和 AI Prompt。
- 高级筛选:支持包邮、新发布时间范围、省 / 市 / 区三级区域筛选。
- 即时通知:支持 ntfy.sh、企业微信、Bark、Telegram、Webhook 等多渠道。
- 定时调度:支持 Cron 配置周期性任务。
- 账号与代理轮换:多账号管理、任务绑定账号、代理池轮换与失败重试。
- Docker 部署:支持容器化部署。
这些能力组合起来,覆盖了从“创建监控任务”到“收到命中提醒”的完整链路。
工作流是什么样
一个典型流程大概是这样:
- 部署服务并打开 Web UI。
- 导入闲鱼账号登录态。
- 创建监控任务。
- 设置关键词、价格区间、地区、新发布范围等筛选条件。
- 编写或让 AI 生成判断标准。
- 任务按实时或定时方式运行。
- Playwright 打开页面并抓取商品信息。
- AI 根据标题、描述、图片和 Prompt 判断是否符合需求。
- 命中结果写入 SQLite。
- 系统通过配置的通知渠道推送结果。
- 用户在 Web UI 里查看结果、日志和价格历史。
这个流程里,AI 的价值主要在第 8 步。它可以理解“我想要成色好、价格合理、不要配件、不要维修机、最好同城自提”这类自然语言条件,比单纯关键词规则灵活。
Docker 部署
项目推荐使用 Docker 部署:
|
|
默认 Web UI 地址是:
|
|
官方镜像地址是:
|
|
如果镜像访问慢,README 里也给了加速镜像示例:
|
|
Docker 镜像已内置 Chromium,不需要宿主机额外安装浏览器。默认持久化目录包括:
data/:SQLite 主存储,保存任务、结果和价格历史。state/:登录状态 cookie 文件。prompts/:任务提示词。logs/:运行日志。images/:商品图片和任务临时图片目录。
如果修改了 .env 里的 SERVER_PORT,也要同步调整 docker-compose.yaml 的端口映射。
最少配置
项目的最少配置主要围绕 AI 模型和 Web UI 登录:
|
|
其中前三项是 AI 模型接入必填项:
OPENAI_API_KEY:模型 API Key。OPENAI_BASE_URL:OpenAI 兼容接口地址。OPENAI_MODEL_NAME:支持图片输入的模型名称。
WEB_USERNAME 和 WEB_PASSWORD 用于 Web UI 登录。README 提到默认账号密码是 admin/admin123,生产环境必须修改。
第一次使用
第一次使用时,流程大致是:
- 打开
http://127.0.0.1:8000。 - 登录 Web UI。
- 进入“闲鱼账号管理”。
- 使用项目提供的 Chrome 扩展导出闲鱼登录态 JSON。
- 把登录态粘贴到系统里。
- 登录态文件会保存到
state/,例如state/acc_1.json。 - 回到“任务管理”,创建任务并绑定账号。
- 运行任务并查看结果。
这里最关键的是登录态。由于闲鱼并不是开放给第三方随意抓取的标准 API,项目需要用浏览器登录状态来模拟正常页面访问。登录态失效、风控、验证码、账号异常都会影响任务运行。
AI 任务和关键词任务
项目支持两类任务创建方式。
第一类是 AI判断。
你可以填写“详细需求”,提交后系统会异步生成分析标准。适合需求比较复杂的场景,例如:
- 只要主机本体,不要配件。
- 价格明显低于市场价才提醒。
- 成色要好,描述里不能有进水、维修、暗病。
- 优先同城,能面交更好。
- 图片里要能看到序列号、包装或关键配件。
第二类是 关键词判断。
它更接近传统规则监控:根据关键词、价格、地区等条件直接创建任务,不经过 AI 生成流程。适合规则简单、误报可以接受的场景。
实际使用中可以混合使用:关键词负责初筛,AI 负责减少误报。
Web UI 能做什么
Web UI 是这个项目区别于普通脚本的重要部分。
任务管理页可以配置:
- AI 创建任务。
- 关键词规则。
- 价格范围。
- 新发布范围。
- 区域筛选。
- 账号绑定。
- 定时规则。
账号管理页可以:
- 导入闲鱼账号登录态。
- 更新登录态。
- 删除账号。
- 为任务指定账号。
- 让系统自动选择账号。
结果和日志页可以:
- 查看命中商品。
- 导出结果。
- 查询历史记录。
- 查看任务运行过程。
- 排查登录态失效、风控和 AI 调用问题。
系统设置页可以:
- 查看系统状态。
- 编辑 Prompt。
- 调整代理和轮换配置。
对于长期监控来说,Web UI 很关键。否则任务一多,配置、日志、结果和通知都会变得难维护。
数据存储
项目当前在线主存储使用 SQLite,默认路径是:
|
|
Docker 默认把 SQLite 主库挂载到:
|
|
应用启动时会自动建库建表,并尝试从旧的 config.json、jsonl/、price_history/ 导入一次历史数据。
需要注意的是,state/、prompts/、logs/、images/ 仍然是文件系统目录,不在 SQLite 中。商品图片会临时保存到类似下面的目录:
|
|
任务结束后默认会清理。
这种结构比较适合个人或小团队部署:SQLite 足够轻,迁移也简单;文件目录保留登录态、图片和日志,排查问题更直观。
通知渠道
项目支持多种通知渠道,常见配置包括:
NTFY_TOPIC_URLGOTIFY_URL/GOTIFY_TOKENBARK_URLWX_BOT_URLTELEGRAM_BOT_TOKEN/TELEGRAM_CHAT_ID/TELEGRAM_API_BASE_URLWEBHOOK_*
通知是这类工具的核心体验。监控系统如果只把结果写进后台,用户仍然需要反复打开页面查看;有推送之后,命中商品才能在第一时间触达。
更实用的配置方式是按商品价值分层:
- 普通关键词命中只写入后台。
- AI 高置信度结果推送到手机。
- 高价值商品推送到企业微信或 Telegram。
- 调试阶段开启更多日志,稳定后减少噪音。
开发者运行
如果不使用 Docker,本地开发需要:
- Python 3.10+
- Node.js + npm
- Playwright CLI
- Chromium 或 Chrome / Edge 浏览器
基础命令:
|
|
一键启动:
|
|
start.sh 会检查 Playwright CLI 和浏览器条件,自动安装依赖、构建前端、复制构建产物并启动后端。
手动启动后端:
|
|
或者:
|
|
前端开发:
|
|
测试和构建:
|
|
适合哪些人
ai-goofish-monitor 适合这些用户:
- 经常在闲鱼蹲特定型号商品的人。
- 想监控二手数码、摄影器材、游戏设备、硬件配件的人。
- 想把“关键词搜索 + 人工筛选”自动化的人。
- 有 OpenAI 兼容模型 API,并愿意为 AI 判断支付调用成本的人。
- 熟悉 Docker 或基本命令行部署的人。
- 需要把命中结果推送到手机、企业微信或 Telegram 的用户。
它不太适合这些情况:
- 完全不懂部署,只想要一个即开即用 App。
- 不愿意处理登录态、验证码和账号风控。
- 需要官方授权、强合规的数据接口。
- 想大规模高频抓取平台数据。
- 希望 AI 自动判断交易风险并替你下单。
使用风险和边界
这类工具一定要注意边界。
第一,遵守平台规则。
闲鱼有自己的服务条款、风控策略和账号安全机制。自动化访问可能触发限制。不要高频抓取,不要绕过风控,不要把它用于骚扰卖家、批量采集隐私或破坏平台秩序。
第二,保护账号登录态。
state/ 里保存的是登录状态 cookie 文件。它本质上等同于账号访问凭据,不能提交到 Git 仓库,也不要放到不可信服务器上。服务器如果暴露在公网,Web UI 必须修改默认密码,并建议放在 VPN、反向代理鉴权或内网之后。
第三,AI 判断不是事实保证。
AI 可以帮你减少误报,但不能保证商品真实、卖家可信、价格合理或交易安全。最终仍然要人工看商品详情、卖家评价、聊天记录、发货方式和支付流程。
第四,注意成本。
如果每个候选商品都交给多模态模型分析,调用成本可能很快上升。建议先用关键词、价格和区域做强筛选,再把少量候选交给 AI。
第五,注意隐私。
商品截图、聊天相关内容、账号状态和通知内容都可能包含敏感信息。通知 Webhook、日志目录和数据库都要妥善保护。
和普通脚本的差别
普通闲鱼监控脚本通常只做三件事:
- 搜索关键词。
- 判断价格。
- 发通知。
ai-goofish-monitor 更进一步:
- 用 Web UI 管理任务和账号。
- 用 AI Prompt 表达复杂购买标准。
- 用多模态模型看商品图和描述。
- 用 SQLite 保存结果和价格历史。
- 用日志页排查任务失败原因。
- 用代理轮换和多账号机制提高稳定性。
- 用定时任务支持长期运行。
也正因为功能更多,它的部署和维护成本更高。对普通用户来说,Docker 部署是最省事的方式;对开发者来说,Web UI、FastAPI、Playwright、SQLite 这套结构也比较容易二次开发。
可以怎么用
比较实用的使用方式是从小任务开始。
比如你想找一台二手相机,可以先创建一个任务:
- 关键词:
A7C、索尼 A7C - 价格范围:按市场价设置上限
- 区域:优先本省或同城
- 新发布范围:最近一天或最近几小时
- AI 标准:排除单镜头、排除维修机、排除明显配件、关注快门数和成色
- 通知:只推送 AI 判断通过的结果
稳定运行后,再逐步增加任务数量。不要一开始就上几十个关键词、多个账号和高频 Cron。先看登录态稳定性、误报率、AI 成本和通知噪音,再调参数。
总结
ai-goofish-monitor 把闲鱼监控从“关键词脚本”推进到了“可管理的 AI 监控系统”。它用 Playwright 处理页面自动化,用 AI 处理复杂判断,用 Web UI 管理任务和结果,用 SQLite 保存数据,再通过多种通知渠道把结果推送出来。
它最适合个人或小团队做特定商品监控,尤其是二手数码、硬件、摄影器材这类价格波动大、发布时间敏感、描述噪音多的品类。
但它也需要谨慎使用:登录态要保护,默认密码要改,抓取频率要克制,AI 结果要人工复核,平台规则和隐私边界不能忽视。把它当成辅助筛选工具,它会很有价值;把它当成全自动交易系统,就容易高估它的能力。
参考链接: