CommunitySchreiben & Editierengithub.com

shaul1991/structured-data

JSON-LD strukturierte Daten erstellen und prüfen: Event (Veranstaltungen, Ausstellungen, Messen, Status abgesagt/verschoben), Organization + sameAs (Naver verknüpfte Kanäle), WebSite (Google Site Name), BreadcrumbList, ItemList. Inklusive Unterschiede zwischen Google und Naver. Verwendbar für Anfragen zu 'strukturierte Daten', 'schema.org', 'JSON-LD', 'Rich Results', 'Event Schema', 'Event Markup'.

Was ist structured-data?

Diese Fähigkeit stellt Vorlagen und detaillierte Richtlinien für strukturierte Daten (JSON-LD) bereit, die sowohl an die Google Search Central-Dokumentation als auch an den Naver Search Advisor-Leitfaden (Stand: 2026-11-04) angelehnt sind. Sie fokussiert sich auf wesentliche Schema-Typen wie Event, Organization mit sameAs (für Naver und Daum), WebSite (für Google), BreadcrumbList und ItemList. Die Anleitung betont die kritische Regel, dass Werte mit dem sichtbaren Seiteninhalt übereinstimmen müssen. Enthält eine detaillierte Aufschlüsselung der Unterschiede zwischen Google- und Naver-Unterstützung, insbesondere bei Event-Rich-Results (wird für Google in Südkorea nicht garantiert) und Organization/sameAs (für Naver als 'verknüpfte Kanäle' verwendet). Bietet klare, kopierbare JSON-LD-Snippets für jeden Typ sowie spezifische Hinweise für Event-Statusübergänge (abgesagt vs. verschoben), Datumsformatierungen (ISO-8601, ohne Auffüllen unbekannter Zeiten) und Sonderfälle wie Serienveranstaltungen, parallele Standorte und Bestätigung des freien Eintritts. Enthält Validierungsmethoden mit Google Rich Result Test und Schema Markup Validator.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/shaul1991/seo-skills/tree/HEAD/skills/structured-data

Installed? Explore more Schreiben & Editieren skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

In Ihrer bevorzugten KI fragen

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

Dokumentation

Strukturierte Daten (JSON-LD)

Quellen: Google Search Central Dokumentation zu strukturierten Daten und Naver Search Advisor Leitfaden für strukturierte Daten (Stand: 2026-11-04). Bei Entscheidungen die Originaldokumente erneut öffnen.

Gemeinsame Grundsätze

  • Nur Werte einfügen, die mit dem sichtbaren Text übereinstimmen. Unbekannte Preise, Zeiten, Bestände oder Bewertungen leer lassen und nicht erfinden (Google KI-Funktionsdokumentation empfiehlt ebenfalls "Strukturierte Daten müssen mit dem angezeigten Text übereinstimmen").
  • Die Auszeichnung garantiert keine Rich Results oder Sichtbarkeit (sowohl Google als auch Naver erläutern dies).
  • Das Format ist standardmäßig JSON-LD (von Google unterstützt, Naver empfiehlt Microdata oder JSON-LD). <script type="application/ld+json"> im <head> oder <body>.
  • Validierung: Google Rich Result Test, Schema Markup Validator (Naver-Leitfaden verweist auf Schema.org-Tools), das seo-orchestrator Skill scripts/seo-check.mjs (prüft nur JSON-Parsing und erforderliche Eigenschaften).

Unterstützungsunterschiede (2026-11-04)

TypGoogleNaver
EventDokumentation zur Event-Suche vorhanden. ⚠️ Südkorea nicht in der Liste der unterstützten Regionen (Australien, Brasilien, Kanada, Deutschland, Indien, Lateinamerika, Spanien, Vereinigtes Königreich, USA)Kein Leitfaden
Organization/Person + sameAsOrganisationsinfoVerknüpfte Kanäle der Website (Root-Seite, name·url·sameAs erforderlich)
WebSiteSite Name (Startseite)—
BreadcrumbListUnterstütztUnterstützt (name erforderlich, position optional)
ItemList (Karussell)Nur bestimmte TypenLeitfaden für Karussell (ListItem) vorhanden

Für eine in Südkorea ausgerichtete Veranstaltungswebsite: Event-Markup kann zur genauen Datenpflege und für zukünftige Erweiterungen in anderen Regionen verwendet werden, aber aktuell wird nicht davon ausgegangen, dass Event-Rich-Results in der koreanischen Google-Suche erscheinen. Der Erfolg wird anhand der allgemeinen Suchergebnisse (Titel, Snippet) und der Search Console beurteilt.

Event (nach Google-Standard)

