Was macht Blog-Taxonomie?
Verwalte Tags, Kategorien und Themencluster in CMS-Plattformen.
Befehle
| Befehl | Zweck |
|---|---|
/blog taxonomy suggest <datei> | Extrahiere Kandidaten für Tags und Kategorien aus Inhalten |
/blog taxonomy sync <cms> | Taxonomie per authentifizierter API an CMS pushen |
/blog taxonomy audit [verzeichnis] | Prüfe auf dünne Tags, verwaiste Tags, Taxonomie-Bloat |
Arbeitsablauf für Tag-Vorschläge
Schritt 1: Inhaltsstruktur parsen
Zieldatei lesen und extrahieren:
- Alle H2- und H3-Überschriften (primäre Themensignale)
- Fett und kursiv formatierte Phrasen (Betonungssignale)
- Vorhandene Frontmatter-Tags/Kategorien, falls vorhanden
Schritt 2: Häufigkeitsanalyse
Textkörper auf hochfrequente Phrasen scannen:
- 1-Wort-Begriffe: mindestens 4 Vorkommen (außer Stoppwörter)
- 2-Wort-Phrasen: mindestens 3 Vorkommen
- 3-Wort-Phrasen: mindestens 2 Vorkommen
Gebräuchliche Nicht-Tag-Wörter ausschließen: Artikel, Präpositionen, Konjunktionen, Pronomen.
Schritt 3: Semantische Gruppierung
Zusammenhängende Kandidaten in Cluster gruppieren:
- Singular-/Pluralvarianten zusammenführen (die häufigere Form behalten)
- Silbentrennungs- und nicht silbengetrennte Formen zusammenführen
- Synonyme unter dem Begriff mit der höchsten Häufigkeit gruppieren
Schritt 4: Deduplizieren und bewerten
- Fuzzy-Match auf slugifizierten Namen (Levenshtein-Distanz <= 2)
- Jeden Kandidaten bewerten:
(häufigkeit * 2) + (überschrift_vorhanden * 5) + (betonung * 1) - Top 5-10 bewertete Vorschläge zurückgeben
Ausgabeformat
## Tag-Vorschläge: [Beitragstitel]
| Rang | Tag | Punktzahl | Quelle |
|------|-----|-------|--------|
| 1 | content-marketing | 18 | H2 + 6 Erwähnungen |
| 2 | seo-strategie | 14 | H3 + 4 Erwähnungen |
| 3 | keyword-recherche | 11 | 5 Erwähnungen + fett |
### Vorgeschlagene Kategorien
- Primär: [am besten passende Kategorie]
- Sekundär: [optionale zweite Kategorie]
CMS-Adapter
Adapter-Übersicht
| CMS | API-Typ | Authentifizierungsmethode | Tags-Modell |
|---|---|---|---|
| WordPress | REST | Anwendungspasswörter (base64) | Erstklassige Entitäten mit IDs |
| Shopify | GraphQL (Admin-API) | Admin-API-Zugriffstoken | String-Array auf Article |
| Ghost | REST (Admin-API) | API-Schlüssel mit JWT-Signatur | Erstklassige Entitäten |
| Strapi | REST oder GraphQL | API-Token (Bearer) | Benutzerdefinierter Inhaltstyp |
| Sanity | GROQ / Mutationen | Projekt-Token (Bearer) | Dokumenttyp |
WordPress-Adapter
Tags auflisten:
GET {CMS_URL}/wp-json/wp/v2/tags?per_page=100&search={keyword}
Authorization: Basic {base64(benutzername:app_password)}
Tag erstellen:
POST {CMS_URL}/wp-json/wp/v2/tags
Body: {"name": "Tag-Name", "slug": "tag-name", "description": "Optional"}
Kategorien auflisten (hierarchisch, unterstützt parent-Feld):
GET {CMS_URL}/wp-json/wp/v2/categories?per_page=100
Kategorie erstellen:
POST {CMS_URL}/wp-json/wp/v2/categories
Body: {"name": "Kategorie", "slug": "kategorie", "parent": 0}
Tags einem Beitrag zuweisen:
POST {CMS_URL}/wp-json/wp/v2/posts/{id}
Body: {"tags": [1, 2, 3], "categories": [4]}
Seitennummerierung: Folge dem X-WP-TotalPages-Header für die vollständige Liste.
Shopify-Adapter
Tags in Shopify sind String-Arrays auf dem Article-Objekt, keine erstklassigen Entitäten.
Beitrags-Tags aktualisieren (GraphQL Admin API):
mutation {
articleUpdate(id: "gid://shopify/Article/123", article: {
tags: ["tag-eins", "tag-zwei", "tag-drei"]
}) {
article { id tags }
userErrors { field message }
}
}
Alle verwendeten Tags auflisten (GraphQL):
{
articles(first: 250) {
edges {
node { id title tags }
}
}
}
Auth-Header: X-Shopify-Access-Token: {token}
Hinweis: REST-API wurde im Oktober 2024 als Legacy markiert. GraphQL ist für neue Apps seit April 2025 erforderlich.
Ghost-Adapter
Tags auflisten:
GET {CMS_URL}/ghost/api/admin/tags/?limit=all
Authorization: Ghost {jwt_token}
Tag erstellen:
POST {CMS_URL}/ghost/api/admin/tags/
Body: {"tags": [{"name": "Tag-Name", "slug": "tag-name"}]}
JWT-Erzeugung: Mit Admin-API-Schlüssel (id:secret-Format) signieren, iat = jetzt, exp = 5 min,
audience = /admin/.
Strapi-Adapter
Endpunkt automatisch aus Inhaltstypen generiert. Typische Einrichtung:
GET {CMS_URL}/api/tags?pagination[pageSize]=100
POST {CMS_URL}/api/tags
Body: {"data": {"name": "Tag-Name", "slug": "tag-name"}}
Authorization: Bearer {api_token}
Strapi v4+ verwendet den data-Wrapper. Überprüfe dein Inhaltstyp Schema auf Feldnamen.
Sanity-Adapter
Tags abfragen (GROQ):
*[_type == "tag"] { _id, name, slug }
Tag erstellen (Mutations-API):
POST https://{project_id}.api.sanity.io/v2024-01-01/data/mutate/{dataset}
Body: {"mutations": [{"create": {"_type": "tag", "name": "Tag", "slug": {"current": "tag"}}} ]}
Authorization: Bearer {token}
Arbeitsablauf Taxonomie-Audit
Schritt 1: Inventar
Alle Beiträge im Zielverzeichnis scannen (oder vom CMS abrufen). Erstelle eine Zuordnung:
- tag_name -> [Liste der Beitragsdateien/IDs, die dieses Tag verwenden]
- category_name -> [Liste der Beitragsdateien/IDs]
Schritt 2: Gesundheitschecks
| Prüfung | Schwelle | Aktion |
|---|---|---|
| Dünne Tag-Archive | < 5 Beiträge pro Tag | noindex oder Zusammenführung empfehlen |
| Verwaiste Tags | 0 Beiträge | Löschung empfehlen |
| Tag-Bloat | > 50 Tags insgesamt | Konsolidierung empfehlen |
| Kategorie-Tiefe | > 3 Ebenen | Abflachung empfehlen |
| Nicht kategorisierte Beiträge | Keine Kategorie zugewiesen | Geeignete Kategorie zuweisen |
| Doppelte Slugs | Gleicher Slug, unterschiedlicher Name | In kanonische Version zusammenführen |
Schritt 3: Empfehlungen
Ergebnisse nach Priorität gruppieren:
- Kritisch: Verwaiste Tags erzeugen leere Archivseiten (Crawl-Verschwendung)
- Hoch: Dünne Tags mit < 3 Beiträgen (schlechte Benutzererfahrung, schwaches SEO-Signal)
- Mittel: Tag-Bloat über 50 (verwässerte Taxonomie, schwieriger zu navigieren)
- Niedrig: Benennungsinkonsistenzen (gemischte Groß-/Kleinschreibung, Bindestrich vs. Leerzeichen)
Ausgabeformat
## Taxonomie-Audit: [Seite/Verzeichnis]
**Tags insgesamt**: [n] | **Kategorien insgesamt**: [n]
**Gesund**: [n] | **Dünn**: [n] | **Verwaist**: [n]
### Kritische Probleme
- [Liste verwaister Tags]
### Empfehlungen
1. [tag-a] und [tag-b] zusammenführen (gleiches Thema, [n] kombinierte Beiträge)
2. Verwaiste Tags löschen: [Liste]
3. noindex zu Tag-Archiven mit < 5 Beiträgen hinzufügen
Seitenweite Richtlinien
- Strebe 5-10 Hauptkategorien pro Seite an (breite Themen)
- Tags sollten mindestens 5 Beiträge haben, bevor eine Archivseite erstellt wird
- Konsistentes Slug-Format verwenden: Kleinbuchstaben, mit Bindestrich getrennt
- Jeder Beitrag benötigt genau 1 primäre Kategorie
- Tags pro Beitrag: 3-8 empfohlen, nie mehr als 15
Umgebungsvariablen
| Variable | Zweck | Beispiel |
|---|---|---|
| CMS_TYPE | Plattformkennung | wordpress, shopify, ghost, strapi, sanity |
| CMS_URL | Basis-URL des CMS | https://example.com |
| CMS_API_KEY | Authentifizierungsnachweis | Anwendungspasswort, API-Token oder Schlüssel |
Diese müssen in der Shell-Umgebung gesetzt sein. Speichere Anmeldedaten niemals in Dateien oder
committe sie nicht in die Versionskontrolle. Der Skill liest sie zur Laufzeit über $CMS_TYPE, $CMS_URL,
und $CMS_API_KEY.
Fehlerbehandlung
- Fehlende Umgebungsvariablen: Wenn CMS_TYPE, CMS_URL oder CMS_API_KEY nicht gesetzt ist, melde, welche Variable fehlt, und gib das erwartete Format an.
- Ungültige Anmeldedaten: Wenn die CMS-API 401/403 zurückgibt, melde „Authentifizierung fehlgeschlagen – CMS_API_KEY überprüfen“ und wiederhole nicht.
- Verbindungszeitüberschreitung: Wenn der CMS-Endpunkt nach 10 Sekunden nicht erreichbar ist, melde die Zeitüberschreitung und schlage vor, CMS_URL zu überprüfen.
- Doppelte Tag-Slugs: Wenn ein Tag bereits im CMS existiert, überspringe die Erstellung und notiere „Tag existiert bereits: [Name]“.
- Ratenbegrenzungen: Wenn die CMS-API 429 zurückgibt, warte und wiederhole einmal. Melde, wenn die Begrenzung bestehen bleibt.
- Nicht unterstütztes CMS: Wenn CMS_TYPE nicht einer der 5 unterstützten Plattformen ist, liste die gültigen Optionen auf und beende.