\n\n\n\n Meine IA überwacht das Internet, um Veränderungen zu erkennen. Agent 101 \n

Meine IA überwacht das Internet, um Veränderungen zu erkennen.

📖 13 min read2,522 wordsUpdated Mar 29, 2026

Hallo, Agent in der Ausbildung! Hier ist Emma, zurück auf agent101.net, und heute werden wir etwas erkunden, das schon seit einiger Zeit im Hintergrund brodelt, aber endlich in Fahrt kommt: dafür sorgen, dass AI-Agenten für Sie handeln, selbst wenn Sie Anfänger sind. Genauer gesagt, sprechen wir darüber, wie man einen einfachen AI-Agenten erstellt, der einen bestimmten Teil des Internets für Sie überwacht und Sie informiert, wenn sich etwas ändert. Denken Sie daran als Ihren persönlichen digitalen Jagdhund, aber viel weniger lästig.

Seit Monaten bastle ich an verschiedenen AI-Tools, versuche sie über das bloße Verfassen lustiger Gedichte oder das Zusammenfassen von Artikeln hinaus zu nutzen. Ich wollte, dass sie proaktiv sind. Ich wollte, dass sie… Agenten sind! Aber jedes Mal, wenn ich mir ein Tutorial ansah, hatte ich das Gefühl, ich bräuchte einen Abschluss in Informatik und ein freies Wochenende, nur um die Umgebung einzurichten. Frustrierend, oder?

Vor einigen Wochen versuchte ich, den Launch eines bestimmten Produkts zu verfolgen – einem neuen Smart-Home-Gerät, das ich unbedingt haben musste. Es war eines dieser Dinge, die ohne viel Vorwarnung erscheinen, und der Lagerbestand verschwindet in wenigen Minuten. Alle fünf Minuten die Seite zu aktualisieren machte mich verrückt. Meine Finger schmerzten, meine Augen waren verschwommen, und mein Kaffeekonsum war gefährlich hoch. An diesem Punkt hatte ich eine Erkenntnis: Das ist genau die Art von sich wiederholender Aufgabe, die Wachsamkeit erfordert, für die ein AI-Agent perfekt ist. Und ich fand einen Weg, dies zu tun, den selbst ich, als selbsternannte Tech-Bloggerin, die „manchmal in YAML verloren geht“, bewältigen konnte. Keine ausgeklügelten Frameworks, keine obskuren Bibliotheken, nur ein wenig Python und ein gutes Verständnis davon, was ein AI-Assistent für Sie tun kann.

Heute werden wir also einen einfachen AI-Agenten erstellen, der eine Webseite auf eine spezifische Änderung überwacht und Sie darüber informiert. Es geht nicht darum, das nächste Skynet zu bauen; es geht darum, ein echtes Alltagsproblem mit einer Prise AI-Magie zu lösen. Und glauben Sie mir, wenn ich das kann, können Sie das auch.

Was ist ein einfacher Überwachungs-AI-Agent?

Im Grunde ist ein Überwachungs-AI-Agent einfach ein Programm, das etwas beobachtet und reagiert, wenn bestimmte Bedingungen erfüllt sind. In unserem Fall wird es eine Webseite überwachen. Warum „AI-Agent“ und nicht einfach „Skript“? Nun, der AI-Teil kommt ins Spiel, wenn wir darüber nachdenken, wie es Änderungen interpretiert und entscheidet, was wichtig ist. In diesem Einsteiger-Tutorial halten wir die AI recht leicht – denken Sie daran, als würden wir ein AI-Modell verwenden, um uns beim Verständnis des Textes zu helfen, ohne unbedingt komplexe Entscheidungen zu treffen. Der „Agent“-Teil ist der Zyklus: beobachten, nachdenken (ein wenig), handeln, wiederholen.

