Usagi-org/ai-goofish-monitorPublicArchived

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

AI summary: A Playwright-driven, multi-task AI monitoring system for Xianyu, equipped with a comprehensive web dashboard.

Stars
14.1K
+3 today
Forks
2.3K
Watchers
47
Open issues
49
Open PRs
7
Contributors
~26
Commits
458
Branches
28

PythonMITCreated Jul 16, 2025Last push 2mo agoLatest release 2.4+14 stars this week+25 this month

Star history

since Sep 21, 2025
05K10KSep 2025Jan 2026Apr 2026Aug 2026
14.1K stars as of Aug 7, 2026, tracked back to Sep 21, 2025. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulAugMonWedFri2025-08-10: 4 commits2025-08-11: 3 commits2025-08-12: 0 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 0 commits2025-08-17: 0 commits2025-08-18: 0 commits2025-08-19: 1 commit2025-08-20: 6 commits2025-08-21: 2 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 0 commits2025-08-25: 0 commits2025-08-26: 2 commits2025-08-27: 1 commit2025-08-28: 0 commits2025-08-29: 1 commit2025-08-30: 0 commits2025-08-31: 0 commits2025-09-01: 0 commits2025-09-02: 1 commit2025-09-03: 5 commits2025-09-04: 0 commits2025-09-05: 0 commits2025-09-06: 0 commits2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 6 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 2 commits2025-09-24: 1 commit2025-09-25: 2 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 2 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 1 commit2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 2 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 1 commit2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 8 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 1 commit2025-12-31: 5 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 2 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 14 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 8 commits2026-01-13: 19 commits2026-01-14: 1 commit2026-01-15: 0 commits2026-01-16: 4 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 1 commit2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 1 commit2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 3 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 2 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 1 commit2026-03-04: 5 commits2026-03-05: 0 commits2026-03-06: 2 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 6 commits2026-03-10: 6 commits2026-03-11: 7 commits2026-03-12: 2 commits2026-03-13: 5 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 13 commits2026-03-17: 2 commits2026-03-18: 2 commits2026-03-19: 3 commits2026-03-20: 1 commit2026-03-21: 1 commit2026-03-22: 0 commits2026-03-23: 1 commit2026-03-24: 1 commit2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 1 commit2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 2 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 1 commit2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 1 commit2026-04-09: 1 commit2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 2 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 3 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 1 commit2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 1 commit2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 2 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 0 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits
185 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    14,117 stars

  • Permissive license

    MIT

What ai-goofish-monitor does

The AI Goofish Monitor is a tool for scraping and analyzing the Xianyu (Idle Fish) marketplace in real-time. It leverages Playwright for robust web automation and integrates multimodal AI models to deeply analyze product listings, bypassing simple keyword matching. Users can configure independent tasks with custom filters, pricing ranges, and AI prompts via a visual Web UI. The system supports multi-account management, proxy rotation, and instant notifications through various channels like Telegram and Webhooks, all backed by a persistent SQLite database.

This system is tailored for resellers, market researchers, and automation enthusiasts targeting the Xianyu platform. It requires basic knowledge of Docker for deployment and an OpenAI-compatible API key for the vision model.

  • Web Visualization Management: Offers a comprehensive dashboard to configure tasks, manage accounts, and view running logs.
  • Multimodal AI Analysis: Employs vision-capable LLMs to analyze product images and descriptions for nuanced filtering.
  • Concurrent Multi-Tasking: Runs multiple independent monitoring tasks with distinct keywords, prices, and AI criteria.
  • Advanced Regional Filtering: Supports three-level location filtering (province/city/district) based on scraped marketplace snapshots.
  • Proxy and Account Rotation: Manages multiple Xianyu accounts and proxy pools with automatic failover and retry logic.
  • Multi-Channel Notifications: Pushes instant alerts to ntfy, Enterprise WeChat, Bark, Telegram, and custom Webhooks.

Where teams use it

Automated bargain hunting

Resellers can set up complex AI-driven filters to instantly identify underpriced or specific condition items on Xianyu.

Competitive intelligence gathering

Market researchers can monitor specific product categories in real-time to analyze pricing trends across different regions.

Rare item tracking

Collectors can define natural language prompts to have the AI identify rare vintage items based on image analysis, rather than just text.

Continuous scheduled scraping

Operators can use Cron configurations to run periodic data extraction tasks across a rotating pool of authenticated accounts.

