VideoObject schema

VideoObject schema

Prečo riešiť VideoObject precízne: kapitoly, prepisy a náhľady ako nosiče relevance

Videoobsah je dnes indexovaný nielen cez titulok a opis, ale cez štruktúru. Správne nasadený VideoObject so kapitolami (Clip), prepisom a náhľadmi (thumbnails) zvyšuje pokrytie dopytov, viditeľnosť v „Key moments“, dostupnosť obsahu a konzistenciu dát naprieč kanálmi (SERP, sociálne siete, interné vyhľadávanie). Tento článok je praktickým manuálom, ako tieto prvky modelovať a udržať v súlade s princípmi „Štruktúrované dáta a dátová konzistencia“.

Jadro VideoObject: minimálne polia a konzistentné hodnoty

  • Identita videa: name, description, inLanguage, uploadDate (ISO 8601), duration (ISO 8601, napr. PT12M5S), contentUrl (priame prehranie), embedUrl (iframe).
  • Náhľady: thumbnailUrl (jeden alebo viac URL) a/alebo image s ImageObject (url, width, height).
  • Vydavateľstvo & autorstvo: publisher (Organization s logo), creator/author, license (ak relevantné).
  • Technické parametre (voliteľné, no užitočné): encodingFormat, contentSize, bitrate (na MediaObject), regionsAllowed, expires.

Kapitoly: modelovanie cez Clip + hasPart pre „Key moments“

Kapitoly vo videu mapujte ako zoznam objektov typu Clip v poli hasPart. Každý Clip by mal mať name, startOffset (v sekundách), voliteľne endOffset a vlastný url s časovým parametrom (deep-link na sekundu). Doplňte aj position pre deterministické poradie.

<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: Entitné stratégie v praxi", "description": "Praktický workshop s kapitolami o entitách, clustroch a internom prelinkovaní.", "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 ciele", "startOffset": 0, "endOffset": 75, "position": 1, "url": "https://www.example.com/video/ai-seo?t=0" }, { "@type": "Clip", "name": "Entitná mapa a zdroje dát", "startOffset": 76, "endOffset": 420, "position": 2, "url": "https://www.example.com/video/ai-seo?t=76" }, { "@type": "Clip", "name": "Topic clustre a interné linky", "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>

Prepisy: transcript, caption a viacjazyčnosť

  • Prepis uložte do transcript (Text) v rámci VideoObject, alebo pri dlhších súboroch poskytnite caption ako MediaObject (napr. VTT/SRT) s inLanguage a contentUrl.
  • Viacjazyčnosť: použite viac caption objektov pre jednotlivé jazyky. transcript držte v primárnom jazyku videa.
  • Časované kapitoly v prepisu: ak prepis obsahuje timestampy, zachovajte rovnaké startOffset hodnoty ako v Clip – to je kľúč ku konzistencii.
