VideoObject schema: Implementace kapitol, přepisů a náhledů

VideoObject schema: Zapracovanie kapitol, transkriptov a náhľadov

Proč se VideoObjectem zabývat precizně: kapitoly, přepisy a náhledy jako nositelé relevance

Videoobsah se dnes indexuje nejen podle titulku a popisu, ale také podle struktury. Správně nasazený VideoObject s kapitolami (Clip), přepisem a náhledy (thumbnails) zvyšuje pokrytí dotazů, viditelnost v sekci „Key moments“, dostupnost obsahu a konzistenci dat napříč kanály (SERP, sociální sítě, interní vyhledávání). Tento článek je praktickou příručkou, jak tyto prvky modelovat a udržovat v souladu s principy „Strukturovaná data a datová konzistence“.

Základ VideoObject: minimální pole a konzistentní hodnoty

  • Identita videa: name, description, inLanguage, uploadDate (ISO 8601), duration (ISO 8601, např. PT12M5S), contentUrl (přímé přehrání), embedUrl (iframe).
  • Náhledy: thumbnailUrl (jedna nebo více URL) a/nebo image s ImageObject (url, width, height).
  • Vydavatelství a autorství: publisher (Organization s logo), creator/author, license (je-li relevantní).
  • Technické parametry (volitelné, ale užitečné): encodingFormat, contentSize, bitrate (na MediaObject), regionsAllowed, expires.

Kapitoly: modelování pomocí Clip + hasPart pro „Key moments“

Kapitoly ve videu namodelujte jako seznam objektů typu Clip v poli hasPart. Každý Clip by měl mít name, startOffset (v sekundách), případně endOffset a vlastní url s časovým parametrem (deep link na konkrétní sekundu). Doplňte také position pro deterministické pořadí.

<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "VideoObject", "@id": "https://www.example.com/video/ai-seo#video", "url": "https://www.example.com/video/ai-seo", "name": "AI SEO: Entity strategie v praxi", "description": "Praktický workshop s kapitolami o entitách, clusterech a interním prolinkování.", "inLanguage": "sk", "uploadDate": "2025-09-01T09:00:00+02:00", "duration": "PT18M42S", "contentUrl": "https://cdn.example.com/videos/ai-seo.mp4", "embedUrl": "https://player.example.com/embed/ai-seo", "thumbnailUrl": [ "https://cdn.example.com/videos/ai-seo/cover-1280.jpg", "https://cdn.example.com/videos/ai-seo/cover-640.jpg" ], "hasPart": [ { "@type": "Clip", "name": "Úvod a cíle", "startOffset": 0, "endOffset": 75, "position": 1, "url": "https://www.example.com/video/ai-seo?t=0" }, { "@type": "Clip", "name": "Mapa entit a zdroje dat", "startOffset": 76, "endOffset": 420, "position": 2, "url": "https://www.example.com/video/ai-seo?t=76" }, { "@type": "Clip", "name": "Topic clustery a interní odkazy", "startOffset": 421, "endOffset": 900, "position": 3, "url": "https://www.example.com/video/ai-seo?t=421" } ], "potentialAction": { "@type": "SeekToAction", "target": "https://www.example.com/video/ai-seo?t={seek_to_second_number}", "startOffset-input": "required name=seek_to_second_number" }, "publisher": { "@type": "Organization", "name": "Example Media", "logo": { "@type": "ImageObject", "url": "https://www.example.com/static/logo-600x60.png", "width": 600, "height": 60 } } } </script>

Přepisy: transcript, caption a vícejazyčnost

  • Přepis uložte do transcript (Text) v rámci VideoObject, nebo u delších souborů poskytněte caption jako MediaObject (např. VTT/SRT) s inLanguage a contentUrl.
  • Vícejazyčnost: pro jednotlivé jazyky použijte více objektů caption. transcript ponechte v primárním jazyce videa.
  • Časované kapitoly v přepisu: pokud přepis obsahuje časové značky, zachovejte stejné hodnoty startOffset jako v Clip – to je klíčové pro konzistenci.
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "VideoObject", "@id": "https://www.example.com/video/ai-seo#video", "transcript": "00:00 Úvod... 01:16 Mapa entit... 07:01 Topic clustery...", "caption": [ { "@type": "MediaObject", "inLanguage": "sk", "encodingFormat": "text/vtt", "contentUrl": "https://cdn.example.com/videos/ai-seo/subtitles/sk.vtt" }, { "@type": "MediaObject", "inLanguage": "en", "encodingFormat": "text/vtt", "contentUrl": "https://cdn.example.com/videos/ai-seo/subtitles/en.vtt" } ] } </script>