Mein Ziel mit diesem Agenten war einfach: Ich wollte den *Moment* wissen, in dem die Produktseite dieses Smart-Home-Geräts von „Ausverkauft“ auf „Auf Lager“ wechselte. Ich wollte keine Benachrichtigungen für jedes kleine Update, nur diese entscheidende Information. Das ist jedoch nicht nur für Produkteinführungen relevant. Stellen Sie sich vor, Sie verfolgen Stellenangebote, Nachrichtenartikel zu einem bestimmten Thema, Preisänderungen bei Wettbewerbern oder sogar Updates zu Ihrem Lieblings-Webcomic. Die Möglichkeiten sind ziemlich spannend, sobald Sie das Prinzip verstanden haben.

Die Werkzeuge, die wir benötigen (keine Panik, es ist minimal)

  • Python: Wenn Sie es noch nicht haben, holen Sie es sich. Es ist kostenlos und relativ einfach zu bedienen.
  • Einige Python-Bibliotheken: Wir verwenden requests, um Webseiten abzurufen, BeautifulSoup, um HTML zu parsen, und möglicherweise ein Mittel, um Benachrichtigungen zu senden (wie smtplib für E-Mails oder ein einfaches Webhook).
  • Ein AI-Modell (optional, aber nützlich): Dazu gehe ich davon aus, dass Sie Zugriff auf etwas wie die OpenAI-API oder die Google Gemini-API haben. Wir verwenden es, um Veränderungen intelligent zu erkennen, anstatt nur einen einfachen Textvergleich durchzuführen. Hier kommt die „AI“ wirklich zum Tragen, über ein einfaches Skript hinaus.
  • Ein Texteditor: VS Code, Sublime Text, sogar Notepad, wenn Sie sich old-school fühlen.

Verstehen Sie? Nichts, was zu einschüchternd ist. Wir richten keine Server ein oder konfigurieren komplizierte Cloud-Dienste. Das alles geschieht lokal auf Ihrer Maschine, genau wie ich es gemacht habe.

Schritt 1: Abrufen des Inhalts der Webseite

Zuerst muss unser Agent die Webseite wirklich „sehen“. Wir verwenden die Bibliothek requests dafür. Es ist wie Ihr Browser, aber ohne die schicken Grafiken – es erhält einfach den rohen HTML-Code.


import requests

def fetch_page_content(url):
 try:
 response = requests.get(url)
 response.raise_for_status() # Dies wird eine HTTPError für schlechte Antworten (4xx oder 5xx) auslösen
 return response.text
 except requests.exceptions.RequestException as e:
 print(f"Fehler beim Abrufen der URL {url}: {e}")
 return None

# Versuchen wir es mit einer fiktiven URL (ersetzen Sie sie durch Ihr tatsächliches Ziel)
# Für dieses Beispiel werde ich einen Platzhalter verwenden. BITTE führen Sie kein Scraping durch, ohne die robots.txt einer Website
# und die Nutzungsbedingungen zu überprüfen. Seien Sie respektvoll und überlasten Sie nicht die Server!
target_url = "https://example.com/product-page" # ERSETZEN SIE DIES DURCH IHR TATSÄCHLICHES ZIEL
current_content = fetch_page_content(target_url)

if current_content:
 print("Inhalt erfolgreich abgerufen. Erste 200 Zeichen:")
 print(current_content[:200])
else:
 print("Abrufen des Inhalts gescheitert.")

