ai-goofish-monitor: sistema open-source para vigilar anuncios de Goofish con IA

ai-goofish-monitor es un sistema open-source de Usagi-org para monitorizar productos en Goofish. Basado en Playwright e IA, ofrece monitoreo multitarea en tiempo real o programado, interfaz web, análisis de productos con IA, rotación de cuentas y proxies, notificaciones y despliegue con Docker.

ai-goofish-monitor es un sistema open-source de Usagi-org para monitorizar productos en Goofish.

Su objetivo es claro: automatizar búsqueda, filtrado, análisis de productos, registro de resultados y notificaciones en Goofish, para ayudar a encontrar antes los artículos de segunda mano que cumplen ciertas condiciones. El proyecto usa Playwright para automatización de páginas y se conecta a modelos de IA con entrada de imágenes para evaluar mejor la información del producto.

Proyecto: https://github.com/Usagi-org/ai-goofish-monitor

Resumen rápido

ai-goofish-monitor se parece más a un “panel de inteligencia de compras para Goofish” que a un simple script de alertas por palabras clave.

Tiene varias características claras:

  • Interfaz web completa para gestionar tareas, cuentas, criterios de IA, logs y resultados.
  • Monitoreo concurrente de múltiples tareas; cada tarea puede configurar palabras clave, precio, filtros y AI Prompt.
  • Uso de Playwright para capturar páginas de Goofish, útil cuando se necesita estado de login e interacción con la página.
  • Evaluación con IA para decidir si un producto cumple los requisitos, no solo coincidencia por palabras clave.
  • Soporte para ntfy.sh, WeCom, Bark, Telegram, Webhook y otros canales.
  • Cron, gestión de múltiples cuentas, rotación de proxies, reintentos y despliegue con Docker.

Es útil para quienes buscan a menudo productos concretos en Goofish: electrónica de segunda mano, cámaras, GPU, discos, consolas, instrumentos, electrodomésticos o coleccionables. Pero no es una “máquina automática de chollos”. Los resultados de Goofish cambian, el estado de login puede caducar y los controles de riesgo de la plataforma afectan la estabilidad. Conviene usarlo como herramienta auxiliar de filtrado, no como sustituto del juicio humano.

Qué problema resuelve

Buscar productos de segunda mano en Goofish suele tener varios problemas:

  • Hay demasiados anuncios para revisarlos manualmente.
  • Títulos y descripciones no son uniformes, así que las palabras clave fallan o generan falsos positivos.
  • Los buenos precios duran poco y se descubren tarde.
  • Un mismo producto puede variar por región, precio, estado y vendedor.
  • Entre productos baratos se mezclan accesorios, dañados, reacondicionados y títulos engañosos.
  • Vigilar muchas palabras clave de forma continua es difícil manualmente.

Las alertas básicas por palabra clave solo resuelven una parte. Si buscas “ThinkPad X1”, pueden aparecer accesorios, pantallas rotas, cajas vacías o piezas desmontadas. Si buscas “Sony A7C”, puedes encontrar kits con lentes, alquileres, títulos llamativos o precios anómalos.

La idea de ai-goofish-monitor es recoger candidatos con automatización, dejar que la IA aplique tus criterios y finalmente enviar los resultados que merecen atención.

Funciones principales

El README del proyecto lista capacidades bastante completas:

  • Gestión visual web: tareas, cuentas, criterios de IA, logs de ejecución y resultados.
  • Flujo impulsado por IA: creación de tareas con lenguaje natural y análisis con modelos multimodales.
  • Tareas concurrentes: cada tarea puede configurar palabras clave, precio, filtros y AI Prompt por separado.
  • Filtros avanzados: envío gratis, rango de publicación reciente y filtro por provincia / ciudad / distrito.
  • Notificaciones instantáneas: ntfy.sh, WeCom, Bark, Telegram, Webhook y más.
  • Programación: tareas periódicas con Cron.
  • Rotación de cuentas y proxies: múltiples cuentas, asociación de tareas, pool de proxies y reintentos.
  • Docker: despliegue en contenedores.

Juntas, estas funciones cubren el flujo completo desde crear una tarea hasta recibir una alerta.

Flujo de trabajo

