🧭 Decision Guide
Why trending now: Cannot be determined from the provided material
Try it if you
-
You already have OPENAI_API_KEY, OPENAI_BASE_URL, and an OPENAI_MODEL_NAME that supports image input.The README section “Minimum Configuration” lists all three variables as required.
-
You need a Web UI to manage multiple tasks with separate keywords, prices, regions, and AI Prompts.The README sections “Core Features” and “Task Management” describe multi-task concurrency and these filters.
-
You want to run it quickly with Docker and accept the default Web UI port 8000.The README section “Docker Deployment (Recommended)” provides docker compose up -d and sets the default address to http://127.0.0.1:8000.
-
You need Cron scheduling and result notifications through Telegram, Bark, or Webhook.The README sections “Core Features” and “Notifications” list Cron and these notification channels.
Skip it if you
-
You do not have an OpenAI-compatible endpoint, or your model does not support image input.The README “Minimum Configuration” requires OPENAI_BASE_URL and an image-input-capable OPENAI_MODEL_NAME.
-
You do not want to import Goofish login-state JSON or maintain the state/ directory.The README “First Use” requires exporting login state JSON with a Chrome extension and saving it under state/.
-
You need to bypass Goofish terms, robots.txt, or high-frequency request restrictions.The README “Notice” requires compliance with the user agreement and robots.txt and warns against overly frequent requests.
-
You require production deployment to use the default Web credentials admin/admin123.The README “Web Interface Authentication” explicitly requires changing the default credentials in production.
Requirements
- Docker deployment requires access to the Docker image; the official image is ghcr.io/usagi-org/ai-goofish:latest.
- AI configuration must include OPENAI_API_KEY, OPENAI_BASE_URL, and OPENAI_MODEL_NAME.
- Local development requires Python 3.10+, Node.js + npm, the Playwright CLI, and Chromium.
- Before the first local run, the README requires python3 -m pip install playwright and Chromium installation.
- First use requires Goofish login-state JSON exported by a Chrome extension and stored under state/.
- RUN_HEADLESS should remain true in Docker, and the default database path is /app/data/app.sqlite3.
First step (verbatim from README)
git clone https://github.com/Usagi-org/ai-goofish-monitor && cd ai-goofish-monitor
Watch out
-
After changing SERVER_PORT in .env, you must also update the port mapping in docker-compose.yaml.The port configuration note in the README section “Docker Deployment (Recommended)”.
-
Product images are first written to images/task_images_ and are cleaned up by default after the task ends.The README section “Data Storage and Migration” describes images/ and the temporary image directory.
-
Apart from the SQLite main database, state, prompts, logs, and images still depend on filesystem directories.The README section “Data Storage and Migration” explicitly says these directories are not stored in SQLite.
-
AI task creation returns 202 and a job, requiring progress polling through generate-jobs/{job_id}.The README section “Task Creation API” describes POST /api/tasks/generate and the GET endpoint.
-
If the frontend build artifact is missing, the absent root dist/ directory prevents the local page from opening.The README “FAQ” instructs users to run ./start.sh or npm run build and verify dist/.
Not stated in the README
- The README does not list specific compatible multimodal model names or the API cost of each model.
- The README does not state limits for concurrent tasks, account count, or proxy-pool size in Playwright.
- The README does not quantify Goofish login-state lifetime, risk-control thresholds, or account recovery procedures.
- The README does not describe SQLite capacity, query performance, or backup procedures for large result histories.
- The README does not describe a unified retry policy for ntfy.sh, Telegram, Webhook, or other notification failures.
- The README does not provide the image size or resource requirements for ghcr.io/usagi-org/ai-goofish:latest.
💡 Deep Analysis
6
No
I plan to deploy the Web UI on my own server behind a reverse proxy while storing Goofish login states, prompts, logs, and product images; does this project directly satisfy my security constraints?
No, not directly, because the README only provides basic authentication and directory persistence, explicitly warns about default credentials, and does not document HTTPS, secret management, encryption at rest, or fine-grained permissions.
- The default Web username and password are
admin/admin123, and the README requires changing them in production. state/stores login-state cookies, whileprompts/,logs/, andimages/remain filesystem directories; product images are normally removed after a task ends.- The Web UI validates credentials through the login page and
POST /auth/status, with login state stored locally in the browser. - The README recommends a reverse proxy, HTTPS, and restricting port 8000, but does not describe built-in TLS, RBAC, auditing, or database encryption.
It can serve as a controlled internal tool, but the README does not establish that it meets complete security requirements for public exposure or sensitive-data environments.
- Web 界面认证: default credentials are admin/admin123 and must be changed in production
- 数据存储与迁移: state, prompts, logs, and images remain filesystem directories
- Web 界面认证: credentials are checked through POST /auth/status and login state is stored locally in the browser
- 最佳实践: restrict public exposure of port 8000 and use a reverse proxy with HTTPS
cp .env.example .env
It depends
I need to bind multiple Goofish accounts, rotate a proxy pool with retries, and send new-item notifications to Telegram or a Webhook; can this project support that operating model?
It depends, because the project provides multiple accounts, proxy rotation, failure protection, and multi-channel notifications, but these mechanisms do not guarantee bypassing Goofish risk controls or make high-frequency, large-scale collection suitable.
- Account management supports importing, updating, and deleting login states; each task can bind an account or let the system select one.
- Configuration includes
PROXY_POOL, rotation mode, retry limit, blacklist TTL, task failure threshold, and pause duration. - Notifications support Telegram Bot Token and Chat ID, as well as generic Webhooks.
- The README explicitly requires compliance with the user agreement and robots.txt and warns against excessive requests; high concurrency or frequent account/proxy switching can cause login invalidation or account restrictions.
Thus, it can match several low-frequency monitoring tasks, but it is unsuitable for bulk collection or bypassing platform restrictions.
- 核心特性: account and proxy rotation with multiple accounts, task binding, proxy pools, and retries
- 配置说明: PROXY_ROTATION_ENABLED, PROXY_POOL, PROXY_ROTATION_RETRY_LIMIT, and PROXY_BLACKLIST_TTL
- 通知: TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID / WEBHOOK_*
- 注意事项: avoid overly frequent requests to prevent account restrictions
docker compose up -d
Yes
I track specific brands and models, need to judge condition, accessories, and image content, and do not want to write complex keyword rules; is the multimodal AI mode suitable for my filtering needs?
Yes, because the project can generate analysis criteria from natural language and send both product text and images to an image-capable model; however, the output should be treated as screening rather than authentication.
- The AI mode accepts detailed requirements, and a background job generates analysis criteria before creating the task.
- The workflow fetches product and seller details, downloads images, calls the AI, and stores results, matching unstructured judgments about condition and accessories.
- Keyword, price, publication-time, and regional filters can still be combined to reduce the result set first.
- The README requires an image-capable model and notes that image quality, incomplete descriptions, and prompts can cause false positives or negatives.
It is therefore suitable for discovering and ranking candidates, but original details, seller information, and authenticity still require verification before a transaction.
- 核心特性: AI-driven natural-language task creation and deep multimodal product analysis
- 创建第一个任务: AI mode accepts detailed requirements and asynchronously generates analysis criteria
- 工作流程: fetch details and seller information, download images, and call AI analysis
- 使用限制: AI results should not be treated as absolute transaction, authentication, or price conclusions
docker compose up -d
Yes
I plan to run multiple Goofish tasks in Docker, use an OpenAI-compatible endpoint with an image-capable model, and schedule monitoring with Cron; is this project suitable for me?
Yes, because the documented deployment model, API requirements, and scheduling features match your constraints, although it is primarily intended for single-machine or small-to-medium self-hosting.
- The Docker image includes Chromium, so no extra browser installation is required on the host.
- AI configuration explicitly requires
OPENAI_API_KEY,OPENAI_BASE_URL, and anOPENAI_MODEL_NAMEthat supports image input. - Tasks support Cron, keyword, price, publication-time, and province/city/district filters, helping reduce irrelevant results and AI calls.
- SQLite stores tasks, results, and price history, with
./data:/app/datamounted by default; limits under high concurrency or large historical datasets are not documented.
It can therefore provide a complete scheduled monitoring pipeline, but the README does not describe distributed scheduling or high availability for larger deployments.
- Docker 部署: the Docker image includes Chromium
- 最少配置: OPENAI_API_KEY, OPENAI_BASE_URL, and OPENAI_MODEL_NAME
- 核心特性: scheduled execution supports Cron rules
- 数据存储与迁移: SQLite is the current primary online storage
git clone https://github.com/Usagi-org/ai-goofish-monitor && cd ai-goofish-monitor
cp .env.example .env
vim .env # 填写相关配置项
docker compose up -d
Yes
I only need Cron monitoring on one machine, want to retain task results and price history, and need querying and export from the results page; is the SQLite design suitable for my scale?
Yes, provided your constraint is a single machine and small-to-medium scale, because the project has migrated tasks, results, and price history to SQLite and the results page queries the database directly.
- The default database is
data/app.sqlite3, and Docker mounts./datato/app/data. - On startup, the application creates the database and tables and attempts to import legacy data from
config.json,jsonl/, andprice_history/. - The README states that result viewing and export now query SQLite rather than scanning JSONL files.
- Images are normally stored under
images/task_images_/and cleaned after a task ends, so a complete image archive is not created automatically.
The design matches result and price-history retention, but the README provides no strong guarantee for long-term image review or high-concurrency multi-user operation.
- Docker 部署: the SQLite database is mounted through ./data:/app/data and defaults to data/app.sqlite3
- 数据存储与迁移: the application creates tables and imports legacy data at startup
- 结果查看与运行日志: result viewing and export query SQLite
- 数据存储与迁移: product images are cleaned after tasks by default
docker compose up -d
Yes
I already have Python 3.10+, Node.js v20.18.3, and Chromium, and want to modify Playwright collection logic while debugging the Vue frontend; is this project suitable for local development?
Yes, because the README documents the backend, frontend, browser prerequisites, and test commands, while the FastAPI and Vue/TypeScript boundaries are clear enough for separate debugging.
- The development requirements include Python 3.10+, Node.js with npm, Playwright CLI, and Chromium.
- The backend can run with
python -m src.appor Uvicorn; the frontend runsnpm run devinweb-ui, with Vite proxying/api,/auth, and/wsto port 8000. start.shchecks browser prerequisites, installs dependencies, builds the frontend, and starts the backend for end-to-end verification.- Validation includes both Python pytest and the frontend
npm run build.
However, scraping changes still depend on Goofish page structure and login state. The README does not describe end-to-end fixtures, mock pages, or a stable scraping abstraction.
- 开发者开发: Python 3.10+, Node.js + npm, Playwright CLI, and Chromium
- 手动启动: python -m src.app; cd web-ui && npm install && npm run dev
- 开发者开发: Vite proxies /api, /auth, and /ws
- 测试与校验: pytest and cd web-ui && npm run build
git clone https://github.com/Usagi-org/ai-goofish-monitor
cd ai-goofish-monitor
cp .env.example .env
✨ Highlights
-
Playwright collects products for multimodal AI analysis
-
Web UI manages tasks, accounts, and runtime logs
-
SQLite stores tasks, results, and price history
-
Supports Cron scheduling and ntfy.sh notifications
-
Docker includes Chromium but still requires AI API configuration
🔧 Engineering
-
The Web UI creates AI or keyword tasks and binds accounts
-
Tasks support price, region, publish-time, and AI Prompt filters
-
Results and logs are queried from SQLite and can be exported
-
Accounts and proxy pools support rotation, retries, and failure pauses
⚠️ Risks
-
OPENAI_MODEL_NAME must support image input
-
Initial use requires importing Goofish login-state JSON via a Chrome extension
-
The README requires respecting Goofish terms and robots.txt; frequent requests may restrict accounts
-
The default Web credentials are admin/admin123 and must be changed in production
-
Changing SERVER_PORT also requires updating docker-compose.yaml port mapping
👥 For who?
-
Developers monitoring Goofish products with Python and Playwright
-
Individuals or small teams needing a Vue Web UI for multi-task and multi-account management
-
AI application users who already have an OpenAI-compatible image model endpoint
-
Deployers able to run Docker and Chromium and manage login-state files