Als ich das das erste Mal schrieb, habe ich tatsächlich versucht, eine Seite abzurufen, die automatisierte Anfragen blockierte. Ich erhielt einen 403 Fehler. Ups! Ich musste eine andere Zielseite finden oder herausfinden, wie ich Header hinzufügen kann, um einen Browser zu imitieren. Für dieses Tutorial gehen wir davon aus, dass die Seite, die Sie anvisieren, mit den grundlegenden Anfragen einverstanden ist. Überprüfen Sie immer die robots.txt der Seite (zum Beispiel https://example.com/robots.txt), um zu sehen, was sie für Bots erlauben und nicht erlauben. Ethisches Scraping ist wichtig!

Schritt 2: HTML analysieren, um das Wichtige zu finden

Sobald wir das rohe HTML haben, ist es ein Durcheinander aus Tags und Text. Wir müssen den spezifischen Teil extrahieren, der „Auf Lager“ oder „Ausverkauft“ anzeigt. Das ist, wo BeautifulSoup ins Spiel kommt. Es hilft uns, die HTML-Struktur wie eine Karte zu navigieren.

Das war der kniffligste Teil für mich. Jede Webseite ist anders. Sie sollten die Zielseite in Ihrem Browser öffnen, mit der rechten Maustaste auf das Element klicken, das Sie interessiert (wie den Text „Auf Lager“), und „Untersuchen“ oder „Element untersuchen“ auswählen. Dadurch wird Ihnen der HTML-Code für diesen spezifischen Teil angezeigt. Suchen Sie nach einzigartigen Identifikatoren wie IDs oder Klassennamen.


from bs4 import BeautifulSoup

def extract_relevant_info(html_content):
 if not html_content:
 return "Kein Inhalt zum Analysieren."

 soup = BeautifulSoup(html_content, 'html.parser')

 # Dies ist sehr spezifisch für die Webseite, die Sie überwachen.
 # SIE MÜSSEN DAS ÄNDERN.
 # Beispiel: Suchen Sie ein div mit einer bestimmten Klasse oder ein span mit spezifischem Text.
 # Auf meiner Produktseite war der Lagerstatus oft in einem  mit einer Klasse wie "product-status"
 
 # Versuchen Sie, ein span oder ein div zu finden, das den Lagerstatus enthält
 stock_element = soup.find('span', class_='product-status') # Passen Sie den Klassennamen gemäß Ihrer Inspektion an
 if not stock_element:
 stock_element = soup.find('div', id='stock-indicator') # Passen Sie die ID gemäß Ihrer Inspektion an

 if stock_element:
 return stock_element.get_text(strip=True)
 else:
 # Wenn wir das spezifische Element nicht finden können, geben wir einen größeren Ausschnitt oder sogar den gesamten Body zurück
 # und lassen das AI-Modell sich darum kümmern. Das ist ein guter Plan B.
 body_content = soup.find('body')
 if body_content:
 return body_content.get_text(separator=' ', strip=True)
 return "Spezifisches Element nicht gefunden, gebe den kompletten Text der Seite zurück (das kann laut sein)."

# Angenommen, `current_content` stammt aus dem vorherigen Schritt
relevant_text = extract_relevant_info(current_content)
print(f"Relevanter Text extrahiert: {relevant_text[:200]}...") # Gibt die ersten 200 Zeichen aus

Meine anfänglichen Versuche hier waren urkomisch gescheitert. Ich hatte versucht, nur die gesamte Seite zu nehmen und sie der AI zu geben, was manchmal funktionierte, aber wirklich langsam und teuer war (API-Anfragen sind nicht kostenlos!). Danach versuchte ich, zu spezifisch zu sein und verpasste das Element, weil der Klassenname sich geringfügig geändert hatte. Der Schlüssel ist, ein Gleichgewicht zu finden: ausreichend spezifisch, um den Lärm zu reduzieren, jedoch allgemein genug, um kleinere Änderungen im Layout zu handhaben.

Schritt 3: Die AI-Magie – Signifikante Änderungen erkennen

Hier kommt der lustige Teil! Anstatt einfach einen einfachen Textvergleich durchzuführen (der bei jeder kleinen Änderung der Anzeige ausgelöst würde), verwenden wir ein KI-Modell, um uns zu sagen, ob der *Sinn* des relevanten Textes sich signifikant geändert hat im Hinblick auf unser Interesse (den Lagerstatus).

Dafür benötigen Sie einen API-Schlüssel für Ihr gewähltes KI-Modell (OpenAI, Gemini usw.). Bewahren Sie ihn sicher auf, nicht direkt in Ihrem Code!


import os
from openai import OpenAI # Oder `google.generativeai`, wenn Sie Gemini verwenden

# Konfigurieren Sie Ihren OpenAI API-Schlüssel
# NIE API-Schlüssel hart kodieren! Verwenden Sie Umgebungsvariablen oder eine Konfigurationsdatei.
# os.environ["OPENAI_API_KEY"] = "IHREN_API_SCHLÜSSEL_HIER" # MACHEN SIE DAS NICHT IM PRODUKTIONSCODE
# Stattdessen setzen Sie ihn in Ihrem Terminal: export OPENAI_API_KEY="sk-..."

client = OpenAI() # Angenommen, OPENAI_API_KEY ist in den Umgebungsvariablen gesetzt

def ask_ai_about_change(old_text, new_text, target_keyword="auf Lager"):
 prompt = f"""
 Sie sind ein intelligenter Assistent, der eine Webseite auf Veränderungen im Zusammenhang mit der Produktverfügbarkeit überwacht.
 Ich werde Ihnen zwei Versionen von Texten aus einer Produktseite zur Verfügung stellen.
 Ihre Aufgabe ist es zu bestimmen, ob sich der Verfügbarkeitsstatus des Produkts signifikant geändert hat,
 insbesondere ob er zu '{target_keyword}' geworden ist, als er es zuvor nicht war,
 oder ob er sich von '{target_keyword}' geändert hat.

 Alter Text:
 "{old_text}"

 Neuer Text:
 "{new_text}"

 Hat sich die Verfügbarkeit des Produkts in Richtung oder von '{target_keyword}' geändert?
 Wenn ja, erklären Sie kurz die Änderung. Ansonsten sagen Sie einfach 'Kein signifikanter Wechsel.'
 Konzentrieren Sie sich ausschließlich auf die Verfügbarkeit, ignorieren Sie kleinere Formulierungs- oder Formatierungsänderungen.
 """

 try:
 completion = client.chat.completions.create(
 model="gpt-3.5-turbo", # Oder "gpt-4", "gemini-pro" usw.
 messages=[
 {"role": "system", "content": "Sie sind ein hilfreicher Assistent."},
 {"role": "user", "content": prompt}
 ],
 max_tokens=150
 )
 return completion.choices[0].message.content
 except Exception as e:
 print(f"Fehler beim Aufruf des KI-Modells: {e}")
 return "Die KI-Analyse ist fehlgeschlagen."

# Beispiel für die Verwendung (normalerweise würden Sie dies in einer Schleife tun)
# Derzeit simulieren wir eine Änderung
# Angenommen, 'previous_relevant_text' stammt von einem früheren Abruf
previous_relevant_text = "Nicht auf Lager. Nachschub in 2 Wochen erwartet."
new_relevant_text = "Auf Lager! Begrenzte Menge verfügbar."

ai_response = ask_ai_about_change(previous_relevant_text, new_relevant_text, "Auf Lager")
print(f"KI-Bewertung: {ai_response}")

# Simulieren Sie keine Änderung
new_relevant_text_no_change = "Nicht auf Lager. Nachschub in 3 Wochen erwartet."
ai_response_no_change = ask_ai_about_change(previous_relevant_text, new_relevant_text_no_change, "Auf Lager")
print(f"KI-Bewertung (Simulation ohne Änderung): {ai_response_no_change}")

Hier wird der Agent wirklich „KI“. Anstatt komplexe reguläre Ausdrücke oder fragile Stringvergleiche zu schreiben, sage ich der KI einfach, nach welcher Art von Änderung ich suche. Es ist, als hätte ich einen kleinen Praktikanten, der den Kontext versteht! Als ich das zum ersten Mal ausprobierte, hatte ich Angst, dass die KI sich in leichten Formulierungsvariationen verlieren würde. Aber mit einem guten Prompt war es überraschend stabil. Sie hat korrekt identifiziert, als „Bald verfügbar“ zu „Jetzt vorbestellen“ wurde, als eine signifikante Änderung, auch wenn die genauen Worte „Auf Lager“ nicht vorhanden waren.

Schritt 4: Alles zusammenbringen – Die Agentenschleife und die Benachrichtigung

Ein Agent muss kontinuierlich arbeiten. Daher werden wir unsere Abruf- und Überprüfungslogik in einer Schleife kapseln. Und wenn er etwas findet, muss er es uns mitteilen!


import time
# ... (import requests, BeautifulSoup, os, OpenAI aus den vorherigen Schritten) ...

# Globale Variable zum Speichern des letzten bekannten Status
last_known_status_text = "" 

def send_notification(message):
 print(f"\n!!! AGENT-ALARM !!!\n{message}\n")
 # Hier würden Sie mit einem echten Benachrichtigungsdienst integrieren:
 # - E-Mail (unter Verwendung von smtplib)
 # - Push-Benachrichtigungsdienst (Pushover, IFTTT-Webhook, Telegram-Bot)
 # - SMS-Gateway
 # Um es zu vereinfachen, drucken wir einfach in die Konsole.
 # Beispiel für E-Mails (benötigt Konfiguration):
 # import smtplib
 # from email.mime.text import MIMEText
 # msg = MIMEText(message)
 # msg['Subject'] = 'Änderung der Webseite festgestellt!'
 # msg['From'] = '[email protected]'
 # msg['To'] = 'empfä[email protected]'
 # try:
 # with smtplib.SMTP_SSL('smtp.example.com', 465) as smtp:
 # smtp.login('[email protected]', 'Ihr_passwort')
 # smtp.send_message(msg)
 # print("E-Mail-Benachrichtigung gesendet.")
 # except Exception as e:
 # print(f"E-Mail-Versand fehlgeschlagen: {e}")


def run_agent(url, interval_seconds=300, target_keyword="Auf Lager"):
 global last_known_status_text
 print(f"Der Agent beginnt, {url} alle {interval_seconds} Sekunden zu überwachen.")
 print("Erster Abruf...")
 
 # Erster Abruf zur Festlegung der Basislinie
 html_content = fetch_page_content(url)
 if html_content:
 last_known_status_text = extract_relevant_info(html_content)
 print(f"Anfänglicher Status festgelegt: {last_known_status_text[:100]}...")
 else:
 print("Erster Abruf des Inhalts fehlgeschlagen. Der Agent beginnt mit einer leeren Basislinie.")
 # Wenn der erste Abruf fehlschlägt, wird der Agent versuchen, es bei der ersten Schleifeniteration erneut

 while True:
 print(f"\n[{time.strftime('%Y-%m-%d %H:%M:%S')}] Überprüfung von {url}...")
 current_html_content = fetch_page_content(url)

 if current_html_content:
 new_relevant_text = extract_relevant_info(current_html_content)
 
 if not last_known_status_text: # Umgang mit dem Fall, in dem der erste Abruf fehlschlug
 last_known_status_text = new_relevant_text
 print(f"Basislinie nach anfänglichem Fehlschlag festgelegt: {last_known_status_text[:100]}...")
 
 if new_relevant_text != last_known_status_text:
 print("Mögliche Änderung erkannt. Anfrage an die KI...")
 ai_analysis = ask_ai_about_change(last_known_status_text, new_relevant_text, target_keyword)
 
 if "Kein signifikanter Wechsel." not in ai_analysis:
 send_notification(f"Webseitenaktualisierung für {url}:\n{ai_analysis}\nNeuer Text: {new_relevant_text[:200]}...")
 last_known_status_text = new_relevant_text # Basislinie nur im Falle einer signifikanten Änderung aktualisieren
 else:
 print(f"Die KI hat bestimmt: {ai_analysis} (geringfügig, ignoriert)")
 # Auch wenn die KI sagt, dass es keinen signifikanten Wechsel gibt, möchten wir möglicherweise die Basislinie aktualisieren,
 # um zu vermeiden, dass wiederholte Alarme für die gleiche geringfügige Änderung ausgelöst werden.
 # Oder, lassen Sie es so, wenn Sie möchten, dass die KI jedes Mal neu bewertet.
 # Für dieses Beispiel werden wir aktualisieren, um zu vermeiden, dass die KI für statische geringfügige Änderungen überlastet wird.
 last_known_status_text = new_relevant_text 
 else:
 print("Keine textlichen Änderungen im relevanten Abschnitt festgestellt.")
 else:
 print(f"Fehler beim Abrufen des Inhalts von {url} in dieser Iteration.")

 time.sleep(interval_seconds) # Warten, bevor Sie erneut überprüfen

# --- Hauptausführung ---
if __name__ == "__main__":
 # Konfigurieren Sie Ihre Ziel-URL und das gewünschte Intervall
 # Achten Sie auf die Richtlinien der Website und stellen Sie keine zu häufigen Anfragen!
 my_target_url = "https://www.some-store.com/new-widget-X" # <<< ERSETZEN SIE DIES!
 monitoring_interval = 600 # Überprüfen Sie alle 10 Minuten (600 Sekunden)
 desired_status = "Auf Lager" # Welches Schlüsselwort suchen wir?

 # WICHTIG: Stellen Sie sicher, dass Ihr OpenAI API-Schlüssel als Umgebungsvariable festgelegt ist!
 # export OPENAI_API_KEY="sk-..." in Ihrem Terminal, bevor Sie ausführen.
 
 run_agent(my_target_url, monitoring_interval, desired_status)

Ich habe mein Intervall auf 5 Minuten für dieses fesselnde Smart-Home-Gerät festgelegt. Jedes Mal, wenn ich die Meldung "Überprüfung..." sah, fühlte ich ein kleines Hochgefühl. Als die Benachrichtigung schließlich eintraf – "Auf Lager! Begrenzte Menge verfügbar." – schwöre ich, dass ich Engel singen hörte. Ich klickte auf den Link, fügte es meinem Warenkorb hinzu und bezahlte in wenigen Sekunden. Erfolg! Mein kleiner KI-Agent hatte mich vor endlosem Aktualisieren gerettet und mir geholfen, dieses Gadget zu besorgen.

Konkrete Lektionen für Ihren ersten KI-Agenten

  1. Fange klein an : Versuche nicht, sofort einen komplexen Konversationsagenten zu bauen. Eine einfache Überwachungsaufgabe ist perfekt, um die Grundlagen zu lernen.
  2. Untersuche dein Ziel : Das Verständnis der HTML-Struktur der Webseite, die du überwachst, ist entscheidend. Nutze die Entwicklertools deines Browsers.
  3. Prompt-Engineering ist der Schlüssel : Je präziser du den gewünschten Änderungstyp dem KI-Modell beschreibst, desto genauer und nützlicher werden seine Antworten sein. Experimentiere mit deinen Prompts!
  4. Sei respektvoll : Bombardiere Webseiten nicht mit Anfragen. Verwende angemessene Intervalle, überprüfe robots.txt, und verstehe die Nutzungsbedingungen einer Seite bezüglich automatisierten Zugriffs.
  5. Schütze deine Schlüssel : Kodierung von API-Schlüsseln direkt in deinem Skript ist ein No-Go. Nutze Umgebungsvariablen.
  6. Iteriere : Dein erster Versuch könnte nicht perfekt sein. Meiner war es definitiv nicht! Passe deine `BeautifulSoup`-Selektoren an, verfeinere dein KI-Prompt und ändere deine Benachrichtigungsmethode, bis es für dich funktioniert.

Den Agenten zu bauen, war ein enormes Selbstvertrauen für mich. Es hat mir gezeigt, dass KI nicht nur für große Unternehmen oder akademische Forschung ist. Es ist ein Werkzeug, das wir als Einzelbenutzer und Gelegenheitsentwickler nutzen können, um unsere eigenen Probleme zu lösen und unser digitales Leben ein bisschen einfacher zu gestalten. Also mach weiter, wähle eine Webseite, die du leid bist, manuell zu überprüfen, und baue deinen eigenen digitalen Jagdhund. Du wirst überrascht sein, was du erreichen kannst!

Ähnliche Artikel

🕒 Published:

🎓
Written by Jake Chen

AI educator passionate about making complex agent technology accessible. Created online courses reaching 10,000+ students.

Learn more →

Leave a Comment

Your email address will not be published. Required fields are marked *

Browse Topics: Beginner Guides | Explainers | Guides | Opinion | Safety & Ethics

More AI Agent Resources

AgntmaxAgntzenClawgoClawdev
Scroll to Top