Náhledy a filmstripy: thumbnailUrl, image a sprite mapy

  • Thumbnail jako signál kvality: v thumbnailUrl poskytněte alespoň dvě různé velikosti (1280×720 a 640×360), případně použijte image s ImageObject.
  • Sprite/filmstrip: samotný sprite není vlastností schématu, ale můžete na něj odkázat v hasPart (volitelně) jako na MediaObject s encodingFormat image/jpeg nebo image/webp a v přehrávači mapovat čas na souřadnici ve spritu.
  • Konzistentní URL: při běžných aktualizacích neměňte názvy souborů; při vynuceném obnovení použijte hash v query parametru (?v=169).
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "VideoObject", "thumbnailUrl": [ "https://cdn.example.com/videos/ai-seo/cover-1280.jpg", "https://cdn.example.com/videos/ai-seo/cover-640.jpg" ], "image": { "@type": "ImageObject", "url": "https://cdn.example.com/videos/ai-seo/cover-1920.jpg", "width": 1920, "height": 1080 }, "hasPart": [ { "@type": "MediaObject", "name": "Náhledový sprite", "encodingFormat": "image/webp", "contentUrl": "https://cdn.example.com/videos/ai-seo/sprite.webp" } ] } </script>

Vzory URL a kompatibilita: SeekToAction, deep linky a parametry

  • Podporujte SeekToAction s urlTemplate využívajícím parametr v sekundách ({seek_to_second_number}), který funguje i bez JavaScriptu.
  • Deep link url u každého Clip směřuje na stejnou základní URL videa s časovým parametrem, aby nedocházelo ke kanibalizaci (nemá jít o novou stránku).
  • Sjednoťte parametry (?t= nebo ?start=) napříč přehrávačem, oEmbedem a otevřeným schématem.

Datová konzistence: jeden zdroj pravdy pro metadata videa

Zaveďte „source of truth“ pro metadata videa (CMS/JSON). Z něj generujte:

  • JSON-LD (VideoObject, Clip, SeekToAction),
  • Open Graph (og:video, og:image) a Twitter Cards,
  • sitemapy (video sitemapu s thumbnail_loc, duration, publication_date),
  • oEmbed (pro externí vložení),
  • interní vyhledávání (index kapitol a přepisu).

Klíčové je, aby name, description, duration, uploadDate a kapitoly byly totožné v každém kanálu.

Více enkódování a adaptivní streamování: modelování

Pokud používáte HLS/DASH, doplňte VideoObject o encoding s položkami MediaObject (různé bitrate/rozlišení). Každé kódování má contentUrl, případně encodingFormat (application/x-mpegURL pro HLS) a bitrate.

<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "VideoObject", "name": "AI SEO: Entity strategie v praxi", "encoding": [ { "@type": "MediaObject", "encodingFormat": "application/x-mpegURL", "contentUrl": "https://cdn.example.com/videos/ai-seo/index.m3u8" }, { "@type": "MediaObject", "encodingFormat": "video/mp4", "contentUrl": "https://cdn.example.com/videos/ai-seo/1080p.mp4", "contentSize": "500MB" } ] } </script>

Testování a validace: co zkontrolovat před publikováním

  • Schéma: validita JSON-LD; @id je kanonický identifikátor, na který jsou navázány kapitoly (isPartOf/hasPart).
  • Konzistence časů: startOffset nepřekračuje duration; pořadí kapitol je souvislé a kapitoly se nepřekrývají (pokud to není záměr).
  • Náhledy: dostupnost, správné rozměry, přiměřená velikost souborů, rychlý TTFB.
  • Přepisy: existuje alespoň verze v hlavním jazyce; soubor VTT/SRT neobsahuje chyby (časové značky).
  • Deep linky: parametry ?t= nebo ?start= fungují i bez JS a vracejí stavový kód 200.

Přístupnost a UX: přínosy nad rámec SEO

  • Titulky a přepis zlepšují srozumitelnost pro neslyšící a umožňují konzumaci obsahu v různých situacích (mobilní zařízení / bez zvuku).
  • Kapitoly snižují míru okamžitého opuštění – uživatelé mohou přeskočit přímo na relevantní úsek.
  • Náhledy (cover + filmstrip) zkracují dobu rozhodování a zvyšují CTR v seznamech.