<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 Entitná mapa... 07:01 Topic clustre...", "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áhľady a filmstripy: thumbnailUrl, image a sprite mapy

  • Thumbnail ako signál kvality: poskytnite aspoň dva rozlišné rozmery v thumbnailUrl (1280×720 a 640×360), alternatívne použite image s ImageObject.
  • Sprite/filmstrip: samotný sprite nie je vlastnosť schémy, ale odkazujte naň v hasPart (voliteľne) ako MediaObject s encodingFormat image/jpeg alebo image/webp a v prehrávači mapujte čas → súradnicu sprite.
  • Konzistentné URL: nemeniť názvy súborov pri bežných aktualizáciách; pri forced refresh použite query hash (?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": "Preview sprite", "encodingFormat": "image/webp", "contentUrl": "https://cdn.example.com/videos/ai-seo/sprite.webp" } ] } </script>

URL vzory a kompatibilita: SeekToAction, deeplinky a parametre

  • Podporte SeekToAction s urlTemplate používajúcim parameter sekúnd ({seek_to_second_number}), ktorý funguje aj bez JavaScriptu.
  • Deeplink url pri každom Clip smeruje na rovnaký základný URL videa s časovým parametrom, aby nedošlo ku kanibalizácii (nemá to byť nová stránka).
  • Stabilizujte parametre (?t= alebo ?start=) naprieč prehrávačom, oEmbed a otvorenou schémou.

Dátová konzistencia: jeden zdroj pravdy pre video metadáta

Zaveďte „source-of-truth“ pre video metadáta (CMS/JSON). Odtiaľ generujte:

  • JSON-LD (VideoObject, Clip, SeekToAction),
  • Open Graph (og:video, og:image) a Twitter Cards,
  • sitemapy (video-sitemap s thumbnail_loc, duration, publication_date),
  • oEmbed (pre externé vloženia),
  • interné vyhľadávanie (index kapitol a prepisu).

Kľúčom je, aby name, description, duration, uploadDate a kapitoly boli totožné v každom kanáli.

Viacero enkódov a adaptívny streaming: modelovanie

Ak máte HLS/DASH, doplňte VideoObject o encoding s MediaObject položkami (rôzne bitrate/rozlíšenia). Každý encoding má contentUrl, voliteľne encodingFormat (application/x-mpegURL pre HLS) a bitrate.

<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "VideoObject", "name": "AI SEO: Entitné stratégie 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>

Testovanie a validácia: čo kontrolovať pred publikovaním

  • Schéma: validita JSON-LD; @id je kanonický identifikátor, na ktorý sa viažu kapitoly (isPartOf/hasPart).
  • Konzistencia času: startOffset neprekračuje duration; poradie kapitol je súvislé a bez prekrývania (ak nechcete úmyselne).
  • Náhľady: dostupnosť, správne rozmery, rozumná veľkosť súborov, rýchly TTFB.
  • Prepisy: existuje minimálne hlavný jazyk; súbor VTT/SRT je bez chýb (časové značky).
  • Deeplinky: parametre ?t= alebo ?start= fungujú aj bez JS a vracajú 200.

Prístupnosť a UX: benefity nad rámec SEO

  • Captions a transcript zlepšujú pochopiteľnosť pre nepočujúcich a pre viackanálové konzumovanie (mobil/bez zvuku).
  • Kapitoly znižujú bounce rate – používatelia preskočia priamo na relevantný úsek.
  • Náhľady (cover + filmstrip) skrátia čas rozhodovania a zvyšujú CTR v zoznamoch.

Verzionovanie a governance: ako udržať poriadok pri zmenách

  • Každá úprava kapitol mení aj prepis – nastavte workflow, kde zmena startOffset/endOffset automaticky aktualizuje timestampy v prepisoch.
  • Priebežné kontroly konzistencie medzi JSON-LD, sitemapou a Open Graph (CI kontrola).
  • Changelog: dateModified na stránke videa a interný audit log kapitol/thumbnailov.

Antivzory: čomu sa vyhnúť pri VideoObject

  • Chýbajúca kapitola „Úvod“ so startOffset 0 – kľúčová pre parsery aj používateľov.
  • Nesúlad duration (VideoObject má inú dĺžku než skutočný súbor/stream).
  • Generické náhľady (rozmazané, s textom malého kontrastu) – ovplyvňuje CTR.
  • Duplicitné URL kapitol (nesprávne parametre alebo hash-only #t= bez server-side podpory).

Kompletná šablóna: VideoObject s kapitolami, prepisom, náhľadmi a encodingmi

<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: Entitné stratégie v praxi", "description": "Workshop s prehľadom entít, clustrov a interného prelinkovania.", "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 ciele", "startOffset": 0, "endOffset": 75, "position": 1, "url": "https://www.example.com/video/ai-seo?t=0" }, { "@type": "Clip", "name": "Entitná mapa a zdroje dát", "startOffset": 76, "endOffset": 420, "position": 2, "url": "https://www.example.com/video/ai-seo?t=76" }, { "@type": "Clip", "name": "Topic clustre a interné linky", "startOffset": 421, "endOffset": 900, "position": 3, "url": "https://www.example.com/video/ai-seo?t=421" }, { "@type": "Clip", "name": "Q&A", "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 Entitná mapa... 07:01 Topic clustre... 15:01 Q&A...", "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 ako zjednotená vrstva pre obsah, vyhľadávanie a UX

Modelujte video ako balík dát – základné metadáta, kapitoly, prepisy a náhľady musia spolu ladiť. Kapitoly otvárajú cestu k „Key moments“, prepisy rozširujú indexovateľnosť a prístupnosť, náhľady zvyšujú CTR. S jedným zdrojom pravdy a automatizovanou deriváciou (JSON-LD, sitemap, oEmbed, OG) udržíte konzistentné dáta a spoľahlivý výkon naprieč kanálmi.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *