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.
In this repository29 other files it gives its agents.
- ai-bot-log-analysisSkill
- ai-crawler-policySkill
- ai-visibility-auditSkill
- best-of-listicle-pagesSkill
- canonical-duplicate-contentSkill
- comparison-alternatives-pagesSkill
- content-refreshSkill
- core-web-vitalsSkill
- ecommerce-seoSkill
- eeat-author-pagesSkill
- entity-brand-consistencySkill
- featured-snippet-passagesSkill
- glossary-definition-hubSkill
- hreflang-international-seoSkill
- image-seoSkill
- internal-linking-architectureSkill
- keyword-cannibalizationSkill
- keyword-research-briefsSkill
- link-building-outreachSkill
- local-seoSkill
- nextjs-seoSkill
- programmatic-seoSkill
- redirect-migration-planSkill
- schema-markupSkill
- search-console-analysisSkill
- shopify-seoSkill
- technical-seo-auditSkill
- topical-authority-mapSkill
- wordpress-seoSkill
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
- Distinctive: line 76
Do it properly rather than dumping raw output:
- Distinctive: line 79
Add headings that match the video's chapters.
- Distinctive: line 81
Keep it as visible text in the HTML.
≈ “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.
Files
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
| Hosting | Ranks in Google video | Drives YouTube growth | Keeps traffic on your site |
| YouTube embed | Yes, but the YouTube URL ranks | Yes | No |
| Self-hosted or Vimeo/Mux on your page | Yes, your page ranks | No | Yes |
| Both (YouTube + embed on your page) | Usually the YouTube URL wins | Yes | Partially |
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:
durationis ISO 8601.PT12M34S, not12:34.uploadDateneeds a timezone offset.thumbnailUrlmust be publicly accessible and at least 1200px wide for most placements. A thumbnail behind auth silently invalidates the block.contentUrlorembedUrl, ideally both. Without either, Google can't index the video itself.hasPartwithClipentries 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 policyIn 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
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
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.

