\n\n\n\n Mein KI-Agent überwacht jetzt Websites für mich - ClawGo \n

Mein KI-Agent überwacht jetzt Websites für mich

📖 3 min read541 wordsUpdated Mar 27, 2026

Hey Clawgo-Familie, hier ist Jake Morrison und ich bringe euch eine weitere tiefgehende Erkundung der Welt der KI-Agenten. Heute möchte ich über etwas sprechen, das in meinem eigenen Home-Labor in den letzten Wochen viel Wirbel gemacht hat: wie man tatsächlich einen KI-Agenten dazu bringt, etwas Nützliches zu tun und nicht nur theoretisch interessant zu sein. Insbesondere werden wir erkunden, wie man einen Agenten dazu bringt, proaktiv Änderungen auf einer Website zu überwachen und zu melden. Vergesst für einen Moment das schicke Gerede über „Umstrukturierung der Branche“; lasst uns die Hände schmutzig machen mit einem praktischen Problem.

Das Problem: Website-Änderungserkennung (der harte Weg)

Hier ist das Szenario: Ich bin immer auf der Suche nach neuen Komponenten für meine verschiedenen Heimautomatisierungsprojekte. Manchmal ist ein spezifischer Sensor oder ein Mikrocontroller ausverkauft, und ich muss sofort wissen, wann er wieder verfügbar ist. Eine Seite jede Stunde zu aktualisieren, ist mühsam und ehrlich gesagt bin ich dafür zu faul. Ich habe diese allgemeinen Benachrichtigungsdienste für Website-Änderungen ausprobiert, aber sie sind oft zu breit gefasst, zu langsam oder sie reagieren auf irrelevante Änderungen wie ein Update des Fußbereichs.

Was ich wirklich brauchte, war etwas Intelligenteres. Etwas, das die *Absicht* dessen verstand, wonach ich suchte. Hier kommt ein KI-Agent ins Spiel. Statt nur das HTML zu „differenzieren“, wollte ich einen Agenten, der die Seite lesen, den Verfügbarkeitsstatus des Produkts verstehen und mir spezifisch mitteilen konnte, wann sich dieser Status auf „auf Lager“ änderte.

Mein erster Versuch: Einfaches Python-Skript (der brutale Weg)

Mein erster Versuch, wie es oft der Fall ist, bestand aus einem einfachen Python-Skript. Ich verwendete requests, um die Seite abzurufen, und BeautifulSoup, um sie zu parsen. Es sah etwa so (vereinfacht, natürlich) aus:


import requests
from bs4 import BeautifulSoup
import time

URL = "https://example-store.com/product-x-123"
KEYWORD = "ausverkauft" # Oder "auf Lager"

def check_stock():
 try:
 response = requests.get(URL)
 response.raise_for_status() # Ausnahme bei HTTP-Fehler auslösen
 soup = BeautifulSoup(response.text, 'html.parser')
 
 # Das ist der knifflige Teil: das spezifische Element finden
 # Angenommen, der Lagerstatus ist in einem div mit der Klasse "product-status"
 status_div = soup.find('div', class_='product-status')
 
 if status_div and KEYWORD in status_div.text:
 print(f"[{time.ctime()}] Produkt ist {KEYWORD}.")
 return False # Immer noch ausverkauft
 elif status_div:
 print(f"[{time.ctime()}] Produktstatus geändert! Aktuell: {status_div.text.strip()}")
 return True # Lager hat sich geändert!
 else:
 print(f"[{time.ctime()}] Status-div konnte nicht gefunden werden.")
 return False

 except requests.exceptions.RequestException as e:
 print(f"[{time.ctime()}] Fehler beim Abrufen der URL: {e}")
 return False

# Grundlegende Schleife (dies würde für immer laufen oder bis gestoppt)
# while True:
# if check_stock():
# print("ALARM: Produkt ist wieder auf Lager!")
# # Benachrichtigungslogik hier hinzufügen (E-Mail, SMS usw.)
# break # Überprüfung stoppen, sobald gefunden
# time.sleep(3600) # Jede Stunde überprüfen

