Learning video (LearningResource
, VideoObject
, Clip
) structured data
![Example of a learning video rich result](/https/developers.google.com/static/search/docs/images/learning_videos_example.png)
Google Search is an entry point for students and teachers to discover and watch educational videos. When you explicitly provide learning-specific information with structured data, such as the educational level and concept and skills covered in the video, Google can better understand the content in your video, and provide an enhanced experience to help learners find the right content.
Learning video structured data may also enable information chips about the learning video, like the educational level and what type of video it is (for example, an overview or a solution video).
![How information chips can appear below a learning video, before the user taps the video](/https/developers.google.com/static/search/docs/images/learning_videos_pretap.png)
![How information chips can appear above a learning video, after the user taps the video](/https/developers.google.com/static/search/docs/images/learning_videos_posttap.png)
Feature availability
The learning video rich result is available in English in all regions where Google Search is available. The feature is only available when searching for academic learning content on desktop and mobile.
Examples
Single learning video
Here's an example of a single learning video.
<html> <head> <title>Learning video markup example</title> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": ["VideoObject", "LearningResource"], "name": "An introduction to Genetics", "description": "Explanation of the basics of Genetics for beginners.", "learningResourceType": "Concept Overview", "educationalLevel": "High school (US)", "contentUrl": "https://www.example.com/video/123/file.mp4", "thumbnailUrl": [ "https://example.com/photos/1x1/photo.jpg", "https://example.com/photos/4x3/photo.jpg", "https://example.com/photos/16x9/photo.jpg" ], "uploadDate": "2024-03-31T08:00:00+08:00" } </script> </head> <body> </body> </html>
Learning video with multiple clips
Here's an example of a learning video that has three clips: two clips for walking through the problem, and one clip for an overview of the concept.
<html> <head> <title>Learning video and clips markup example</title> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": ["VideoObject", "LearningResource"], "name": "An introduction to XYZ", "description": "Solving equations using exponent properties", "educationalLevel": "High school (US)", "educationalAlignment": { "@type": "AlignmentObject", "educationalFramework": "Common Core", "targetName": "HSA-SSE.B.3", "targetUrl": "https://www.corestandards.org/Math/Content/HSA/SSE/#CCSS.Math.Content.HSA.SSE.B.3" }, "contentUrl": "https://www.example.com/video/123/file.mp4", "thumbnailUrl": [ "https://example.com/photos/1x1/photo.jpg", "https://example.com/photos/4x3/photo.jpg", "https://example.com/photos/16x9/photo.jpg" ], "hasPart": [{ "@type": ["Clip", "LearningResource"], "learningResourceType": "Concept Overview", "name": "Understanding exponents", "startOffset": 40, "endOffset": 120, "url": "https://www.example.com/example?t=501" },{ "@type": ["Clip", "LearningResource"], "learningResourceType": "Problem Walkthrough", "name": "Example problem 1: suspended wires", "text": "Consider a weight suspended from two wires as shown in Figure. Find the tension in each wire.", "startOffset": 150, "endOffset": 225, "url": "https://www.example.com/example?t=30" },{ "@type": ["Clip", "LearningResource"], "learningResourceType": "Problem Walkthrough", "name": "Example problem 2: exponents", "text": "Consider a weight suspended from five wires as shown in Figure. Find the tension in one wire.", "startOffset": 275, "endOffset": 500, "url": "https://www.example.com/example?t=201" }], "uploadDate": "2024-03-31T08:00:00+08:00" } </script> </head> <body> </body> </html>
Problem walkthrough video
This example shows all the properties that must be added to the learning video markup to make it a valid problem walkthrough video.
<html> <head> <title>Problem Walkthrough Learning Video example</title> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": ["VideoObject", "LearningResource"], "name": "Mechanics problem for Grade 10", "description": "Video walks through solution for problems in mechanics.", "learningResourceType": "Problem Walkthrough", "text": "Three balls have a mass of 2kg, 4kg and 6kg each. Find the relative velocity after collision.", "contentUrl": "https://www.example.com/video/123/file.mp4", "thumbnailUrl": [ "https://example.com/photos/1x1/photo.jpg", "https://example.com/photos/4x3/photo.jpg", "https://example.com/photos/16x9/photo.jpg" ], "uploadDate": "2024-03-31T08:00:00+08:00" } </script> </head> <body> </body> </html>
Multiple problem walkthrough clips
Here's an example of webpage with multiple problem walkthrough clips. This example shows all the properties that must be added to the learning video markup at video and clip level to make it a valid problem walkthrough clip markup.
<html> <head> <title>Problem Walkthrough in clips in Learning Videos markup</title> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": ["VideoObject", "LearningResource"], "name": "An introduction to XYZ", "description": "Solving equations using exponent properties", "learningResourceType": "Problem Walkthrough", "contentUrl": "https://www.example.com/video/123/file.mp4", "text": "Three balls have a mass of 2kg, 4kg and 6kg each. Find the relative velocity after collision.", "thumbnailUrl": [ "https://example.com/photos/1x1/photo.jpg", "https://example.com/photos/4x3/photo.jpg", "https://example.com/photos/16x9/photo.jpg" ], "hasPart": [{ "@type": ["Clip", "LearningResource"], "learningResourceType": "Problem Walkthrough", "name": "Example problem 1: suspended wires", "text": "Consider a weight suspended from two wires. Find the tension in each wire.", "startOffset": 150, "endOffset": 225, "url": "https://www.example.com/example?t=150" },{ "@type": ["Clip", "LearningResource"], "learningResourceType": "Problem Walkthrough", "name": "Example problem 2: exponents", "text": "Consider a weight suspended from five wires. Find the tension in one wire.", "startOffset": 275, "endOffset": 500, "url": "https://www.example.com/example?t=275" }], "uploadDate": "2024-03-31T08:00:00+08:00" } </script> </head> <body> </body> </html>
How to add structured data
Structured data is a standardized format for providing information about a page and classifying the page content. If you're new to structured data, you can learn more about how structured data works.
Here's an overview of how to build, test, and release structured data.
- Add the required properties. Based on the format you're using, learn where to insert structured data on the page.
- Follow the guidelines.
- Validate your code using the Rich Results Test and fix any critical errors. Consider also fixing any non-critical issues that may be flagged in the tool, as they can help improve the quality of your structured data (however, this isn't necessary to be eligible for rich results).
- Deploy a few pages that include your structured data and use the URL Inspection tool to test how Google sees the page. Be sure that your page is
accessible to Google and not blocked by a robots.txt file, the
noindex
tag, or login requirements. If the page looks okay, you can ask Google to recrawl your URLs. - To keep Google informed of future changes, we recommend that you submit a sitemap. You can automate this with the Search Console Sitemap API.
Guidelines
For your page to be eligible for learning video rich results, you must follow these guidelines:
- General structured data guidelines
- Search Essentials
- Video best practices
- Video sitemap guidelines
- Technical guidelines
Technical guidelines
- In addition to learning video markup, you
must add the
VideoObject
required and recommended properties. - The video must be publicly available to watch without a subscription.
- The total video duration must be a minimum of 30 seconds.
- Learning video markup must be added to a page where users can watch the video. It's a bad user experience to point users to a page where they can't watch the video.
Structured data type definitions
The full definition of VideoObject
and LearningResource
is available
on schema.org
VideoObject
and
LearningResource
.
You must include the required properties for your content to be eligible for display as a learning video rich result. You can also include the recommended properties to add more information about your content, which could provide a better user experience.
Learning video [VideoObject
, LearningResource
]
Learning video markup is intended to give more visibility into the educational contents of the video. The markup can hold information about the various concepts and skills taught in the video.
Use the [VideoObject, LearningResource]
type for learning videos.
In addition to the
VideoObject
required and recommended properties,
add the following properties for learning videos.
Required properties | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
educationalAlignment
|
The official standard code, class, or exam associated with the content. Only use this
property if your content is aligned with a specific standard or exam. If not, only use
the
While you may provide multiple Examples: "educationalAlignment": { "@type": "AlignmentObject", "educationalFramework": "Common Core", "targetName": "CCSS.MATH.CONTENT.7.SP.B.4", "targetUrl": "https://www.corestandards.org/Math/Content/7/SP/B/4/" } "educationalAlignment": { "@type": "AlignmentObject", "educationalFramework": "NCERT", "targetUrl": "https://ncert.nic.in/" } |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
educationalLevel |
The target education level for the video. Set the target education level to either a country-specific or generic value. Country-specific values:
Each country has its own academic system. Set the
Example: "educationalLevel": "10th Grade (AR)" Generic values:
Only one of these generic values may be specified as
"educationalLevel": "Beginner" |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
learningResourceType |
The type of contents in the video based on what the video tries to accomplish. This property can be used at the video level (if the video has only one content type) or at the clip level (if the video has more than one content type). The list below gives some examples of acceptable values. If your video doesn't fit in any of these values, you can create a new one, as we are considering new values to support. Note that if the value is not set to one listed below, the learning type information may not be used in any search features.
"learningResourceType": "Problem walkthrough" |
Recommended properties | |
---|---|
educationalAlignment.educationalFramework
|
The name of the official standard associated with the content. "educationalFramework": "Common Core" |
educationalAlignment.targetName |
The standard code or node (for example, CCSS.MATH.CONTENT.7.SP.B.4, AP physics A, CCSS.MATH). "targetName": "CCSS.MATH.CONTENT.7.SP.B.4" |
educationalAlignment.targetUrl |
The URL to the standard description. "targetUrl": "https://www.corestandards.org/Math/Content/8/EE/A/2/" |
hasPart |
A list of clips in the video. Each clip must focus on a specific topic or problem.
The list of required and recommended properties for the educational Here's an example of a problem walkthrough clip: { "@type": ["Clip","LearningResource"], "learningResourceType": "Problem Walkthrough", "name": "Example 1", "text": "Consider a weight suspended from five wires as shown in Figure. Find the tension in one wire.", "startOffset": 201, "url": "https://www.example.com/example?t=201" } here's an example of a clip that gives an overview of a concept: { "@type": ["Clip","LearningResource"], "learningResourceType": "Concept Overview", "name": "ABC Law", "startOffset": 501, "url": "https://www.example.com/example?t=501" } |
text |
The text of the question that's being solved in the video. This property must include the complete question, not just the title of the question.
If your video solves more than one problem, you can use the same property but at the
"text": "Consider a weight suspended from two wires as shown in Figure. Find the tension in each wire." |
Learning Clip [Clip, LearningResource]
Learning clips can be specified as part of the hasPart
property in learning
videos. Here is a list of recommended properties for clips.
Tag the learning clips with the [Clip, LearningResource]
type. In addition to
the
Clip
required and recommended properties,
add the following properties for learning clips.
Recommended properties | |
---|---|
learningResourceType |
The type of contents in the clip based on what the clip tries to accomplish. If the
clip has a step-by-step solution of a problem, the value can be set to
The list below gives some examples of acceptable values. If your clip doesn't fit in any of these values, you can create a new one, as we are considering new values to support. Note that if the value is not set to one listed below, the information may not be used in any search features. Acceptable values:
"learningResourceType": "Problem walkthrough" |
Problem walkthrough video [VideoObject
, LearningResource
]
A problem walkthrough video is a sub-type of learning video that provides a step-by-step solution of a problem.
Use the [VideoObject, LearningResource]
type for problem walkthrough videos.
In addition to the
VideoObject
required and recommended properties, add the following properties for problem walkthrough
videos.
Required properties | |
---|---|
learningResourceType |
The type of contents in the video based on what the video tries to accomplish. For problem walkthrough videos, this must be set to "Problem walkthrough". "learningResourceType": "Problem walkthrough" |
Recommended properties | |
---|---|
hasPart |
A list of clips in the video. Each clip must focus on a specific problem.
The list of required and recommended properties for the educational Here's an example of a clip with a problem walkthrough: [ { "@type": ["Clip","LearningResource"], "learningResourceType": "Problem Walkthrough", "name": "Example 1", "text": "Consider a weight suspended from five wires as shown in Figure. Find the tension in one wire.", "startOffset": 201, "url": "https://www.example.com/example?t=201" }, { "@type": ["Clip","LearningResource"], "learningResourceType": "Problem Walkthrough", "name": "Example 2", "text": "Consider two weights suspended from five wires as shown in Figure. Find the tension in all wires.", "startOffset": 501, "url": "https://www.example.com/example?t=501" } ] |
text |
The text of the question that's being solved in the video.
If your video solves more than one problem, you can use the same property in the
"text": "Consider a weight suspended from two wires as shown in Figure. Find the tension in each wire." |
Problem walkthrough clip [Clip, LearningResource]
Problem walkthrough clips can be specified as part of the hasPart
property in
learning videos. Problem walkthrough clip is a sub-type of learning clip which has a
step-by-step solution of a problem. Here is a list of required properties for problem
walkthrough clips.
Use the [Clip, LearningResource]
type for learning clips. In addition to the
Clip
required and recommended properties,
add the following properties for problem walkthrough clips.
Required properties | |
---|---|
learningResourceType |
If the clip has a step-by-step solution of a problem, the value must be set to
"learningResourceType": "Problem walkthrough" |
Recommended properties | text |
The text of the question that's being solved in the clip. "text": "Consider a weight suspended from two wires as shown in Figure. Find the tension in each wire." |
---|
Monitor rich results with Search Console
Search Console is a tool that helps you monitor how your pages perform in Google Search. You don't have to sign up for Search Console to be included in Google Search results, but it can help you understand and improve how Google sees your site. We recommend checking Search Console in the following cases:
- After deploying structured data for the first time
- After releasing new templates or updating your code
- Analyzing traffic periodically
After deploying structured data for the first time
After Google has indexed your pages, look for issues using the relevant Rich result status report. Ideally, there will be an increase of valid items, and no increase in invalid items. If you find issues in your structured data:
- Fix the invalid items.
- Inspect a live URL to check if the issue persists.
- Request validation using the status report.
After releasing new templates or updating your code
When you make significant changes to your website, monitor for increases in structured data invalid items.- If you see an increase in invalid items, perhaps you rolled out a new template that doesn't work, or your site interacts with the existing template in a new and bad way.
- If you see a decrease in valid items (not matched by an increase in invalid items), perhaps you are no longer embedding structured data in your pages. Use the URL Inspection tool to learn what is causing the issue.
Analyzing traffic periodically
Analyze your Google Search traffic using the Performance Report. The data will show you how often your page appears as a rich result in Search, how often users click on it and what is the average position you appear on search results. You can also automatically pull these results with the Search Console API.Troubleshooting
If you're having trouble implementing or debugging structured data, here are some resources that may help you.
- If you're using a content management system (CMS) or someone else is taking care of your site, ask them to help you. Make sure to forward any Search Console message that details the issue to them.
- Google does not guarantee that features that consume structured data will show up in search results. For a list of common reasons why Google may not show your content in a rich result, see the General Structured Data Guidelines.
- You might have an error in your structured data. Check the list of structured data errors and the Unparsable structured data report.
- If you received a structured data manual action against your page, the structured data on the page will be ignored (although the page can still appear in Google Search results). To fix structured data issues, use the Manual Actions report.
- Review the guidelines again to identify if your content isn't compliant with the guidelines. The problem can be caused by either spammy content or spammy markup usage. However, the issue may not be a syntax issue, and so the Rich Results Test won't be able to identify these issues.
- Troubleshoot missing rich results / drop in total rich results.
- Allow time for re-crawling and re-indexing. Remember that it may take several days after publishing a page for Google to find and crawl it. For general questions about crawling and indexing, check the Google Search crawling and indexing FAQ.
- Post a question in the Google Search Central forum.
Content doesn't match the structured data
error What caused the issue: A page
includes content that doesn't match the structured data on the page. For example, the title of
a video on the page doesn't match the value listed for the name
property. There
may also be spammy content, like click-baity titles and descriptions, or the markup isn't
representative of the actual video. You may have received this Search Console message:
"Structured data policy violation - Content on pages found to be different than structured
data on the page".
done Fix the issue
- Verify that the structured data aligns with the actual content on the page.
- Use the URL Inspection tool to make sure that the content is visible on the rendered page (the rendered page is how Google sees your page).
- After you resolve the issue, submit your site for reconsideration.