闲鱼智能监控:Playwright结合AI筛选商品并多渠道通知
给想盯闲鱼商品的用户用的AI监控系统,Playwright抓取后由图片模型筛选并通知。
GitHub Usagi-org/ai-goofish-monitor 更新 2026-11-04 分支 master 星标 16.4K 分叉 2.8K
Python Vue Playwright SQLite 闲鱼监控 Docker

🧭 决策指南

适合,如果你

  • 你已有OPENAI_API_KEY、OPENAI_BASE_URL和支持图片输入的OPENAI_MODEL_NAME。
    README“最少配置”列出这三个变量且均为必填。
  • 你需要在Web UI中管理多个关键词、价格、区域和AI Prompt任务。
    README“核心特性”和“任务管理”说明支持多任务并发及这些筛选项。
  • 你希望用Docker快速运行,并接受默认Web UI端口8000。
    README“Docker部署(推荐)”提供docker compose up -d,默认地址为http://127.0.0.1:8000。
  • 你需要Cron调度,并通过Telegram、Bark或Webhook接收结果。
    README“核心特性”和“通知”配置列出Cron及这些通知渠道。

不适合,如果你

  • 你没有OpenAI兼容接口,或模型不支持图片输入。
    README“最少配置”要求OPENAI_BASE_URL和支持图片输入的OPENAI_MODEL_NAME。
  • 你不愿导入闲鱼登录态JSON或维护state/目录。
    README“第一次使用”要求用Chrome扩展导出登录态JSON并保存到state/。
  • 你需要绕过闲鱼用户协议、robots.txt或高频请求限制。
    README“注意事项”明确要求遵守用户协议和robots.txt,并避免过于频繁的请求。
  • 你要求生产环境直接使用默认Web凭据admin/admin123。
    README“Web界面认证”明确要求生产环境修改默认账号密码。

前置条件

  • Docker部署需要可访问Docker镜像;官方镜像为ghcr.io/usagi-org/ai-goofish:latest。
  • AI配置必须填写OPENAI_API_KEY、OPENAI_BASE_URL和OPENAI_MODEL_NAME。
  • 本地开发需要Python 3.10+、Node.js + npm、Playwright CLI与Chromium。
  • 首次本地运行前,README要求执行python3 -m pip install playwright并安装Chromium。
  • 首次使用需要Chrome扩展导出的闲鱼登录态JSON,并保存到state/目录。
  • Docker中的RUN_HEADLESS应保持true,默认数据库路径为/app/data/app.sqlite3。

第一步命令(README 原文)

git clone https://github.com/Usagi-org/ai-goofish-monitor && cd ai-goofish-monitor

要注意

  • 修改.env的SERVER_PORT后,必须同步修改docker-compose.yaml端口映射。
    README“Docker部署(推荐)”的端口配置说明。
  • 商品图片先写入images/task_images_,任务结束后默认清理。
    README“数据存储与迁移”对images/和临时图片目录的说明。
  • SQLite主库之外,state、prompts、logs和images仍依赖文件系统目录。
    README“数据存储与迁移”明确说明这些目录不在SQLite中。
  • AI任务创建返回202和job,需要轮询generate-jobs/{job_id}进度。
    README“任务创建API”对POST /api/tasks/generate和GET接口的说明。
  • 前端构建产物缺失时,根目录dist/不存在会导致本地页面无法打开。
    README“常见问题”要求执行./start.sh或npm run build并确认dist/。

材料未说明

  • README未列出兼容的具体多模态模型名称及各模型的API费用。
  • README未给出Playwright并发任务数量、账号数量或代理池规模上限。
  • README未量化闲鱼登录态有效期、风控触发阈值和账号恢复方式。
  • README未说明SQLite在大规模历史结果下的容量、查询性能和备份流程。
  • README未说明ntfy.sh、Telegram、Webhook等通知失败后的统一重试策略。
  • README未提供Docker镜像ghcr.io/usagi-org/ai-goofish:latest的镜像体积和资源要求。

