Panduan VideoObject Schema

cara implement VideoObject schema untuk Google's video rich hasil di seluruh search, Video tab, Images, dan menemukan — diperlukan vs. recommended properties, two cara untuk tambahkan key moments (SeekToAction vs. Clip), dan BroadcastEvent LIVE badge.

Pertama kali diterbitkan: 1 Jul 2026 · Terakhir diperbarui: 3 Agu 2026 · Advanced
Bahasa

VideoObject schema (schema.org/VideoObject) marks up sebuah halaman's video so Google dapat tampilkan video rich hasil — thumbnail, duration, dan key moments — di seluruh four surfaces, not one: main hasil pencarian halaman, Video tab, Google Images, dan Google menemukan. itu multi-surface reach adalah broader daripada sebagian besar people assume dan membuat ini one dari two highest-payoff rich-hasil jenis di cluster (alongside Recipe). hanya three properties adalah diperlukan — name, thumbnailUrl, dan uploadDate — dengan contentUrl, deskripsi, duration, embedUrl, expires, interactionStatistic, dan region eligibility semua recommended. Two fitur cause sebagian besar dari confusion. Key moments ( chapter timestamps) dapat menjadi done two cara: automatically via SeekToAction/potentialAction jika Anda video URLs sudah accept sebuah timestamp parameter, atau manually via Clip markup (name, startOffset, dan url adalah diperlukan; endOffset adalah recommended) when Anda ingin publisher-specified labels dan timestamps alih-alih Google's automatic picks. dan LIVE badge isn't sebuah separate schema — ini adalah BroadcastEvent (isLiveBroadcast, startDate, endDate — diperlukan setelah Anda're menambahkan BroadcastEvent di semua) documented pada yang sama halaman dan digunakan alongside VideoObject. paling umum miss adalah omitting uploadDate atau writing ini di sebuah inconsistent date format. sebagai selalu, valid markup hanya membuat Anda eligible — Google, dan video menjadi dapat di-crawl, masih decide whether ini menampilkan.

TL;DR — schema.org/VideoObject markup (biasanya JSON-LD) membuat sebuah video eligible untuk video rich hasil di seluruh four Google surfaces — main search, Video tab, Google Images, dan Google menemukan. diperlukan: name, thumbnailUrl, uploadDate. Recommended: contentUrl, description, duration, embedUrl, expires, interactionStatistic, dan regionsAllowed/ineligibleRegion. Key moments memiliki two mechanisms — automatic via SeekToAction/potentialAction (jika Anda URLs accept sebuah timestamp parameter Google dapat infer) atau manual via Clip (name, startOffset, dan url diperlukan per chapter; endOffset recommended). LIVE badge adalah BroadcastEvent (isLiveBroadcast, startDate, endDate) digunakan alongside VideoObject, documented pada yang sama halaman — not sebuah separate sistem. paling umum miss adalah omitting uploadDate atau menggunakan sebuah inconsistent date format. Valid markup hanya earns eligibility; Google masih decides whether untuk tampilkan ini, dan video memiliki untuk menjadi dapat di-crawl dan dapat diindeks. ini adalah one dari two highest-payoff jenis di cluster alongside Recipe — worth doing properly.

Evidence for this claim Schema.org VideoObject defines vocabulary for a video media object; being valid Schema.org does not by itself guarantee a Google video feature. Scope: Schema.org type definition, distinct from Google eligibility. Confidence: high · Verified: Schema.org: VideoObject Evidence for this claim Google's VideoObject documentation requires name, thumbnailUrl, and uploadDate for video structured-data eligibility and recommends additional properties. Scope: Current Google video structured data requirements; eligibility is not a display guarantee. Confidence: high · Verified: Google Search Central: Video structured data

What VideoObject schema melakukan — one markup, four surfaces

sebagian besar guides flatten VideoObject ke “get a thumbnail in search.” (terjemahan) “get sebuah thumbnail di search.” reach adalah wider daripada itu, dan ini adalah worth leading dengan because ini perubahan ROI calculation. Google’s own framing: “Videos can appear in several different places on Google, including the main search results page, Video mode, Google Images, and Google Discover.” (terjemahan) “Videos dapat appear di several berbeda places pada Google, including main hasil pencarian halaman, Video mode, Google Images, dan Google menemukan.” itu’s four distinct surfaces dari one block dari markup — which adalah why I peringkat ini, dengan Recipe, sebagai one dari two genuinely tinggi-payoff jenis di whole structured-data cluster. (ini adalah no coincidence two overlap: banyak Recipe halaman embed sebuah cooking video via recipe’s video property, dan itu video adalah itself sebuah VideoObject.)