Un flujo típico sería:

  1. Desplegar el servicio y abrir la Web UI.
  2. Importar el estado de login de una cuenta Goofish.
  3. Crear una tarea de monitoreo.
  4. Configurar palabras clave, rango de precio, región, ventana de publicación reciente y otros filtros.
  5. Escribir criterios o dejar que la IA los genere.
  6. Ejecutar la tarea en tiempo real o de forma programada.
  7. Playwright abre páginas y extrae información de productos.
  8. La IA evalúa título, descripción, imágenes y Prompt según tus necesidades.
  9. Los resultados que coinciden se guardan en SQLite.
  10. El sistema envía notificaciones por los canales configurados.
  11. El usuario revisa resultados, logs e historial de precios en la Web UI.

El valor de la IA está sobre todo en el paso 8. Puede entender condiciones en lenguaje natural como “buen estado, precio razonable, sin accesorios, no reparado, idealmente recogida local”, algo más flexible que reglas simples de palabras clave.

Despliegue con Docker

El proyecto recomienda Docker:

1
2
3
4
5
6
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

La dirección por defecto de la Web UI es:

1
http://127.0.0.1:8000

La imagen oficial es:

1
ghcr.io/usagi-org/ai-goofish:latest

Si descargar la imagen es lento, el README también muestra un ejemplo con mirror:

1
2
3
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

La imagen Docker ya incluye Chromium, por lo que no hace falta instalar un navegador adicional en el host. Los directorios persistentes por defecto incluyen:

  • data/: almacenamiento principal SQLite para tareas, resultados e historial de precios.
  • state/: archivos cookie de estado de login.
  • prompts/: prompts de tareas.
  • logs/: logs de ejecución.
  • images/: imágenes de productos y directorios temporales.

Si cambias SERVER_PORT en .env, también debes ajustar el mapeo de puertos en docker-compose.yaml.

Configuración mínima

La configuración mínima gira alrededor del modelo de IA y el login de la Web UI:

1
2
3
4
5
OPENAI_API_KEY=your_api_key
OPENAI_BASE_URL=your_openai_compatible_base_url
OPENAI_MODEL_NAME=your_multimodal_model
WEB_USERNAME=admin
WEB_PASSWORD=change_me

Los tres primeros son obligatorios para conectar el modelo:

  • OPENAI_API_KEY: API Key del modelo.
  • OPENAI_BASE_URL: endpoint compatible con OpenAI.
  • OPENAI_MODEL_NAME: nombre de un modelo con entrada de imágenes.

WEB_USERNAME y WEB_PASSWORD se usan para acceder a la Web UI. El README menciona las credenciales por defecto admin/admin123; en producción hay que cambiarlas.

Primer uso

El flujo inicial es aproximadamente:

  1. Abrir http://127.0.0.1:8000.
  2. Iniciar sesión en la Web UI.
  3. Ir a gestión de cuentas de Goofish.
  4. Usar la extensión de Chrome del proyecto para exportar el estado de login de Goofish en JSON.
  5. Pegar ese estado en el sistema.
  6. El archivo se guarda en state/, por ejemplo state/acc_1.json.
  7. Volver a gestión de tareas, crear una tarea y asociar una cuenta.
  8. Ejecutar la tarea y revisar resultados.

El punto clave es el estado de login. Goofish no ofrece una API estándar abierta para scraping de terceros, así que el proyecto usa el estado de login del navegador para simular acceso normal a páginas. Caducidad del login, controles de riesgo, captchas o anomalías de cuenta pueden afectar la ejecución.

Tareas de IA y tareas por palabra clave

El proyecto soporta dos formas de crear tareas.

La primera es AI判断.

Puedes escribir requisitos detallados y el sistema genera criterios de análisis de forma asíncrona. Encaja con necesidades complejas, por ejemplo:

  • Solo la unidad principal, sin accesorios.
  • Alertar solo si el precio está claramente por debajo del mercado.
  • Buen estado, sin agua, reparación ni defectos ocultos en la descripción.
  • Preferir la misma ciudad y recogida en persona.
  • Las imágenes deben mostrar número de serie, caja o accesorios clave.

La segunda es 关键词判断.

Se parece más al monitoreo tradicional por reglas: crea tareas directamente según palabras clave, precio, región y otras condiciones, sin pasar por generación con IA. Sirve para reglas simples donde se aceptan falsos positivos.

En la práctica se pueden combinar: palabras clave para el primer filtro, IA para reducir falsos positivos.