💡 深度解析

6
不适合 我打算把 Web UI 部署到自有服务器并通过反向代理访问,同时保存闲鱼登录态、Prompt、日志和商品图片;这个项目能直接满足我的安全约束吗?
适合读者: 在非本机环境暴露 Web UI、需要保存闲鱼登录态和商品图片,并要求通过 HTTPS 与自定义账号保护管理界面的部署者

不适合直接用于你的安全约束,因为 README 只提供基础登录和目录持久化,明确暴露了默认凭据风险,却没有说明 HTTPS、密钥托管、加密存储或细粒度权限。

  • 默认 Web 账号密码是 admin/admin123,README 要求生产环境务必修改。
  • state/ 保存登录态 cookie,prompts/、logs/ 和 images/ 仍使用文件系统目录;商品图片默认任务结束后清理。
  • Web UI 通过登录页和 POST /auth/status 校验凭据,登录状态保存在浏览器本地。
  • README 的最佳实践才提到反向代理、HTTPS 和限制 8000 端口,但没有描述内置 TLS、RBAC、审计或数据库加密。

因此,它可以作为受控内网工具,但不能据 README 证明满足面向公网或敏感数据场景的完整安全要求。

  • Web 界面认证:默认账号密码为 admin/admin123,生产环境请务必修改
  • 数据存储与迁移:state、prompts、logs、images 仍然是文件系统目录
  • Web 界面认证:通过 POST /auth/status 校验,浏览器本地保存登录状态
  • 最佳实践:限制 8000 端口公网暴露,使用反向代理、HTTPS
cp .env.example .env
材料未说明:README 未说明登录态 cookie、API Key、通知 Token 和数据库文件是否加密保存。;README 未说明是否支持多用户、角色权限、登录审计、CSRF 防护或会话过期策略。
视情况 我需要绑定多个闲鱼账号,使用代理池轮换和失败重试,并把新商品推送到 Telegram 或 Webhook;这个项目能满足我的运行方式吗?
适合读者: 需要同时管理多个闲鱼账号、代理池和 Cron 任务,并依赖 Telegram 或 Webhook 接收新商品通知的高频用户

视情况,因为项目确实提供多账号、代理轮换、失败保护和多渠道通知,但这些机制不能保证绕过闲鱼风控,也不等于适合高频或大规模采集。

  • 账号管理支持导入、更新、删除登录态,并可为每个任务指定账号或交给系统自动选择。
  • 配置项包含 PROXY_POOL、轮换模式、重试上限、黑名单 TTL、任务失败阈值和暂停时间。
  • 通知支持 Telegram 的 Bot Token、Chat ID,以及通用 Webhook。
  • README 明确要求遵守用户协议和 robots.txt,避免过于频繁请求;过高并发、频繁切换账号或代理可能导致登录失效或账号限制。

因此,若你的“高频”只是多个低频监控任务,可以匹配;若目标是批量采集或规避平台限制,则不适合。

  • 核心特性:账号与代理轮换,支持多账号管理、任务绑定账号、代理池轮换与失败重试
  • 配置说明:PROXY_ROTATION_ENABLED、PROXY_POOL、PROXY_ROTATION_RETRY_LIMIT、PROXY_BLACKLIST_TTL
  • 通知:TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID / WEBHOOK_*
  • 注意事项:不要进行过于频繁的请求,以免账号被限制
docker compose up -d
材料未说明:README 未给出单账号、单代理或代理池的安全请求频率,以及不同任务并发数的建议上限。;README 未说明代理质量检测、账号与代理绑定策略,以及 Telegram/Webhook 失败后的消息重试机制。
适合 我关注特定品牌和型号,必须判断成色、配件和图片内容,且不想手写复杂关键词规则;AI 多模态模式适合我的筛选需求吗?
适合读者: 只想用自然语言描述品牌、型号、成色和配件要求,并通过商品图片判断闲鱼商品是否值得关注的数码收藏者

