Usagi-org/ai-goofish-monitor
Productivity & UtilitiesMonitor Xianyu listings with Playwright and AI analysis, managed through a self-hosted web UI.
Overview
This project monitors Xianyu (Goofish) second-hand listings on a schedule or in near real time. Playwright drives the browser to search listings, fetch item details and seller information, and download product images; a multimodal OpenAI-compatible model then evaluates each listing against a user-defined standard and sends a notification when the item is recommended. A FastAPI backend and a Vue-based web UI cover task management, account login states, prompts, run logs, results and notifications. It suits people who want to track specific categories on Xianyu without checking the app manually.
Supported filters include price range, listing time, free shipping, and province/city/district region selection. Multiple tasks can run concurrently, each with its own keywords, filters, account binding and AI prompt. Besides AI judgment, tasks can also use plain keyword rules. Scheduling uses Cron, and notifications can go to ntfy.sh, WeCom, Bark, Telegram, Gotify, or a generic webhook. Accounts and proxies can be rotated, and failed tasks are paused after a configurable threshold.
Quick start
Docker is the recommended path. Clone the repository, create the env file, fill in the required values, and start the compose service:
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
The minimum configuration is OPENAI_API_KEY, OPENAI_BASE_URL and OPENAI_MODEL_NAME; the model must accept image input. WEB_USERNAME and WEB_PASSWORD default to admin/admin123 and should be changed before exposing the UI. If pulling from ghcr.io is slow, the README gives a mirror-tag workaround.
Open http://127.0.0.1:8000, log in, and go to Xianyu account management. A Chrome extension exports the Xianyu login-state JSON, which is pasted into the UI and stored under state/ (for example state/acc_1.json). Then create a task, bind the account, and run it. In AI mode, describe the requirement in natural language; the system generates the analysis standard as a background job and shows a progress dialog. Keyword mode creates the task directly without the AI generation step. Region filtering narrows results sharply and is best left empty for an initial market check.
For local development, Python 3.10+, Node.js/npm and Playwright with Chromium are required; ./start.sh checks these prerequisites, then installs dependencies, builds the frontend and starts the backend. The API docs are served at http://localhost:8000/docs.
Operational constraints
AI features require an OpenAI-compatible endpoint and a vision-capable model; without a valid key and model name, analysis will not work. The Docker image bundles Chromium, so the host does not need a browser, but local runs need Playwright browsers installed and a Chrome/Edge/Chromium binary. In Docker, RUN_HEADLESS should remain true, and LOGIN_IS_EDGE cannot be used because the image has no Edge.
Data lives mainly in SQLite at data/app.sqlite3, with state/, prompts/, logs/, and images/ kept on the filesystem. Older config.json, jsonl/, and price_history/ data is imported once at startup for compatibility. If SERVER_PORT is changed in .env, update the port mapping in docker-compose.yaml too.
Scraping depends on valid Xianyu login states, and failures can come from expired cookies, platform risk controls, or AI call errors; the logs page exists to diagnose these. The project asks users to respect Xianyu's terms and robots rules and not to send overly frequent requests. It is released under MIT, with a separate disclaimer, and is presented as intended for study and technical research.
HotRepo's take
On the 2026-11-03 all-language daily GitHub ranking, the repository reached 9th place with 204 stars gained in that day's window, and totals of about 16,000 stars and 2,800 forks. That is a single recorded snapshot, so it supports the fact of one strong day rather than a trend. The design choices behind that attention are visible in the README: a complete self-hosted web UI, Docker deployment with bundled Chromium, multi-account and proxy rotation, and AI standards generated from a natural-language description. These reduce the setup burden compared with a bare scraper, but the system's usefulness still depends on valid Xianyu login states and a working vision model endpoint, and its reliability is tied to a platform that can change or restrict automated access.
Written by AI from the project's README, updated . The project's own docs are the source of truth.