Making Your Video Content Indexable (SEO)
Internet search engines provide end-users a quick and easy to use way to get access to information available on the Internet. As more and more Internet content is multimedia, you need to ensure that your content is properly indexed by the search engines so that users can discover it. This article will provide an overview of how to enable your video content to be SEO enabled and indexed by the various search engines (Google, Yahoo, Microsoft).
There is a standard document, called a sitemap, that search engine indexers look for when examining your site. This document concisely tells the search engines what content is exposed on your site, the metadata for that content, and where that content is located on your site. A sitemap is an XML file that follows a standard specification.
There are two different flavors of sitemaps that you can (and should) create:
- Sitemap - A sitemap that will index your content in the standard text based search engines such as www.google.com or search.yahoo.com
- Video Sitemap - A sitemap that will index your content in media-centric search engines such as video.google.com
Note that both of these sitemaps index the metadata about your video content and provide links to end-users. The difference is where the metadata that is indexed is obtained from and how the content is surfaced in search results.
A proper SEO strategy for your video content will include creating both a standard sitemap as well as a video sitemap. From a priority perspective, you want to create a standard sitemap first and then a video sitemap. Using the Brightcove CMS API, you write a script to generate your video sitemap automatically, rather than compiling it by hand.
Note that Brightcove Learning Services has a sample app for generating video sitemaps using the CMS API.
For more information on building submitting a sitemap, see the Google documentation.
Standard Sitemaps
Sitemaps follow the sitemap specification that is defined here: www.sitemaps.org. The purpose of the sitemap file is to provide a list of URLs on your site to the search engines. The only other information associated with a URL is when the page was last modified and how frequently the page changes. Note that there is no metadata about your content in this index. Because the sitemap is page-centric, we need to create a model where each video in your library will have a unique page, or URL, associated with it. This can be accomplished by having a single page whose behavior and content can be dynamically changed by passing in different query parameters to the page. For example, if you have a URL like https://www.example.com/video.html?videoId=123
, you would have the video.html
page look for the videoId
query parameter (videoId=123
) and modify the contents of the page returned to the browser to contain information about the video with id 123. This would be done on the server-side of your application where the page would look for the ID and then use the Brightcove CMS API to fetch metadata about the video and write it into the page. Alternatively, you could store the URL where the video is published in a custom field, so that the CMS API could retrieve it.
There is also a changefreq
tag in the sitemap that tells search engines how often the content changes. If you update videos frequently, you would need to record that info in a tag or custom field also, so that the CMS API could return it. Many videos are rarely updated, so if that is the case for yours, you could just set the value of the tag to yearly
, or you could omit this optional tag altogether. There is not clear evidence that site crawlers pay much attention to it anyway.
For the purposes of this article, we assume that there is a single landing page on your site which can be used to play back all video content for your site. Different query parameters will be passed to the page to tell the page what video to play back and what video to surface metadata for. For example, let's say you have a page that displays the contents of an entire playlist and queues up a specific video in a player. You tell the page what playlist to display metadata for via a bcpid
query parameter and what video to surface in a player via the bcvid
parameter. Thus, what we want to do is create a URL for every unique playlist and video id combination.
Here is an example of sitemap that would be created:
<?xml version="1.0" encoding="UTF-8" ?>
<urlset xmlns="https://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://www.example.com/video?bclid=345&bctid=123</loc>
<lastmod>2015-01-01</lastmod>
<changefreq>weekly</changefreq>
</url>
<url>
<loc>https://www.example.com/video?bclid=12&bctid=544</loc>
<lastmod>2015-03-01</lastmod>
</url>
</urlset>
To create a sitemap file, you can create a script that uses CMS API requests to walk through the playlists in the Video Cloud account and, for each playlist, walks through its contained videos. For each playlist and video combination, the script creates an entry in the sitemap supplying a unique URL to the playlist/video combination. Once you've created a sitemap file for your site, place the resulting sitemap.xml
file in the root directory of your webserver. For example, if your domain is www.example.com
, the sitemap file would be available at https://www.example.com/sitemap.xml
. Even better would be to automatically generate this file with a server-side application and update the file on your live site.
Video Sitemaps
A video sitemap is similar in concept to the standard sitemap file. The video sitemap file will have an entry per video in your account. In fact, a video sitemap uses the sitemap schema as its base and adds additional tags specific to video metadata.
The table below outlines the tags that Google requires for video sitemaps.
Tag | Required | Description |
---|---|---|
<loc> |
Y | Specifies the landing page (aka play page, referrer page) for the video. |
<video:video> |
Y | Encloses all information about the video. |
<video:thumbnail_loc> |
Y | A URL pointing to the video thumbnail image file. |
<video:title> |
Y | The title of the video. |
<video:description> |
Y | The description of the video. |
<video:content_loc> |
Depends | A URL pointing to the actual video media file. Note: You must specify at least one of <video:player_loc> or <video:content_loc> . |
<video:player_loc> |
Depends | A URL pointing to a player for a specific video. Usually this is the information in the src element of an <embed> tag and should not be the same as the content of the <loc> tag. Note: You must specify at least one of <video:player_loc> or <video:content_loc> . |
For a list of all the supported tags and a more detailed explanation of tags, see the Google documentation.
Below is a sample video sitemap.
<urlset xmlns="https://www.sitemaps.org/schemas/sitemap/0.9" xmlns:video="https://www.google.com/schemas/sitemap-video/1.1"> <url> <loc>https://www.example.com/videos/video_landing_page.html</loc> <video:video> <video:thumbnail_loc>https://www.example.com/thumbs/123.jpg</video:thumbnail_loc> <video:title>Grilling steaks for summer</video:title> <video:description>Get perfectly done steaks every time</video:description> <video:content_loc>https://brightcove04.brightcove.com/22/20318290001/201510/2249/20318290001_4582301804001_4582289844001.mp4?pubId=20318290001&videoId=4582289844001</video:content_loc> <video:player_loc>https://players.brightcove.net/20318290001/default_default/index.html?videoId=4582289844001</video:player_loc> <video:duration>600</video:duration> <video:publication_date>2014-11-05T19:20:30+08:00.</video:publication_date> <video:tag>steak</video:tag> <video:tag>meat</video:tag> <video:tag>summer</video:tag> <video:family_friendly>yes</video:family_friendly> </video:video> </url> </urlset>
Once you've created your video sitemap, you can submit it to Google following the instructions here.
Brightcove Gallery
Brightcove Gallery allows you to create engaging video experiences without the need of any technical resources. Sites built using Brightcove Gallery will automatically compile the video metadata into a video sitemap for you. For more information, see Configuring Search Engine Optimization Settings for a Portal Experience.
Adding context using micro-formats
In addition to video sitemaps, you can increase the visibility of video content on your site by using micro-formats.
While HTML tags tell the browser how to display your content, it doesn't provide any information about what the content means. Your site may be generated from structured data, probably stored in databases, but the structure is lost when it is formatted in HTML. Search engines can benefit from knowing about the structure of the data on your site.
A collection of schemas (i.e. HTML tags) has been created to identify the type of content on your web pages. Search engines including Bing, Google and Yahoo rely on this markup to improve search results.
These schemas, or micro-formats, provide you with a collection of shared vocabularies to add to your markup that will define the content on your web page. You can find details about these tags at schema.org.
For your media player, Brightcove recommends using the VideoObject schema.
Brightcove has created a tool to generate your player publishing code with the micro-format data included. Check out the Video Schema Builder.
Conclusion
A complete SEO strategy for your video content should include creating both a standard sitemap as well as a video sitemap. This will ensure that your content is indexed across the widest swath of search engines. Additionally, your content will be surfaced in the most aesthetically pleasing manner for the point of discovery. This article has outlined an approach for providing a unique URL per video in your account and sample code for generating the sitemap files that the engines will index.