\n\n\n\n Il mio agente IA ora sorveglia i siti web per me. - ClawGo \n

Il mio agente IA ora sorveglia i siti web per me.

📖 10 min read1,901 wordsUpdated Apr 3, 2026

Ciao famiglia Clawgo, Jake Morrison qui, vi porto una nuova esplorazione nel mondo degli agenti IA. Oggi voglio parlare di qualcosa che fa discutere nel mio laboratorio a casa da qualche settimana: come far sì che un agente IA faccia qualcosa di utile, non solo di interessante in termini teorici. Più specificamente, esploreremo come far sì che un agente monitori proattivamente e riferisca i cambiamenti su un sito web. Dimenticate per un minuto il discorso sofisticato sulla « trasformazione dell’industria »; mettiamoci al lavoro su un problema pratico.

Il Problema: Rilevamento dei Cambiamenti sui Siti Web (il Metodo Difficile)

Ecco lo scenario: sono sempre alla ricerca di nuovi componenti per i miei vari progetti di automazione domestica. A volte, un sensore specifico o un microcontrollore è esaurito, e ho bisogno di sapere il secondo in cui torna disponibile. Aggiornare una pagina ogni ora è noioso e, francamente, sono troppo pigro per farlo. Ho provato questi servizi di notifica delle modifiche ai siti web generici, ma spesso sono troppo generici, troppo lenti o si attivano per cambiamenti irrilevanti, come un aggiornamento del footer.

Quello di cui avevo davvero bisogno era qualcosa di più intelligente. Qualcosa che comprendesse l’**intenzione** di quello che stavo cercando. È qui che entra in gioco un agente IA. Invece di semplicemente « confrontare » l’HTML, volevo un agente in grado di leggere la pagina, comprendere lo stato di disponibilità del prodotto e dirmi specificamente quando quello stato cambiava in « disponibile ».

Il Mio Primo Tentativo: Script Python Semplice (il Metodo di Forza Bruta)

Il mio primo tentativo, come spesso accade, ha coinvolto un semplice script Python. Ho utilizzato requests per recuperare la pagina e BeautifulSoup per analizzarla. Era qualcosa di simile a questo (semplificato, ovviamente):


import requests
from bs4 import BeautifulSoup
import time

URL = "https://example-store.com/product-x-123"
KEYWORD = "Esaurito" # O "Disponibile"

def check_stock():
 try:
 response = requests.get(URL)
 response.raise_for_status() # Solleva un'eccezione per errori HTTP
 soup = BeautifulSoup(response.text, 'html.parser')
 
 # Questa è la parte delicata: trovare l'elemento specifico
 # Diciamo che lo stato di stock è in una div con la classe "product-status"
 status_div = soup.find('div', class_='product-status')
 
 if status_div and KEYWORD in status_div.text:
 print(f"[{time.ctime()}] Prodotto è {KEYWORD}.")
 return False # Ancora esaurito
 elif status_div:
 print(f"[{time.ctime()}] Cambio di stato del prodotto! Attuale: {status_div.text.strip()}")
 return True # Lo stock è cambiato!
 else:
 print(f"[{time.ctime()}] Impossibile trovare la div di stato.")
 return False

 except requests.exceptions.RequestException as e:
 print(f"[{time.ctime()}] Errore durante il recupero dell'URL: {e}")
 return False

# Ciclo di base (questo funzionerebbe indefinitamente o fino a quando non viene fermato)
# while True:
# if check_stock():
# print("INVIATO AVVISO: Prodotto di nuovo disponibile!")
# # Aggiungere qui la logica di notifica (email, SMS, ecc.)
# break # Fermarsi a controllare una volta trovato
# time.sleep(3600) # Controlla ogni ora

Ha funzionato, fino a un certo punto. Il problema? Se il sito web aggiornava la sua struttura HTML, anche solo leggermente, la mia riga soup.find('div', class_='product-status') si rompeva. Oppure, se l’etichetta cambiava da « Esaurito » a « Attualmente Non Disponibile », il mio controllo KEYWORD falliva. Questo richiedeva una manutenzione costante, il che contraddiceva l’obiettivo dell’automazione.

Entrata in Gioco dell’Agente IA: Un Approccio Più Intelligente

È qui che ho iniziato a pensare a un vero agente IA. Non solo uno script che segue istruzioni esatte, ma qualcosa che può **interpretare** la pagina. Il mio obiettivo era un agente capace di:

  1. Visitare un URL.
  2. Comprendere come appare un « stato di disponibilità prodotto ».
  3. Identificare se il prodotto è disponibile o meno in base al **significato** del testo, non solo alle parole chiave esatte.
  4. Riferire solo quando il stato che mi interessa (ad esempio, « disponibile ») è rilevato.