Getting started: git clone https://github.com/Usagi-org/ai-goofish-monitor && cd ai-goofish-monitor && cp .env.example .env && docker compose up -d

README

master branch

闲鱼智能监控系统

[中文] | 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.jsonjsonl/price_history/ 首次升级到 SQLite 时用于兼容导入的旧数据源

数据存储与迁移

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

最少配置

变量 说明 必填
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. 回到“任务管理”,创建任务并绑定账号后即可运行。

创建第一个任务

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

用户使用说明

点击展开 Web UI 功能说明

任务管理

  • 支持 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.htmldist/assets/
  • ./start.sh 默认输出访问地址 http://localhost:8000 和 API 文档 http://localhost:8000/docs

测试与校验

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

任务创建 API

点击展开 API 行为说明
  • POST /api/tasks/generate
    • decision_mode=ai:返回 202job,需要继续轮询进度。
    • 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;
Loading

常见问题

点击展开常见问题

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

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

9 total
  1. 2.42.4Apr 27, 2026

    ## What's Changed * feat(scheduler): 定时任务逻辑优化&下次运行时间显示功能 by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/425 * Dev by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/429 * fix(web-ui): escape cron custom examples in i18n copy by @y0han11 in https://github.com/Usagi-org/ai-goofish-monitor/pull/431 * fix(settings): avoid vue-i18n parsing webhook examples by @y0han11 in https://github.com/Usagi-org/ai-goofish-monitor/pull/443 * fix(settings): scope channel test validation by @y0han11 in https://github.com/Usagi-org/ai-goofish-monitor/pull/444 * style(ui): 优化界面样式和响应式布局适配移动端 by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/447 * fix(notification): prefer .env over stale runtime values by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/456 * fix(ai): detect response_format rejection from AI gateways by @lennondotw in https://github.com/Usagi-org/ai-goofish-monitor/pull/464 * feat(web-ui): 支持结果单条和批量删除操作 by @483218131 in https://github.com/Usagi-org/ai-goofish-monitor/pull/452 * fix(ai): work around httpx NO_PROXY IPv6 CIDR crash by @lennondotw in https://github.com/Usagi-org/ai-goofish-m

  2. 2.32.3Mar 18, 2026

    ## What's Changed * fix(ai): 优化 Responses API 不支持错误的检测逻辑 by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/402 * fix(keyword): 解决纯英数字关键词部分匹配问题 by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/403 * Dev by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/405 * feat(config): 环境变量管理器支持运行时环境变量回退 by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/406 * feat(deploy): 支持多容器镜像仓库部署 by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/408 * Dev by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/409 * refactor(workflow): 重构Docker镜像构建流程中的标签准备逻辑 by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/410 * refactor(Dockerfile.release): 调整 ARG 指令位置 by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/411 * docs(config): 添加 Docker 镜像加速配置说明 by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/412 * feat(notification): 添加 Telegram API 反向代理支持 by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/415 * feat(ai): 切换默认AI API模式为Chat Completions并增强错误回退机制 by @dingyufei615 in https://github.

  3. 2.22.2Mar 16, 2026

    ## What's Changed * docs(config): 更新 LOGIN_IS_EDGE 配置说明 by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/393 * fix(ai): fallback when gateway does not support `temperature` parameter by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/395 * feat(ai): 增强AI客户端支持多种API模式和改进调试功能 by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/401 **Full Changelog**: https://github.com/Usagi-org/ai-goofish-monitor/compare/v2.1...2.2

  4. v2.1v2.1Mar 13, 2026

    ## What's Changed * readme update by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/384 * refactor(build): 统一前端构建产物路径为根目录 dist by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/385 * refactor(scraper): 提取搜索页面翻页逻辑到独立服务 by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/386 * feat(ui): 添加 cron 定时规则预设选择器 by @lianxin255 in https://github.com/Usagi-org/ai-goofish-monitor/pull/387 * feat(tasks): 优化任务表单的账号策略配置功能 by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/388 * refactor(ai): 将AI客户端从Chat Completions API迁移到Responses API by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/390 * refactor(docker): 优化 Docker 构建配置和依赖管理 by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/392 ## New Contributors * @lianxin255 made their first contribution in https://github.com/Usagi-org/ai-goofish-monitor/pull/387 **Full Changelog**: https://github.com/Usagi-org/ai-goofish-monitor/compare/v2.0...v2.1

  5. v2.0v2.0Mar 11, 2026

    商品价值评估和价格洞察: 增加了商品价值评估和价格洞察功能,帮助用户更好地评估商品。 AI 响应解析重构: 重构了 AI 响应解析逻辑,提高了系统的稳定性和可维护性。 数据存储迁移到 SQLite: 将数据存储迁移到 SQLite,并改进了 AI 调用兼容性,提升了数据存储效率和系统性能。 仪表板功能添加和UI组件重构: 添加了仪表板功能并重构了UI组件,优化了用户体验。 ## What's Changed * refactor by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/383 **Full Changelog**: https://github.com/Usagi-org/ai-goofish-monitor/compare/v1.3...v2.0 ## What's Changed * refactor by @dingyufei615 in https://github.com/Usagi-org/ai-goofish-monitor/pull/383 **Full Changelog**: https://github.com/Usagi-org/ai-goofish-monitor/compare/v1.3...v2.0

Code frequency

additions and deletions
+15.1K-15.1KWeek of 2025-08-10: +132 linesWeek of 2025-08-10: -114 linesWeek of 2025-08-17: +542 linesWeek of 2025-08-17: -143 linesWeek of 2025-08-24: +71 linesWeek of 2025-08-24: -40 linesWeek of 2025-08-31: +547 linesWeek of 2025-08-31: -37 linesWeek of 2025-09-07: +95 linesWeek of 2025-09-07: -11 linesWeek of 2025-09-14: +0 linesWeek of 2025-09-14: -0 linesWeek of 2025-09-21: +454 linesWeek of 2025-09-21: -432 linesWeek of 2025-09-28: +0 linesWeek of 2025-09-28: -0 linesWeek of 2025-10-05: +3 linesWeek of 2025-10-05: -3 linesWeek of 2025-10-12: +0 linesWeek of 2025-10-12: -0 linesWeek of 2025-10-19: +0 linesWeek of 2025-10-19: -0 linesWeek of 2025-10-26: +24 linesWeek of 2025-10-26: -8 linesWeek of 2025-11-02: +2 linesWeek of 2025-11-02: -2 linesWeek of 2025-11-09: +0 linesWeek of 2025-11-09: -0 linesWeek of 2025-11-16: +0 linesWeek of 2025-11-16: -0 linesWeek of 2025-11-23: +0 linesWeek of 2025-11-23: -0 linesWeek of 2025-11-30: +0 linesWeek of 2025-11-30: -0 linesWeek of 2025-12-07: +0 linesWeek of 2025-12-07: -0 linesWeek of 2025-12-14: +17 linesWeek of 2025-12-14: -9 linesWeek of 2025-12-21: +277 linesWeek of 2025-12-21: -185 linesWeek of 2025-12-28: +14,038 linesWeek of 2025-12-28: -6,085 linesWeek of 2026-01-04: +2,803 linesWeek of 2026-01-04: -1,888 linesWeek of 2026-01-11: +1,603 linesWeek of 2026-01-11: -3,414 linesWeek of 2026-01-18: +1 linesWeek of 2026-01-18: -1 linesWeek of 2026-01-25: +0 linesWeek of 2026-01-25: -0 linesWeek of 2026-02-01: +0 linesWeek of 2026-02-01: -3 linesWeek of 2026-02-08: +0 linesWeek of 2026-02-08: -0 linesWeek of 2026-02-15: +0 linesWeek of 2026-02-15: -0 linesWeek of 2026-02-22: +1,440 linesWeek of 2026-02-22: -425 linesWeek of 2026-03-01: +1,154 linesWeek of 2026-03-01: -210 linesWeek of 2026-03-08: +15,069 linesWeek of 2026-03-08: -3,067 linesWeek of 2026-03-15: +4,973 linesWeek of 2026-03-15: -1,161 linesWeek of 2026-03-22: +736 linesWeek of 2026-03-22: -448 linesWeek of 2026-03-29: +175 linesWeek of 2026-03-29: -16 linesWeek of 2026-04-05: +61 linesWeek of 2026-04-05: -4 linesWeek of 2026-04-12: +130 linesWeek of 2026-04-12: -2 linesWeek of 2026-04-19: +187 linesWeek of 2026-04-19: -44 linesWeek of 2026-04-26: +0 linesWeek of 2026-04-26: -0 linesWeek of 2026-05-03: +743 linesWeek of 2026-05-03: -111 linesWeek of 2026-05-10: +0 linesWeek of 2026-05-10: -0 linesWeek of 2026-05-17: +0 linesWeek of 2026-05-17: -0 linesWeek of 2026-05-24: +0 linesWeek of 2026-05-24: -0 linesWeek of 2026-05-31: +0 linesWeek of 2026-05-31: -0 linesWeek of 2026-06-07: +0 linesWeek of 2026-06-07: -0 linesWeek of 2026-06-14: +0 linesWeek of 2026-06-14: -0 linesWeek of 2026-06-21: +0 linesWeek of 2026-06-21: -0 linesWeek of 2026-06-28: +0 linesWeek of 2026-06-28: -0 linesWeek of 2026-07-05: +0 linesWeek of 2026-07-05: -0 linesWeek of 2026-07-12: +0 linesWeek of 2026-07-12: -0 linesWeek of 2026-07-19: +0 linesWeek of 2026-07-19: -0 linesWeek of 2026-07-26: +0 linesWeek of 2026-07-26: -0 linesWeek of 2026-08-02: +0 linesWeek of 2026-08-02: -0 linesAug 10, 2025Aug 2, 2026
+45.3K lines added, -17.9K removed over the last year.