vocabulary adalah schema.org/VideoObject, dan Google’s Video guide covers three related jenis pada sebuah single halaman: VideoObject itself, Clip (key moments), dan BroadcastEvent ( LIVE badge). Worth knowing: ada no separate “media-clip” (terjemahan) “media-clip” doc halaman — URL Anda mungkin guess di mengembalikan sebuah 404. Clip dan segment markup untuk video adalah folded ke yang sama Video guide sebagai VideoObject, so don’t go hunting untuk sebuah dedicated halaman itu doesn’t exist.

diperlukan — minimum untuk apa pun video rich hasil:

PropertyWhat ini adalah
namevideo’s judul
thumbnailUrlURL untuk sebuah representative thumbnail image
uploadDatedate video adalah pertama published (ISO 8601)

Recommended — tambahkan sebagai banyak sebagai apply; mereka membuat hasil richer dan more reliable:

Propertymengapa ini penting
contentUrlDirect URL untuk media file — helps Google fetch video
descriptionvideo’s deskripsi (plain text)
durationISO 8601 duration (e.g. PT4M12S) — powers runtime badge
embedUrlURL untuk player embed
expiresWhen video adalah no longer available (omit jika ini doesn’t expire)
interactionStatisticView count via WatchAction interaction jenis
regionsAllowed / ineligibleRegionWhere video dapat / dapat not menjadi ditampilkan

menyediakan either contentUrl atau embedUrl (both adalah better) so Google memiliki sebuah cara untuk reach actual video — sebuah thumbnail dengan no reachable video adalah sebuah umum alasan sebuah hasil tidak pernah appears. three URLs itu come up here adalah not interchangeable: contentUrl adalah video file’s actual konten bytes (Google’s own docs panggil ini paling effective cara untuk Google untuk fetch video); embedUrl adalah player, not file; dan neither one adalah watch halaman URL — halaman video adalah embedded pada. sebuah umum mistake adalah pointing contentUrl di watch halaman alih-alih raw media file.

Evidence for this claim Google recommends contentUrl when available because it is the actual video bytes and most effective for fetching; embedUrl is the player URL alternative, not the watch page URL. Scope: web Confidence: high · Verified: Video structured data

Key moments: SeekToAction vs. Clip

Key moments adalah chapter-style deep tautan di bawah sebuah video hasil itu jump viewer untuk sebuah spesifik timestamp. ada two mechanisms, dan confusing them adalah single biggest source dari implementation trouble pada ini jenis.

1. Automatic — SeekToAction / potentialAction. Anda tell Google, via sebuah potentialAction dari jenis SeekToAction, URL pattern Anda player menggunakan untuk jump untuk sebuah timestamp ( startOffset-input placeholder). jika Anda video URLs sudah accept sebuah timestamp parameter, Google dapat infer key moments itself dari Anda pada-halaman chapter structure. gunakan ini when Anda struktur URL mendukung timestamps dan Anda’re happy letting Google pick moments.

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "How to tie a bowline knot",
  "thumbnailUrl": "https://example.com/thumbs/bowline.jpg",
  "uploadDate": "2026-05-01T08:00:00-05:00",
  "description": "A step-by-step guide to tying a bowline.",
  "duration": "PT4M12S",
  "contentUrl": "https://example.com/video/bowline.mp4",
  "embedUrl": "https://example.com/embed/bowline",
  "potentialAction": {
    "@type": "SeekToAction",
    "target": "https://example.com/watch/bowline?t={seek_to_second_number}",
    "startOffset-input": "required name=seek_to_second_number"
  }
}

2. Manual — Clip markup. Anda define setiap chapter explicitly sebagai sebuah Clip. Google’s Clip table splits ini yang sama cara sebagai VideoObject itself: diperlukanname, startOffset (di seconds), dan sebuah url itu deep-tautan untuk itu moment; recommendedendOffset (di seconds), so clip memiliki sebuah defined end serta sebuah start. gunakan ini when Anda ingin supply Anda own labels dan timestamps rather daripada moments Google’s automatic detection akan otherwise pick.

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "How to tie a bowline knot",
  "thumbnailUrl": "https://example.com/thumbs/bowline.jpg",
  "uploadDate": "2026-05-01T08:00:00-05:00",
  "hasPart": [
    {
      "@type": "Clip",
      "name": "Make the loop",
      "startOffset": 30,
      "endOffset": 75,
      "url": "https://example.com/watch/bowline?t=30"
    },
    {
      "@type": "Clip",
      "name": "Thread the tail",
      "startOffset": 75,
      "endOffset": 130,
      "url": "https://example.com/watch/bowline?t=75"
    }
  ]
}