Impostazione dell’Agente: Utilizzare un LLM di Base per l’Interpretazione

Per questa esperienza, ho deciso di mantenere le cose relativamente semplici. Utilizzo un LLM locale (specificamente, un modello Llama 3 affinato che gira sul mio server domestico, grazie a Ollama) e uno script Python per orchestrare le azioni dell’agente. L’agente stesso non « vive » in un ambiente separato; è la combinazione dello script, del LLM e degli strumenti che può utilizzare.

Gli « Strumenti » dell’Agente

  • Web Scraper: Una funzione per recuperare il contenuto HTML di un URL (simile al mio script Python iniziale, ma ora fornisce solo HTML grezzo al LLM).
  • Interfaccia LLM: Una funzione per inviare richieste alla mia istanza locale di Llama 3 e ricevere risposte.
  • Sistema di Notifica: Un semplice inviatore di email (o anche solo una dichiarazione di stampa per il momento).

Il Flusso di Lavoro dell’Agente (Semplificato)

Ecco come ho progettato il ciclo principale dell’agente:

  1. Recuperare la Pagina: Utilizzare lo strumento di web scraping per ottenere l’HTML grezzo della pagina prodotto target.
  2. Analizzare con il LLM: Inviare l’HTML al LLM con un’invito specifico.
  3. Interpretare e Decidere: Il LLM analizza l’HTML e decide se il prodotto è in stock.
  4. Riferire il Cambiamento: Se lo stato è cambiato in « disponibile » (ed era precedentemente esaurito), attivare una notifica.
  5. Ripetere: Aspettare un intervallo definito e ripetere il processo.

Ingegneria delle Richieste per il Rilevamento di Stock

Questa era la parte cruciale. La mia richiesta al LLM doveva essere chiara e solida. Ecco un esempio di quello che ho usato:


"Sei un assistente IA progettato per rilevare lo stato di stock di un prodotto su una pagina web.
Ti fornirò il contenuto HTML di una pagina prodotto.
Il tuo compito è analizzare l'HTML e determinare se il prodotto è attualmente 'disponibile' o 'esaurito'.
Non cercare solo frasi esatte; comprendi il contesto. Cerca indicatori comuni come:
- pulsanti 'Aggiungi al Carrello' (indicanti generalmente disponibile)
- messaggi 'Esaurito'
- messaggi 'Attualmente Non Disponibile'
- 'Pre-ordine' (considera questo come esaurito per un acquisto immediato)
- Qualsiasi variazione di messaggio sullo stato dello stock.

Restituisci UNICAMENTE una delle seguenti parole: 'DISPONIBILE' o 'ESAURITO'.
Non fornire alcun altro testo, spiegazione o formattazione.

Contenuto HTML :
" + html_content

La direttiva « Restituisci UNICAMENTE una delle seguenti parole » è essenziale per il trattamento programmatico dell’output del LLM. Questo consente al mio script Python di leggere facilmente la decisione del LLM e agire di conseguenza.

Mettere Tutto Insieme (Codice Concettuale)

Sebbene l’implementazione completa coinvolga più gestione degli errori e gestione degli stati, ecco l’idea principale in Python:


import requests
import time
# Supponiamo che tu abbia una funzione per interagire con il tuo LLM
# e.g., from my_llm_interface import query_llm 
# E una funzione per inviare notifiche
# e.g., from my_notifier import send_alert

PRODUCT_URL = "https://example-store.com/product-x-123"
CHECK_INTERVAL_SECONDS = 3600 # Controlla ogni ora

last_known_status = "UNKNOWN" # Per tenere traccia dei cambiamenti

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"Errore durante il recupero dell'URL: {e}")
 return None

def determine_stock_status(html_content):
 if not html_content:
 return "ERROR"
 
 prompt = f"""
 Sei un assistente IA progettato per rilevare lo stato di stock di un prodotto su una pagina web.
 Ti fornirò il contenuto HTML di una pagina prodotto.
 Il tuo compito è analizzare l'HTML e determinare se il prodotto è attualmente 'in stock' o 'esaurito'.
 Non cercare solo frasi esatte; comprendi il contesto. Cerca indicatori comuni come:
 - i pulsanti 'Aggiungi al Carrello' (indicativi di solito di disponibilità)
 - i messaggi 'Esaurito'
 - i messaggi 'Attualmente Non Disponibile'
 - 'Pre-ordine' (considera questo come esaurito per un acquisto immediato)
 - Qualsiasi variazione di messaggio di stato di stock.

 Restituisci SOLO una delle parole seguenti: 'IN_STOCK' o 'ESaurito'.
 Non fornire nessun altro testo, spiegazione o formattazione.

 Contenuto HTML:
 {html_content}
 """
 
 # Qui chiameresti il tuo LLM
 # Per la dimostrazione, simuliamo una risposta
 # real_llm_response = query_llm(prompt) 
 
 # Simuliamo la risposta del LLM per il test
 if "Aggiungi al Carrello" in html_content: # Euristica semplice per la demo
 real_llm_response = "IN_STOCK"
 elif "Esaurito" in html_content or "Non Disponibile" in html_content:
 real_llm_response = "ESaurito"
 else:
 real_llm_response = "UNKNOWN"

 return real_llm_response.strip().upper()

