Online-Kurse, Seminare und Weiterbildungsangebote kämpfen in den Suchergebnissen um Aufmerksamkeit. Course Schema Markup ist ein mächtiges Werkzeug, das deine Kurse direkt in den Google-Suchergebnissen mit zusätzlichen Informationen anreichert — und so die Klickrate deutlich steigern kann.
In diesem Artikel erfährst du, was Course Schema Markup ist, wann Google Rich Snippets für Kurse anzeigt, wie du das Markup korrekt implementierst und welche häufigen Fehler du vermeiden musst. Mit vollständigen JSON-LD-Beispielen, die du sofort einsetzen kannst.
Was ist Course Schema Markup?
Course Schema Markup ist ein strukturiertes Daten-Format aus dem Schema.org-Vokabular, das Suchmaschinen mitteilt: „Diese Seite beschreibt einen Kurs oder eine Weiterbildungsmaßnahme." Google verwendet diese Informationen, um in den Suchergebnissen erweiterte Vorschauen — sogenannte Rich Results — anzuzeigen.
Konkret können folgende Informationen als Rich Snippet erscheinen:
- Kursname und Anbieter
- Kursbeschreibung
- Kursplattform (z. B. „Udemy", „Coursera", deine eigene Plattform)
- Preis (kostenlos oder kostenpflichtig)
- Sprache des Kurses
- Bewertungen und Rezensionen
Voraussetzungen: Wann zeigt Google Course Rich Snippets an?
Google stellt klare Anforderungen, bevor Course Rich Results angezeigt werden. Deine Seite muss:
- Einem echten Kurs gewidmet sein — nicht einer allgemeinen Themen-Übersicht oder einer Kategorienseite
- Die Pflichtfelder korrekt ausfüllen (Name, Beschreibung, Provider)
- Qualitativ hochwertig und inhaltlich konsistent mit dem Markup sein
- Indexierbar sein — kein
noindexgesetzt haben
Außerdem gelten die üblichen Richtlinien für strukturierte Daten: Das Markup muss die tatsächlichen Inhalte der Seite widerspiegeln — kein Spam, keine irreführenden Angaben.
Die Pflichtfelder von Course Schema
Google definiert einige Felder als Pflichtangaben, andere als empfohlen. Fehlen die Pflichtfelder, werden keine Rich Snippets angezeigt.
| Feld | Status | Beschreibung |
|---|---|---|
name |
Pflicht | Name des Kurses |
description |
Pflicht | Kursbeschreibung (min. 50 Zeichen) |
provider |
Pflicht | Organisation, die den Kurs anbietet |
url |
Empfohlen | URL der Kursseite |
hasCourseInstance |
Empfohlen | Kursinstanz mit konkreten Details |
offers |
Empfohlen | Preisinformationen |
aggregateRating |
Empfohlen | Bewertungen (nur aus echten Reviews!) |
inLanguage |
Empfohlen | Sprache des Kurses (BCP47-Code) |
Minimales Course Schema Markup (JSON-LD)
Hier ist ein vollständiges Minimalbeispiel, das die Pflichtfelder enthält:
{
"@context": "https://schema.org",
"@type": "Course",
"name": "SEO-Grundlagen für Einsteiger",
"description": "Lerne in diesem Kurs die wichtigsten Grundlagen der Suchmaschinenoptimierung. Von Keyword-Recherche über On-Page-SEO bis zu Backlinks — alles kompakt erklärt.",
"provider": {
"@type": "Organization",
"name": "Shift07",
"sameAs": "https://shift07.ai"
}
}
Dieses Markup erfüllt die Mindestanforderungen. Google kann damit die Kursseite als solche erkennen — Rich Snippets in den Suchergebnissen werden aber erst mit den empfohlenen Zusatzfeldern wirklich attraktiv.
Erweitertes Course Schema mit CourseInstance
Die wichtigste Ergänzung ist hasCourseInstance. Sie beschreibt konkrete Kursinstanzen — also wann, wo und wie der Kurs stattfindet. Das ist besonders wichtig für:
- Online-Kurse auf eigenen Plattformen
- Präsenzseminare mit festen Terminen
- Webinare mit Startdatum
- Self-paced Kurse (jederzeit startbar)
{
"@context": "https://schema.org",
"@type": "Course",
"name": "SEO-Grundlagen für Einsteiger",
"description": "Lerne die wichtigsten SEO-Techniken: Keyword-Recherche, On-Page-Optimierung, Backlinks und technische SEO. Mit praktischen Übungen und echten Beispielen.",
"url": "https://shift07.ai/kurse/seo-grundlagen",
"provider": {
"@type": "Organization",
"name": "Shift07",
"sameAs": "https://shift07.ai"
},
"inLanguage": "de",
"hasCourseInstance": [
{
"@type": "CourseInstance",
"courseMode": "Online",
"courseWorkload": "PT3H",
"instructor": {
"@type": "Person",
"name": "Laurenz Thümmler"
}
}
],
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"url": "https://shift07.ai/kurse/seo-grundlagen"
}
}
Wichtige Werte für courseMode
Das Feld courseMode beschreibt das Format des Kurses. Gültige Werte sind:
"Online"— reiner Online-Kurs"Onsite"— Präsenzkurs"Blended"— Kombination aus Online und Präsenz"https://schema.org/Distance"— Fernlernkurs
courseWorkload: Zeiten im ISO-8601-Format
Die Kursdauer wird im ISO-8601-Dauerformat angegeben — ähnlich wie bei HowTo Schema:
PT30M— 30 MinutenPT2H— 2 StundenPT3H30M— 3 Stunden 30 MinutenP2D— 2 TageP3W— 3 WochenP6M— 6 Monate
Vollständiges Beispiel mit Bewertungen und Kurs-Kategorien
Hier ein Praxisbeispiel, das alle wichtigen empfohlenen Felder enthält — ideal für eine Kursseite mit echten Kundenbewertungen:
{
"@context": "https://schema.org",
"@type": "Course",
"name": "Technisches SEO: Fortgeschrittener Kurs",
"description": "Dieser Kurs vermittelt fortgeschrittene technische SEO-Kenntnisse: Core Web Vitals, Crawl-Budget, Log-File-Analyse, JavaScript-SEO und strukturierte Daten. Für Webmaster, die ihre Rankings nachhaltig verbessern wollen.",
"url": "https://shift07.ai/kurse/technisches-seo-fortgeschritten",
"image": "https://shift07.ai/kurse/images/technisches-seo-kurs.jpg",
"provider": {
"@type": "Organization",
"name": "Shift07",
"sameAs": "https://shift07.ai",
"url": "https://shift07.ai"
},
"inLanguage": "de",
"educationalLevel": "advanced",
"teaches": [
"Core Web Vitals optimieren",
"Crawl-Budget verstehen und managen",
"JavaScript SEO",
"Strukturierte Daten implementieren",
"Log-File-Analyse für SEO"
],
"hasCourseInstance": [
{
"@type": "CourseInstance",
"courseMode": "Online",
"courseWorkload": "PT8H",
"startDate": "2026-05-01",
"endDate": "2026-05-31",
"location": {
"@type": "VirtualLocation",
"url": "https://shift07.ai/kurse/technisches-seo-fortgeschritten"
},
"instructor": {
"@type": "Person",
"name": "Laurenz Thümmler",
"url": "https://shift07.ai"
}
}
],
"offers": {
"@type": "Offer",
"price": "197",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"validFrom": "2026-04-01",
"url": "https://shift07.ai/kurse/technisches-seo-fortgeschritten"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "142",
"bestRating": "5",
"worstRating": "1"
}
}
aggregateRating nur, wenn du tatsächlich echte Kundenbewertungen hast und diese auf der Seite sichtbar sind. Gefälschte oder versteckte Bewertungen im Markup verstoßen gegen Googles Richtlinien und können zur Abwertung der Seite führen.
Course Schema für kostenlose Kurse
Kostenlose Kurse kennzeichnest du mit "price": "0" — das ist ein klarer Vorteil in den Suchergebnissen, weil „Kostenlos" oft die Klickrate stark erhöht:
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "EUR",
"category": "Free",
"availability": "https://schema.org/InStock"
}
Alternativ kannst du auch "category": "Paid" oder "category": "Subscription" verwenden, um das Abrechnungsmodell zu kommunizieren.
Mehrere Kursinstanzen (z. B. Präsenz + Online)
Ein Kurs kann mehrere Instanzen haben — zum Beispiel eine Online-Version und einen Präsenzkurs im selben Quartal. Das ist mit einem Array im hasCourseInstance-Feld möglich:
"hasCourseInstance": [
{
"@type": "CourseInstance",
"courseMode": "Online",
"courseWorkload": "PT6H",
"startDate": "2026-05-01",
"location": {
"@type": "VirtualLocation",
"url": "https://shift07.ai/kurse/seo-workshop-online"
}
},
{
"@type": "CourseInstance",
"courseMode": "Onsite",
"courseWorkload": "PT8H",
"startDate": "2026-05-15",
"endDate": "2026-05-16",
"location": {
"@type": "Place",
"name": "Shift07 Office Potsdam",
"address": {
"@type": "PostalAddress",
"streetAddress": "Leonardo-da-Vinci-Straße 15",
"addressLocality": "Potsdam",
"postalCode": "14467",
"addressCountry": "DE"
}
}
}
]
Course Schema in WordPress implementieren
In WordPress gibt es zwei Hauptwege für Course Schema Markup:
Weg 1: Plugin (Yoast SEO Premium, Schema Pro, Rank Math)
Rank Math und Schema Pro haben native Course-Schema-Unterstützung. Du gibst die Kursdetails im Backend ein, das Plugin generiert automatisch das JSON-LD. Das ist der einfachste Weg, besonders wenn du viele Kurse verwaltest.
Weg 2: Manuell per Code-Snippet
Füge das JSON-LD direkt in den <head> der Kursseite ein:
// In functions.php oder einem Custom Plugin:
function add_course_schema() {
if ( is_singular('course') ) { // Custom Post Type 'course'
$course_id = get_the_ID();
$schema = array(
'@context' => 'https://schema.org',
'@type' => 'Course',
'name' => get_the_title($course_id),
'description' => get_the_excerpt($course_id),
'url' => get_permalink($course_id),
'provider' => array(
'@type' => 'Organization',
'name' => get_bloginfo('name'),
'sameAs' => home_url()
)
);
echo '<script type="application/ld+json">';
echo json_encode($schema, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
echo '</script>';
}
}
add_action('wp_head', 'add_course_schema');
Häufige Fehler bei Course Schema Markup
Diese Fehler werden in Googles Rich Results-Test am häufigsten angezeigt:
1. Fehlende Pflichtfelder
Ohne name, description und provider werden keine Rich Snippets angezeigt. Prüfe mit dem Rich Results Test, ob alle Pflichtfelder erkannt werden.
2. Beschreibung zu kurz
Google empfiehlt mindestens 50 Zeichen für die description. Kurze Einzeiler wie „SEO-Kurs" reichen nicht aus — beschreibe den Inhalt und Nutzen des Kurses konkret.
3. Markup stimmt nicht mit dem Seiteninhalt überein
Das Schema.org-Markup muss die tatsächlichen Inhalte der Seite widerspiegeln. Wenn im Markup ein Preis von 197 € steht, aber die Seite keinen Preis nennt, wertet Google das als irreführend.
4. aggregateRating ohne sichtbare Bewertungen
Bewertungen im Markup, die nicht auf der Seite sichtbar sind, verstoßen gegen Googles Richtlinien. Entweder zeigst du die Bewertungen auf der Seite an — oder du lässt das Feld weg.
5. Falsches Format für startDate/endDate
Datumsangaben müssen im ISO-8601-Format angegeben werden: "2026-05-01" (Datum) oder "2026-05-01T09:00:00+02:00" (mit Uhrzeit und Zeitzone). Formate wie „01.05.2026" werden nicht erkannt.
6. courseMode-Werte falsch geschrieben
Die gültigen Werte für courseMode sind case-sensitive: "Online", "Onsite", "Blended". Kleinschreibung oder Tippfehler führen zu Validierungsfehlern.
Course Schema Markup validieren
Bevor du das Markup live schaltest, validiere es mit diesen Tools:
- Google Rich Results Test: Zeigt an, ob dein Markup Rich Snippets auslösen kann und welche Fehler vorhanden sind
- Schema.org Validator: Prüft das Markup gegen das vollständige Schema.org-Vokabular
- Shift07 JSON-LD Validator: Unser kostenloser Validator für strukturierte Daten — direkt im Browser nutzbar
Nach der Validierung empfiehlt es sich, die URL in der Google Search Console zu indexieren und anschließend den URL-Inspektion-Bericht zu prüfen, um zu sehen, ob Google das Markup korrekt erkannt hat.
Course Schema und die Search Console
In der Google Search Console gibt es unter „Erweiterungen" → „Kurse" einen eigenen Bericht für Course Rich Results. Dort siehst du:
- Wie viele Kursseiten mit gültigem Markup erkannt wurden
- Welche Fehler oder Warnungen vorliegen
- Auf welchen Seiten das Markup implementiert ist
Dieser Bericht erscheint erst, wenn Google mindestens eine Kursseite mit gültigem Schema Markup gecrawlt hat. Das kann nach dem ersten Implementieren einige Tage dauern.
Course Schema vs. andere Bildungs-Schemas
Neben dem Course-Schema gibt es weitere relevante Schema-Typen für Bildungsanbieter:
| Schema-Typ | Geeignet für | Rich Result möglich? |
|---|---|---|
Course |
Online-Kurse, Seminare, Weiterbildungen | ✅ Ja |
EducationalOrganization |
Schulen, Hochschulen, Bildungseinrichtungen | Indirekt (Knowledge Panel) |
Event |
Webinare mit konkretem Termin | ✅ Ja (Event Rich Results) |
HowTo |
Schritt-für-Schritt-Anleitungen | ✅ Ja (HowTo Rich Results) |
LearningResource |
Allgemeine Lernressourcen | Begrenzt |
Für Webinare mit festem Termin kann es sinnvoll sein, sowohl Course als auch Event Schema Markup auf derselben Seite zu verwenden — beide in separaten <script type="application/ld+json">-Blöcken.
Checkliste: Course Schema Markup richtig implementieren
- ✅ name gesetzt (prägnanter Kurstitel)
- ✅ description gesetzt (min. 50 Zeichen, inhaltlich konkret)
- ✅ provider mit Name und
sameAsdefiniert - ✅ hasCourseInstance mit
courseModeundcourseWorkload - ✅ offers mit Preis (auch 0 für kostenlos)
- ✅ inLanguage gesetzt (z. B.
"de") - ✅ Datumsfelder im ISO-8601-Format
- ✅ aggregateRating nur wenn Bewertungen sichtbar auf der Seite
- ✅ Markup mit Rich Results Test validiert
- ✅ URL in Google Search Console eingereicht
- ✅ Markup stimmt mit dem Seiteninhalt überein
Fazit: Lohnt sich Course Schema Markup?
Ja — besonders für Kursanbieter, die in einem wettbewerbsintensiven Markt sichtbar sein wollen. Rich Snippets für Kurse erhöhen die Klickrate, weil zusätzliche Informationen (Preis, Bewertung, Anbieter) bereits in den Suchergebnissen sichtbar sind. Nutzer können die Relevanz einschätzen, bevor sie klicken — das führt zu qualifizierterem Traffic.
Die Implementierung ist mit dem JSON-LD-Format einfach und risikoarm. Beginne mit den Pflichtfeldern, füge schrittweise die empfohlenen Felder hinzu und validiere das Markup regelmäßig. In Kombination mit einer vollständigen Schema-Markup-Strategie und gutem technischen SEO kannst du die Sichtbarkeit deiner Kursseiten erheblich steigern.