Which untuk gunakan? Automatic SeekToAction adalah less berfungsi jika Anda URLs sudah mendukung timestamp parameters dan Anda trust Google untuk pick moments. Manual Clip adalah right panggil when Anda ingin name dan bound setiap chapter yourself. Don’t stack both mechanisms untuk yang sama purpose pada yang sama video — pick one. decision tree di Resources group walks ini fork.

LIVE badges dengan BroadcastEvent

untuk livestreams, red LIVE badge adalah enabled oleh menambahkan sebuah BroadcastEvent untuk Anda VideoObject via publication property. ini adalah not sebuah separate, unrelated schema jenis — ini adalah documented pada yang sama Video guide dan layered onto VideoObject Anda sudah memiliki. BroadcastEvent sebagai sebuah whole isn’t diperlukan untuk sebuah plain video rich hasil, tetapi setelah Anda tambahkan ini untuk LIVE badge, Google’s Clip-style table treats isLiveBroadcast, startDate, dan endDate sebagai diperlukan together:

  • isLiveBroadcast: true
  • startDate — when broadcast starts atau adalah scheduled untuk start. sebuah startDate di future signals sebuah scheduled broadcast; di past atau present, ini signals stream memiliki actually started.
  • endDate — when ini ends atau adalah expected untuk end. Google adalah explicit itu once stream memiliki actually finished, Anda harus update endDate untuk sebuah nyata nilai — sebuah endDate di future signals sebuah scheduled end, di past atau present ini signals stream memiliki ended. jika Anda tidak know end time up front, sebuah approximate endDate adalah fine untuk start; hanya correct ini once stream actually wraps.

Nesting startDate/endDate ini cara lets Google infer three lifecycle states — scheduled, live, ended — dari yang sama two fields, which adalah juga why sebuah stale endDate (not corrected setelah stream stops) adalah main cara sebuah lingering LIVE badge happens. None dari ini guarantees badge appears di apa pun particular time; ini hanya supplies timing Google’s sistem gunakan untuk decide.

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "Launch livestream 2026",
  "thumbnailUrl": "https://example.com/thumbs/launch.jpg",
  "uploadDate": "2026-06-30T09:00:00-05:00",
  "publication": {
    "@type": "BroadcastEvent",
    "isLiveBroadcast": true,
    "startDate": "2026-07-01T14:00:00-05:00",
    "endDate": "2026-07-01T15:30:00-05:00"
  }
}

Anda juga perlu untuk panggil Google’s pengindeksan API untuk livestream videos so LIVE badge appears dan disappears di sebuah timely cara — badge adalah time-sensitive di sebuah cara sebuah normal pada-demand video isn’t.

umum implementation mistakes

  • Omitting uploadDate atau menggunakan sebuah sloppy date format. ini adalah one dari hanya three diperlukan fields. gunakan consistent ISO 8601 nilai (sebuah full date-time dengan offset adalah safest). ini adalah single sebagian besar umum miss pada jenis.
  • sebuah thumbnail dengan no reachable video. menyediakan contentUrl dan/atau embedUrl so Google dapat actually fetch video thumbnail mewakili.
  • Marking up sebuah video itu Google dapat’t crawl atau indeks. data terstruktur dapat’t rescue sebuah video hidden behind sebuah login, blocked di robots.txt, atau dimuat di sebuah cara crawler dapat’t see. Markup describes video; ini doesn’t membuat ini accessible.
  • Stacking both key-moment mechanisms. Pick automatic SeekToAction atau manual Clip untuk sebuah given video, not both.
  • Forgetting untuk close out sebuah livestream. Set endDate dan update markup once stream ends, atau LIVE badge dapat linger.
  • Treating valid markup sebagai sebuah guaranteed hasil. sebagai dengan setiap rich-hasil jenis, valid VideoObject markup hanya membuat halaman eligible — Google’s sistem masih decide whether untuk tampilkan ini.

Where ini sits, dan video SEO more broadly

VideoObject adalah structured-data layer untuk video, dan ini lives here alongside -nya siblings — Recipe (whose halaman so sering embed sebuah cooking video) dan artikel (where sebuah video adalah embedded inside sebuah written piece, dan VideoObject describes itu embed). tetapi markup adalah hanya one slice dari getting video untuk perform di search: hosting, sitemaps, thumbnails, transcripts, kecepatan halaman sekitar player, dan how Anda embed semua penting too. itu broader video SEO topics sit outside ini structured-data artikel — ini halaman adalah deliberately scoped untuk schema itself.

untuk where VideoObject fits di wider structured-data picture, see Schema Markup dan data terstruktur hubs ini artikel nests di bawah.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.