Commits per week

last 52 weeks
320Week of 2025-08-10: 7 commitsWeek of 2025-08-17: 9 commitsWeek of 2025-08-24: 4 commitsWeek of 2025-08-31: 6 commitsWeek of 2025-09-07: 6 commitsWeek of 2025-09-14: 0 commitsWeek of 2025-09-21: 5 commitsWeek of 2025-09-28: 0 commitsWeek of 2025-10-05: 2 commitsWeek of 2025-10-12: 0 commitsWeek of 2025-10-19: 0 commitsWeek of 2025-10-26: 1 commitsWeek of 2025-11-02: 2 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 1 commitsWeek of 2025-12-21: 8 commitsWeek of 2025-12-28: 6 commitsWeek of 2026-01-04: 16 commitsWeek of 2026-01-11: 32 commitsWeek of 2026-01-18: 1 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 1 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 5 commitsWeek of 2026-03-01: 8 commitsWeek of 2026-03-08: 26 commitsWeek of 2026-03-15: 22 commitsWeek of 2026-03-22: 3 commitsWeek of 2026-03-29: 3 commitsWeek of 2026-04-05: 2 commitsWeek of 2026-04-12: 2 commitsWeek of 2026-04-19: 4 commitsWeek of 2026-04-26: 0 commitsWeek of 2026-05-03: 3 commitsWeek of 2026-05-10: 0 commitsWeek of 2026-05-17: 0 commitsWeek of 2026-05-24: 0 commitsWeek of 2026-05-31: 0 commitsWeek of 2026-06-07: 0 commitsWeek of 2026-06-14: 0 commitsWeek of 2026-06-21: 0 commitsWeek of 2026-06-28: 0 commitsWeek of 2026-07-05: 0 commitsWeek of 2026-07-12: 0 commitsWeek of 2026-07-19: 0 commitsWeek of 2026-07-26: 0 commitsWeek of 2026-08-02: 0 commitsAug 10, 2025Aug 2, 2026
185 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 0 commitsSun 1:00 — 0 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 0 commitsSun 9:00 — 0 commitsSun 10:00 — 1 commitsSun 11:00 — 0 commitsSun 12:00 — 0 commitsSun 13:00 — 0 commitsSun 14:00 — 0 commitsSun 15:00 — 0 commitsSun 16:00 — 0 commitsSun 17:00 — 0 commitsSun 18:00 — 1 commitsSun 19:00 — 3 commitsSun 20:00 — 0 commitsSun 21:00 — 0 commitsSun 22:00 — 0 commitsSun 23:00 — 0 commitsMon 0:00 — 0 commitsMon 1:00 — 0 commitsMon 2:00 — 0 commitsMon 3:00 — 1 commitsMon 4:00 — 0 commitsMon 5:00 — 0 commitsMon 6:00 — 0 commitsMon 7:00 — 0 commitsMon 8:00 — 0 commitsMon 9:00 — 1 commitsMon 10:00 — 2 commitsMon 11:00 — 5 commitsMon 12:00 — 4 commitsMon 13:00 — 8 commitsMon 14:00 — 4 commitsMon 15:00 — 1 commitsMon 16:00 — 1 commitsMon 17:00 — 5 commitsMon 18:00 — 6 commitsMon 19:00 — 5 commitsMon 20:00 — 4 commitsMon 21:00 — 0 commitsMon 22:00 — 0 commitsMon 23:00 — 0 commitsTue 0:00 — 0 commitsTue 1:00 — 0 commitsTue 2:00 — 2 commitsTue 3:00 — 0 commitsTue 4:00 — 0 commitsTue 5:00 — 2 commitsTue 6:00 — 1 commitsTue 7:00 — 0 commitsTue 8:00 — 0 commitsTue 9:00 — 0 commitsTue 10:00 — 8 commitsTue 11:00 — 4 commitsTue 12:00 — 2 commitsTue 13:00 — 4 commitsTue 14:00 — 6 commitsTue 15:00 — 6 commitsTue 16:00 — 3 commitsTue 17:00 — 6 commitsTue 18:00 — 8 commitsTue 19:00 — 0 commitsTue 20:00 — 0 commitsTue 21:00 — 0 commitsTue 22:00 — 0 commitsTue 23:00 — 0 commitsWed 0:00 — 0 commitsWed 1:00 — 0 commitsWed 2:00 — 0 commitsWed 3:00 — 0 commitsWed 4:00 — 1 commitsWed 5:00 — 2 commitsWed 6:00 — 0 commitsWed 7:00 — 2 commitsWed 8:00 — 1 commitsWed 9:00 — 1 commitsWed 10:00 — 4 commitsWed 11:00 — 7 commitsWed 12:00 — 1 commitsWed 13:00 — 9 commitsWed 14:00 — 8 commitsWed 15:00 — 10 commitsWed 16:00 — 6 commitsWed 17:00 — 10 commitsWed 18:00 — 14 commitsWed 19:00 — 4 commitsWed 20:00 — 0 commitsWed 21:00 — 0 commitsWed 22:00 — 0 commitsWed 23:00 — 1 commitsThu 0:00 — 0 commitsThu 1:00 — 0 commitsThu 2:00 — 0 commitsThu 3:00 — 0 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 3 commitsThu 7:00 — 0 commitsThu 8:00 — 0 commitsThu 9:00 — 3 commitsThu 10:00 — 4 commitsThu 11:00 — 1 commitsThu 12:00 — 1 commitsThu 13:00 — 3 commitsThu 14:00 — 5 commitsThu 15:00 — 3 commitsThu 16:00 — 1 commitsThu 17:00 — 3 commitsThu 18:00 — 2 commitsThu 19:00 — 2 commitsThu 20:00 — 0 commitsThu 21:00 — 1 commitsThu 22:00 — 0 commitsThu 23:00 — 0 commitsFri 0:00 — 0 commitsFri 1:00 — 0 commitsFri 2:00 — 0 commitsFri 3:00 — 2 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 1 commitsFri 7:00 — 1 commitsFri 8:00 — 0 commitsFri 9:00 — 3 commitsFri 10:00 — 9 commitsFri 11:00 — 5 commitsFri 12:00 — 2 commitsFri 13:00 — 5 commitsFri 14:00 — 7 commitsFri 15:00 — 7 commitsFri 16:00 — 8 commitsFri 17:00 — 2 commitsFri 18:00 — 8 commitsFri 19:00 — 1 commitsFri 20:00 — 0 commitsFri 21:00 — 2 commitsFri 22:00 — 0 commitsFri 23:00 — 3 commitsSat 0:00 — 0 commitsSat 1:00 — 0 commitsSat 2:00 — 2 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 1 commitsSat 7:00 — 0 commitsSat 8:00 — 0 commitsSat 9:00 — 0 commitsSat 10:00 — 4 commitsSat 11:00 — 1 commitsSat 12:00 — 1 commitsSat 13:00 — 0 commitsSat 14:00 — 1 commitsSat 15:00 — 0 commitsSat 16:00 — 3 commitsSat 17:00 — 1 commitsSat 18:00 — 0 commitsSat 19:00 — 0 commitsSat 20:00 — 0 commitsSat 21:00 — 0 commitsSat 22:00 — 2 commitsSat 23:00 — 0 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Jul 5, 2026daily#16+23
  • public-apis/public-apis

    A collective list of free APIs

    454.9K stars · Python

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    385.5K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • donnemartin/system-design-primer

    Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

    362.2K stars · Python