\n\n\n\n Mi agente de IA ahora monitorea sitios web por mí - ClawGo \n

Mi agente de IA ahora monitorea sitios web por mí

📖 11 min read2,161 wordsUpdated Mar 25, 2026

Hola familia de Clawgo, Jake Morrison aquí, trayéndoles otra inmersión en el mundo de los agentes de IA. Hoy, quiero hablar sobre algo que ha estado resonando en mi propio laboratorio casero durante las últimas semanas: cómo hacer que un agente de IA haga algo útil, no solo teóricamente interesante. Específicamente, vamos a explorar cómo hacer que un agente supervise proactivamente y reporte sobre cambios en un sitio web. Olvidemos por un minuto la charla elegante sobre “reconfigurar la industria”; vamos a ensuciarnos las manos con un problema práctico.

El Problema: Detección de Cambios en el Sitio Web (La Manera Difícil)

Así que, aquí está el escenario: siempre estoy buscando nuevos componentes para mis diversos proyectos de automatización del hogar. A veces, un sensor específico o un microcontrolador se agota y necesito saber en el segundo en que vuelva a estar disponible. Actualizar la página cada hora es tedioso y, francamente, soy demasiado perezoso para eso. He probado esos servicios genéricos de notificación de cambios en sitios web, pero a menudo son demasiado amplios, demasiado lentos o se activan por cambios irrelevantes como una actualización de pie de página.

Lo que realmente necesitaba era algo más inteligente. Algo que entendiera la *intención* de lo que estaba buscando. Aquí es donde entra un agente de IA. En lugar de simplemente “diferenciar” el HTML, quería un agente que pudiera leer la página, entender el estado de disponibilidad del producto y decirme específicamente cuándo ese estado cambiaba a “en stock”.

Mi Primer Intento: Script Simple en Python (La Manera de Fuerza Bruta)

Mi primer intento, como suele ser, involucró un script simple en Python. Usé requests para obtener la página y BeautifulSoup para analizarla. Se veía algo así (simplificado, por supuesto):


import requests
from bs4 import BeautifulSoup
import time

URL = "https://example-store.com/product-x-123"
KEYWORD = "Fuera de Stock" # O "En Stock"

def check_stock():
 try:
 response = requests.get(URL)
 response.raise_for_status() # Lanza una excepción para errores HTTP
 soup = BeautifulSoup(response.text, 'html.parser')
 
 # Esta es la parte complicada: encontrar el elemento específico
 # Digamos que el estado del stock está en un div con clase "product-status"
 status_div = soup.find('div', class_='product-status')
 
 if status_div and KEYWORD in status_div.text:
 print(f"[{time.ctime()}] El producto está {KEYWORD}.")
 return False # Aún fuera de stock
 elif status_div:
 print(f"[{time.ctime()}] ¡El estado del producto ha cambiado! Actual: {status_div.text.strip()}")
 return True # ¡El stock ha cambiado!
 else:
 print(f"[{time.ctime()}] No se pudo encontrar el div de estado.")
 return False

 except requests.exceptions.RequestException as e:
 print(f"[{time.ctime()}] Error al obtener la URL: {e}")
 return False

# Bucle básico (esto se ejecutaría para siempre o hasta que se detenga)
# while True:
# if check_stock():
# print("ENVIANDO ALERTA: ¡El producto está de nuevo en stock!")
# # Agrega lógica de notificación aquí (correo electrónico, SMS, etc.)
# break # Dejar de verificar una vez encontrado
# time.sleep(3600) # Verificar cada hora

Esto funcionó, hasta cierto punto. ¿El problema? Si el sitio web actualizaba su estructura HTML, incluso ligeramente, mi línea específica soup.find('div', class_='product-status') se rompería. O, si la redacción cambiaba de “Fuera de Stock” a “Actualmente No Disponible”, mi verificación de KEYWORD fallaría. Esto requería un mantenimiento constante, lo que derrotaba el propósito de la automatización.

Entra el Agente de IA: Un Enfoque Más Inteligente

Aquí es donde comencé a pensar en un verdadero agente de IA. No solo un script que sigue instrucciones exactas, sino algo que pueda *interpretar* la página. Mi objetivo era un agente que pudiera:

  1. Visitar una URL.
  2. Entender cómo se ve un “estado de disponibilidad del producto”.
  3. Identificar si el producto está en stock o fuera de stock basado en el *significado* del texto, no solo en palabras clave exactas.
  4. Reportar solo cuando se detecta el estado que me importa (por ejemplo, “en stock”).

Configuración del Agente: Usando un LLM Básico para Interpretación

