
video-optimization
When the user wants to optimize videos for Google Search, video sitemap, VideoObject schema, or video SEO on websites. Also use when the user mentions "video SEO," "video sitemap," "VideoObject," "video thumbnail," "video indexing," "video preview," "key moments," "Clip schema," or "embedded video optimization." For page template, use article-page-generator.
- Installs
- 1K
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/kostja94/marketing-skills --skill video-optimization- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads video-optimization automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
SEO On-Page: Video Optimization
Guides video optimization for Google Search (main results, video mode, Google Images, Discover), video sitemap, VideoObject schema, and indexing. Note: Google now prioritizes YouTube video results in search; YouTube + Reddit comprise ~78% of social media citations in AI Overviews. For YouTube-specific optimization, see youtube-seo; for GEO distribution via YouTube, see generative-engine-optimization. References: Google Video SEO, Semrush YouTube SEO.
When invoking: On first use, if helpful, open with 1–2 sentences on what this skill covers and why it matters, then provide the main output. On subsequent use or when the user asks to skip, go directly to the main output.
Scope
- Discovery & indexing: HTML embed elements, video sitemap
- Metadata: Title, description, thumbnail; stable URLs
- Structured data: VideoObject schema
- Features: Video preview, key moments (Clip, SeekToAction), LIVE badge
- YouTube prioritization: Google favors YouTube in search; embed or host on YouTube for GEO citation
YouTube in Google Search (2025+)
Google prioritizes YouTube video results across search. YouTube receives 48.6B monthly visits (second to Google.com) and is treated as core search infrastructure for AI-driven discovery. Search Engine Land
| Context | Implication |
|---|---|
| AI Overviews | YouTube citations surged 25.21% since Jan 2025; instructional (+35.6%), visual demos (+32.5%); long-form dominates (94%) |
| GEO | YouTube + Reddit = ~78% of social media citations; Perplexity (38.7%) and Google AI Overviews (36.6%) drive most YouTube citations |
| Strategy | Embed YouTube on site pages for dual indexing; or host on YouTube for GEO citation. See youtube-seo, generative-engine-optimization |
Initial Assessment
Project context: Read root contextus.md when present and load only the modules relevant to this task. Without Contextus, use available project material or user-provided facts and ask for missing information; do not create a parallel context system.
Identify:
- Hosting: Self-hosted vs YouTube/Vimeo embed
- Page type: Dedicated watch page vs supplementary (e.g. blog with embedded video)
- Features needed: Preview, key moments, LIVE badge
1. Discovery & Indexing
Use Standard HTML Embed Elements
Google finds videos in <video>, <embed>, <iframe>, or <object>. Do not use fragment identifiers to load video; avoid requiring user interaction (click, swipe) to load.
| Do | Don't |
|---|---|
<video><source src="...mp4"/></video> | Fragment-only load; JS-injected without fallback |
<iframe src="https://youtube.com/embed/..."> | Hide video behind paywall without paywall structured data |
JavaScript injection: If video is injected via JS, ensure it appears in rendered HTML; use URL Inspection in Search Console. If using Media Source API, inject HTML video container even when API fails so Google can find metadata.
Video Sitemap
Submit a video sitemap to help Google discover videos. Use <video:video> extension; <loc> = watch page URL.
Structure (from Google):
<?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/watch-page.html</loc>
<video:video>
<video:thumbnail_loc>https://example.com/thumbs/123.jpg</video:thumbnail_loc>
<video:title>Grilling steaks for summer</video:title>
<video:description>Bob shows you how to grill steaks perfectly.</video:description>
<video:player_loc>https://example.com/player?video=123</video:player_loc>
</video:video>
</url>
</urlset>
See xml-sitemap for sitemap index. Video sitemap is an extension; can be standalone or combined.
Indexing Requirements
- Watch page must be indexed and perform well in search
- Video embedded on watch page; not hidden behind elements
- Thumbnail: Valid, stable URL; ≥60×30 px; ≥80% alpha >250 (no heavy transparency)
- Supported formats: 3GP, 3G2, ASF, AVI, DivX, M2V, M3U, M3U8, M4V, MKV, MOV, MP4, MPEG, OGV, WebM, WMV, etc. Data URLs not supported.
Dedicated Watch Page
For video features (main results, video mode, key moments, LIVE badge), create a dedicated watch page per video—page whose primary purpose is to display that video. Examples: video landing page, episode player page, news video page. Not watch pages: blog with embedded video, product page with 360° video, category page with multiple videos.
2. Stable URLs
- Thumbnail: Stable URL; CDNs with fast-expiring URLs can prevent indexing
- Content URL: Stable for video preview and key moments; use
contentUrlin VideoObject - Player URL: Stable for
embedUrl/player_loc
3. Thumbnail & Metadata
Thumbnail Sources (in priority order)
| Source | How |
|---|---|
<video> poster | poster attribute |
| Video sitemap | <video:thumbnail_loc> |
| VideoObject | thumbnailUrl |
| OGP | og:video:image |
Use same thumbnail URL across all metadata sources.
Thumbnail Specs
| Spec | Requirement |
|---|---|
| Formats | BMP, GIF, JPEG, PNG, WebP, SVG, AVIF |
| Size | Min 60×30 px; larger preferred |
| Transparency | ≥80% of pixels with alpha >250 |
| Access | Must be crawlable (no robots.txt block, no login) |
Unique Metadata per Video
Provide unique thumbnailUrl, name, and description for each video in structured data and sitemap. Consistency with visible content is required.
4. VideoObject Schema
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "Grilling steaks for summer",
"description": "Bob shows you how to grill steaks perfectly every time.",
"thumbnailUrl": "https://example.com/thumbs/123.jpg",
"uploadDate": "2025-01-15T08:00:00Z",
"contentUrl": "https://example.com/video/123.mp4",
"embedUrl": "https://example.com/player?video=123"
}
Required for rich results: thumbnailUrl, name, description. Add contentUrl for video preview and key moments. See schema-markup for full VideoObject; serp-features for Video SERP feature.
5. Video Features
Video Preview
Google selects short clips as dynamic previews. Allow Google to fetch video file; use max-video-preview robots meta to limit duration.
Key Moments (Chapters)
| Method | Use |
|---|---|
| Clip | Exact start/end + label per segment; all languages |
| SeekToAction | Tell Google where timestamps live in URL; auto-detect; supported languages: en, es, pt, it, zh, fr, ja, de, tr, ko, nl, ru |
| YouTube | Timestamps in description; see youtube-seo |
Disable key moments: nosnippet meta.
LIVE Badge
Use BroadcastEvent schema for live streams to show "LIVE" in results.
6. Allow Google to Fetch Video File
For video preview and key moments, Google must fetch the actual video bytes. Do not block contentUrl with noindex or robots.txt. Use stable URLs; ensure both watch page host and video/CDN host have sufficient capacity for crawling.
7. Third-Party Embeds (YouTube, Vimeo)
Google may index both your page and the platform's page. For your watch page: still add VideoObject and optionally video sitemap. For more features (preview, key moments), confirm the platform allows Google to fetch video files.
8. Removal & Restrictions
- Remove: 404 on watch page, or
noindex; or setexpiresin schema /<video:expiration_date>in sitemap - Geo-restrict:
regionsAllowedorineligibleRegionin VideoObject;<video:restriction>in sitemap
9. SafeSearch & Monitoring
- Mark pages appropriately for SafeSearch if content is adult. See Google SafeSearch.
- Search Console: Video indexing report; Video rich results report; Performance filtered by "Video" search appearance.
Specs by Context
| Context | Priority | Notes |
|---|---|---|
| Website video | VideoObject, sitemap, thumbnail | This skill |
| YouTube | Title, description, chapters, thumbnail | See youtube-seo |
| GEO / AI citation | YouTube distribution; long-form | See generative-engine-optimization |
| Featured Snippet (video) | Video schema; timestamps | See featured-snippet |
Related Skills
- youtube-seo: YouTube titles, descriptions, thumbnails, chapters
- schema-markup: VideoObject, BroadcastEvent; rich results
- serp-features: Video SERP feature; rich results
- featured-snippet: Video snippet format
- xml-sitemap: Video sitemap extension
- google-search-console: Video indexing report; Video rich results
FAQ
What does the video-optimization skill do?
When the user wants to optimize videos for Google Search, video sitemap, VideoObject schema, or video SEO on websites. Also use when the user mentions "video SEO," "video sitemap," "VideoObject," "video thumbnail," "video indexing," "video preview," "key moments," "Clip schema," or "embedded video optimization." For page template, use article-page-generator.
How do I install video-optimization?
Run npx skills add https://github.com/kostja94/marketing-skills --skill video-optimization in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/video-optimization/ (personal) or .claude/skills/video-optimization/ (project).
Which AI agents can use video-optimization?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is video-optimization safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains video-optimization?
It is published by kostja94 in kostja94/marketing-skills. It has 1,037 recorded installs.
More from kostja94/marketing-skills
copywriting
kostja94/marketing-skills
When the user wants to write or optimize short-form marketing copy—headlines, CTAs, ad copy, landing page copy, email copy. Also use when the user mentions "copywriting," "headline," "CTA copy," "ad copy," "landing page copy," "sales copy," "conversion copy," "PAS," "AIDA," "BAB," "copy formula," or "differentiation." For long-form article bodies (blog posts, guides), use article-content.
linkedin-posts
kostja94/marketing-skills
When the user wants to create LinkedIn post copy or optimize for LinkedIn. Also use when the user mentions "LinkedIn post," "LinkedIn article," "professional post," "post to LinkedIn," "LinkedIn content," "LinkedIn copy," "B2B LinkedIn," "LinkedIn engagement," "LinkedIn feed," "share box," "document post," "poll," "Newsletter," "reshare," or "LinkedIn marketing." For LinkedIn ads, use linkedin-ads.
youtube-seo
kostja94/marketing-skills
When the user wants to optimize YouTube videos for search, create video descriptions, or improve channel visibility. Also use when the user mentions "YouTube SEO," "YouTube description," "YouTube tags," "YouTube thumbnail," "YouTube title," "YouTube channel," or "video SEO." For YouTube ads, use youtube-ads.
video-marketing
kostja94/marketing-skills
When the user wants to plan video marketing, create video scripts, or optimize for short-form or long-form video. Also use when the user mentions "video marketing," "video script," "short-form video," "long-form video," "TikTok script," "Reels script," "YouTube script," "video hook," or "video content strategy." For on-site video SEO, use video-optimization.
tiktok-captions
kostja94/marketing-skills
When the user wants to create TikTok video captions, scripts, or optimize for TikTok. Also use when the user mentions "TikTok post," "TikTok caption," "TikTok video," "post to TikTok," "TikTok script," "TikTok content," "TikTok copy," "TikTok hashtags," or "TikTok marketing." For TikTok ads, use tiktok-ads.
local-seo
kostja94/marketing-skills
When the user wants to optimize for local search, set up Google Business Profile, or build local citations. Also use when the user mentions "local SEO," "Google Business Profile," "Google Maps," "NAP," "citations," "local search," "local business," or "service area." For location pages, use programmatic-seo.
Popular media & creative skills
hyperframes
heygen-com/hyperframes
Read first to make, edit, animate or render any video with HyperFrames (HTML rendered to video), including launch films, explainers, music videos, charts, maps, vertical clips, title cards, captions and overlays. Holds the render contract, the work loop and what each kind of video needs.
media-use
heygen-com/hyperframes
Get or make any media for a HyperFrames video - music, sound effects, images, icons, logos, voiceover, avatar and generated video, transcripts, cutouts, colour grades and looks - with HeyGen or free local tools, and mix placed audio. Also for footage that looks dark, flat or dull, or should be stylized or hidden.
hyperframes-registry
heygen-com/hyperframes
About 450 ready-made HyperFrames blocks and components installed as editable source - transitions, overlays, titles, kinetic type, captions, charts, map overlays, 3D, camera moves. Use it before hand-building any named visual (CRT scanlines, glitch, film grain, a chart); also for hyperframes add and catalog.
hyperframes-creative
heygen-com/hyperframes
Non-animation creative direction for HyperFrames videos. Use for design spec (frame.md / design.md) handling, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns, and brand / style decisions. For atomic motion patterns and scene blueprints, use hyperframes-animation.
ai-video-generation
101-skills/superpowers
Generate AI videos with Google Veo, Seedance 2.0, HappyHorse, Wan, Grok and 40+ models via inference.sh CLI. Models: Veo 3.1, Veo 3, Seedance 2.0, HappyHorse 1.0, Wan 2.5, Grok Imagine Video, OmniHuman, Fabric, HunyuanVideo. Capabilities: text-to-video, image-to-video, reference-to-video, video editing, lipsync, avatar animation, video upscaling, foley sound. Use for: social media videos, marketing content, explainer videos, product demos, AI avatars. Triggers: video generation, ai video, text to video, image to video, veo, animate image, video from image, ai animation, video generator, generate video, t2v, i2v, ai video maker, create video with ai, runway alternative, pika alternative, sora alternative, kling alternative, seedance, happyhorse
ai-image-generation
101-skills/superpowers
Generate AI images with GPT-Image-2, FLUX, Gemini, Grok, Seedream, Reve and 50+ models via inference.sh CLI. Models: GPT-Image-2, FLUX Dev LoRA, FLUX.2 Klein LoRA, Gemini 3 Pro Image, Grok Imagine, Seedream 4.5, Reve, ImagineArt. Capabilities: text-to-image, image-to-image, inpainting, LoRA, image editing, upscaling, text rendering. Use for: AI art, product mockups, concept art, social media graphics, marketing visuals, illustrations. Triggers: flux, image generation, ai image, text to image, stable diffusion, generate image, ai art, midjourney alternative, dall-e alternative, text2img, t2i, image generator, ai picture, create image with ai, generative ai, ai illustration, grok image, gemini image, gpt image, openai image, chatgpt image