youtube-seo-video — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited youtube-seo-video (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Diagnose why a video underperforms and produce a paste-ready fix kit. Retention and CTR are the primary levers; metadata is secondary. Always ask for the Studio CSV export if the user wants retention diagnosis — never guess Tier 1 numbers.
duration, upload date, channel, visible chapters
scripts/fetch_video.py or direct call) → full JSONmetadata, tags, full description, chapters, thumbnails, captions
contentDetails,topicDetails,status,player,liveStreamingDetails and captions.list + captions.download` (if OAuth)
transcription from audio stream
by source, impressions, audience tab, real-time first-24h curve
-f null -` → integrated LUFS, true peak
scripts/analyze_thumbnail.pythumbnails and titles for differentiation scoring
Diagnose from the Studio retention curve:
Diagnose: weak first sentence, no payoff preview, long logo animation, re-introducing yourself ("Hey guys welcome back..."), asking to subscribe before value delivery.
with title/thumbnail.
cliffs to transcript timestamps and identify:
middle.
If it drops hard, end-screen is poorly placed or content feels done before the promise delivered.
Reuse as chapter titles, thumbnails, Shorts clips.
If the curve is not provided, state explicitly that retention diagnosis is unavailable and score only metadata, thumbnail, and engagement proxies.
emotional driver in first 40 chars for Browse (which surface matters?)
A video should commit to one dominant hook type that matches surface.
Browse impressions.
title? If no, score down (long-term CTR decay).
restate title intent, give a click-for-more reason
should mention for topic classification. Check transcript + description for coverage. Missing entities = missed semantic relevance.
0:00, ≥3, each ≥10s, descriptive(M:SS - label or MM:SS label), eligible for Google Search carousel
description and transcript (consistency strengthens classification)
Delegate to youtube-seo-thumbnail for full treatment. Include a quick score here:
0:00VideoObject with hasPart[].Clip andSeekToAction entries so the embed/page unlocks Google "Key Moments" rich result (see optimize skill for code)
Run FFmpeg loudnorm analysis. Flag:
else 60-70% mark)
If the video is a Short, apply Shorts-specific rules INSTEAD of the long- form retention analysis:
Overall Score: XX/100 (vs niche median: X.Xx)
Retention: XX/100 ████████░░ [requires Studio CSV]
Title: XX/100 ██████████
Description: XX/100 ███████░░░
Tags: XX/100 █████░░░░░
Thumbnail: XX/100 ████████░░
Chapters: XX/100 ██████░░░░
Captions: XX/100 ███████░░░
Audio Loudness: XX/100 ████████░░
Engagement: XX/100 ███████░░░
Technical/Safety: XX/100 █████████░Rank the 3 largest drags on performance in order, each with estimated impact (e.g., "Hook problem — fixing 0:15 retention from 55% → 70% adds ~20% AVD, estimated +30% impressions").
Critical → High → Medium → Low with one-line fixes and Tier reference.
Hand off to youtube-seo-optimize for full rewrites OR inline:
VideoObject + Clip + SeekToAction JSON-LD schema block| Change | Metric to watch | Window | Success threshold |
|---|---|---|---|
| New title | Browse CTR | 7 days | +15% vs baseline |
| New thumbnail | Impressions CTR | 14 days | +1 absolute pt |
| Fixed intro | 0:30 retention | next upload | ≥70% |
| Key Moments schema | Google Search video clicks | 30 days | first rich result |
| Scenario | Action |
|---|---|
| No Studio CSV | Score retention as "unknown"; do not fabricate a curve |
| Tags not visible | Use API or ask; never invent a tag list |
| Video <48h old | Flag that velocity and CTR data are too early to judge |
| Private/unlisted | Ask for unlisted-shareable link or metadata paste |
| Shorts video | Use Shorts ruleset; skip long-form retention checks |
| Live stream VOD | Analyze the VOD as long-form but flag that chat spikes distort retention |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.