Video SEO
VideoObject Schema (required)
{
"@type": "VideoObject",
"name": "<title>",
"description": "<description>",
"thumbnailUrl": ["<url-16x9>", "<url-4x3>", "<url-1x1>"],
"uploadDate": "2026-05-01T08:00:00+00:00",
"duration": "PT2M30S",
"contentUrl": "<url>",
"embedUrl": "<url>"
}
YouTube Optimization
- Title: 60 chars max, keyword first
- Description: 250 words minimum, timestamps, links
- Tags: 5-10 specific, no keyword stuffing
- Thumbnail: 1280x720, high contrast, faces convert well
- Chapters: required for videos > 5 min
- Closed captions: always (accessibility + indexability)
- End screens + cards: for retention
Transcripts
- Embed full transcript below video (indexable text)
- Use
<details><summary>Transcript</summary>...</details> for collapsible
- Timestamp links:
<a href="#t=120">2:00</a>
Chapters / Clip Schema
{
"@type": "Clip",
"name": "Introduction",
"startOffset": 0,
"endOffset": 90,
"url": "https://example.com/video#t=0"
}
SeekToAction (enable seek in rich results)
"potentialAction": {
"@type": "SeekToAction",
"target": "https://example.com/video?t={seek_to_second_number}",
"startOffset-input": "required name=seek_to_second_number"
}
Live Streaming
BroadcastEvent schema for LIVE badge
- Requires
isLiveBroadcast: true, startDate, endDate
1---2name: seo-video3description: Use when optimizing video SEO — VideoObject schema, YouTube metadata, transcripts, live streams.4---56<objective>7Covers video SEO: the required VideoObject JSON-LD schema, YouTube optimization (title/description/tags/thumbnail/chapters/captions/end-screens), embedding indexable transcripts with timestamp links, Clip schema for chapter/key-moment markup, SeekToAction for enabling seek in rich results, and BroadcastEvent schema for live-stream LIVE badges.8</objective>910# Video SEO1112## VideoObject Schema (required)1314```json15{16 "@type": "VideoObject",17 "name": "<title>",18 "description": "<description>",19 "thumbnailUrl": ["<url-16x9>", "<url-4x3>", "<url-1x1>"],20 "uploadDate": "2026-05-01T08:00:00+00:00",21 "duration": "PT2M30S",22 "contentUrl": "<url>",23 "embedUrl": "<url>"24}25```2627## YouTube Optimization2829- Title: 60 chars max, keyword first30- Description: 250 words minimum, timestamps, links31- Tags: 5-10 specific, no keyword stuffing32- Thumbnail: 1280x720, high contrast, faces convert well33- Chapters: required for videos > 5 min34- Closed captions: always (accessibility + indexability)35- End screens + cards: for retention3637## Transcripts3839- Embed full transcript below video (indexable text)40- Use `<details><summary>Transcript</summary>...</details>` for collapsible41- Timestamp links: `<a href="#t=120">2:00</a>`4243## Chapters / Clip Schema4445```json46{47 "@type": "Clip",48 "name": "Introduction",49 "startOffset": 0,50 "endOffset": 90,51 "url": "https://example.com/video#t=0"52}53```5455## SeekToAction (enable seek in rich results)5657```json58"potentialAction": {59 "@type": "SeekToAction",60 "target": "https://example.com/video?t={seek_to_second_number}",61 "startOffset-input": "required name=seek_to_second_number"62}63```6465## Live Streaming6667- `BroadcastEvent` schema for LIVE badge68- Requires `isLiveBroadcast: true`, `startDate`, `endDate`