Qué permite la Web UI

La Web UI es una diferencia importante frente a scripts normales.

La página de tareas permite configurar:

  • Tareas creadas con IA.
  • Reglas por palabras clave.
  • Rangos de precio.
  • Ventana de publicación reciente.
  • Filtros de región.
  • Asociación de cuenta.
  • Reglas de programación.

La página de cuentas permite:

  • Importar estado de login de Goofish.
  • Actualizar estado de login.
  • Eliminar cuentas.
  • Asignar cuentas a tareas.
  • Permitir que el sistema elija cuenta automáticamente.

Las páginas de resultados y logs permiten:

  • Ver productos coincidentes.
  • Exportar resultados.
  • Consultar historial.
  • Ver el proceso de ejecución.
  • Diagnosticar caducidad de login, controles de riesgo y problemas de llamadas a IA.

La página de ajustes permite:

  • Ver estado del sistema.
  • Editar Prompt.
  • Ajustar proxies y rotación.

Para monitoreo a largo plazo, la Web UI es esencial. Si no, al aumentar tareas, configuración, logs, resultados y notificaciones se vuelven difíciles de mantener.

Almacenamiento de datos

El almacenamiento principal actual usa SQLite, con ruta por defecto:

1
data/app.sqlite3

Docker monta por defecto la base SQLite así:

1
./data:/app/data

Al arrancar, la aplicación crea base y tablas automáticamente, e intenta importar una vez datos históricos desde config.json, jsonl/ y price_history/.

Hay que tener en cuenta que state/, prompts/, logs/ e images/ siguen siendo directorios del sistema de archivos y no están dentro de SQLite. Las imágenes de productos se guardan temporalmente en rutas como:

1
images/task_images_<task_name>/

Al terminar la tarea, por defecto se limpian.

Esta estructura encaja bien con despliegues personales o de equipos pequeños: SQLite es ligero y fácil de migrar; los directorios conservan login, imágenes y logs de forma fácil de inspeccionar.

Canales de notificación

El proyecto soporta varios canales de notificación. Configuraciones habituales:

  • NTFY_TOPIC_URL
  • GOTIFY_URL / GOTIFY_TOKEN
  • BARK_URL
  • WX_BOT_URL
  • TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID / TELEGRAM_API_BASE_URL
  • WEBHOOK_*

Las notificaciones son el centro de la experiencia. Si el monitor solo escribe resultados en el backend, el usuario debe seguir entrando a revisar. Con push, los productos que coinciden llegan inmediatamente.

Una configuración práctica es separar por valor del producto:

  • Coincidencias normales por palabra clave solo al backend.
  • Resultados de alta confianza de IA al móvil.
  • Productos de alto valor a WeCom o Telegram.
  • Más logs durante depuración, menos ruido cuando ya sea estable.

Ejecución para desarrolladores

Sin Docker, el desarrollo local requiere:

  • Python 3.10+
  • Node.js + npm
  • Playwright CLI
  • Chromium o Chrome / Edge

Comandos básicos:

1
2
3
git clone https://github.com/Usagi-org/ai-goofish-monitor
cd ai-goofish-monitor
cp .env.example .env

Arranque con un comando:

1
2
chmod +x start.sh
./start.sh

start.sh revisa Playwright CLI y navegador, instala dependencias, construye el frontend, copia artefactos y arranca el backend.

Arranque manual del backend:

1
python -m src.app

O:

1
uvicorn src.app:app --host 0.0.0.0 --port 8000 --reload

Desarrollo frontend:

1
2
3
cd web-ui
npm install
npm run dev

Pruebas y build:

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

Para quién sirve

ai-goofish-monitor sirve para usuarios que:

  • Vigilan modelos concretos en Goofish con frecuencia.
  • Quieren monitorizar electrónica de segunda mano, cámaras, videojuegos o hardware.
  • Quieren automatizar “búsqueda por palabras clave + filtrado manual”.
  • Tienen una API compatible con OpenAI y aceptan pagar el coste de juicio con IA.
  • Conocen Docker o despliegue básico por línea de comandos.
  • Necesitan recibir resultados en móvil, WeCom o Telegram.

