基于 Playwright 和 AI 的闲鱼多任务实时监控工具,提供完整的 Web 管理界面。
- Web 可视化管理: 任务管理、AI 标准编辑、实时日志、结果浏览
- AI 驱动: 自然语言创建任务,多模态模型深度分析商品
- 多任务并发: 独立配置关键词、价格、筛选条件和 AI Prompt
- 即时通知: 支持 ntfy.sh、企业微信、Bark、Webhook
- 定时调度: Cron 表达式配置周期性任务
- Docker 部署: 一键容器化部署
要求: Python 3.10+
git clone https://github.com/Usagi-org/ai-goofish-monitor
cd ai-goofish-monitor
pip install -r requirements.txt- 创建配置文件
cp .env.example .env- 核心配置项
| 变量 | 说明 | 必填 |
|---|---|---|
OPENAI_API_KEY |
AI 模型 API Key | 是 |
OPENAI_BASE_URL |
API 接口地址(兼容 OpenAI 格式) | 是 |
OPENAI_MODEL_NAME |
多模态模型名称(如 gpt-4o) |
是 |
WEB_USERNAME / WEB_PASSWORD |
Web 界面登录凭据(默认 admin / admin123) |
否 |
NTFY_TOPIC_URL |
ntfy.sh 通知地址 | 否 |
BARK_URL |
Bark 推送地址 | 否 |
WX_BOT_URL |
企业微信 Webhook(需用双引号包围) | 否 |
完整配置项参考 .env.example
- 获取登录状态
启动服务后,访问 Web UI → 系统设置 → 手动更新登录状态,按提示使用 Chrome 扩展 提取登录信息。
python web_server.py访问 http://127.0.0.1:8000,使用自然语言创建监控任务即可开始使用。
使用 Docker 可以将应用及其所有依赖项打包到一个标准化的单元中,实现快速、可靠和一致的部署。
-
安装 Docker: 请确保你的系统已安装 Docker Engine。
-
克隆项目并配置:
git clone https://github.com/Usagi-org/ai-goofish-monitor cd ai-goofish-monitor -
创建
.env文件: 参考 快速开始 部分的说明,在项目根目录创建并填写.env文件。 -
获取登录状态 (关键步骤!): Docker容器内无法进行扫码登录。请在启动容器后,通过访问Web UI来设置登录状态:
- (在宿主机上)执行
docker-compose up -d启动服务。 - 在浏览器中打开
http://127.0.0.1:8000访问Web UI。 - 进入 "系统设置" 页面,点击 "手动更新" 按钮。
- 按照弹窗内的指引操作:
- 在您的个人电脑上,使用Chrome浏览器安装闲鱼登录状态提取扩展
- 打开并登录闲鱼官网
- 登录成功后,点击浏览器工具栏中的扩展图标
- 点击"提取登录状态"按钮获取登录信息
- 点击"复制到剪贴板"按钮
- 将复制的内容粘贴到Web UI中保存即可
- (在宿主机上)执行
ℹ️ 关于Python版本: 使用Docker部署时,项目使用的是Dockerfile中指定的Python 3.11版本,无需担心本地Python版本兼容性问题。
项目已包含 docker-compose.yaml 文件,我们推荐使用 docker-compose 来管理容器,这比使用 docker run 更方便。
在项目根目录下,运行以下命令来启动容器:
docker-compose up --build -d这会以后台模式启动服务。docker-compose 会自动读取 .env 文件和 docker-compose.yaml 的配置,并根据其内容来创建和启动容器。
如果容器内遇到网络问题,请自行排查或使用代理。
⚠️ OpenWrt 环境部署注意事项: 如果您在 OpenWrt 路由器上部署此应用,可能会遇到 DNS 解析问题。这是因为 Docker Compose 创建的默认网络可能无法正确继承 OpenWrt 的 DNS 设置。如果遇到ERR_CONNECTION_REFUSED错误,请检查您的容器网络配置,可能需要手动配置 DNS 或调整网络模式以确保容器可以正常访问外部网络。
- 访问 Web UI: 在浏览器中打开
http://127.0.0.1:8000。 - 查看实时日志:
docker-compose logs -f - 停止容器:
docker-compose stop - 启动已停止的容器:
docker-compose start - 停止并移除容器:
docker-compose down
点击展开 Web UI 功能详情
- 任务管理:
- AI创建任务: 使用自然语言描述需求,一键生成监控任务和配套AI分析标准。
- 可视化编辑与控制: 在表格中直接修改任务参数(如关键词、价格、定时规则等),并能独立启/停、删除每个任务。
- 定时调度: 为任务配置 Cron 表达式,实现自动化周期性运行。
- 结果查看:
- 卡片式浏览: 以图文卡片形式清晰展示每个符合条件的商品。
- 智能筛选与排序: 可一键筛选出所有被AI标记为"推荐"的商品,并支持按爬取时间、发布时间、价格等多种方式排序。
- 深度详情: 点击即可查看每个商品的完整抓取数据和AI分析的详细JSON结果。
- 运行日志:
- 实时日志流: 在网页上实时查看爬虫运行的详细日志,方便追踪进度和排查问题。
- 日志管理: 支持自动刷新、手动刷新和一键清空日志。
- 系统设置:
- 状态检查: 一键检查
.env配置、登录状态等关键依赖是否正常。 - Prompt在线编辑: 直接在网页上编辑和保存用于AI分析的
prompt文件,实时调整AI的思考逻辑。
- 状态检查: 一键检查
下图描述了单个监控任务从启动到完成的核心处理逻辑。在实际使用中,web_server.py 会作为主服务,根据用户操作或定时调度来启动一个或多个这样的任务进程。
graph TD
A[启动监控任务] --> B[任务: 搜索商品];
B --> C{发现新商品?};
C -- 是 --> D[抓取商品详情 & 卖家信息];
D --> E[下载商品图片];
E --> F[调用AI进行分析];
F --> G{AI是否推荐?};
G -- 是 --> H[发送通知];
H --> I[保存记录到 JSONL];
G -- 否 --> I;
C -- 否 --> J[翻页/等待];
J --> B;
I --> C;
点击展开认证配置详情
Web界面已启用Basic认证保护,确保只有授权用户才能访问管理界面和API。
在 .env 文件中设置认证凭据:
# Web服务认证配置
WEB_USERNAME=admin
WEB_PASSWORD=admin123如果未在 .env 文件中设置认证凭据,系统将使用以下默认值:
- 用户名:
admin - 密码:
admin123
- 需要认证:所有API端点、Web界面、静态资源
- 无需认证:健康检查端点 (
/health)
- 浏览器访问:访问Web界面时会弹出认证对话框
- API调用:需要在请求头中包含Basic认证信息
- 前端JavaScript:会自动处理认证,无需修改
- 修改默认密码为强密码
- 生产环境使用HTTPS协议
- 定期更换认证凭据
- 通过防火墙限制访问IP范围
详细配置说明请参考 AUTH_README.md。
点击展开致谢内容
本项目在开发过程中参考了以下优秀项目,特此感谢:
以及感谢LinuxDo相关人员的脚本贡献
以及感谢 LinuxDo 社区。
以及感谢 ClaudeCode/ModelScope/Gemini 等模型/工具,解放双手 体验Vibe Coding的快乐。
点击展开项目体会
本项目 90%+ 的代码都由AI生成,包括 ISSUE 中涉及的 PR 。
Vibe Coding 的可怕之处在于如果不过多的参与项目建设,对AI生成的代码没有进行细致的review,没有思考过AI为什么这么写,盲目的通过跑测试用例验证功能可用性只会导致项目变成一个黑盒。
同样再用AI对AI生成的代码进行code review时,就像是用AI来验证另一个AI的回答是不是AI,陷入了自我证明的困境之中,所以AI可以辅助分析,但不应该成为真相的仲裁者。
AI是万能的,能帮助开发者解决99%的编码问题,AI同样不是万能,解决的每一个问题都需要开发者去验证思考一遍,AI是辅助,AI产出的内容也只能是辅助。


