Skip to main content
Generalfusengine

seo-video

Use when optimizing video SEO. Covers VideoObject schema, YouTube metadata, transcripts, chapters, SeekToAction, Clip schema for key moments, BroadcastEvent for live streams.

Stars
13
Source
fusengine/agents
Updated
2026-05-17
Slug
fusengine--agents--seo-video
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/fusengine/agents/HEAD/plugins/seo/skills/seo-video/SKILL.md -o .claude/skills/seo-video.md

Drops the SKILL.md into .claude/skills/seo-video.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

Video SEO

VideoObject Schema (required)

{
  "@type": "VideoObject",
  "name": "<title>",
  "description": "<description>",
  "thumbnailUrl": ["<url-16x9>", "<url-4x3>", "<url-1x1>"],
  "uploadDate": "2026-05-01T08:00:00+00:00",
  "duration": "PT2M30S",
  "contentUrl": "<url>",
  "embedUrl": "<url>"
}

YouTube Optimization

  • Title: 60 chars max, keyword first
  • Description: 250 words minimum, timestamps, links
  • Tags: 5-10 specific, no keyword stuffing
  • Thumbnail: 1280x720, high contrast, faces convert well
  • Chapters: required for videos > 5 min
  • Closed captions: always (accessibility + indexability)
  • End screens + cards: for retention

Transcripts

  • Embed full transcript below video (indexable text)
  • Use <details><summary>Transcript</summary>...</details> for collapsible
  • Timestamp links: <a href="#t=120">2:00</a>

Chapters / Clip Schema

{
  "@type": "Clip",
  "name": "Introduction",
  "startOffset": 0,
  "endOffset": 90,
  "url": "https://example.com/video#t=0"
}

SeekToAction (enable seek in rich results)

"potentialAction": {
  "@type": "SeekToAction",
  "target": "https://example.com/video?t={seek_to_second_number}",
  "startOffset-input": "required name=seek_to_second_number"
}

Live Streaming

  • BroadcastEvent schema for LIVE badge
  • Requires isLiveBroadcast: true, startDate, endDate