ai-goofish-monitor

Usagi-orgMIT活跃维护 有专家点评

用 Playwright 加 AI 盯闲鱼,多任务实时或定时监控商品并做智能分析,配后台管理界面,帮你从海量二手商品里筛出想要的。

基于 Playwright 和AI实现的闲鱼多任务实时/定时监控与智能分析系统,配备了功能完善的后台管理UI。帮助用户从闲鱼海量商品中,找到心仪产品。

2.5发布于 2026-10-09 07:17 UTC19,537star +1,224 / 7 天3,172fork同步于 2026-11-11 05:23 UTC

专家点评

上手难度:进阶更新于 2026-11-11

用 Playwright 抓闲鱼搜索页、多模态模型筛商品、带 Web 后台的多任务监控器

适用场景

  • 盯特定型号的二手货:关键词+价格上限+AI 判断成色和描述可信度,比纯关键词轮询少收一堆垃圾结果,纯脚本方案得自己写图片理解和文案过滤
  • 多组关键词并行跑:每个任务独立配 Prompt 和价格区间,适合同时盯几个不同品类,单任务脚本要复制多份改配置
  • 需要手机推送而不是盯屏幕:内置 ntfy/Bark/Telegram,省掉自己接通知层
  • 想用现成后台看历史命中记录:自带 Web UI 和任务管理,不用自己搭前端和存储

踩坑

  • 登录态是硬门槛:必须用 Chrome 扩展导出闲鱼登录态 JSON 再粘进账号管理,纯命令行 Linux 环境弹不出扫码界面,issue 里专门有人问过这条绕法;无头服务器部署前先确认这条链路能走通
  • AI 分析依赖外部多模态模型:.env 里 OPENAI_API_KEY / BASE_URL / MODEL_NAME 三项缺一不可,模型不支持图片输入时分析环节直接不可用,成本按每次抓取的商品图计,任务多、频率高时账单会跟着涨
  • 抓取侧靠 Playwright 打闲鱼页面,多账号和代理池是 README 明说的应对手段,说明单账号高频访问会被限;issue 里有任务能建但结果为空的情况,排查时先怀疑登录态失效和页面结构变动

同类对比

同类里更轻的是自己写 Playwright + 定时任务 + 一个通知脚本,不需要后台 UI 和 AI 判断时没必要上这套;如果核心诉求是通用网页变动监控而非闲鱼,选 changedetection.io 这类通用方案更合适

怎么上手

由 README 提炼,执行前请确认
git clone https://github.com/Usagi-org/ai-goofish-monitor && cd ai-goofish-monitor
cp .env.example .env
docker compose up -d
硬件要求按 README 说明

README 未说明显存或 GPU 要求;Docker 镜像已内置 Chromium,无需宿主机另装浏览器,本地运行需可用 Chrome/Edge 或 Linux 下的 Chromium。

有 Docker 镜像
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

用 Playwright 抓闲鱼商品、AI 判断值不值得买,带 Web 后台的多任务监控系统

用 Playwright 加 AI 盯闲鱼,多任务实时或定时监控商品并做智能分析,配后台管理界面,帮你从海量二手商品里筛出想要的。

核心能力

  • 用 Playwright 抓取闲鱼搜索结果与商品详情
  • 多模态模型分析商品图片并给出推荐结论
  • 多任务并发,各自配置关键词、价格与 AI Prompt
  • 支持 Cron 定时调度与 ntfy、Bark、Telegram 等通知
  • 多账号与代理池轮换,失败自动重试

容易踩的坑