适合,因为项目支持自然语言生成分析标准,并把商品文字和图片一起交给支持图片输入的模型判断;但结果应被视为初筛,而不是鉴定结论。

  • “AI判断”允许填写详细需求,后台 job 会先生成分析标准,再创建任务。
  • 工作流包含抓取商品详情、卖家信息、下载图片、调用 AI 分析和保存结果,符合成色、配件等非结构化信息的判断需求。
  • 任务仍可叠加关键词、价格、发布时间和区域筛选,先缩小结果集。
  • README 要求模型支持图片输入,并明确 AI 可能受图片质量、描述完整性和 Prompt 影响,产生误报或漏报。

因此,它适合发现和排序候选商品;交易前仍需核验原始详情、卖家信息和商品真实性。

  • 核心特性:AI 驱动,自然语言创建任务,多模态模型深度分析商品
  • 创建第一个任务:AI判断填写“详细需求”,后台异步生成分析标准
  • 工作流程:抓取商品详情与卖家信息、下载商品图片、调用 AI 进行分析
  • 使用限制:AI 结果不适合视为交易、鉴定或价格评估的绝对结论
docker compose up -d
材料未说明:README 未说明模型对中文商品描述、遮挡图片、低清图片和配件缺失场景的准确率。;README 未说明 AI 分析结果的置信度字段、可解释性格式或人工复核界面。
适合 我准备在 Docker 中运行多个闲鱼任务,使用 OpenAI 兼容接口和支持图片输入的模型,并通过 Cron 定时监控;这个项目适合我吗?
适合读者: 准备使用 Docker、OpenAI 兼容接口和支持图片输入模型,长期运行多个闲鱼监控任务的自托管用户

适合,因为 README 的部署方式、模型接口和调度能力正好覆盖你的约束,但它更适合单机或中小规模自托管。

  • Docker 镜像已内置 Chromium,不需要宿主机额外安装浏览器。
  • AI 配置明确要求 OPENAI_API_KEY、OPENAI_BASE_URL 和支持图片输入的 OPENAI_MODEL_NAME。
  • 任务支持 Cron、关键词、价格、发布时间及省/市/区筛选,可降低无效商品和 AI 调用数量。
  • SQLite 保存任务、结果和价格历史,默认挂载 ./data:/app/data,但高并发和大量历史数据的容量边界没有说明。

因此,它能直接搭建持续监控链路;若任务量继续扩大,README 没有提供分布式调度或高可用方案。

  • Docker 部署:Docker 镜像已内置 Chromium
  • 最少配置:OPENAI_API_KEY、OPENAI_BASE_URL、OPENAI_MODEL_NAME
  • 核心特性:定时调度,支持 Cron 配置周期性任务
  • 数据存储与迁移:当前在线主存储为 SQLite
git clone https://github.com/Usagi-org/ai-goofish-monitor && cd ai-goofish-monitor
cp .env.example .env
vim .env # 填写相关配置项
docker compose up -d
材料未说明:README 未说明在多个并发任务下 SQLite 的最大稳定任务数、写入吞吐和磁盘增长速度。;README 未说明所选视觉模型的单商品调用成本、限流策略和上下文长度要求。
适合 我只需要在一台机器上运行 Cron 监控,保存任务结果和价格历史,并在结果页查询和导出;SQLite 方案适合我的规模吗?
适合读者: 需要把闲鱼监控结果写入 SQLite、保留价格历史并长期运行定时任务,但只接受单机部署的个人采购者

适合,只要你的约束确实是单机和中小规模,因为项目已经把任务、结果和价格历史迁移到 SQLite,并让结果页直接查询数据库。

  • 默认数据库为 data/app.sqlite3,Docker 会把 ./data 挂载到容器内 /app/data。
  • 应用启动时自动建库建表,并尝试从 config.json、jsonl/ 和 price_history/ 导入旧数据。
  • README 说明结果页和导出功能现在从 SQLite 查询,不再直接扫描 JSONL 文件。
  • 图片默认存放在 images/task_images_/,任务结束后清理,因此不会自动形成完整图片档案。