Regeln (Google Strukturierte Daten für Veranstaltungen):

  • Markup auf der eindeutigen URL (Detailseite) jeder Veranstaltung. Nicht auf einer Liste oder Kalenderseite, die mehrere Veranstaltungen auflistet, sondern auf der Detailseite.
  • Erforderlich: name (Veranstaltungstitel. Keine Werbeaussagen wie Veranstaltungsortname, Preis, "Jetzt buchen"), startDate (ISO-8601), location (Place + name + address).
  • Empfohlen: endDate, eventStatus, description (Inhalt der Veranstaltung, nicht Datum/Ort wiederholen), image (empfohlen 1.920px Breite, mindestens 720px, 16:9·4:3·1:1 mehrere), offers, organizer, performer, previousStartDate.
  • Datum: Wenn die Uhrzeit unbekannt ist, nur das Datum ("2026-12-04"). Nicht mit T00:00:00 auffüllen. Wenn die Uhrzeit bekannt ist, UTC-Offset angeben (2026-12-04T10:00:00+09:00).
  • Mehrere Tage: startDate und endDate angeben. Wenn separate Tickets pro Tag erforderlich sind, ein Event pro Tag.
  • Gleichzeitig an mehreren Orten: Ein Event pro Ort.
  • Freier Eintritt nur, wenn offiziell bestätigt: offers.price: 0. Vor Verkaufsstart kann availability weggelassen werden, validFrom ist die Verkaufsstartzeit.
  • Bei Statusänderung die anderen Werte unverändert lassen und nur eventStatus ändern:
    • Abgesagt EventCancelled (startDate/location nicht löschen)
    • Verschoben/Datum unbestimmt EventPostponed (ursprüngliches startDate beibehalten)
    • Neues Datum bestätigt EventRescheduled + neues startDate/endDate + optional previousStartDate
  • Keine Nicht-Ereignisse (Gutscheine, Öffnungszeiten, Rabattaktionen) als Event auszeichnen. Mitgliedschafts- oder Einladungsveranstaltungen sind nicht für die Veranstaltungsumgebung vorgesehen.
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "<Offizieller Veranstaltungsname mit Ausgabe>",
  "startDate": "<YYYY-MM-DD oder YYYY-MM-DDThh:mm:ss+09:00>",
  "endDate": "<YYYY-MM-DD>",
  "eventStatus": "https://schema.org/EventScheduled",
  "location": {
    "@type": "Place",
    "name": "<Name des Veranstaltungsorts>",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "<Straßenadresse>",
      "addressLocality": "<Stadt/Bezirk>",
      "addressRegion": "<Provinz/Stadt>",
      "postalCode": "<Postleitzahl>",
      "addressCountry": "KR"
    }
  },
  "image": ["<https://.../16x9.jpg>", "<https://.../4x3.jpg>", "<https://.../1x1.jpg>"],
  "description": "<Zusammenfassung des Veranstaltungsinhalts. Keine Wiederholung von Datum/Ort>",
  "organizer": { "@type": "Organization", "name": "<Veranstalter>", "url": "<Offizielle URL des Veranstalters>" }
}
</script>

offers nur hinzufügen, wenn Preis- und Verkaufsinformationen offiziell bestätigt sind.

Listenseite

  • Auf einer Listen- oder Monatsseite keine mehreren Events einfügen (Google unterstützt nur einzelne Eventseiten). Stattdessen BreadcrumbList und bei Bedarf ItemList mit Detail-URLs.
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "url": "https://example.com/events/<id-1>" },
    { "@type": "ListItem", "position": 2, "url": "https://example.com/events/<id-2>" }
  ]
}
</script>

WebSite (Google Site Name, nur Startseite)

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "<Website-Name>",
  "alternateName": ["<Abkürzung>"],
  "url": "https://example.com/"
}
</script>

Den gleichen Namen wie og:site_name und <title> der Startseite verwenden. Quelle: Site Name

Organization + sameAs (Naver verknüpfte Kanäle, Root-Seite)

Von Naver für die Analyse verwendete verknüpfte Kanaldomeinen (2026-11-04): Naver Blog·SmartStore·Knowledge iN·ChzzK·Klip, Karrot·Threads·Instagram·YouTube·KakaoStory·KakaoTalk Channel·Tistory·TikTok·Facebook·X (Twitter). Sichtbarkeit ist nicht garantiert.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "<Website-Name>",
  "url": "https://example.com/",
  "sameAs": [
    "https://cafe.naver.com/<Cafe>",
    "https://pf.kakao.com/<Kanal>",
    "https://x.com/<Account>"
  ]
}
</script>
  • Nur tatsächlich betriebene Kanäle einfügen. Keine vorab eingetragenen Kanal-URLs vor der Eröffnung.
  • Daum verwendet das gleiche Format (Person/Organization + sameAs) mit unterschiedlichen unterstützten Domains: YouTube, Facebook, X, Instagram, Google Play, App Store, KakaoStory, Daum Cafe, KakaoTV, Tistory, Brunch (daum-search). Die tatsächlichen Kanäle beider Suchmaschinen können in einem Block zusammengefasst werden.
  • Naver Cafe ist in der obigen Liste der verknüpften Kanäle nicht explizit aufgeführt (2026-11-04). Es kann eingefügt werden, aber es wird nicht davon ausgegangen, dass Naver es als verknüpften Kanal verwendet.
  • Quelle: Verknüpfte Kanäle der Website

BreadcrumbList (Google·Naver gemeinsam)

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "<Name der übergeordneten Kategorie>", "item": "https://example.com/<uebergeordnet>" },
    { "@type": "ListItem", "position": 2, "name": "<Name der untergeordneten Kategorie>", "item": "https://example.com/<uebergeordnet>/<untergeordnet>" }
  ]
}
</script>
  • Naver: Statt allgemeiner Begriffe wie "Startseite" oder "top" einen beschreibenden Namen verwenden, Reihenfolge von allgemein zu spezifisch, keine zu langen Texte, Nummern oder Sonderzeichen als Namen.
  • Quelle: Naver BreadcrumbList, Google Navigationspfad

Individual skills in this repo

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

Verwandte Skills