Complete Guide to VideoObject Schema
What Is VideoObject Schema
VideoObject schema reports metadata for videos embedded on a page as structured data. It applies to both YouTube embeds and self-hosted videos. It displays as video rich results in Google Search (thumbnail, duration, timestamps) and is referenced when AI answer engines cite video content.
TL;DR
VideoObject essentials: name, thumbnailUrl, uploadDate. Specify video location with contentUrl or embedUrl. Add transcript for text transcript → increases AI citation potential. hasPart (Clip) for key moments → activates Google timestamps.
Property Reference
Based on Google official documentation (verified June 2026).
| Property | Required | Type | Description |
|---|---|---|---|
| name | Required | Text | Video title (must be unique) |
| thumbnailUrl | Required | URL[] | Thumbnail image URL (multiple allowed) |
| uploadDate | Required | DateTime (ISO 8601) | Original publish date/time |
| description | Recommended | Text | Video description (must be unique) |
| contentUrl | Recommended | URL | Actual video file URL |
| embedUrl | Recommended | URL | Video player embed URL |
| duration | Recommended | Duration (ISO 8601) | Playback duration (e.g., PT5M30S) |
| hasPart | Optional | Clip[] | Key moment timestamps |
| transcript | Optional | Text | Text transcript |
| expires | Optional | DateTime | Expiration date/time |
| interactionStatistic | Optional | InteractionCounter | View count and other statistics |
Including at least one of contentUrl and embedUrl is recommended. Use contentUrl for self-hosted videos and embedUrl for external players such as YouTube.
Minimal Example (Self-Hosted)
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "AEO Basics: How to Create Content Cited by AI Answers",
"thumbnailUrl": "https://kroffle.com/videos/aeo-basics-thumb.jpg",
"uploadDate": "2026-06-04T09:00:00+09:00",
"contentUrl": "https://kroffle.com/videos/aeo-basics.mp4"
}
Recommended Example (YouTube Embed + Key Moments + Transcript)
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "AEO Basics: How to Create Content Cited by AI Answers",
"description": "Explains step by step how content gets cited by AI answer engines such as ChatGPT and Perplexity, and practical optimization methods.",
"thumbnailUrl": [
"https://img.youtube.com/vi/VIDEOID/maxresdefault.jpg",
"https://img.youtube.com/vi/VIDEOID/hqdefault.jpg"
],
"uploadDate": "2026-06-04T09:00:00+09:00",
"duration": "PT12M30S",
"embedUrl": "https://www.youtube.com/embed/VIDEOID",
"transcript": "Hello. Today we will learn about AEO, or Answer Engine Optimization...",
"hasPart": [
{
"@type": "Clip",
"name": "What Is AEO",
"startOffset": 0,
"endOffset": 120,
"url": "https://www.youtube.com/watch?v=VIDEOID&t=0s"
},
{
"@type": "Clip",
"name": "AI Citation Mechanism",
"startOffset": 120,
"endOffset": 420,
"url": "https://www.youtube.com/watch?v=VIDEOID&t=120s"
},
{
"@type": "Clip",
"name": "5-Step Practical Optimization",
"startOffset": 420,
"endOffset": 750,
"url": "https://www.youtube.com/watch?v=VIDEOID&t=420s"
}
],
"inLanguage": "ko-KR",
"interactionStatistic": {
"@type": "InteractionCounter",
"interactionType": "https://schema.org/WatchAction",
"userInteractionCount": 3500
}
}
transcript Property — Key from an AEO Perspective
The transcript property includes the video's text transcript directly in the schema. When AI answer engines struggle to visit a video URL and understand its content, the transcript included in the schema exposes the content directly.
For long transcripts, you can put a summary in description and the full text in transcript.
contentUrl vs embedUrl
| Property | Points To | Use Case |
|---|---|---|
| contentUrl | Actual video file (mp4, etc.) | Self-hosted videos |
| embedUrl | Player iframe URL | External players such as YouTube and Vimeo |
Google official documentation states that contentUrl is "the most effective way to fetch the video file." Providing both properties together is also possible.
Adaptation for the Korean Market
Include inLanguage: "ko-KR" to specify Korean video content. Include KST (+09:00) in uploadDate.
Common Mistakes
Wrong example: Using a regular YouTube page URL for embedUrl
"embedUrl": "https://www.youtube.com/watch?v=VIDEOID"
Correct example: Use the embed-specific URL
"embedUrl": "https://www.youtube.com/embed/VIDEOID"
Wrong example: duration in minutes:seconds format
"duration": "12:30"
Correct example: ISO 8601 format
"duration": "PT12M30S"
Validation Methods
- Google Rich Results Test: https://search.google.com/test/rich-results
- Schema Markup Validator: https://validator.schema.org
Frequently Asked Questions
Q. Should I use VideoObject schema for YouTube videos?
A. YouTube pages manage their own schema. When you embed a YouTube video on your site, adding VideoObject schema to that page is recommended. Use the YouTube embed URL for embedUrl.
Q. Is transcript required?
A. No. However, with a transcript, AI answer engines can understand video content as text directly, increasing citation potential.
References
- Google official VideoObject documentation: https://developers.google.com/search/docs/appearance/structured-data/video (verified June 2026)
- Schema.org VideoObject: https://schema.org/VideoObject