Verzování a governance: jak udržet pořádek při změnách

  • Každá úprava kapitol mění také přepis – nastavte workflow, v němž změna startOffset/endOffset automaticky aktualizuje časové značky v přepisech.
  • Průběžné kontroly konzistence mezi JSON-LD, sitemapou a Open Graph (kontrola v CI).
  • Changelog: dateModified na stránce videa a interní auditní záznamy kapitol/náhledů.

Antivzory: čemu se u VideoObject vyhnout

  • Chybějící kapitola „Úvod“ s startOffset 0 – klíčová pro parsery i uživatele.
  • Nesoulad v duration (VideoObject uvádí jinou délku než skutečný soubor/stream).
  • Generické náhledy (rozmazané, s málo kontrastním textem) – ovlivňují CTR.
  • Duplicitní URL kapitol (nesprávné parametry nebo pouze hash #t= bez podpory na straně serveru).

Kompletní šablona: VideoObject s kapitolami, přepisem, náhledy a kódováními

<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "VideoObject", "@id": "https://www.example.com/video/ai-seo#video", "url": "https://www.example.com/video/ai-seo", "name": "AI SEO: Entity strategie v praxi", "description": "Workshop s přehledem entit, clusterů a interního prolinkování.", "inLanguage": "sk", "uploadDate": "2025-09-01T09:00:00+02:00", "dateModified": "2025-10-10T12:30:00+02:00", "duration": "PT18M42S", "contentUrl": "https://cdn.example.com/videos/ai-seo/1080p.mp4", "embedUrl": "https://player.example.com/embed/ai-seo", "thumbnailUrl": [ "https://cdn.example.com/videos/ai-seo/cover-1280.jpg", "https://cdn.example.com/videos/ai-seo/cover-640.jpg" ], "image": { "@type": "ImageObject", "url": "https://cdn.example.com/videos/ai-seo/cover-1920.jpg", "width": 1920, "height": 1080 }, "hasPart": [ { "@type": "Clip", "name": "Úvod a cíle", "startOffset": 0, "endOffset": 75, "position": 1, "url": "https://www.example.com/video/ai-seo?t=0" }, { "@type": "Clip", "name": "Mapa entit a zdroje dat", "startOffset": 76, "endOffset": 420, "position": 2, "url": "https://www.example.com/video/ai-seo?t=76" }, { "@type": "Clip", "name": "Topic clustery a interní odkazy", "startOffset": 421, "endOffset": 900, "position": 3, "url": "https://www.example.com/video/ai-seo?t=421" }, { "@type": "Clip", "name": "Otázky a odpovědi", "startOffset": 901, "position": 4, "url": "https://www.example.com/video/ai-seo?t=901" } ], "potentialAction": { "@type": "SeekToAction", "target": "https://www.example.com/video/ai-seo?t={seek_to_second_number}", "startOffset-input": "required name=seek_to_second_number" }, "transcript": "00:00 Úvod... 01:16 Mapa entit... 07:01 Topic clustery... 15:01 Otázky a odpovědi...", "caption": [ { "@type": "MediaObject", "inLanguage": "sk", "encodingFormat": "text/vtt", "contentUrl": "https://cdn.example.com/videos/ai-seo/subtitles/sk.vtt" }, { "@type": "MediaObject", "inLanguage": "en", "encodingFormat": "text/vtt", "contentUrl": "https://cdn.example.com/videos/ai-seo/subtitles/en.vtt" } ], "encoding": [ { "@type": "MediaObject", "encodingFormat": "application/x-mpegURL", "contentUrl": "https://cdn.example.com/videos/ai-seo/index.m3u8" }, { "@type": "MediaObject", "encodingFormat": "video/mp4", "contentUrl": "https://cdn.example.com/videos/ai-seo/720p.mp4", "contentSize": "240MB" } ], "publisher": { "@type": "Organization", "name": "Example Media", "logo": { "@type": "ImageObject", "url": "https://www.example.com/static/logo-600x60.png", "width": 600, "height": 60 } } } </script>

VideoObject jako sjednocující vrstva pro obsah, vyhledávání a UX

Modelujte video jako datový balíček – základní metadata, kapitoly, přepisy a náhledy musí být vzájemně sladěné. Kapitoly otevírají cestu k „Key moments“, přepisy rozšiřují indexovatelnost a přístupnost a náhledy zvyšují CTR. Díky jedinému zdroji pravdy a automatizovanému odvozování (JSON-LD, sitemap, oEmbed, OG) udržíte konzistentní data a spolehlivý výkon napříč kanály.