## Schema.org Video - **Type**: `defineVideo(input?: Video)`{lang="ts"} Describes an individual video (usually in the context of an embedded media object). ## Useful Links - [VideoObject - Schema.org](https://schema.org/VideoObject) - [Video - Yoast](https://developer.yoast.com/features/schema/pieces/video) ## Required properties - **name** `string` The title of the video. Can be provided using route meta on the `title` key, see [defaults](#defaults). - **description** `string` A description of the video (falling back to the caption, then to 'No description'). Can be provided using route meta on the `description` key, see [defaults](#defaults). - **thumbnail** `ImageObject` An image of the video thumbnail. Can be provided using route meta on the `image` key, see [defaults](#defaults). - **thumbnailUrl** `string | string[]` A URL pointing to the video thumbnail image file. Follow the [thumbnail image guidelines](https://developers.google.com/search/docs/appearance/video#provide-a-high-quality-thumbnail). - **uploadDate** `string` The date the video was published, in ISO 8601 format Can be provided using route meta on the `datePublished` key, see [defaults](#defaults). ## Defaults - **@type**: `VideoObject` - **@id**: `${canonicalUrl}#/schema/video/${hash(image.url)}` - **inLanguage**: `options.defaultLanguage` (only when caption is provided) _(see: [user Config](/schema-org/getting-started/params))_ - **contentUrl**: is set to `url` ## Resolves See [Global Resolves](/docs/schema-org/guides/get-started/overview#site-page-level-config) for full context. - `width` and `height` must be provided for either to be included ## Example ```ts defineVideo({ name: 'My cool video', uploadDate: new Date(Date.UTC(2020, 10, 10)), url: '/image.png', }) ``` ## Types ```ts export interface VideoSimple extends Thing { /** * The title of the video. */ name?: string /** * A description of the video (falling back to the caption, then to 'No description'). */ description?: string /** * A reference-by-ID to an imageObject. */ thumbnailUrl?: NodeRelation<ImageObject> /** * The date the video was published, in ISO 8601 format (e.g., 2020-01-20). */ uploadDate?: ResolvableDate /** * Whether the video should be considered 'family friendly' */ isFamilyFriendly?: boolean /** * The URL of the image file (e.g., /images/cat.jpg). */ url: string /** * The fully-qualified, absolute URL of the image file (e.g., https://www.example.com/images/cat.jpg). * Note: The contentUrl and url properties are intentionally duplicated. */ contentUrl?: string /** * A text string describing the image. * - Fall back to the image alt attribute if no specific caption field exists or is defined. */ caption?: string /** * The height of the image in pixels. * - Must be used with width. */ height?: number /** * The width of the image in pixels. * - Must be used with height. */ width?: number /** * The language code for the textual content; e.g., en-GB. * - Only needed when providing a caption. */ inLanguage?: string /** * The duration of the video in ISO 8601 format. */ duration?: string /** * A URL pointing to a player for the video. */ embedUrl?: string } ```