agentleFS
keuperakeupera/seo-skills/skills/video-seo/SKILL.md

video-seo

Skill0 starsChanged 2 months agoMITView on GitHub

Get video content found in Google video results, on YouTube, and cited by AI assistants — VideoObject schema, transcripts, chapters, hosting choices and video sitemaps. Use whenever the user mentions video SEO, YouTube SEO, video schema, VideoObject, video sitemaps, key moments, video chapters, transcripts, captions, embedding video, or wants video content to rank. Also use when adding video to a page or planning a video content strategy.

The file

We split this skill into the rules it gives an agent

3 rules. About 0 are common, 3 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈3

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Do it properly rather than dumping raw output:

    line 76
  2. Distinctive:

    Add headings that match the video's chapters.

    line 79
  3. Distinctive:

    Keep it as visible text in the HTML.

    line 81

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Video SEO

Video ranks in three separate places with three separate mechanisms: Google video results and the video carousel, YouTube's own search and recommendation system, and increasingly as a source that AI assistants cite via the transcript. Optimising for one does little for the others, so decide which one matters before starting.

The single highest-leverage action across all three is publishing the transcript as real text. Almost nobody does it, and it's what makes a video's content searchable at all.

Decide where the video lives

HostingRanks in Google videoDrives YouTube growthKeeps traffic on your site
YouTube embedYes, but the YouTube URL ranksYesNo
Self-hosted or Vimeo/Mux on your pageYes, your page ranksNoYes
Both (YouTube + embed on your page)Usually the YouTube URL winsYesPartially

The trade is real and people avoid deciding it. If the goal is traffic to your site and conversions, self-host or use a player that doesn't own the canonical URL. If the goal is reach and subscribers, use YouTube. Doing both usually means YouTube's URL outranks your page for the same content.

VideoObject schema

Required for a video to be eligible for video rich results at all. Without it, an embedded video is mostly invisible to Google as video.

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "How to set up SPF, DKIM and DMARC",
  "description": "A 12-minute walkthrough of configuring email authentication, with the exact DNS records.",
  "thumbnailUrl": ["https://example.com/thumb-16x9.jpg"],
  "uploadDate": "2026-09-07T09:00:00+02:00",
  "duration": "PT12M34S",
  "contentUrl": "https://example.com/video/spf-dkim-dmarc.mp4",
  "embedUrl": "https://example.com/embed/spf-dkim-dmarc",
  "publisher": { "@id": "https://example.com/#organization" },
  "hasPart": [
    {
      "@type": "Clip",
      "name": "Creating the SPF record",
      "startOffset": 92,
      "url": "https://example.com/video/spf-dkim-dmarc?t=92"
    },
    {
      "@type": "Clip",
      "name": "Choosing a DMARC policy",
      "startOffset": 415,
      "url": "https://example.com/video/spf-dkim-dmarc?t=415"
    }
  ]
}

Details that break it:

  • duration is ISO 8601. PT12M34S, not 12:34.
  • uploadDate needs a timezone offset.
  • thumbnailUrl must be publicly accessible and at least 1200px wide for most placements. A thumbnail behind auth silently invalidates the block.
  • contentUrl or embedUrl, ideally both. Without either, Google can't index the video itself.
  • hasPart with Clip entries produces key moments in the SERP, which is a much larger result with jump links. It's the highest-return optional property here and almost nobody adds it.

Full schema guidance is in schema-markup.

Transcripts

Publish the full transcript as text on the page. Not in a modal, not behind a "show transcript" that fetches on click, not as a downloadable file.

Why it matters more than everything else on this page:

  • It's the only searchable representation of what the video says. Search engines don't watch video.
  • It's the only representation AI retrieval agents can use. They don't play video, and most don't render JavaScript. A page with an embed and no transcript is an empty page to them.
  • It's accessible, and in many jurisdictions for many organisations, required.
  • It ranks for long-tail phrasing you'd never target deliberately, because people say things in videos they'd never write in a heading.

Do it properly rather than dumping raw output:

  • Clean up the auto-generated version. Fix names, technical terms, and the false starts.
  • Add headings that match the video's chapters.
  • Timestamp the sections and link them to the player position.
  • Keep it as visible text in the HTML.

A page with a video, a good transcript formatted with headings, and the key points written out as prose ranks and gets cited on the strength of the text. The video is what makes people stay.

Chapters and key moments

Chapters produce the expanded SERP result with jump links, and they help viewers. Two ways to declare them, and doing both is fine:

In the description, YouTube-style, starting at 0:00:

0:00 Introduction
1:32 Creating the SPF record
4:10 Adding DKIM
6:55 Choosing a DMARC policy

In schema, as the hasPart array above. This is the one that works for self-hosted video.

Name chapters as the questions they answer, not as section labels. "Choosing a DMARC policy" beats "Part 3".

Video sitemaps

For self-hosted video at any scale, extend the sitemap:

<url>
  <loc>https://example.com/guides/email-auth</loc>
  <video:video>
    <video:thumbnail_loc>https://example.com/thumb-16x9.jpg</video:thumbnail_loc>
    <video:title>How to set up SPF, DKIM and DMARC</video:title>
    <video:description>A 12-minute walkthrough with the exact DNS records.</video:description>
    <video:content_loc>https://example.com/video/spf-dkim-dmarc.mp4</video:content_loc>
    <video:duration>754</video:duration>
    <video:publication_date>2026-09-07T09:00:00+02:00</video:publication_date>
  </video:video>
</url>

YouTube specifically

YouTube's ranking system is closer to a recommendation engine than a search engine, and it optimises for watch time and satisfaction.

  • The title and thumbnail decide the click. They're roughly the whole top of the funnel. Test them.
  • The first 30 seconds decide retention, which drives everything downstream. Get to the substance immediately.
  • Write a real description. The first two lines show in search; the rest is context for the system and links for viewers.
  • Upload a proper caption file rather than relying on auto-captions. It improves accuracy for search and accessibility both.
  • Chapters in the description, always.
  • Tags matter far less than people think. Title, thumbnail, description and retention are the levers.
  • Playlists and end screens drive session time, which YouTube rewards.

Video and AI assistants

Assistants cite video-bearing pages through the text around the video. What gets used:

  • The transcript, which is why it has to be on the page as text
  • The written summary of what the video covers
  • Chapter titles, which read as a structured outline of the content
  • Key facts written out rather than only spoken

The practical rule: assume the video isn't there. If the page still answers the question with the video removed, it's retrievable. If it doesn't, the page is invisible to every text-based retrieval system, however good the video is.

Don't do these

  • Don't embed a video and write nothing. It's an empty page to a crawler and to a model.
  • Don't hide the transcript behind a toggle that fetches on click.
  • Don't auto-play with sound. It's a ranking-adjacent user experience problem and it drives people away.
  • Don't let the video block LCP. Load a poster image, defer the player until interaction. See core-web-vitals.
  • Don't use the same VideoObject block on every page for a video that only exists on one.
  • Don't expect a YouTube embed to make your page rank. Usually it makes YouTube's URL rank instead.

Related skills

schema-markup, image-seo, core-web-vitals, featured-snippet-passages, technical-seo-audit

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.