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/aleboimagesImageObject(url,width,height). - Vydavateľstvo & autorstvo:
publisher(Organization slogo),creator/author,license(ak relevantné). - Technické parametre (voliteľné, no užitočné):
encodingFormat,contentSize,bitrate(naMediaObject),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ámciVideoObject, alebo pri dlhších súboroch poskytnitecaptionakoMediaObject(napr. VTT/SRT) sinLanguageacontentUrl. - Viacjazyčnosť: použite viac
captionobjektov pre jednotlivé jazyky.transcriptdržte v primárnom jazyku videa. - Časované kapitoly v prepisu: ak prepis obsahuje timestampy, zachovajte rovnaké
startOffsethodnoty ako vClip– 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×720a640×360), alternatívne použiteimagesImageObject. - Sprite/filmstrip: samotný sprite nie je vlastnosť schémy, ale odkazujte naň v
hasPart(voliteľne) akoMediaObjectsencodingFormatimage/jpegaleboimage/webpa 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
urlTemplatepoužívajúcim parameter sekúnd ({seek_to_second_number}), ktorý funguje aj bez JavaScriptu. - Deeplink
urlpri každomClipsmeruje 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;
@idje kanonický identifikátor, na ktorý sa viažu kapitoly (isPartOf/hasPart). - Konzistencia času:
startOffsetneprekračujeduration; 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/endOffsetautomaticky 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
startOffset0– 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.