Das funktionierte bis zu einem gewissen Punkt. Das Problem? Wenn die Website ihre HTML-Struktur auch nur leicht aktualisierte, würde meine spezifische soup.find('div', class_='product-status')-Zeile fehlschlagen. Oder, wenn sich die Formulierung von „ausverkauft“ in „derzeit nicht verfügbar“ änderte, würde mein KEYWORD-Test fehlschlagen. Das erforderte ständige Wartung, was den Zweck der Automatisierung zunichte machte.

Der KI-Agent: Ein intelligenterer Ansatz

  1. Eine URL besucht.
  2. Versteht, wie ein „Produktverfügbarkeitsstatus“ aussieht.
  3. Identifiziert, ob das Produkt basierend auf der *Bedeutung* des Textes auf Lager oder ausverkauft ist, nicht nur auf exakte Schlüsselwörter.
  4. Nur dann berichtet, wenn der Status, der mir wichtig ist (z. B. „auf Lager“), erkannt wird.

Agenten-Setup: Verwendung eines grundlegenden LLM zur Interpretation

Für dieses Experiment beschloss ich, es relativ einfach zu halten. Ich benutze ein lokales LLM (insbesondere ein feinabgestimmtes Llama 3-Modell, das auf meinem Heimserver läuft, dank Ollama) und ein Python-Skript, um die Aktionen des Agenten zu orchestrieren. Der Agent selbst „lebt“ nicht in einer separaten Umgebung; es ist die Kombination aus Skript, LLM und den Werkzeugen, die er nutzen kann.

„Werkzeuge“ des Agenten

  • Web-Scraper: Eine Funktion zum Abrufen des HTML-Inhalts einer URL (ähnlich wie mein ursprüngliches Python-Skript, aber jetzt wird nur rohes HTML an das LLM weitergegeben).
  • LLM-Schnittstelle: Eine Funktion, um Eingaben an meine lokale Llama 3-Instanz zu senden und Antworten zu erhalten.
  • Benachrichtigungssystem: Ein einfacher E-Mail-Versender (oder einfach nur eine Druckanweisung fürs Erste).

Der Arbeitsablauf des Agenten (vereinfacht)

So habe ich den Kernloop des Agenten entworfen:

  1. Seite abrufen: Verwenden Sie das Web-Scraper-Tool, um das rohe HTML der Zielproduktseite zu erhalten.
  2. Mit LLM analysieren: HTML mit einer spezifischen Eingabe an das LLM senden.
  3. Interpretieren und Entscheiden: Das LLM analysiert das HTML und entscheidet, ob das Produkt auf Lager ist.
  4. Änderung melden: Wenn sich der Status auf „auf Lager“ geändert hat (und zuvor ausverkauft war), eine Benachrichtigung auslösen.
  5. Wiederholen: Auf ein festgelegtes Intervall warten und den Prozess wiederholen.

Prompt-Engineering zur Lagererkennung

Das war der entscheidende Teil. Mein Prompt an das LLM musste klar und präzise sein. Hier ist ein Beispiel, das ich verwendet habe:


"Du bist ein KI-Assistent, der dazu entworfen wurde, den Lagerstatus eines Produkts auf einer Webseite zu erkennen.
Ich werde dir den HTML-Inhalt einer Produktseite zur Verfügung stellen.
Deine Aufgabe ist es, das HTML zu analysieren und zu bestimmen, ob das Produkt derzeit 'auf Lager' oder 'ausverkauft' ist.
Suche nicht nur nach genauen Phrasen; verstehe den Kontext. Achte auf gängige Indikatoren wie:
- 'In den Warenkorb' Schaltflächen (zeigt normalerweise auf Lager an)
- 'Ausverkauft' Nachrichten
- 'Derzeit nicht verfügbar' Nachrichten
- 'Vorbestellung' (betrachte dies als ausverkauft für den sofortigen Kauf)
- Alle Variation des Lagerstatus-Messaging.

