ai-goofish-monitor README

The project's README from github.com/Usagi-org/ai-goofish-monitor. As one markdown file: README.md.

闲鱼智能监控系统

[中文] | English

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

核心特性

截图

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

🐳 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

数据存储与迁移

最少配置

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

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

第一次使用

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

创建第一个任务

用户使用说明

点击展开 Web UI 功能说明

任务管理

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

账号管理

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

结果查看与运行日志

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

系统设置

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

开发者开发

环境要求

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

测试与校验

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

任务创建 API

点击展开 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

ai-goofish-monitor (Usagi-org/ai-goofish-monitor)

Searching Database…

这是什么?一个可自托管的闲鱼(中国最大的二手交易平台)监控系统,使用 Playwright 抓取商品列表,并借助 AI 实时或定时分析、筛选商品,同时提供完整的网页管理界面。
这是命令行爬虫,还是完整的网页应用?这是一个完整的自托管网页应用:后端使用 FastAPI,前端为已构建好的网页界面,同时 Playwright 以无头模式在后台运行,用于抓取和分析商品列表。
我该怎么让它运行起来?推荐使用 Docker Compose 和预构建镜像(ghcr.io/usagi-org/ai-goofish:latest),该镜像已内置 Chromium。若要手动部署,请运行 ./start.sh,它会检查 Playwright 和 Chromium、安装依赖、构建前端,并启动 FastAPI 后端。
我需要 OpenAI 格式的 API 密钥吗?还需要其他什么?需要。进行 AI 分析时,必须设置 OPENAI_API_KEY、OPENAI_BASE_URL 和 OPENAI_MODEL_NAME(需为支持图片输入的模型)。若不使用 Docker 部署,还需要 Python 3.10+、Node.js/npm,以及带 Chromium 的 Playwright CLI。
开始监控前还有什么要注意的吗?在任何任务真正运行之前,你需要先用 Chrome 扩展程序将闲鱼登录会话导出为 cookie/JSON 文件,然后在账号管理中导入。
分析时可以使用哪些 AI 服务商?任何兼容 OpenAI 的 API 接口都可以使用,只要搭配具备视觉能力的模型即可,因为 OPENAI_BASE_URL 和 OPENAI_MODEL_NAME 均可配置。这包括 OpenAI,或兼容 Gemini 的网关等服务商。
有哪些通知渠道可以在找到符合条件的商品时提醒我?开箱即用,支持 ntfy.sh、Bark、企业微信(WeCom)、Telegram、Gotify 以及通用 Webhook。
我可以同时运行多个搜索吗?可以。每个任务都有各自的关键词、价格区间、筛选条件和 AI 提示词,任务之间可以并发运行,并且各自绑定独立的账号。
遇到代理或账号故障时,它能自动处理吗?能。它支持轮换代理池,可设置重试次数上限和黑名单存活时间(TTL);同时,连续失败次数达到可配置的阈值后,任务会自动暂停。
Creator
Usagi-org
Size
9.4 MB
Stars
14.9K
Age
1y
Commits · 90 Days