如果你要的是任务结果和价格变化记录,这套设计匹配;如果要长期复核每张商品图片或支持高并发多用户,README 没有给出足够保证。

  • Docker 部署:SQLite 主库挂载到 ./data:/app/data,数据库文件默认为 data/app.sqlite3
  • 数据存储与迁移:应用启动时自动建库建表并导入旧数据
  • 结果查看与运行日志:结果页和导出功能现在从 SQLite 查询
  • 数据存储与迁移:商品图片任务结束后默认会清理
docker compose up -d
材料未说明:README 未说明 SQLite 在单机下可承受的任务数、结果行数、价格历史规模和查询延迟。;README 未说明旧 JSON、JSONL 和价格历史导入失败时的回滚、重复导入或错误报告机制。
适合 我已经有 Python 3.10+、Node.js v20.18.3 和 Chromium 环境,想修改 Playwright 采集逻辑并同时调试 Vue 前端;这个项目适合本地开发吗?
适合读者: 维护 Python 3.10+、Node.js v20.18.3 和 Playwright/Chromium 本地环境,想修改采集或任务逻辑的开发者

适合,因为 README 给出了后端、前端、浏览器依赖和测试命令,且 FastAPI 与 Vue/TypeScript 的边界清楚,便于分别调试。

  • 开发环境要求 Python 3.10+、Node.js + npm,以及 Playwright CLI 与 Chromium。
  • 后端可用 python -m src.app 或 Uvicorn 启动;前端在 web-ui 中执行 npm run dev,Vite 会把 /api、/auth、/ws 代理到 8000 端口。
  • start.sh 会检查浏览器、安装依赖、构建前端并启动后端,适合快速验证完整链路。
  • 测试同时覆盖 Python 的 pytest 和前端 npm run build。

不过,修改网页采集仍依赖闲鱼页面结构和登录态;README 没有说明端到端测试夹具、模拟页面或采集逻辑的稳定接口。

  • 开发者开发:Python 3.10+、Node.js + npm、Playwright CLI 与 Chromium
  • 手动启动:python -m src.app;cd web-ui && npm install && npm run dev
  • 开发者开发:Vite 开发服务器会代理 /api、/auth、/ws
  • 测试与校验:PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 pytest;cd web-ui && npm run build
git clone https://github.com/Usagi-org/ai-goofish-monitor
cd ai-goofish-monitor
cp .env.example .env
材料未说明:README 未说明采集模块是否有独立单元测试、页面快照或可替换的浏览器适配层。;README 未说明修改 Playwright 逻辑后需要覆盖哪些闲鱼登录、详情和图片流程。

✨ 核心亮点

  • Playwright抓取商品,支持多模态AI分析
  • Web UI统一管理任务、账号和运行日志
  • SQLite保存任务、结果与价格历史
  • 支持Cron调度与ntfy.sh等通知渠道
  • Docker镜像内置Chromium,仍需AI接口配置

🔧 工程化

  • Web UI可创建AI或关键词任务并绑定账号
  • 任务支持价格、区域、发布时间和AI Prompt筛选
  • 运行结果和日志从SQLite查询并支持导出
  • 账号与代理池支持轮换、失败重试和风控暂停

⚠️ 风险

  • 必须配置支持图片输入的OPENAI_MODEL_NAME
  • 首次使用需通过Chrome扩展导入闲鱼登录态JSON
  • README要求遵守闲鱼协议和robots.txt,频繁请求可能导致账号受限
  • 默认Web账号为admin/admin123,生产环境必须修改
  • 修改SERVER_PORT后还要同步docker-compose.yaml端口映射

👥 适合谁?

  • 需要监控闲鱼商品并使用Python与Playwright的开发者
  • 需要Vue Web UI管理多任务和多账号的个人或小团队
  • 已有OpenAI兼容接口和图片模型的AI应用使用者
  • 能运行Docker与Chromium并处理登录态的部署者