Gib NUR eines der folgenden Wörter zurück: 'IN_STOCK' oder 'OUT_OF_STOCK'.
Gib keinen anderen Text, keine Erklärungen oder Formatierungen an.

HTML-Inhalt:
" + html_content

Die Anweisung „Gib NUR eines der folgenden Wörter zurück“ ist entscheidend für die programmgesteuerte Analyse der LLM-Ausgabe. Das ermöglicht meinem Python-Skript, die Entscheidung des LLM einfach zu lesen und darauf zu reagieren.

Alles Zusammenstellen (Konzeptioneller Code)

Während die vollständige Implementierung mehr Fehlerbehandlung und Statusverwaltung umfasst, hier ist die Grundidee in Python:


import requests
import time
# Angenommen, du hast eine Funktion, um mit deinem LLM zu interagieren
# z. B. von my_llm_interface import query_llm 
# Und eine Funktion, um Benachrichtigungen zu senden
# z. B. von my_notifier import send_alert

PRODUCT_URL = "https://example-store.com/product-x-123"
CHECK_INTERVAL_SECONDS = 3600 # Jede Stunde überprüfen

last_known_status = "UNBEKANNT" # Um Änderungen zu verfolgen

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"Fehler beim Abrufen der URL: {e}")
 return None

def determine_stock_status(html_content):
 if not html_content:
 return "FEHLER"
 
 prompt = f"""
 Du bist ein KI-Assistent, der dazu entworfen wurde, den Lagerstatus eines Produkts auf einer Webseite zu erkennen.
 Ich werde dir den HTML-Inhalt einer Produktseite zur Verfügung stellen.
 Deine Aufgabe ist es, das HTML zu analysieren und zu bestimmen, ob das Produkt derzeit 'auf Lager' oder 'ausverkauft' ist.
 Suche nicht nur nach genauen Phrasen; verstehe den Kontext. Achte auf gängige Indikatoren wie:
 - 'In den Warenkorb' Schaltflächen (zeigt normalerweise auf Lager an)
 - 'Ausverkauft' Nachrichten
 - 'Derzeit nicht verfügbar' Nachrichten
 - 'Vorbestellung' (betrachte dies als ausverkauft für den sofortigen Kauf)
 - Alle Variationen des Lagerstatus-Messaging.

 Gib NUR eines der folgenden Wörter zurück: 'IN_STOCK' oder 'OUT_OF_STOCK'.
 Gib keinen anderen Text, keine Erklärungen oder Formatierungen an.

 HTML-Inhalt:
 {html_content}
 """
 
 # Hier würdest du dein LLM aufrufen
 # Zur Demonstration simulieren wir eine Antwort
 # real_llm_response = query_llm(prompt) 
 
 # LLM-Antwort für Testzwecke simulieren
 if "In den Warenkorb" in html_content: # Einfache Heuristik für die Demo
 real_llm_response = "IN_STOCK"
 elif "Ausverkauft" in html_content or "Nicht verfügbar" in html_content:
 real_llm_response = "OUT_OF_STOCK"
 else:
 real_llm_response = "UNBEKANNT"

 return real_llm_response.strip().upper()

# Haupt-Agenten-Schleife
while True:
 print(f"[{time.ctime()}] Überprüfe den Produktbestand...")
 html = get_html(PRODUCT_URL)
 current_status = determine_stock_status(html)

 if current_status == "FEHLER":
 print("Konnte den Status aufgrund eines Abruffehlers nicht bestimmen. Später erneut versuchen.")
 elif current_status == "IN_STOCK" and last_known_status != "IN_STOCK":
 print("ALARM: Produkt ist jetzt AUF LAGER!")
 # send_alert(f"Produkt {PRODUCT_URL} ist wieder auf Lager!") # Deine Benachrichtigungslogik
 last_known_status = "IN_STOCK"
 elif current_status == "OUT_OF_STOCK" and last_known_status != "OUT_OF_STOCK":
 print("Produkt ist AUSVERKAUFT.")
 last_known_status = "OUT_OF_STOCK"
 else:
 print(f"Produktstatus ist {current_status}. Keine Änderung festgestellt.")

 time.sleep(CHECK_INTERVAL_SECONDS)

