SEO Content Gap Analysis & Automation


In wettbewerbsintensiven Märkten ist Data Intelligence der Schlüssel zur digitalen Sichtbarkeit. Dieses Projekt implementiert eine automatisierte Pipeline für Competitive Intelligence und Content Gap Analysis. Das System analysiert systematisch leistungsstarke Wettbewerber-Seiten, identifiziert semantische Strukturen und Keywords und leitet daraus datengestützte Content-Strategien ab.

Durch die Integration lokaler Large Language Models (LLMs) wird der gesamte Prozess skalierbar und kosteneffizient gestaltet. Manuelle Rechercheaufwände werden eliminiert, wodurch Marketing-Teams sich auf Strategie und Qualitätssicherung konzentrieren können.

Business Value & Anwendung

Dieses Automatisierungs-Tool optimiert den SEO-Workflow durch technologische Skalierung:

  • Competitive Intelligence: Automatisierte Extraktion und Strukturierung von Wettbewerberdaten aus komplexen Web-Umgebungen.
  • Market Analysis: Semantische Analyse zur Identifikation von ungenutzten Keyword-Potenzialen und Themenclustern.
  • Automated Content Drafting: Generierung von optimierten Content-Briefings und Entwürfen basierend auf bewährten Performance-Metriken (Skyscraper-Methode).
  • Data Privacy & Cost Efficiency: Vollständige lokale Datenverarbeitung eliminiert API-Kosten und gewährleistet Datensouveränität.

Technische Highlights (Key Features)

  • Stealth Scraping: Verwendet undetected-chromedriver, um Bot-Erkennungsmechanismen zu umgehen und Seiten wie ein echter Browser zu laden.
  • Intelligente Inhaltserkennung: Anstatt CSS-Selektoren hart zu codieren, analysiert das LLM die HTML-Struktur und entscheidet dynamisch, wo der Haupttext zu finden ist.
  • Token-Optimierung: Bereinigt HTML-Code von unnötigem Ballast (Skripte, Styles), um das Kontext-Fenster des LLMs effizient zu nutzen.
  • Caching-System: Speichert heruntergeladene Seiten lokal (basierend auf einem MD5-Hash der URL), um unnötige Netzwerkanfragen zu vermeiden und die Entwicklung zu beschleunigen.
  • Vollständige Pipeline: Von der URL bis zum fertigen Markdown-Artikel-Entwurf in einem Durchlauf.

Verwendete Technologien

  • Sprache: Python 3
  • Web Automation: undetected-chromedriver (eine modifizierte Version von Selenium) für das Rendering von JavaScript-lastigen Seiten.
  • Parsing: BeautifulSoup4 für die HTML-Verarbeitung und Bereinigung.
  • KI-Integration: REST-API-Kommunikation mit einem lokalen LLM-Server (z.B. LM Studio), kompatibel mit OpenAI-Chat-Completions-Format.
  • Datenverarbeitung: hashlib für Caching-Strategien und json für den Datenaustausch.

Technische Highlights und Lösungsansätze

Dynamische Selektor-Ermittlung durch KI

Problem: Jede Webseite ist anders aufgebaut. Ein starrer Scraper, der nach <div class="content"> sucht, scheitert oft.

Lösung: Das Skript sendet eine bereinigte, gekürzte Version des HTML-Gerüsts an das LLM mit der Aufgabe: “Identifiziere den CSS-Selektor, der den Hauptartikel umschließt”. Das LLM fungiert hier als intelligenter Parser, der semantisch versteht, wo der Content liegt. Dies macht das Tool extrem flexibel gegenüber verschiedenen Webseiten-Layouts.

Effizientes Token-Management

Problem: LLMs haben ein begrenztes Kontext-Fenster (Context Window). Rohes HTML ist voller Rauschen (JavaScript, CSS, SVG), das wertvolle Token verschwendet und das Modell verwirren kann.

Lösung: Vor der Analyse durchläuft das HTML eine strenge Reinigungsphase (clean_html_for_analysis). Tags wie <script>, <style>, <nav> und <footer> werden entfernt. Nur das strukturelle Skelett des <body> wird an die KI gesendet. Dies reduziert die Token-Anzahl drastisch und verbessert die Qualität der KI-Antworten.

Robuste Browser-Automatisierung

Problem: Viele moderne Seiten blockieren einfache requests oder Standard-Selenium-Bots.

Lösung: Durch den Einsatz von undetected-chromedriver wird ein echtes Chrome-Profil simuliert. Das Skript erstellt temporäre Benutzerprofile, um Konflikte mit laufenden Browser-Instanzen zu vermeiden, und wartet intelligent auf das Laden der Seite, bevor der Quellcode extrahiert wird.

Ein konkretes Beispiel: Analyse eines Golf-Blogs

Um die Arbeitsweise des Tools zu verdeutlichen, hier ein gekürzter Konsolen-Output eines echten Durchlaufs. Ziel war es, einen Artikel über Golf-Etikette zu analysieren und basierend darauf neuen Content zu generieren.

Downloading page: https://www.adidas.de/blog/golfregeln-fur-die-etikette-auf-dem-grun
Starting undetected-chromedriver...
Saved to cache: page_cache\aabf6112ef2a5db7e571350a68ce733f.html

[Content Extraction] Analyzing HTML structure...
Sending request to LLM...
LLM identified selector: div._article-body_1onw8_209
Extracted 4033 characters.

[Summarization] Generating summary...
SUMMARY:
**Kurzfassung: Golf‑Etikette & Platzregeln**
| Thema | Kernaussagen |
|-------|---------------|
| **Allgemeines** | Golf ist ruhiges Naturspiel... |

[Keyword Extraction] Extracting keywords...
KEYWORDS:
### Einführung in Golfetikette
Keywords: Golfetikette Regeln, Ruhe auf dem Grün, Stressfreies Putten...

[Content Generation] Creating new blog article...
NEW ARTICLE:
# Einführung in Golfetikette
Golf ist mehr als nur ein Sport – es ist eine Kunstform...

Schritt-für-Schritt Erklärung des Prozesses

  1. Download & Caching: Das Skript lädt die URL .../golfregeln-fur-die-etikette.... Da die Seite JavaScript benötigt, fährt undetected-chromedriver hoch. Das Ergebnis wird sofort als Hash (aabf61...) gespeichert, sodass bei erneuten Tests kein neuer Request nötig ist.

  2. Intelligente Extraktion: Hier zeigt sich die Stärke des LLMs. Anstatt dass ich manuell im Browser-Inspektor suchen muss, erkennt die KI den kryptischen Selektor div._article-body_1onw8_209. Dies ist typisch für moderne Frameworks (wie React oder Vue), die Klassennamen generieren. Ein klassischer Scraper wäre hier gescheitert.

  3. Zusammenfassung: Der extrahierte Text (über 4000 Zeichen) wird an das lokale Modell gesendet, das eine strukturierte Zusammenfassung erstellt. Dies dient als erster Check, ob der richtige Inhalt gefunden wurde.

  4. Keyword-Extraktion: Das Tool analysiert die Struktur des Originalartikels und extrahiert für jeden Abschnitt relevante Keywords (z.B. “Stressfreies Putten”, “Golfetikette Regeln”). Diese bilden das Gerüst für den neuen Artikel.

  5. Content-Generierung: Im letzten Schritt fungiert das LLM als Texter. Es nimmt die extrahierten Keywords und die Struktur und schreibt einen komplett neuen Blogpost (“Einführung in Golfetikette”), der thematisch deckungsgleich, aber im Wortlaut einzigartig ist.