Para este experimento, decidí mantenerlo relativamente simple. Estoy usando un LLM local (específicamente, un modelo Llama 3 ajustado que se ejecuta en mi servidor local, gracias a Ollama) y un script de Python para orquestar las acciones del agente. El agente en sí no “vive” en un entorno separado; es la combinación del script, el LLM y las herramientas que puede usar.

“Herramientas” del Agente

  • Raspador Web: Una función para obtener el contenido HTML de una URL (similar a mi script inicial en Python, pero ahora solo proporcionando HTML en bruto al LLM).
  • Interfaz de LLM: Una función para enviar indicaciones a mi instancia local de Llama 3 y obtener respuestas.
  • Sistema de Notificación: Un simple remitente de correos electrónicos (o incluso solo una declaración de impresión por ahora).

El Flujo de Trabajo del Agente (Simplificado)

Aquí está cómo diseñé el bucle central del agente:

  1. Obtener la Página: Usar la herramienta de raspador web para obtener el HTML en bruto de la página del producto objetivo.
  2. Analizar con LLM: Enviar el HTML al LLM con una indicación específica.
  3. Interpretar y Decidir: El LLM analiza el HTML y decide si el producto está en stock.
  4. Reportar Cambio: Si el estado ha cambiado a “en stock” (y anteriormente estaba fuera), activar una notificación.
  5. Repetir: Esperar un intervalo establecido y repetir el proceso.

Ingeniería de Indicaciones para Detección de Stock

Esta fue la parte crucial. Mi indicación al LLM necesitaba ser clara y precisa. Aquí hay un ejemplo de lo que usé:


"Eres un asistente de IA diseñado para detectar el estado de stock de un producto en una página web.
Te proporcionaré el contenido HTML de una página de producto.
Tu tarea es analizar el HTML y determinar si el producto está actualmente 'en stock' o 'fuera de stock'.
No busques solo frases exactas; entiende el contexto. Busca indicadores comunes como:
- Botones de 'Agregar al Carrito' (generalmente indica en stock)
- Mensajes de 'Fuera de Stock'
- Mensajes de 'Actualmente No Disponible'
- 'Prepedido' (considera esto fuera de stock para compra inmediata)
- Cualquier variación de mensajes sobre el estado del stock.

Devuelve SOLAMENTE una de las siguientes palabras: 'EN_STOCK' o 'FUERA_DE_STOCK'.
No proporciones ningún otro texto, explicaciones ni formato.

Contenido HTML:
" + html_content

La instrucción “Devuelve SOLAMENTE una de las siguientes palabras” es clave para el análisis programático de la salida del LLM. Esto permite que mi script de Python lea fácilmente la decisión del LLM y actúe en consecuencia.

Uniéndolo Todo (Código Conceptual)

Si bien la implementación completa implica más manejo de errores y gestión de estados, aquí está la idea central en Python:


import requests
import time
# Supón que tienes una función para interactuar con tu LLM
# e.g., from my_llm_interface import query_llm 
# Y una función para enviar notificaciones
# e.g., from my_notifier import send_alert

PRODUCT_URL = "https://example-store.com/product-x-123"
CHECK_INTERVAL_SECONDS = 3600 # Verificar cada hora

last_known_status = "DESCONOCIDO" # Para rastrear cambios

def get_html(url):
 try:
 response = requests.get(url, timeout=10)
 response.raise_for_status()
 return response.text
 except requests.exceptions.RequestException as e:
 print(f"Error al obtener la URL: {e}")
 return None

def determine_stock_status(html_content):
 if not html_content:
 return "ERROR"
 
 prompt = f"""
 Eres un asistente de IA diseñado para detectar el estado de stock de un producto en una página web.
 Te proporcionaré el contenido HTML de una página de producto.
 Tu tarea es analizar el HTML y determinar si el producto está actualmente 'en stock' o 'fuera de stock'.
 No busques solo frases exactas; entiende el contexto. Busca indicadores comunes como:
 - Botones de 'Agregar al Carrito' (generalmente indica en stock)
 - Mensajes de 'Fuera de Stock'
 - Mensajes de 'Actualmente No Disponible'
 - 'Prepedido' (considera esto fuera de stock para compra inmediata)
 - Cualquier variación de mensajes sobre el estado del stock.

 Devuelve SOLAMENTE una de las siguientes palabras: 'EN_STOCK' o 'FUERA_DE_STOCK'.
 No proporciones ningún otro texto, explicaciones ni formato.

 Contenido HTML:
 {html_content}
 """
 
 # Aquí es donde llamarías a tu LLM
 # Para la demostración, simularemos una respuesta
 # real_llm_response = query_llm(prompt) 
 
 # Simular respuesta del LLM para pruebas
 if "Agregar al Carrito" in html_content: # Heurística simple para demostración
 real_llm_response = "EN_STOCK"
 elif "Fuera de Stock" in html_content or "No Disponible" in html_content:
 real_llm_response = "FUERA_DE_STOCK"
 else:
 real_llm_response = "DESCONOCIDO"

 return real_llm_response.strip().upper()

