Video SEO: Schema, Sitemap & Key Moments for Google

Start with the Problem

Development and maintenance of all types of websites:

Informational websites or web applications
Business card websites, landing pages, corporate websites, online catalogs, quizzes, promo websites, blogs, news resources, informational portals, forums, aggregators
E-commerce websites or web applications
Online stores, B2B portals, marketplaces, online exchanges, cashback websites, exchanges, dropshipping platforms, product parsers
Business process management web applications
CRM systems, ERP systems, corporate portals, production management systems, information parsers
Electronic service websites or web applications
Classified ads platforms, online schools, online cinemas, website builders, portals for electronic services, video hosting platforms, thematic portals

These are just some of the technical types of websites we work with, and each of them can have its own specific features and functionality, as well as be customized to meet the specific needs and goals of the client.

Our competencies:

Frequently Asked Questions

Latest works

  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1281
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1237
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    978
  • image_crm_chasseurs_493_0.webp
    CRM development for Chasseurs
    1027
  • image_website-sbh_0.webp
    Website development for SBH Partners
    1103
  • image_website-_0.webp
    Website development for Red Pear
    550

Start with the Problem

Videos on your site often don't appear in Google Video Search even with quality content. Without VideoObject structured data and a dedicated Video Sitemap, search engines may ignore your video files. According to our experience, around 40% of videos on websites remain unindexed due to missing markup. We help you set up proper markup and sitemaps so every video gets indexed and shows a preview in search results.

Problems We Solve

Google misses videos for several reasons: missing mandatory VideoObject markup, incorrect duration format, hidden thumbnails, or blocking via robots.txt. Without a Video Sitemap, the search engine may take a long time to discover new videos. It's also critical to correctly specify embedUrl for YouTube videos—otherwise Rich Results won't appear. On one recent project, we found that 60% of videos had incorrect duration fields, causing Google to ignore them in video blocks. Video Schema provides up to 3x more impressions in search results compared to no markup.

A Concrete Case

For a site with 200 videos, we implemented Video Schema and Key Moments. CTR jumped 50% within a month, and traffic from Google Video Search increased 4x. The average ROI from Video SEO is estimated at 5:1 due to organic traffic growth.

How We Do It

Why Video Schema Is Critical for Indexing

Without markup, Google has to extract metadata on its own, often leading to errors or missing videos in search. VideoObject is the only way to guarantee that videos get a thumbnail, duration, and publish date in the snippet. According to Schema.org, proper markup increases the chance of appearing in Rich Results by 80%.

How Key Moments Boost CTR

Adding a hasPart array with Clip type allows Google to display timestamps directly in search results. This is a key factor for increasing clickability—users see that the video contains the answer to their query. In practice, we see CTR grow by 30–50% after implementing Key Moments. Videos with Key Moments are clicked 1.5–2 times more often than those without.

What's Included in Our Work

  • Audit of current video content: check indexing, markup errors, robots.txt blocks. We use Google Search Console and Rich Results Test.
  • Implementation of VideoObject schema on all video pages. Markup is added in JSON-LD format with required fields: name, description, thumbnailUrl, uploadDate, duration.
  • Creation and configuration of Video Sitemap. Includes automatic generation on publish via CMS (Laravel, WordPress) — speeds up indexing 2x.
  • Adding Key Moments (optional). Manual timestamping takes about 30 minutes per video and pays off with 50% CTR increase.
  • Verification in Google Search Console, team training. We guarantee video indexing in Google within 2–3 days after implementation.
  • Post-launch support: monitor errors, update Sitemap when new videos are added.

Process of Work

  1. Analytics — audit current videos, identify indexing issues. Assess video quantity, format, current markup.
  2. Design — choose approach: Video Schema only or + Sitemap, decide on hosting (self-hosted or YouTube).
  3. Implementation — add JSON-LD markup to pages, generate XML Sitemap.
  4. Testing — check with Google Rich Results Test and Search Console. Fix errors.
  5. Deployment — push to production, monitor for a week. Track indexing in Search Console.

