KOSTENLOSES TOOL · VIDEO SCHEMA GENERATOR
Video Schema Generator: strukturierte Daten für Videos
Beschreib ein Video und erhalte VideoObject-JSON-LD mit einer Upload-Zeit samt Zeitzone, einer Laufzeit in echtem ISO 8601 und Kapitelmarken, die auf die richtigen Sekunden zeigen — dazu einen Beschreibungsblock für die Seite, der dasselbe sagt.
Auch aufEnglish繁體中文日本語한국어EspañolFrançaisDeutschPortuguês (Brasil)
Pro Video eindeutig. Zwei Videos einer Website sollten sich keinen Titel teilen.
BMP, GIF, JPEG, PNG, WebP, SVG oder AVIF. Mindestens 60 × 30 Pixel, größer ist besser, und die URL muss stabil bleiben.
In Deutschland +02:00 im Sommer (MESZ) und +01:00 im Winter (MEZ). Leer heißt: Google liest die Zeit in der Zeitzone von Googlebot, nicht in deiner.
Schreib sie, wie sie dir einfällt — 18:42, 1:02:30, 742, 18 Minuten 42 Sekunden oder PT18M42S. Heraus kommt ISO 8601.
Daraus entstehen die Kapitel-Links, die auf genau diesen Pfad mit Zeitparameter zeigen müssen.
Gib Google deine eigenen wichtigen Momente; die haben Vorrang vor selbst erkannten Abschnitten.
Alles läuft auf dieser Seite. Kein Titel, keine URL und keine Aufrufzahl verlässt deinen Browser.
Quellen: Google Search Central — Strukturierte Daten für Video (VideoObject, Clip, BroadcastEvent) und Best Practices für die Suchmaschinenoptimierung für Videos; § 4 Einheiten- und Zeitgesetz (gesetzliche Zeit) und § 2 Sommerzeitverordnung; YouTube-Hilfe — Videos und Playlists einbetten, erweiterter Datenschutzmodus. Stand: September 2026.
So erstellst du strukturierte Videodaten
Drei Pflichtangaben, ein Datumsformat mit deutscher Besonderheit und zwei URL-Felder, die nicht die Seite sind, auf der du gerade bist. Der Generator schreibt Markup und Beschreibungsblock aus denselben Werten.
- Erst Titel und Vorschaubild. Beide sind Pflicht, und beide sollten nur zu diesem Video gehören. Ein Vorschaubild nützt Google nur, wenn die URL auch nächsten Monat noch dieselbe ist — ein CDN mit ablaufenden Adressen kann dich still die Videoindexierung kosten.
- Der Upload-Zeit einen Offset geben. Das Datum allein ist gültig; Datum, Uhrzeit und UTC-Offset sind eindeutig. In Deutschland ist das +02:00 zwischen dem letzten Sonntag im März und dem letzten Sonntag im Oktober, sonst +01:00.
- Die Laufzeit so tippen, wie du sie denkst. Achtzehn zweiundvierzig, eine Stunde zwei Minuten dreißig, eine nackte Sekundenzahl oder die ISO-Form. Heraus kommt immer die ISO-8601-Dauer, die die Property erwartet.
- contentUrl auf die Datei, embedUrl auf den Player. Keines von beiden ist die Seite, auf der ein Leser landet. Eine contentUrl, die wie eine Webseite aussieht, lehnt der Generator ab — genau diese Verwechslung spricht Google in seiner Doku eigens an.
- Kapitel ergänzen, beide Ausgaben einfügen. Kapitel-Links entstehen aus der URL der Wiedergabeseite plus Zeitparameter — so verlangt es Google. Das JSON-LD kommt in die Wiedergabeseite, der Beschreibungsblock unter den Player.
uploadDate: MEZ oder MESZ — der Offset ist kein Detail
Ein Video-Schema-Generator macht aus den Angaben zu einem Video strukturierte Daten vom Typ VideoObject — das JSON-LD, aus dem Google Titel, Vorschaubild, Laufzeit und wichtige Momente eines Videos liest. Pflicht sind drei Properties: name, thumbnailUrl und uploadDate. An der dritten geht Markup unauffällig schief.
Googles Dokumentation beschreibt uploadDate als Datum und Uhrzeit der Erstveröffentlichung im Format ISO 8601 und fügt hinzu: Wir empfehlen, Informationen zur Zeitzone anzugeben. Andernfalls wird standardmäßig die vom Googlebot verwendete Zeitzone verwendet. Welche Zeitzone das ist, nennt die Seite nicht — sicher ist nur, dass es nicht deine sein muss.
Für deutsche Seiten ist der richtige Offset gesetzlich festgelegt, und er wechselt zweimal im Jahr. Die gesetzliche Zeit ist die mitteleuropäische Zeit, koordinierte Weltzeit plus eine Stunde; während der Sommerzeit gilt die mitteleuropäische Sommerzeit, Weltzeit plus zwei Stunden (§ 4 Einheiten- und Zeitgesetz). Die Sommerzeit beginnt am letzten Sonntag im März und endet am letzten Sonntag im Oktober (§ 2 Sommerzeitverordnung) — 2026 also am 29. März und am 25. Oktober.
"uploadDate": "2026-09-18" // gültig, aber ohne Uhrzeit
"uploadDate": "2026-09-18T18:00:00" // Uhrzeit — aber nach wessen Uhr?
"uploadDate": "2026-09-18T18:00:00+02:00" // eindeutig, MESZ
"uploadDate": "2026-11-06T18:00:00+01:00" // eindeutig, MEZ nach der Umstellung
Der Generator rechnet den Offset nicht aus dem Datum aus — du wählst ihn. Ein Video vom 24. Oktober 2026 bekommt +02:00, eines vom 26. Oktober +01:00. Für expires gilt dieselbe Empfehlung, und Google ergänzt einen Satz, den viele überlesen: Gib expires gar nicht an, wenn dein Video nicht abläuft. Ein leeres oder weit entferntes Ablaufdatum ist keine neutrale Angabe, sondern eine Behauptung.
YouTube, youtube-nocookie.com und die Zwei-Klick-Lösung
Google findet Videos über die HTML-Elemente, mit denen man sie üblicherweise einbettet: video, embed, iframe oder object. In Googles Best Practices für Videos steht dazu ein Satz, der jedes Datenschutz-Setup mit „erst klicken, dann laden“ direkt betrifft: Verlassen Sie sich beim Laden des Videos nicht auf Nutzeraktionen wie Wischen, Klicken oder Tippen.
Wer YouTube erst nach einem Klick nachlädt — die Zwei-Klick-Lösung, bei der zunächst nur ein Vorschaubild mit Hinweistext im HTML steht —, liefert Googlebot also kein eingebettetes Video. Google verlangt aber, dass das Video auf der Wiedergabeseite eingebettet und nicht hinter anderen Elementen verborgen ist; das JSON-LD allein ersetzt das nicht. Soll die Seite als Videoergebnis erscheinen, braucht Google den Player ohne Klick im HTML, zum Beispiel ein eigenes video-Element mit selbst gehosteter Datei. Ob das zu deinem Einwilligungskonzept passt, klärst du datenschutzrechtlich — nicht im Markup.
Den erweiterten Datenschutzmodus beschreibt YouTube selbst als Domainwechsel: In der Einbettungs-URL wird aus https://www.youtube.com die Adresse https://www.youtube-nocookie.com. Fürs Markup ist das unproblematisch. embedUrl ist die Player-URL und laut Google in der Regel identisch mit dem src des Einbettungselements — steht dort youtube-nocookie.com, gehört genau diese Adresse in embedUrl.
- Eingebettete Player von YouTube, Vimeo oder Facebook kann Google sowohl auf deiner Seite als auch auf der Plattform indexieren. Für deine eigene Wiedergabeseite empfiehlt Google trotzdem strukturierte Daten.
- Wichtige Momente eines YouTube-Videos legst du in der YouTube-Beschreibung fest: Zeitstempel im Format Stunde:Minute:Sekunde, das Label in derselben Zeile, jeder Zeitstempel in einer neuen Zeile, chronologisch sortiert. Clip-Markup auf deiner Seite setzt dagegen voraus, dass deine eigene Seite per Zeitparameter an die Stelle springt — Google verlangt, dass solche Deeplinks funktionieren.
Laufzeit, contentUrl, embedUrl: drei Felder, die nicht die Seite sind
duration nimmt eine ISO-8601-Dauer, keine Uhrzeit und keine Sekundenzahl: PT00H30M5S steht laut Google für dreißig Minuten und fünf Sekunden. Dieses Formular nimmt, was du hast — 18:42, 1:02:30, 742, „18 Minuten 42 Sekunden“, „1 Std. 2 Min.“ oder den ISO-String — und gibt immer die ISO-Form aus. Was es nicht lesen kann, lehnt es ab, statt es durchzureichen.
contentUrlist die URL der tatsächlichen Inhaltsbytes der Videodatei, und Google schreibt dazu ausdrücklich: nicht die URL der Seite, auf der das Video abrufbar ist. Verarbeiten kann Google 3GP, 3G2, ASF, AVI, DivX, M2V, M3U, M3U8, M4V, MKV, MOV, MP4, MPEG, OGV, QVT, RAM, RM, VOB, WebM, WMV und XAP; Daten-URLs nicht.embedUrlist der Player, meist das, was imsrcdeines Einbettungselements steht. Auch nicht die Seite.- contentUrl zuerst. Google empfiehlt sie, wo es geht — sie sei die effektivste Methode, damit Google die Videodateien abruft.
embedUrlist die Alternative, wenn es keine Datei-URL gibt, etwa bei einem eingebetteten Fremd-Player.
Eine contentUrl ohne Dateiendung oder mit HTML-Endung behandelt der Generator als Fehler, nicht als Warnung. Auf einer Seite, die sonst überall validiert, ist genau dieses Feld die Stelle, an der man zuerst nachsehen sollte, wenn das Video nie erscheint.
Kapitel und Vorschaubilder: die Zahlen, die Google nennt
| Regel | Wert |
|---|---|
| Formate | BMP, GIF, JPEG, PNG, WebP, SVG, AVIF |
| Größe | Mindestens 60 × 30 Pixel, bevorzugt größer |
| Transparenz | Mindestens 80 % der Pixel mit einem Alpha-Wert über 250 |
| Stabilität | Eine eindeutige, stabile URL pro Video — schnell ablaufende CDN-URLs können die Indexierung verhindern |
| Zugriff | Für Googlebot und Googlebot für Bilder erreichbar: nicht per robots.txt gesperrt, nicht hinter einem Login |
Kapitel sind Clip-Objekte in hasPart, und für sie gelten Regeln, die leicht untergehen: Die url muss auf denselben URL-Pfad wie das Video verweisen und zusätzlich einen Suchparameter mit der Zeitangabe tragen. Der Deeplink muss tatsächlich funktionieren — ?t=30 startet nach 30 Sekunden. Das Video muss mindestens 30 Sekunden lang sein, und zwei Clips desselben Videos dürfen nicht dieselbe Startzeit haben. Aus der URL deiner Wiedergabeseite macht der Generator für jedes Kapitel diese URL plus ?t= und die Sekunde; ein Kapitel nach dem Videoende oder eines, das nicht nach dem vorigen beginnt, meldet er.
Und darum gibt es eine zweite Ausgabe: Der Beschreibungsblock — Titel, Beschreibung, Veröffentlichung, Laufzeit, Kapiteltabelle — trägt genau die Werte, die das Markup deklariert, mit deutschen Beschriftungen. Eine Wiedergabeseite, deren einzige Beschreibung in einem Script-Tag steckt, gibt Lesern nichts und KI-Antwortmaschinen nichts zu zitieren. Dasselbe Prinzip für Fragen und Antworten ist der FAQ Schema Generator, für Zutaten und Zubereitungsschritte der Recipe Schema Generator.
FAQ
Was ist ein Video-Schema-Generator?
Ein Video-Schema-Generator macht aus den Angaben zu einem Video strukturierte Daten vom Typ VideoObject — das JSON-LD, aus dem Google Titel, Vorschaubild, Laufzeit und wichtige Momente eines Videos liest. Dieser schreibt zusätzlich einen sichtbaren Beschreibungsblock mit denselben Werten und prüft die Regeln, an die Google Folgen knüpft.
Welche Angaben sind bei VideoObject Pflicht?
Drei: name, thumbnailUrl und uploadDate. description, duration, contentUrl und embedUrl sind empfohlen. Fehlen die Pflichtangaben, kann Google laut eigener Dokumentation möglicherweise gar keine Daten für das Video extrahieren.
Welchen UTC-Offset nehme ich für ein Video aus Deutschland?
Zwischen dem letzten Sonntag im März und dem letzten Sonntag im Oktober gilt die mitteleuropäische Sommerzeit, also +02:00; sonst die mitteleuropäische Zeit, +01:00. 2026 liegen die Umstellungen am 29. März und am 25. Oktober. Ohne Offset nimmt Google die Zeitzone von Googlebot.
Findet Google ein YouTube-Video, das erst nach einem Klick lädt?
Nicht als eingebettetes Video. Google schreibt, man solle sich beim Laden des Videos nicht auf Nutzeraktionen wie Klicken verlassen, und verlangt, dass das Video auf der Wiedergabeseite eingebettet ist. Steht vor dem Klick nur ein Vorschaubild im HTML, findet Googlebot dort kein eingebettetes Video — auch wenn das JSON-LD eines beschreibt.
Was ist der Unterschied zwischen contentUrl und embedUrl?
contentUrl zeigt auf die Bytes der Videodatei, etwa die MP4. embedUrl zeigt auf den Player, meist den src des Einbettungselements, bei YouTube im erweiterten Datenschutzmodus also die youtube-nocookie.com-Adresse. Keines von beiden ist die Seite, auf der das Video eingebettet ist.
Wie lege ich Kapitel beziehungsweise wichtige Momente fest?
Mit Clip-Objekten in hasPart, jedes mit name, startOffset in Sekunden und einer url, die auf denselben Pfad wie die Wiedergabeseite zeigt und einen Zeitparameter trägt. Der Deeplink muss funktionieren, und das Video muss mindestens 30 Sekunden lang sein. Liegt das Video auf YouTube, setzt du die Zeitstempel in die YouTube-Beschreibung.
In welchem Format steht die Laufzeit im Markup?
Als ISO-8601-Dauer: PT00H30M5S bedeutet dreißig Minuten und fünf Sekunden. Eine Uhrzeit oder eine reine Sekundenzahl ist falsch. Dieser Generator nimmt 18:42, 1:02:30, 742, 18 Minuten 42 Sekunden oder die ISO-Form entgegen und gibt immer die ISO-Form aus.
Ist die Wiedergabeseite im Index — oder nur das Video?
Die eigene Domain prüfst du kostenlos: jede Seite mit ihrem live abgerufenen HTTP-Status und Googles Indexurteil, Impressionen und Durchschnittsposition gegen den vorigen Zeitraum, Traffic nach Quelle mit KI-Maschinen gesondert. Ein Befehl, aus deinem Agenten heraus.
$ npm i -g @clize/clize && clize install $ clize seo check --domain deinedomain.de[ Agent SEO von Clize → ]