必须在 .env 里填 OPENAI_API_KEY、OPENAI_BASE_URL 和支持图片输入的 OPENAI_MODEL_NAME,否则 AI 分析不可用;首次使用需用 Chrome 扩展导出闲鱼登录态 JSON 并粘贴到账号管理,否则任务跑不起来;Web UI 默认账号密码是 admin/admin123,生产环境务必修改。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本2.5
  1. 2.5最新正式版2026-10-09 · 2026-10-09 07:17 UTC

    What's Changed

    New Contributors

    Full Changelog: https://github.com/Usagi-org/ai-goofish-monitor/compare/2.4...2.5

  2. 2.42026-04-27 · 2026-04-27 10:52 UTC
    查看更新说明

    What's Changed

    New Contributors

    Full Changelog: https://github.com/Usagi-org/ai-goofish-monitor/compare/2.3...2.4

  3. 2.32026-03-18 · 2026-03-18 10:44 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/Usagi-org/ai-goofish-monitor/compare/2.2...2.3

  4. 2.22026-03-16 · 2026-03-16 03:10 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/Usagi-org/ai-goofish-monitor/compare/v2.1...2.2

  5. v2.12026-03-13 · 2026-03-13 05:11 UTC
    查看更新说明

    What's Changed

    New Contributors

    Full Changelog: https://github.com/Usagi-org/ai-goofish-monitor/compare/v2.0...v2.1

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    闲鱼智能监控系统

    [中文] | English

    基于 Playwright 和 AI 的闲鱼多任务实时监控,提供完整的 Web 管理界面。

    核心特性

    • Web 可视化管理: 任务管理、账号管理、AI 标准编辑、运行日志、结果浏览
    • AI 驱动: 自然语言创建任务,多模态模型深度分析商品
    • 多任务并发: 独立配置关键词、价格、筛选条件和 AI Prompt
    • 高级筛选: 包邮、新发布时间范围、省/市/区三级区域筛选
    • 即时通知: 支持 ntfy.sh、企业微信、Bark、Telegram、Webhook等多渠道
    • 定时调度: 支持 Cron 配置周期性任务
    • 账号与代理轮换: 多账号管理、任务绑定账号、代理池轮换与失败重试
    • Docker 部署: 一键容器化部署

    截图

    监控概览 任务管理 结果查看 通知推送

    🐳 Docker 部署(推荐)

    git clone https://github.com/Usagi-org/ai-goofish-monitor && cd ai-goofish-monitor
    cp .env.example .env
    vim .env # 填写相关配置项
    docker compose up -d
    docker compose logs -f app
    docker compose down
    

    如果镜像无法访问或下载速度慢,可尝试使用加速:

    
    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
    docker compose up -d
    
    
    • 默认 Web UI 地址:http://127.0.0.1:8000
    • Docker 镜像已内置 Chromium,无需宿主机额外安装浏览器。
    • 官方镜像地址:ghcr.io/usagi-org/ai-goofish:latest
    • 更新镜像:docker compose pull && docker compose up -d
    • 如果你修改了 .env 中的 SERVER_PORT,请同步更新 docker-compose.yaml 里的端口映射。
    • docker-compose.yaml 默认会把 SQLite 主库挂载到 ./data:/app/data,数据库文件默认为 data/app.sqlite3
    • 目前默认持久化这些目录:
      • data/ SQLite 主存储(任务、结果、价格历史)
      • state/ 登录状态 cookie 文件
      • prompts/ 任务提示词
      • logs/ 运行日志
      • images/ 商品图片与任务临时图片目录
      • config.json、jsonl/、price_history/ 首次升级到 SQLite 时用于兼容导入的旧数据源

    数据存储与迁移

    • 当前在线主存储为 SQLite,默认路径 data/app.sqlite3
    • 可通过环境变量 APP_DATABASE_FILE 自定义数据库路径;Docker 默认设置为 /app/data/app.sqlite3
    • 应用启动时会自动建库建表,并尝试从旧的 config.json、jsonl/、price_history/ 导入一次历史数据
    • state/、prompts/、logs/、images/ 仍然是文件系统目录,不在 SQLite 中
    • 商品图片会临时落到 images/task_images_<task_name>/,任务结束后默认会清理
    • 首次升级完成并确认 data/app.sqlite3 中数据正确后,可视部署方式决定是否继续保留旧的 config.json、jsonl/、price_history/ 挂载

    最少配置

    变量说明必填
    OPENAI_API_KEYAI 模型 API Key是
    OPENAI_BASE_URLOpenAI 兼容接口地址是
    OPENAI_MODEL_NAME支持图片输入的模型名称是
    WEB_USERNAME / WEB_PASSWORDWeb UI 登录账号密码,默认 admin/admin123否

    其余配置见下方“配置说明”。

    第一次使用

    1. 打开默认 Web UI http://127.0.0.1:8000 并登录。
    2. 进入“闲鱼账号管理”,使用 Chrome 扩展 导出并粘贴闲鱼登录态 JSON。
    3. 登录态文件会保存到 state/ 目录,例如 state/acc_1.json。
    4. 回到“任务管理”,创建任务并绑定账号后即可运行。

    创建第一个任务

    • AI判断:填写“详细需求”,提交后会弹出独立进度弹窗,后台异步生成分析标准。
    • 关键词判断:填写关键词规则,任务会直接创建,不经过 AI 生成流程。
    • 区域筛选:已改为省 / 市 / 区三级选择器,数据基于闲鱼页面抓取快照内置。

    用户使用说明

    任务管理

    • 支持 AI 创建、关键词规则、价格范围、新发布范围、区域筛选、账号绑定、定时规则。
    • AI 任务创建是后台 job 流程,提交后会打开单独的进度弹窗。
    • 区域筛选会显著缩小结果集,默认留空。

    账号管理

    • 支持导入、更新、删除闲鱼账号登录态。
    • 每个任务可指定账号,也可不绑定并交给系统自动选择。

    结果查看与运行日志

    • 结果页和导出功能现在从 SQLite 查询,不再直接扫描 jsonl 文件。
    • 日志页按任务展示运行过程,便于排查登录态失效、风控和 AI 调用问题。

    系统设置

    • 可查看系统状态、编辑 Prompt、调整代理与轮换相关配置。

    开发者开发

    环境要求

    • Python 3.10+
    • Node.js + npm(本地验证 Node v20.18.3 可完成前端构建)
    • Playwright CLI 与 Chromium,首次运行前建议执行 python3 -m pip install playwright && python3 -m playwright install chromium
    • Chrome / Edge 浏览器(Linux 环境也可使用 Chromium;start.sh 会先检查浏览器是否存在)
    git clone https://github.com/Usagi-org/ai-goofish-monitor
    cd ai-goofish-monitor
    cp .env.example .env
    

    一键启动

    chmod +x start.sh
    ./start.sh
    

    start.sh 会先检查 Playwright CLI 和浏览器前置条件;在前置条件满足后自动安装项目依赖、构建前端、复制构建产物并启动后端。

    手动启动

    # 后端
    python -m src.app
    # 或
    uvicorn src.app:app --host 0.0.0.0 --port 8000 --reload
    
    # 前端
    cd web-ui
    npm install
    npm run dev
    
    • FastAPI 启动时会自动初始化 SQLite,并在首次启动时尝试导入旧的 config.json/jsonl/price_history
    • spider_v2.py 默认从 SQLite 读取任务;只有显式传入 --config <path> 时才会走 JSON 配置兼容模式
    • 默认数据库路径为 data/app.sqlite3
    • Vite 开发服务器会将 /api、/auth、/ws 代理到 http://127.0.0.1:8000。
    • npm run build 先生成 web-ui/dist/,start.sh 再复制到仓库根目录 dist/。
    • FastAPI 负责提供根目录 dist/index.html 和 dist/assets/。
    • ./start.sh 默认输出访问地址 http://localhost:8000 和 API 文档 http://localhost:8000/docs。

    测试与校验

    PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 pytest
    cd web-ui && npm run build
    

    任务创建 API

    • POST /api/tasks/generate
      • decision_mode=ai:返回 202 和 job,需要继续轮询进度。
      • decision_mode=keyword:直接返回已创建任务。
    • GET /api/tasks/generate-jobs/{job_id}:查询 AI 任务生成进度。
    • POST /auth/status:校验 Web UI 登录凭据。

    配置说明

    AI 与运行时

    • OPENAI_API_KEY / OPENAI_BASE_URL / OPENAI_MODEL_NAME:AI 模型接入必填项。
    • PROXY_URL:为 AI 请求单独指定 HTTP/SOCKS5 代理。
    • RUN_HEADLESS:是否以无头模式运行爬虫;Docker 中应保持 true。
    • SERVER_PORT:后端监听端口,默认 8000。
    • LOGIN_IS_EDGE:本地环境可切换为 Edge 内核;Docker 镜像未内置 Edge,容器内会固定使用 Chromium。
    • PCURL_TO_MOBILE:是否将 PC 商品链接转换为移动端链接。

    通知

    • NTFY_TOPIC_URL
    • GOTIFY_URL / GOTIFY_TOKEN
    • BARK_URL
    • WX_BOT_URL
    • TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID / TELEGRAM_API_BASE_URL
    • WEBHOOK_*

    代理轮换与失败保护

    • PROXY_ROTATION_ENABLED
    • PROXY_ROTATION_MODE
    • PROXY_POOL
    • PROXY_ROTATION_RETRY_LIMIT
    • PROXY_BLACKLIST_TTL
    • TASK_FAILURE_THRESHOLD
    • TASK_FAILURE_PAUSE_SECONDS
    • TASK_FAILURE_GUARD_PATH

    完整示例见 .env.example。

    Web 界面认证

    • Web UI 当前使用登录页收集账号密码,并通过 POST /auth/status 校验。
    • 登录成功后,前端会在浏览器本地保存登录状态,用于路由守卫和 WebSocket 初始化。
    • 默认账号密码为 admin/admin123,生产环境请务必修改。

    🚀 工作流程

    下图描述了单个监控任务从启动到完成的核心处理逻辑。主服务运行于 src.app,按用户操作或定时调度启动一个或多个任务进程。

    graph TD
        A[启动监控任务] --> B[选择账号/代理配置];
        B --> C[任务: 搜索商品];
        C --> D{发现新商品?};
        D -- 是 --> E[抓取商品详情 & 卖家信息];
        E --> F[下载商品图片];
        F --> G[调用AI进行分析];
        G --> H{AI是否推荐?};
        H -- 是 --> I[发送通知];
        H -- 否 --> J[保存记录到 SQLite];
        I --> J;
        D -- 否 --> K[翻页/等待];
        K --> C;
        J --> C;
        C --> L{触发风控/异常?};
        L -- 是 --> M[账号/代理轮换并重试];
        M --> C;
    

    常见问题

    AI 任务创建为什么不是立即完成?

    AI 模式会先生成分析标准,再创建任务。现在该流程已改为后台 job,提交后会显示独立进度弹窗,避免表单长时间卡住。

    区域筛选为什么默认建议留空?

    区域筛选会显著减少搜索结果,适合明确只看某个区域的场景。若你先验证整体市场,建议先不填。

    本地页面打开后提示前端构建产物不存在?

    说明根目录 dist/ 缺失。可直接执行 ./start.sh,或先在 web-ui/ 里执行 npm run build,再确认构建产物已复制到仓库根目录。

    ./start.sh 为什么提示缺少 Playwright 或浏览器?

    这是脚本的前置检查。请先安装 Playwright CLI 与 Chromium,并确保系统中可用 Chrome / Edge(Linux 环境也可用 Chromium),然后重新执行 ./start.sh。

    致谢

    本项目在开发过程中参考了以下优秀项目,特此感谢:

    以及感谢LinuxDo相关人员的脚本贡献

    以及感谢 LinuxDo 社区。

    以及感谢 ClaudeCode/Gemini/Codex 等模型工具,解放双手 体验Vibe Coding的快乐。

    注意事项

    • 请遵守闲鱼的用户协议和robots.txt规则,不要进行过于频繁的请求,以免对服务器造成负担或导致账号被限制。
    • 本项目仅供学习和技术研究使用,请勿用于非法用途。
    • 本项目采用 MIT 许可证 发布,按"现状"提供,不提供任何形式的担保。
    • 项目作者及贡献者不对因使用本软件而导致的任何直接、间接、附带或特殊的损害或损失承担责任。
    • 如需了解更多详细信息,请查看 免责声明 文件。

    Star History

    Star History Chart

    Alt