No encaja tanto si:

  • No sabes desplegar nada y quieres una App lista para usar.
  • No quieres manejar estado de login, captchas o controles de cuenta.
  • Necesitas APIs oficiales y muy conformes a regulación.
  • Quieres capturar datos de plataforma a gran escala y alta frecuencia.
  • Esperas que la IA juzgue riesgo de transacción y compre por ti.

Riesgos y límites

Estas herramientas requieren límites claros.

Primero, respeta las reglas de la plataforma.

Goofish tiene sus propios términos, controles de riesgo y mecanismos de seguridad de cuenta. La automatización puede activar restricciones. No hagas scraping de alta frecuencia, no intentes saltarte controles, no acoses vendedores, no recolectes privacidad en masa y no alteres el orden de la plataforma.

Segundo, protege el estado de login.

Los archivos de state/ son cookies de sesión. En la práctica equivalen a credenciales de acceso. No los subas a Git y no los pongas en servidores no confiables. Si el servidor queda expuesto a internet, cambia la contraseña por defecto de la Web UI y colócalo detrás de VPN, autenticación de proxy inverso o red interna.

Tercero, el juicio de IA no garantiza hechos.

La IA puede reducir falsos positivos, pero no garantiza autenticidad del producto, fiabilidad del vendedor, precio razonable o seguridad de la transacción. Aún debes revisar detalles, reputación del vendedor, historial de chat, envío y pago.

Cuarto, vigila costes.

Si cada candidato pasa por un modelo multimodal, el coste puede subir rápido. Filtra primero por palabra clave, precio y región, y solo envía pocos candidatos a IA.

Quinto, cuida la privacidad.

Capturas de producto, contenido relacionado con chats, estado de cuenta y notificaciones pueden contener información sensible. Protege Webhooks, logs y bases de datos.

Diferencia con scripts comunes

Un script normal de monitoreo de Goofish suele hacer tres cosas:

  1. Buscar palabras clave.
  2. Revisar precio.
  3. Enviar notificación.

ai-goofish-monitor va más allá:

  • Gestiona tareas y cuentas con Web UI.
  • Expresa criterios de compra complejos con AI Prompt.
  • Usa modelos multimodales para mirar imágenes y descripciones.
  • Guarda resultados e historial de precios en SQLite.
  • Usa páginas de logs para diagnosticar fallos.
  • Mejora estabilidad con rotación de proxies y múltiples cuentas.
  • Soporta ejecución a largo plazo con Cron.

Precisamente por tener más funciones, también cuesta más desplegarlo y mantenerlo. Para usuarios normales, Docker es lo más sencillo. Para desarrolladores, la estructura Web UI, FastAPI, Playwright y SQLite es razonable para desarrollo secundario.

Cómo usarlo

Lo más práctico es empezar con tareas pequeñas.

Por ejemplo, si buscas una cámara de segunda mano, puedes crear una tarea:

  • Palabras clave: A7C, 索尼 A7C
  • Rango de precio: límite superior según precio de mercado
  • Región: misma provincia o ciudad
  • Ventana de publicación: último día o últimas horas
  • Criterios de IA: excluir lentes sueltas, unidades reparadas y accesorios obvios; fijarse en disparos y estado
  • Notificación: solo resultados aprobados por IA

Cuando funcione estable, aumenta tareas gradualmente. No empieces con decenas de palabras clave, varias cuentas y Cron de alta frecuencia. Primero observa estabilidad de login, falsos positivos, coste de IA y ruido de notificaciones.

Resumen

ai-goofish-monitor lleva el monitoreo de Goofish desde un “script por palabras clave” a un sistema de monitoreo con IA gestionable. Usa Playwright para automatizar páginas, IA para juicios complejos, Web UI para tareas y resultados, SQLite para datos y varios canales para notificaciones.

Encaja mejor con personas o equipos pequeños que vigilan productos concretos, especialmente electrónica, hardware y cámaras de segunda mano, donde el precio cambia mucho, el tiempo importa y las descripciones son ruidosas.

Pero hay que usarlo con cuidado: proteger el login, cambiar contraseñas por defecto, limitar frecuencia, revisar manualmente resultados de IA y respetar reglas de plataforma y privacidad. Como herramienta auxiliar de filtrado puede ser valiosa; como sistema de compra totalmente automático, es fácil sobreestimarla.

Referencias:

记录并分享
Creado con Hugo
Tema Stack diseñado por Jimmy