# Bucle principal del agente
while True:
 print(f"[{time.ctime()}] Verificando el stock del producto...")
 html = get_html(PRODUCT_URL)
 current_status = determine_stock_status(html)

 if current_status == "ERROR":
 print("No se pudo determinar el estado debido a un error de obtención. Reintentando más tarde.")
 elif current_status == "EN_STOCK" and last_known_status != "EN_STOCK":
 print("ALERTA: ¡El producto ahora está EN STOCK!")
 # send_alert(f"¡El producto {PRODUCT_URL} está de nuevo en stock!") # Tu lógica de notificación
 last_known_status = "EN_STOCK"
 elif current_status == "FUERA_DE_STOCK" and last_known_status != "FUERA_DE_STOCK":
 print("El producto está FUERA DE STOCK.")
 last_known_status = "FUERA_DE_STOCK"
 else:
 print(f"El estado del producto es {current_status}. No se detectaron cambios.")

 time.sleep(CHECK_INTERVAL_SECONDS)

Esta configuración permite que el agente sea mucho más resistente a los cambios en el diseño o la redacción del sitio web. El LLM, con su comprensión del lenguaje natural, puede interpretar variaciones de “fuera de stock” sin que yo tenga que actualizar una lista de palabras clave cada vez.

Los Resultados: Un Monitor Más Eficaz

Después de dejar que este agente funcionara durante unas semanas, puedo confirmar que es significativamente más confiable que mi script inicial de BeautifulSoup. He visto cómo las páginas de productos cambian su mensaje de “agotado”, mueven elementos y hasta cambian de botones a enlaces de texto para la compra. Mi agente de IA, confiando en el poder interpretativo del LLM, me ha dado consistentemente actualizaciones precisas sobre el estado del stock.

Una vez, una tienda cambió su botón de “Agregar al carrito” a “Notificarme cuando esté disponible.” Mi viejo script habría visto desaparecer “Agregar al carrito” y se habría confundido. El LLM, sin embargo, interpretó correctamente “Notificarme cuando esté disponible” como un estado de “AGOTADO”, porque entiende el *significado* detrás de esas frases.

Esto no se trata de construir una IA general superinteligente para manejar tu vida. Se trata de tomar un problema específico y molesto y aplicar un poco de inteligencia artificial para resolverlo de una manera más práctica que lo que permite la programación tradicional. Es IA práctica, y eso es lo que me encanta de este tema.

Conclusiones Accionables

Si estás buscando comenzar a experimentar con agentes de IA para automatización práctica, aquí tienes mis mejores consejos:

  1. Empieza Pequeño, Resuelve un Problema Real: No intentes construir Skynet en tu primer intento. Elige una tarea específica que realices manualmente y que encuentres molesta. El monitoreo de mi sitio web es un ejemplo perfecto.
  2. Utiliza LLMs Locales: Herramientas como Ollama hacen que sea increíblemente fácil ejecutar potentes LLMs en tu propio hardware. Esto mantiene bajos los costos y los datos privados, lo cual es excelente para proyectos personales.
  3. Céntrate en Instrucciones Claras: La “inteligencia” del agente a menudo depende de qué tan bien instruyes al LLM. Sé explícito sobre lo que quieres que haga y en qué formato esperas la salida.
  4. Proporciona “Herramientas” a Tu Agente: Un LLM es poderoso, pero necesita interactuar con el mundo real. Proporciónale funciones para obtener datos, enviar mensajes o manipular archivos.
  5. Itera y Refinar: Tu primer agente no será perfecto. Pruébalo, observa dónde falla y refina tus instrucciones o sus herramientas.

El mundo de los agentes de IA aún está en sus inicios, pero el potencial para la automatización práctica en la vida cotidiana es enorme. No esperes a algún producto “revolucionario”; comienza a construir tus propios agentes pequeños y útiles ahora. Te sorprenderá lo que puedes automatizar de tu lista de tareas.

Eso es todo por este tema, equipo de Clawgo. ¡Déjame saber qué agentes prácticos estás construyendo en los comentarios!

🕒 Published:

🤖
Written by Jake Chen

AI automation specialist with 5+ years building AI agents. Previously at a Y Combinator startup. Runs OpenClaw deployments for 200+ users.

Learn more →
Browse Topics: Advanced Topics | AI Agent Tools | AI Agents | Automation | Comparisons
Scroll to Top