Tilbage til Schema
🎥

Video Schema

Optimer video content med VideoObject structured data

Hvad er Video Schema?

VideoObject schema hjælper Google med at forstå video content på din side. Det kan give video thumbnails, play buttons og metadata i søgeresultater.

Fordele:

  • • Video rich snippets i søgeresultater
  • • Google Video carousel eligibility
  • • YouTube-lignende thumbnails i SERP
  • • Duration og upload date synlig
  • • Højere CTR for video content

Required Properties

name

Video titel

description

Video beskrivelse

thumbnailUrl

URL til thumbnail (min 160x90px)

uploadDate

ISO 8601 format dato

Basic Example

Minimal Video Schema

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "Guide til SEO Optimering",
  "description": "Lær de vigtigste SEO teknikker i denne 15 minutters guide",
  "thumbnailUrl": "https://example.com/thumbnail.jpg",
  "uploadDate": "2024-01-15T08:00:00+00:00"
}

Complete Example

Fuldt VideoObject Schema

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "Guide til SEO Optimering 2024",
  "description": "En komplet guide til moderne SEO teknikker. Lær om redirects, canonical URLs, schema markup og meget mere.",
  "thumbnailUrl": [
    "https://example.com/thumbnail-1200x675.jpg",
    "https://example.com/thumbnail-1280x720.jpg"
  ],
  "uploadDate": "2024-01-15T08:00:00+00:00",
  "duration": "PT15M30S",
  "contentUrl": "https://example.com/video.mp4",
  "embedUrl": "https://example.com/embed/video",
  "interactionStatistic": {
    "@type": "InteractionCounter",
    "interactionType": { "@type": "WatchAction" },
    "userInteractionCount": 5647
  },
  "publisher": {
    "@type": "Organization",
    "name": "SEO Eksperterne",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo.png"
    }
  },
  "author": {
    "@type": "Person",
    "name": "Anders Andersen"
  },
  "inLanguage": "da-DK",
  "isFamilyFriendly": true,
  "regionsAllowed": "DK,SE,NO"
}

Duration Format (ISO 8601)

Brug ISO 8601 duration format: PT[hours]H[minutes]M[seconds]S

PT1M30S = 1 minut 30 sekunder
PT5M = 5 minutter
PT1H15M30S = 1 time 15 minutter 30 sekunder
PT2H = 2 timer

Video on Page vs Embedded

Self-Hosted Video

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "Video Title",
  "contentUrl": "https://example.com/video.mp4",
  "embedUrl": "https://example.com/embed/video-id"
}

YouTube Embedded

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "Video Title",
  "embedUrl": "https://www.youtube.com/embed/VIDEO_ID",
  "thumbnailUrl": "https://i.ytimg.com/vi/VIDEO_ID/maxresdefault.jpg"
}

Vimeo Embedded

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "Video Title",
  "embedUrl": "https://player.vimeo.com/video/VIDEO_ID",
  "thumbnailUrl": "https://i.vimeocdn.com/video/VIDEO_ID_640x360.jpg"
}

Video Clips (Seek to Time)

Tilføj Clip markup for key moments / chapters i video:

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "SEO Guide 2024",
  "hasPart": [
    {
      "@type": "Clip",
      "name": "Intro til SEO",
      "startOffset": 0,
      "endOffset": 120,
      "url": "https://example.com/video?t=0"
    },
    {
      "@type": "Clip",
      "name": "Redirects forklaret",
      "startOffset": 120,
      "endOffset": 300,
      "url": "https://example.com/video?t=120"
    },
    {
      "@type": "Clip",
      "name": "Schema Markup",
      "startOffset": 300,
      "endOffset": 480,
      "url": "https://example.com/video?t=300"
    }
  ]
}

Next.js Implementation

// app/videos/[slug]/page.tsx
export default function VideoPage({ params }) {
  const video = getVideo(params.slug);

  const videoSchema = {
    "@context": "https://schema.org",
    "@type": "VideoObject",
    "name": video.title,
    "description": video.description,
    "thumbnailUrl": video.thumbnail,
    "uploadDate": video.publishedAt,
    "duration": `PT${video.durationMinutes}M${video.durationSeconds}S`,
    "contentUrl": video.videoUrl,
    "embedUrl": video.embedUrl,
    "author": {
      "@type": "Person",
      "name": video.author.name
    },
    "publisher": {
      "@type": "Organization",
      "name": "Dit Site Navn",
      "logo": {
        "@type": "ImageObject",
        "url": "https://example.com/logo.png"
      }
    }
  };

  return (
    <>
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{
          __html: JSON.stringify(videoSchema)
        }}
      />
      <div className="video-container">
        {/* Video player */}
      </div>
    </>
  );
}

Thumbnail Requirements

Google's Thumbnail Guidelines:

  • Minimum størrelse: 160x90 pixels
  • Anbefalet: 1280x720 pixels (16:9)
  • Format: JPG, PNG, eller WebP
  • Max størrelse: Under 5MB
  • Accessible: Ikke blocked i robots.txt
  • Representative: Skal vise video content

Video Sitemap

Alternativt kan du bruge video sitemap i stedet for schema markup:

<?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/videos/seo-guide</loc>
    <video:video>
      <video:thumbnail_loc>https://example.com/thumbnail.jpg</video:thumbnail_loc>
      <video:title>Guide til SEO</video:title>
      <video:description>Lær SEO teknikker...</video:description>
      <video:content_loc>https://example.com/video.mp4</video:content_loc>
      <video:duration>930</video:duration>
      <video:publication_date>2024-01-15T08:00:00+00:00</video:publication_date>
    </video:video>
  </url>
</urlset>

Best Practices

✓ Gør dette

  • • Brug high-quality thumbnails (1280x720)
  • • Inkluder nøjagtig duration
  • • Skriv beskrivende video titler
  • • Tilføj video transcript på siden
  • • Brug unique thumbnails per video
  • • Test med Rich Results Tool

✗ Undgå dette

  • • For små thumbnails (<160x90)
  • • Thumbnails blocked i robots.txt
  • • Misleading video beskrivelser
  • • Manglende required properties
  • • Video bag paywall uden markup
  • • Duplicate schema for samme video