CommunityCodierung & Entwicklunggithub.com

blog-cannibalization

Erkennen Sie, wenn mehrere Blog-Posts um dieselben Suchbegriffe konkurrieren. Zwei Modi: Lokal (kostenlos) und DatenForSEO-API (für SERP-Daten).

Was ist blog-cannibalization?

Diese Skill für KI-Agenten wie Claude Code, Cursor oder Codex analysiert Blog-Verzeichnisse auf Keyword-Überschneidungen – das sogenannte Cannibalization-Problem. Sie hilft, Content-Kannibalisierung zu identifizieren, bei der mehrere eigene Beiträge um dieselben Suchbegriffe ranken, was die Sichtbarkeit jedes einzelnen beeinträchtigen kann. Der Skill unterstützt zwei Betriebsmodi: den freien lokalen Modus, der Dateiinhalte mittels Glob und Textanalyse-Techniken auf primäre und sekundäre Keywords scannt, sowie den API-Modus (benötigt DataForSEO-Zugangsdaten), der echte SERP-Daten wie Suchvolumen, Positionen und CPC abruft. Nach der Analyse erstellt der Skill einen strukturierten Bericht mit Schweregraden (Critical, High, Medium, Low) und konkreten Handlungsempfehlungen wie Merge (zusammenführen), Differentiate (differenzieren), Canonical (kanonisches Tag setzen) oder No Action (keine Aktion). Das Tool ist ideal für Content-Teams, die ihre SEO-Strategie verbessern und doppelt rankende Seiten optimieren möchten.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/AgriciDaniel/claude-blog/tree/main/skills/blog-cannibalization

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

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

ModusFlagKostenDatenquelle
Lokal(Standard)KostenlosDateiinhaltsanalyse via Grep/Read
API--api~0,01 $/AufrufDataForSEO 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:

  1. Tokenisieren Sie Titel und H1 in 1-Gramm-, 2-Gramm- und 3-Gramm-Phrasen
  2. Bewerten Sie jede Phrase nach Häufigkeit in Titel + H2s + erstem Absatz
  3. Wählen Sie die am höchsten bewertete 2-3-Wort-Phrase als primäres Keyword aus
  4. Notieren Sie sekundäre Keywords aus den H2-Überschriften

Schritt 3: Nach Ähnlichkeit clustern

Gruppieren Sie Beiträge mit diesen Abgleichsregeln (in Prioritätsreihenfolge):

  1. Exakte Übereinstimmung - identisches primäres Keyword in 2+ Beiträgen
  2. Stammübereinstimmung - gleicher Wortstamm (z. B. „optimieren“ vs. „Optimierung“)
  3. Semantische Überschneidung - Claude stellt fest, dass zwei Keywords auf dieselbe Suchintention abzielen (z. B. „bestes CRM-Software“ vs. „Top-CRM-Tools 2026“)
  4. 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

  1. Alle veröffentlichten URLs vom Benutzer (oder einer Sitemap) sammeln
  2. Ranked Keywords für jede URL ausführen, um Keyword-Profile zu erstellen
  3. Page Intersection für URL-Paare ausführen, die gemeinsame Keyword-Cluster haben
  4. Schweregrad mit der untenstehenden Formel berechnen
  5. Angereicherten Bericht mit Suchvolumen und Positionsdaten ausgeben

Schweregradbewertung

Vier Schweregrade basierend auf Überschneidungssignalen:

StufeKriteriumHandlungsdringlichkeit
KritischGleiches exaktes Keyword, beide Seiten in den Top 20Sofort
HochGleicher Keyword-Cluster, eine Seite übertrifft die andereDiese Woche
MittelVerwandte Keywords mit teilweiser SERP-ÜberschneidungDiesen Monat
NiedrigSemantische Ä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 Keywords
  • avg_search_volume = durchschnittliches monatliches Suchvolumen der gemeinsamen Keywords
  • position_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äß

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

Verwandte Skills