<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Goofish on KnightLi Blog</title>
        <link>https://www.knightli.com/es/tags/goofish/</link>
        <description>Recent content in Goofish on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>es</language>
        <lastBuildDate>Sun, 17 May 2026 17:24:03 +0800</lastBuildDate><atom:link href="https://www.knightli.com/es/tags/goofish/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>ai-goofish-monitor: sistema open-source para vigilar anuncios de Goofish con IA</title>
        <link>https://www.knightli.com/es/2026/05/17/ai-goofish-monitor/</link>
        <pubDate>Sun, 17 May 2026 17:24:03 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/05/17/ai-goofish-monitor/</guid>
        <description>&lt;p&gt;ai-goofish-monitor es un sistema open-source de Usagi-org para monitorizar productos en Goofish.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Proyecto: &lt;a class=&#34;link&#34; href=&#34;https://github.com/Usagi-org/ai-goofish-monitor&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Usagi-org/ai-goofish-monitor&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;resumen-rápido&#34;&gt;Resumen rápido
&lt;/h2&gt;&lt;p&gt;ai-goofish-monitor se parece más a un &amp;ldquo;panel de inteligencia de compras para Goofish&amp;rdquo; que a un simple script de alertas por palabras clave.&lt;/p&gt;
&lt;p&gt;Tiene varias características claras:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Interfaz web completa para gestionar tareas, cuentas, criterios de IA, logs y resultados.&lt;/li&gt;
&lt;li&gt;Monitoreo concurrente de múltiples tareas; cada tarea puede configurar palabras clave, precio, filtros y AI Prompt.&lt;/li&gt;
&lt;li&gt;Uso de Playwright para capturar páginas de Goofish, útil cuando se necesita estado de login e interacción con la página.&lt;/li&gt;
&lt;li&gt;Evaluación con IA para decidir si un producto cumple los requisitos, no solo coincidencia por palabras clave.&lt;/li&gt;
&lt;li&gt;Soporte para ntfy.sh, WeCom, Bark, Telegram, Webhook y otros canales.&lt;/li&gt;
&lt;li&gt;Cron, gestión de múltiples cuentas, rotación de proxies, reintentos y despliegue con Docker.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;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 &amp;ldquo;máquina automática de chollos&amp;rdquo;. 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.&lt;/p&gt;
&lt;h2 id=&#34;qué-problema-resuelve&#34;&gt;Qué problema resuelve
&lt;/h2&gt;&lt;p&gt;Buscar productos de segunda mano en Goofish suele tener varios problemas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hay demasiados anuncios para revisarlos manualmente.&lt;/li&gt;
&lt;li&gt;Títulos y descripciones no son uniformes, así que las palabras clave fallan o generan falsos positivos.&lt;/li&gt;
&lt;li&gt;Los buenos precios duran poco y se descubren tarde.&lt;/li&gt;
&lt;li&gt;Un mismo producto puede variar por región, precio, estado y vendedor.&lt;/li&gt;
&lt;li&gt;Entre productos baratos se mezclan accesorios, dañados, reacondicionados y títulos engañosos.&lt;/li&gt;
&lt;li&gt;Vigilar muchas palabras clave de forma continua es difícil manualmente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las alertas básicas por palabra clave solo resuelven una parte. Si buscas &amp;ldquo;ThinkPad X1&amp;rdquo;, pueden aparecer accesorios, pantallas rotas, cajas vacías o piezas desmontadas. Si buscas &amp;ldquo;Sony A7C&amp;rdquo;, puedes encontrar kits con lentes, alquileres, títulos llamativos o precios anómalos.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h2 id=&#34;funciones-principales&#34;&gt;Funciones principales
&lt;/h2&gt;&lt;p&gt;El README del proyecto lista capacidades bastante completas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gestión visual web: tareas, cuentas, criterios de IA, logs de ejecución y resultados.&lt;/li&gt;
&lt;li&gt;Flujo impulsado por IA: creación de tareas con lenguaje natural y análisis con modelos multimodales.&lt;/li&gt;
&lt;li&gt;Tareas concurrentes: cada tarea puede configurar palabras clave, precio, filtros y AI Prompt por separado.&lt;/li&gt;
&lt;li&gt;Filtros avanzados: envío gratis, rango de publicación reciente y filtro por provincia / ciudad / distrito.&lt;/li&gt;
&lt;li&gt;Notificaciones instantáneas: ntfy.sh, WeCom, Bark, Telegram, Webhook y más.&lt;/li&gt;
&lt;li&gt;Programación: tareas periódicas con Cron.&lt;/li&gt;
&lt;li&gt;Rotación de cuentas y proxies: múltiples cuentas, asociación de tareas, pool de proxies y reintentos.&lt;/li&gt;
&lt;li&gt;Docker: despliegue en contenedores.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Juntas, estas funciones cubren el flujo completo desde crear una tarea hasta recibir una alerta.&lt;/p&gt;
&lt;h2 id=&#34;flujo-de-trabajo&#34;&gt;Flujo de trabajo
&lt;/h2&gt;&lt;p&gt;Un flujo típico sería:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Desplegar el servicio y abrir la Web UI.&lt;/li&gt;
&lt;li&gt;Importar el estado de login de una cuenta Goofish.&lt;/li&gt;
&lt;li&gt;Crear una tarea de monitoreo.&lt;/li&gt;
&lt;li&gt;Configurar palabras clave, rango de precio, región, ventana de publicación reciente y otros filtros.&lt;/li&gt;
&lt;li&gt;Escribir criterios o dejar que la IA los genere.&lt;/li&gt;
&lt;li&gt;Ejecutar la tarea en tiempo real o de forma programada.&lt;/li&gt;
&lt;li&gt;Playwright abre páginas y extrae información de productos.&lt;/li&gt;
&lt;li&gt;La IA evalúa título, descripción, imágenes y Prompt según tus necesidades.&lt;/li&gt;
&lt;li&gt;Los resultados que coinciden se guardan en SQLite.&lt;/li&gt;
&lt;li&gt;El sistema envía notificaciones por los canales configurados.&lt;/li&gt;
&lt;li&gt;El usuario revisa resultados, logs e historial de precios en la Web UI.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;El valor de la IA está sobre todo en el paso 8. Puede entender condiciones en lenguaje natural como &amp;ldquo;buen estado, precio razonable, sin accesorios, no reparado, idealmente recogida local&amp;rdquo;, algo más flexible que reglas simples de palabras clave.&lt;/p&gt;
&lt;h2 id=&#34;despliegue-con-docker&#34;&gt;Despliegue con Docker
&lt;/h2&gt;&lt;p&gt;El proyecto recomienda Docker:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/Usagi-org/ai-goofish-monitor &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ai-goofish-monitor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env.example .env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vim .env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose logs -f app
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose down
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;La dirección por defecto de la Web UI es:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://127.0.0.1:8000
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;La imagen oficial es:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ghcr.io/usagi-org/ai-goofish:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si descargar la imagen es lento, el README también muestra un ejemplo con mirror:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker pull ghcr.nju.edu.cn/usagi-org/ai-goofish:latest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker tag ghcr.nju.edu.cn/usagi-org/ai-goofish:latest ghcr.io/usagi-org/ai-goofish:latest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;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:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;data/&lt;/code&gt;: almacenamiento principal SQLite para tareas, resultados e historial de precios.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;state/&lt;/code&gt;: archivos cookie de estado de login.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;prompts/&lt;/code&gt;: prompts de tareas.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;logs/&lt;/code&gt;: logs de ejecución.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;images/&lt;/code&gt;: imágenes de productos y directorios temporales.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si cambias &lt;code&gt;SERVER_PORT&lt;/code&gt; en &lt;code&gt;.env&lt;/code&gt;, también debes ajustar el mapeo de puertos en &lt;code&gt;docker-compose.yaml&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;configuración-mínima&#34;&gt;Configuración mínima
&lt;/h2&gt;&lt;p&gt;La configuración mínima gira alrededor del modelo de IA y el login de la Web UI:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_api_key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENAI_BASE_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_openai_compatible_base_url
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENAI_MODEL_NAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_multimodal_model
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;WEB_USERNAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;admin
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;WEB_PASSWORD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;change_me
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Los tres primeros son obligatorios para conectar el modelo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;OPENAI_API_KEY&lt;/code&gt;: API Key del modelo.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OPENAI_BASE_URL&lt;/code&gt;: endpoint compatible con OpenAI.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OPENAI_MODEL_NAME&lt;/code&gt;: nombre de un modelo con entrada de imágenes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;WEB_USERNAME&lt;/code&gt; y &lt;code&gt;WEB_PASSWORD&lt;/code&gt; se usan para acceder a la Web UI. El README menciona las credenciales por defecto &lt;code&gt;admin/admin123&lt;/code&gt;; en producción hay que cambiarlas.&lt;/p&gt;
&lt;h2 id=&#34;primer-uso&#34;&gt;Primer uso
&lt;/h2&gt;&lt;p&gt;El flujo inicial es aproximadamente:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Abrir &lt;code&gt;http://127.0.0.1:8000&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Iniciar sesión en la Web UI.&lt;/li&gt;
&lt;li&gt;Ir a gestión de cuentas de Goofish.&lt;/li&gt;
&lt;li&gt;Usar la extensión de Chrome del proyecto para exportar el estado de login de Goofish en JSON.&lt;/li&gt;
&lt;li&gt;Pegar ese estado en el sistema.&lt;/li&gt;
&lt;li&gt;El archivo se guarda en &lt;code&gt;state/&lt;/code&gt;, por ejemplo &lt;code&gt;state/acc_1.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Volver a gestión de tareas, crear una tarea y asociar una cuenta.&lt;/li&gt;
&lt;li&gt;Ejecutar la tarea y revisar resultados.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h2 id=&#34;tareas-de-ia-y-tareas-por-palabra-clave&#34;&gt;Tareas de IA y tareas por palabra clave
&lt;/h2&gt;&lt;p&gt;El proyecto soporta dos formas de crear tareas.&lt;/p&gt;
&lt;p&gt;La primera es &lt;code&gt;AI判断&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Puedes escribir requisitos detallados y el sistema genera criterios de análisis de forma asíncrona. Encaja con necesidades complejas, por ejemplo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Solo la unidad principal, sin accesorios.&lt;/li&gt;
&lt;li&gt;Alertar solo si el precio está claramente por debajo del mercado.&lt;/li&gt;
&lt;li&gt;Buen estado, sin agua, reparación ni defectos ocultos en la descripción.&lt;/li&gt;
&lt;li&gt;Preferir la misma ciudad y recogida en persona.&lt;/li&gt;
&lt;li&gt;Las imágenes deben mostrar número de serie, caja o accesorios clave.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La segunda es &lt;code&gt;关键词判断&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;En la práctica se pueden combinar: palabras clave para el primer filtro, IA para reducir falsos positivos.&lt;/p&gt;
&lt;h2 id=&#34;qué-permite-la-web-ui&#34;&gt;Qué permite la Web UI
&lt;/h2&gt;&lt;p&gt;La Web UI es una diferencia importante frente a scripts normales.&lt;/p&gt;
&lt;p&gt;La página de tareas permite configurar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tareas creadas con IA.&lt;/li&gt;
&lt;li&gt;Reglas por palabras clave.&lt;/li&gt;
&lt;li&gt;Rangos de precio.&lt;/li&gt;
&lt;li&gt;Ventana de publicación reciente.&lt;/li&gt;
&lt;li&gt;Filtros de región.&lt;/li&gt;
&lt;li&gt;Asociación de cuenta.&lt;/li&gt;
&lt;li&gt;Reglas de programación.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La página de cuentas permite:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Importar estado de login de Goofish.&lt;/li&gt;
&lt;li&gt;Actualizar estado de login.&lt;/li&gt;
&lt;li&gt;Eliminar cuentas.&lt;/li&gt;
&lt;li&gt;Asignar cuentas a tareas.&lt;/li&gt;
&lt;li&gt;Permitir que el sistema elija cuenta automáticamente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las páginas de resultados y logs permiten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ver productos coincidentes.&lt;/li&gt;
&lt;li&gt;Exportar resultados.&lt;/li&gt;
&lt;li&gt;Consultar historial.&lt;/li&gt;
&lt;li&gt;Ver el proceso de ejecución.&lt;/li&gt;
&lt;li&gt;Diagnosticar caducidad de login, controles de riesgo y problemas de llamadas a IA.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La página de ajustes permite:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ver estado del sistema.&lt;/li&gt;
&lt;li&gt;Editar Prompt.&lt;/li&gt;
&lt;li&gt;Ajustar proxies y rotación.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h2 id=&#34;almacenamiento-de-datos&#34;&gt;Almacenamiento de datos
&lt;/h2&gt;&lt;p&gt;El almacenamiento principal actual usa SQLite, con ruta por defecto:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;data/app.sqlite3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Docker monta por defecto la base SQLite así:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./data:/app/data
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Al arrancar, la aplicación crea base y tablas automáticamente, e intenta importar una vez datos históricos desde &lt;code&gt;config.json&lt;/code&gt;, &lt;code&gt;jsonl/&lt;/code&gt; y &lt;code&gt;price_history/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Hay que tener en cuenta que &lt;code&gt;state/&lt;/code&gt;, &lt;code&gt;prompts/&lt;/code&gt;, &lt;code&gt;logs/&lt;/code&gt; e &lt;code&gt;images/&lt;/code&gt; 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:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;images/task_images_&amp;lt;task_name&amp;gt;/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Al terminar la tarea, por defecto se limpian.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h2 id=&#34;canales-de-notificación&#34;&gt;Canales de notificación
&lt;/h2&gt;&lt;p&gt;El proyecto soporta varios canales de notificación. Configuraciones habituales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;NTFY_TOPIC_URL&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GOTIFY_URL&lt;/code&gt; / &lt;code&gt;GOTIFY_TOKEN&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BARK_URL&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WX_BOT_URL&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TELEGRAM_BOT_TOKEN&lt;/code&gt; / &lt;code&gt;TELEGRAM_CHAT_ID&lt;/code&gt; / &lt;code&gt;TELEGRAM_API_BASE_URL&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WEBHOOK_*&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Una configuración práctica es separar por valor del producto:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Coincidencias normales por palabra clave solo al backend.&lt;/li&gt;
&lt;li&gt;Resultados de alta confianza de IA al móvil.&lt;/li&gt;
&lt;li&gt;Productos de alto valor a WeCom o Telegram.&lt;/li&gt;
&lt;li&gt;Más logs durante depuración, menos ruido cuando ya sea estable.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ejecución-para-desarrolladores&#34;&gt;Ejecución para desarrolladores
&lt;/h2&gt;&lt;p&gt;Sin Docker, el desarrollo local requiere:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python 3.10+&lt;/li&gt;
&lt;li&gt;Node.js + npm&lt;/li&gt;
&lt;li&gt;Playwright CLI&lt;/li&gt;
&lt;li&gt;Chromium o Chrome / Edge&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Comandos básicos:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/Usagi-org/ai-goofish-monitor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ai-goofish-monitor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env.example .env
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Arranque con un comando:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod +x start.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./start.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;start.sh&lt;/code&gt; revisa Playwright CLI y navegador, instala dependencias, construye el frontend, copia artefactos y arranca el backend.&lt;/p&gt;
&lt;p&gt;Arranque manual del backend:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -m src.app
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;O:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uvicorn src.app:app --host 0.0.0.0 --port &lt;span class=&#34;m&#34;&gt;8000&lt;/span&gt; --reload
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Desarrollo frontend:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; web-ui
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Pruebas y build:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PYTEST_DISABLE_PLUGIN_AUTOLOAD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; pytest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; web-ui &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm run build
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;para-quién-sirve&#34;&gt;Para quién sirve
&lt;/h2&gt;&lt;p&gt;ai-goofish-monitor sirve para usuarios que:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Vigilan modelos concretos en Goofish con frecuencia.&lt;/li&gt;
&lt;li&gt;Quieren monitorizar electrónica de segunda mano, cámaras, videojuegos o hardware.&lt;/li&gt;
&lt;li&gt;Quieren automatizar &amp;ldquo;búsqueda por palabras clave + filtrado manual&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Tienen una API compatible con OpenAI y aceptan pagar el coste de juicio con IA.&lt;/li&gt;
&lt;li&gt;Conocen Docker o despliegue básico por línea de comandos.&lt;/li&gt;
&lt;li&gt;Necesitan recibir resultados en móvil, WeCom o Telegram.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No encaja tanto si:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No sabes desplegar nada y quieres una App lista para usar.&lt;/li&gt;
&lt;li&gt;No quieres manejar estado de login, captchas o controles de cuenta.&lt;/li&gt;
&lt;li&gt;Necesitas APIs oficiales y muy conformes a regulación.&lt;/li&gt;
&lt;li&gt;Quieres capturar datos de plataforma a gran escala y alta frecuencia.&lt;/li&gt;
&lt;li&gt;Esperas que la IA juzgue riesgo de transacción y compre por ti.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;riesgos-y-límites&#34;&gt;Riesgos y límites
&lt;/h2&gt;&lt;p&gt;Estas herramientas requieren límites claros.&lt;/p&gt;
&lt;p&gt;Primero, respeta las reglas de la plataforma.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Segundo, protege el estado de login.&lt;/p&gt;
&lt;p&gt;Los archivos de &lt;code&gt;state/&lt;/code&gt; 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.&lt;/p&gt;
&lt;p&gt;Tercero, el juicio de IA no garantiza hechos.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Cuarto, vigila costes.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Quinto, cuida la privacidad.&lt;/p&gt;
&lt;p&gt;Capturas de producto, contenido relacionado con chats, estado de cuenta y notificaciones pueden contener información sensible. Protege Webhooks, logs y bases de datos.&lt;/p&gt;
&lt;h2 id=&#34;diferencia-con-scripts-comunes&#34;&gt;Diferencia con scripts comunes
&lt;/h2&gt;&lt;p&gt;Un script normal de monitoreo de Goofish suele hacer tres cosas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Buscar palabras clave.&lt;/li&gt;
&lt;li&gt;Revisar precio.&lt;/li&gt;
&lt;li&gt;Enviar notificación.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;ai-goofish-monitor va más allá:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gestiona tareas y cuentas con Web UI.&lt;/li&gt;
&lt;li&gt;Expresa criterios de compra complejos con AI Prompt.&lt;/li&gt;
&lt;li&gt;Usa modelos multimodales para mirar imágenes y descripciones.&lt;/li&gt;
&lt;li&gt;Guarda resultados e historial de precios en SQLite.&lt;/li&gt;
&lt;li&gt;Usa páginas de logs para diagnosticar fallos.&lt;/li&gt;
&lt;li&gt;Mejora estabilidad con rotación de proxies y múltiples cuentas.&lt;/li&gt;
&lt;li&gt;Soporta ejecución a largo plazo con Cron.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h2 id=&#34;cómo-usarlo&#34;&gt;Cómo usarlo
&lt;/h2&gt;&lt;p&gt;Lo más práctico es empezar con tareas pequeñas.&lt;/p&gt;
&lt;p&gt;Por ejemplo, si buscas una cámara de segunda mano, puedes crear una tarea:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Palabras clave: &lt;code&gt;A7C&lt;/code&gt;, &lt;code&gt;索尼 A7C&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Rango de precio: límite superior según precio de mercado&lt;/li&gt;
&lt;li&gt;Región: misma provincia o ciudad&lt;/li&gt;
&lt;li&gt;Ventana de publicación: último día o últimas horas&lt;/li&gt;
&lt;li&gt;Criterios de IA: excluir lentes sueltas, unidades reparadas y accesorios obvios; fijarse en disparos y estado&lt;/li&gt;
&lt;li&gt;Notificación: solo resultados aprobados por IA&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;p&gt;ai-goofish-monitor lleva el monitoreo de Goofish desde un &amp;ldquo;script por palabras clave&amp;rdquo; 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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Referencias:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Usagi-org/ai-goofish-monitor&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Usagi-org/ai-goofish-monitor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Usagi-org/ai-goofish-monitor/blob/master/README_EN.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;README en inglés del proyecto&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Usagi-org/ai-goofish-monitor/blob/master/DISCLAIMER.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Disclaimer del proyecto&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
