Blog Cannibalization - Erkennung von Keyword-Überschneidungen
Erkennen Sie, wenn mehrere Blog-Posts um dieselben Suchbegriffe konkurrieren. Zwei Modi: lokale Analyse (Standard) und DataForSEO-API-Modus für SERP-Daten.
Zwei Modi
| Modus | Flag | Kosten | Datenquelle |
|---|---|---|---|
| Lokal | (Standard) | Kostenlos | Dateiinhaltsanalyse via Grep/Read |
| API | --api | ~0,01 $/Aufruf | DataForSEO Page Intersection + Ranked Keywords |
Der lokale Modus funktioniert ohne API-Schlüssel. Der API-Modus erfordert DataForSEO-Anmeldedaten,
die als Umgebungsvariablen gesetzt werden: DATAFORSEO_LOGIN und DATAFORSEO_PASSWORD.
Ablauf im lokalen Modus
Schritt 1: Blog-Dateien scannen
Verwenden Sie Glob, um alle Inhaltsdateien im Zielverzeichnis zu finden:
- Muster:
**/*.md,**/*.mdx,**/*.html - Überspringen von Dateien in
node_modules/,.git/,drafts/
Schritt 2: Primäre Keywords extrahieren
Lesen Sie für jede Datei Keywordsignale aus:
- Titel-Tag oder H1-Überschrift (höchste Gewichtung)
- H2-Überschriften (mittlere Gewichtung)
- Erster Absatz (unterstützendes Signal)
- Meta-Beschreibung (falls im Frontmatter vorhanden)
Methode zur primären Keyword-Extraktion:
- Tokenisieren Sie Titel und H1 in 1-Gramm-, 2-Gramm- und 3-Gramm-Phrasen
- Bewerten Sie jede Phrase nach Häufigkeit in Titel + H2s + erstem Absatz
- Wählen Sie die am höchsten bewertete 2-3-Wort-Phrase als primäres Keyword aus
- Notieren Sie sekundäre Keywords aus den H2-Überschriften
Schritt 3: Nach Ähnlichkeit clustern
Gruppieren Sie Beiträge mit diesen Abgleichsregeln (in Prioritätsreihenfolge):
- Exakte Übereinstimmung - identisches primäres Keyword in 2+ Beiträgen
- Stammübereinstimmung - gleicher Wortstamm (z. B. „optimieren“ vs. „Optimierung“)
- Semantische Überschneidung - Claude stellt fest, dass zwei Keywords auf dieselbe Suchintention abzielen (z. B. „bestes CRM-Software“ vs. „Top-CRM-Tools 2026“)
- Teilmengenübereinstimmung - ein Keyword enthält ein anderes (z. B. „E-Mail-Marketing“ vs. „E-Mail-Marketing für Startups“)
Schritt 4: Bewerten und markieren
Für jeden Cluster mit 2+ Beiträgen wird der Schweregrad bewertet und eine Empfehlung generiert.
Schritt 5: Bericht ausgeben
Die Ergebnistabelle und clusterspezifische Empfehlungen werden angezeigt.
Ablauf im API-Modus (DataForSEO)
Erfordert das Flag --api. Verwendet WebFetch, um DataForSEO-Endpunkte aufzurufen.
Verwendete Endpunkte
Page Intersection - findet Keywords, für die mehrere URLs ranken:
POST https://api.dataforseo.com/v3/dataforseo_labs/google/page_intersection/live
Authorization: Basic <base64(login:password)>
{
"pages": {
"1": "https://example.com/post-a",
"2": "https://example.com/post-b"
},
"language_code": "en",
"location_code": 2840
}
Kosten: ~0,01 $ pro Aufruf. Liefert überlappende Keywords mit Position, Suchvolumen, CPC.
Ranked Keywords - alle Keywords abrufen, für die eine einzelne URL rankt:
POST https://api.dataforseo.com/v3/dataforseo_labs/google/ranked_keywords/live
{
"target": "https://example.com/post-a",
"language_code": "en",
"location_code": 2840
}
API-Analyseschritte
- Alle veröffentlichten URLs vom Benutzer (oder einer Sitemap) sammeln
- Ranked Keywords für jede URL ausführen, um Keyword-Profile zu erstellen
- Page Intersection für URL-Paare ausführen, die gemeinsame Keyword-Cluster haben
- Schweregrad mit der untenstehenden Formel berechnen
- Angereicherten Bericht mit Suchvolumen und Positionsdaten ausgeben
Schweregradbewertung
Vier Schweregrade basierend auf Überschneidungssignalen:
| Stufe | Kriterium | Handlungsdringlichkeit |
|---|---|---|
| Kritisch | Gleiches exaktes Keyword, beide Seiten in den Top 20 | Sofort |
| Hoch | Gleicher Keyword-Cluster, eine Seite übertrifft die andere | Diese Woche |
| Mittel | Verwandte Keywords mit teilweiser SERP-Überschneidung | Diesen Monat |
| Niedrig | Semantische Ähnlichkeit, aber unterschiedliche bestätigte Intentionen | Überwachen |
Schweregradformel (API-Modus)
severity_score = overlap_count x avg_search_volume x (1 / position_gap)
Wobei:
overlap_count= Anzahl der gemeinsam rankenden Keywordsavg_search_volume= durchschnittliches monatliches Suchvolumen der gemeinsamen Keywordsposition_gap= absoluter Unterschied in der durchschnittlichen Ranking-Position (mindestens 1)
Höherer Wert = dringenderes Cannibalization-Problem.
Schweregrad-Heuristik (Lokaler Modus)
Ohne SERP-Daten wird eine vereinfachte Bewertung verwendet:
- Kritisch: Exakte Übereinstimmung des primären Keywords zwischen Beiträgen
- Hoch: Stammübereinstimmung beim primären Keyword oder 3+ gemeinsame H2-Keywords
- Mittel: Semantische Überschneidung beim primären Keyword
- Niedrig: Nur Teilmengenübereinstimmung oder gemeinsame sekundäre Keywords
Ausgabeformat
Zusammenfassungstabelle
| Post A | Post B | Gemeinsame Keywords | Schweregrad | Empfehlung |
|--------|--------|-----------------|----------|----------------|
| /beste-crm-tools | /top-crm-software | bestes crm, crm tools, crm software | Kritisch | ZUSAMMENFÜHREN |
| /email-tipps | /email-marketing-leitfaden | email marketing | Hoch | DIFFERENZIEREN |
| /seo-grundlagen | /seo-fuer-anfaenger | seo grundlagen, anfänger seo | Kritisch | KANONISCH |
| /react-hooks | /react-state-verwaltung | react, state | Niedrig | KEINE AKTION |
Clusterspezifische Details
Für jeden markierten Cluster bereitstellen:
- Beide Beitragstitel und URLs
- Vollständige Liste der überlappenden Keywords (mit Suchvolumen im API-Modus)
- Welcher Beitrag stärker ist (umfassender, besser strukturiert)
- Spezifische Empfehlung mit Begründung
Empfehlungen
Vier mögliche Aktionen für jeden Cannibalization-Cluster:
ZUSAMMENFÜHREN (MERGE)
Wenn beide Seiten dünn sind oder dieselbe Intention mit ähnlicher Tiefe abdecken.
- Kombinieren Sie die besten Inhalte beider zu einem umfassenden Beitrag
- Leiten Sie die schwächere URL per 301 auf den zusammengeführten Beitrag weiter
- Bewahren Sie alle internen Links, die auf eine der beiden URLs verweisen
DIFFERENZIEREN (DIFFERENTIATE)
Wenn Seiten unterschiedliche Intentionen bedienen, sich aber bei der Keyword-Ausrichtung überschneiden.
- Verschieben Sie das primäre Keyword des schwächeren Beitrags auf einen verwandten Longtail
- Aktualisieren Sie Titel, H1 und Meta-Beschreibung, um den neuen Fokus widerzuspiegeln
- Fügen Sie interne Links zwischen den beiden Beiträgen hinzu, um unterschiedliche Themen zu signalisieren
KANONISCH (CANONICAL)
Wenn ein Beitrag eindeutig die Autorität ist und der andere eine geringere Kopie.
- Fügen Sie auf der schwächeren Seite ein
rel="canonical"hinzu, das auf die Autorität verweist - Erwägen Sie, die schwächere Seite mit noindex zu versehen, wenn sie keinen einzigartigen Mehrwert bietet
- Verlinken Sie von der schwächeren Seite zur Autorität
KEINE AKTION (NO ACTION)
Wenn die Intention trotz oberflächlicher Keyword-Ähnlichkeit tatsächlich unterschiedlich ist.
- Dokumentieren Sie die Begründung für zukünftige Audits
- Überwachen Sie Rankings vierteljährlich auf Positionsänderungen
- Bewerten Sie neu, wenn einer der Beiträge in den Rankings fällt
Fehlerbehandlung
- Keine Blog-Dateien gefunden: Enthält das Verzeichnis keine .md-, .mdx- oder .html-Dateien, melden Sie „Keine Blog-Dateien in [Verzeichnis] gefunden“ und schlagen Sie vor, den Pfad zu überprüfen
- DataForSEO-Anmeldedaten fehlen: Im API-Modus, falls die Anmeldedaten nicht konfiguriert sind, automatisch in den lokalen Modus wechseln und den Benutzer benachrichtigen
- API-Ratenlimits: DataForSEO hat Minuten-Ratenlimits. Bei einer 429-Antwort einmal warten und wiederholen. Falls es bestehen bleibt, für die verbleibenden URLs in den lokalen Modus wechseln
- WebFetch-Fehler: Falls eine Quell-URL nicht erreichbar ist, überspringen Sie sie und notieren Sie „Nicht überprüfbar – Quelle nicht verfügbar“ im Bericht
- Ein-Beitrag-Verzeichnis: Falls nur ein Blog-Beitrag vorhanden ist, melden Sie „Cannibalization-Analyse erfordert mindestens 2 Beiträge“ und beenden Sie das Programm ordnungsgemäß