Dieses Setup ermöglicht es dem Agenten, viel widerstandsfähiger gegenüber Änderungen der Layouts oder Formulierungen der Website zu sein. Das LLM kann mit seinem Verständnis von natürlicher Sprache Variationen von „ausverkauft“ interpretieren, ohne dass ich jedes Mal eine Liste von Schlüsselwörtern aktualisieren muss.

Die Ergebnisse: Ein zuverlässigerer Monitor

Nachdem ich diesen Agenten ein paar Wochen habe laufen lassen, kann ich bestätigen, dass er deutlich zuverlässiger ist als mein ursprüngliches BeautifulSoup-Skript. Ich habe gesehen, wie sich Produktseiten ihre „nicht vorrätig“-Nachricht ändern, Elemente verschieben und sogar von Schaltflächen zu Textlinks für den Kauf wechseln. Mein KI-Agent, der auf die interpretative Kraft des LLM angewiesen ist, hat mir konsequent genaue Lagerbestandsaktualisierungen gegeben.

Einmal hat ein Geschäft seine „In den Warenkorb“-Schaltfläche in „Benachrichtige mich, wenn verfügbar.“ geändert. Mein altes Skript hätte gesehen, wie „In den Warenkorb“ verschwand und wäre verwirrt gewesen. Das LLM hat jedoch „Benachrichtige mich, wenn verfügbar“ korrekt als „OUT_OF_STOCK“-Status interpretiert, weil es die *Bedeutung* hinter diesen Phrasen versteht.

Es geht nicht darum, eine superintelligente allgemeine KI zu bauen, die dein Leben leitet. Es geht darum, ein spezifisches, lästiges Problem zu nehmen und ein bisschen KI-Intelligenz anzuwenden, um es auf eine solidere Weise zu lösen, als es traditionelle Skripting-Methoden erlauben. Es ist praktische KI, und das ist es, was ich an diesen Dingen liebe.

Handlungsfähige Erkenntnisse

Wenn du anfangen möchtest, mit KI-Agenten für praktische Automatisierung zu experimentieren, hier sind meine besten Tipps:

  1. Fang klein an, löse ein echtes Problem: Versuche nicht, bei deinem ersten Versuch Skynet zu bauen. Wähle eine spezifische Aufgabe, die du manuell und lästig findest. Mein Website-Monitoring ist ein perfektes Beispiel.
  2. Verwende lokale LLMs: Tools wie Ollama machen es unglaublich einfach, leistungsstarke LLMs auf deiner eigenen Hardware auszuführen. Das hält die Kosten niedrig und die Daten privat, was großartig für persönliche Projekte ist.
  3. Konzentriere dich auf klare Eingaben: Die „Intelligenz“ des Agenten hängt oft davon ab, wie gut du das LLM anweist. Sei ausdrücklich, was du möchtest, dass es tut, und in welchem Format du die Ausgabe erwartest.
  4. Gib deinem Agenten „Werkzeuge“: Ein LLM ist mächtig, aber es muss mit der realen Welt interagieren. Gib ihm Funktionen, um Daten abzurufen, Nachrichten zu senden oder Dateien zu manipulieren.
  5. Iteriere und verfeinere: Dein erster Agent wird nicht perfekt sein. Teste ihn, sieh, wo er scheitert, und verfeinere deine Eingaben oder seine Werkzeuge.

Die Welt der KI-Agenten ist noch im Anfangsstadium, aber das Potenzial für praktische, alltägliche Automatisierung ist riesig. Warte nicht auf ein „bahnbrechendes“ Produkt; fang an, deine eigenen kleinen, nützlichen Agenten jetzt zu bauen. Du wirst überrascht sein, was du von deiner To-Do-Liste automatisieren kannst.

Das war’s für diesen Beitrag, Clawgo-Crew. Lass mich in den Kommentaren wissen, welche praktischen Agenten du baust!

🕒 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