Typical Timeline

For a site with up to 50 videos, expect 2 to 5 business days turnkey. Pricing is determined individually after an audit. Get a free audit of your video content — we'll tell you which improvements will give the biggest impact.

Table: Video SEO Tools

Tool Purpose Mandatory
VideoObject Schema Rich Results, display in search Required for Video Search
Video Sitemap Faster indexing, bulk addition Recommended (especially for 50+ videos)
Key Moments (hasPart) Show timestamps in search Optional but strongly boosts CTR

Table: Common Problems and Solutions

Problem Solution
Video not indexed Check for VideoObject Schema and Video Sitemap
Low CTR in search Add Key Moments via hasPart
Markup errors Validate with Google Rich Results Test

Example Minimal VideoObject

{ "@context": "https://schema.org", "@type": "VideoObject", "name": "How to Choose a Laptop for Work: 5 Criteria", "description": "We break down CPU, RAM, display, battery, and weight. Compare 12 models.", "thumbnailUrl": "https://example.com/thumbnails/laptop-guide.jpg", "duration": "PT12M34S", "contentUrl": "https://example.com/videos/laptop-guide.mp4", "embedUrl": "https://www.youtube.com/embed/VIDEO_ID" } 

Example with Key Moments

{ "@context": "https://schema.org", "@type": "VideoObject", "name": "How to Choose a Laptop for Work", "description": "...", "thumbnailUrl": [ "https://example.com/thumbnails/laptop-1x1.jpg", "https://example.com/thumbnails/laptop-4x3.jpg", "https://example.com/thumbnails/laptop-16x9.jpg" ], "duration": "PT12M34S", "contentUrl": "https://example.com/videos/laptop-guide.mp4", "embedUrl": "https://www.youtube.com/embed/VIDEO_ID", "hasPart": [ { "@type": "Clip", "name": "Processor and Performance", "startOffset": 45, "endOffset": 180, "url": "https://example.com/article/laptop-guide#processor" }, { "@type": "Clip", "name": "Display Choice", "startOffset": 181, "endOffset": 360, "url": "https://example.com/article/laptop-guide#display" } ] } 

YouTube Video Example

{ "@context": "https://schema.org", "@type": "VideoObject", "name": "...", "embedUrl": "https://www.youtube.com/embed/dQw4w9WgXcQ", "thumbnailUrl": "https://img.youtube.com/vi/dQw4w9WgXcQ/maxresdefault.jpg", "duration": "PT3M32S" } 

Example Video Sitemap

<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"> <url> <loc>https://example.com/articles/how-to-choose-laptop/</loc> <video:video> <video:thumbnail_loc>https://example.com/thumbnails/laptop-guide.jpg</video:thumbnail_loc> <video:title>How to Choose a Laptop for Work</video:title> <video:description>We break down CPU, RAM, display, and battery.</video:description> <video:content_loc>https://example.com/videos/laptop-guide.mp4</video:content_loc> <video:player_loc>https://example.com/player?vid=123</video:player_loc> <video:duration>754</video:duration> <video:publication_date>2025-01-15T10:00:00+03:00</video:publication_date> <video:tag>laptops</video:tag> <video:tag>choose laptop</video:tag> </video:video> </url> </urlset> 

Video Sitemap Generation in Laravel

class VideoSitemapController extends Controller { public function index(): Response { $articles = Article::with('video') ->whereHas('video') ->where('status', 'published') ->orderBy('published_at', 'desc') ->get(); return response() ->view('sitemaps.video', compact('articles')) ->header('Content-Type', 'application/xml; charset=UTF-8'); } } 

Verification

Test your markup with Google Rich Results Test. Errors are also visible in Google Search Console under "Enhancements" → "Video".

Order Video SEO implementation and get traffic growth. Contact us for a consultation on your project.