# Ciclo principale dell'agente
while True:
 print(f"[{time.ctime()}] Controllo dello stock del prodotto...")
 html = get_html(PRODUCT_URL)
 current_status = determine_stock_status(html)

 if current_status == "ERROR":
 print("Impossibile determinare lo stato a causa di un errore di recupero. Nuovo tentativo più tardi.")
 elif current_status == "IN_STOCK" and last_known_status != "IN_STOCK":
 print("ALLERTA: Il prodotto è ora IN STOCK!")
 # send_alert(f"Prodotto {PRODUCT_URL} è di nuovo in stock!") # La tua logica di notifica
 last_known_status = "IN_STOCK"
 elif current_status == "ESaurito" and last_known_status != "ESaurito":
 print("Il prodotto è ESaurito.")
 last_known_status = "ESaurito"
 else:
 print(f"Lo stato del prodotto è {current_status}. Nessun cambiamento rilevato.")

 time.sleep(CHECK_INTERVAL_SECONDS)

Questa configurazione consente all’agenzia di essere molto più resiliente di fronte ai cambiamenti di layout o di etichettatura del sito web. Il LLM, con la sua comprensione del linguaggio naturale, può interpretare variazioni di “esaurito” senza che io debba aggiornare un elenco di parole chiave ogni volta.

I Risultati: Un Monitor Più Affidabile

Dopo aver lasciato questo agente in funzione per alcune settimane, posso confermare che è notevolmente più affidabile rispetto al mio script iniziale di BeautifulSoup. Ho visto le pagine prodotto cambiare il loro messaggio “esaurito”, spostare elementi e persino passare da pulsanti a link testuali per l’acquisto. Il mio agente IA, facendo leva sul potere di interpretazione del LLM, mi ha costantemente fornito aggiornamenti precisi sullo stato degli stock.

Una volta, un negozio ha cambiato il loro pulsante “Aggiungi al Carrello” in “Fammi sapere quando disponibile.” Il mio vecchio script avrebbe visto “Aggiungi al Carrello” scomparire e si sarebbe confuso. Il LLM, tuttavia, ha interpretato correttamente “Fammi sapere quando disponibile” come uno stato “OUT_OF_STOCK”, poiché comprende il *senso* dietro queste frasi.

Non si tratta di costruire un’IA generale super-intelligente per gestire la tua vita. Si tratta di prendere un problema specifico e noioso e applicare un po’ di know-how in IA per risolverlo in modo più efficace rispetto a quanto consenta la programmazione tradizionale. È IA pratica, ed è ciò che amo di queste cose.

Consigli Pratici

Se stai cercando di iniziare a sperimentare con agenti IA per l’automazione pratica, ecco i miei migliori consigli:

  1. Inizia Piccolo, Risolvi un Vero Problema: Non cercare di costruire Skynet al tuo primo tentativo. Scegli un compito specifico che svolgi manualmente e che trovi noioso. Il monitoraggio del mio sito web è un esempio perfetto.
  2. Utilizza LLM Locali: Strumenti come Ollama rendono incredibilmente facile eseguire LLM potenti sul tuo hardware. Questo riduce i costi e mantiene i dati privati, il che è eccellente per progetti personali.
  3. Concentrati su Istruzioni Chiare: L’“intelligenza” dell’agente dipende spesso dalla qualità delle tue istruzioni al LLM. Sii esplicito su ciò che vuoi che faccia e nel formato in cui ti aspetti l’output.
  4. Forniamo al tuo Agente “Strumenti”: Un LLM è potente, ma deve interagire con il mondo reale. Forniscigli funzioni per recuperare dati, inviare messaggi o manipolare file.
  5. Itera e Affina: Il tuo primo agente non sarà perfetto. Mettilo alla prova, vedi dove fallisce e affina le tue istruzioni o i suoi strumenti.

Il mondo degli agenti IA è ancora giovane, ma il potenziale per un’automazione pratica quotidiana è enorme. Non aspettare un prodotto “rivoluzionario”; inizia a creare i tuoi piccoli agenti utili ora. Sarai sorpreso da ciò che puoi automatizzare dalla tua lista di attività.

È tutto per questo, team Clawgo. Fammi sapere quali agenti pratici stai costruendo nei commenti!

🕒 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