Analyze your uploaded YouTube videos' performance against competitor benchmarks using Playwright MCP...
This skill uses Playwright MCP to navigate to YouTube Studio and competitor videos, extract performance metrics, and generate actionable insights. It compares your uploaded videos against similar competitor content to identify what's working and what to improve.
When reporting metrics, use these markers:
[EXACT] - Read directly from the UI[APPROXIMATE] - Number was visible but might have rounding[COULD NOT EXTRACT] - Unable to read this metricTriggers:
Ask if not provided:
~/YT/Uploaded/ or ~/YT/In Progress/Use Playwright MCP to access your video's analytics:
mcp__plugin_playwright_playwright__browser_navigate to https://studio.youtube.com
mcp__plugin_playwright_playwright__browser_snapshot
If not logged in, prompt user: "Please log into YouTube Studio in the browser window, then tell me when you're ready."
Use the search or content library to find the video, then click into Analytics.
Use browser_snapshot and browser_evaluate to extract:
| Metric | Where to Find | Target |
|---|---|---|
| Views (first 48h) | Overview tab | Context-dependent |
| CTR (Click-through rate) | Reach tab | 4%+ is good, 6%+ is excellent |
| Average view duration | Engagement tab | Higher is better |
| Average % viewed | Engagement tab | 50%+ is top tier |
| First 30 sec retention | Retention graph | 70%+ |
| Traffic sources | Reach tab | Understand where views come from |
| Impressions | Reach tab | How often thumbnail shown |
JavaScript to extract retention data (example):
() => {
// Extract visible metrics from the analytics page
const metrics = {};
const cards = document.querySelectorAll('[class*="metric"]');
cards.forEach(card => {
const label = card.querySelector('[class*="label"]')?.textContent;
const value = card.querySelector('[class*="value"]')?.textContent;
if (label && value) metrics[label] = value;
});
return JSON.stringify(metrics);
}
Take a screenshot of the retention graph:
mcp__plugin_playwright_playwright__browser_take_screenshot with filename "retention-curve.png"
Analyze the curve shape:
If user wants comparison:
"Provide 1-3 competitor videos covering similar topics for comparison"
mcp__plugin_playwright_playwright__browser_navigate to https://www.youtube.com/watch?v=VIDEO_ID
Compare your video's metrics against competitors, adjusting for:
Read the channel baseline file: ~/YT/_Analytics/channel-baseline.md
Compare this video's metrics against YOUR OWN averages:
| Metric | This Video | Your Avg | vs Baseline |
|---|---|---|---|
| Views (48h) | [extracted] | [from file] | Above/Below |
| CTR | [extracted] | [from file] | Above/Below |
| Retention | [extracted] | [from file] | Above/Below |
| First 30s | [extracted] | [from file] | Above/Below |
Interpretation:
Why this matters:
Navigate to YouTube Studio Shorts analytics:
Create a report in the video's todo.md or a new analytics-report.md:
# Performance Analysis: [Video Title]
**Analyzed:** [Date]
**Video URL:** [URL]
**Days Since Publish:** [X]
## Key Metrics
| Metric | Your Video | Target | Status |
|--------|------------|--------|--------|
| Views (first 48h) | | | |
| CTR | | 4%+ | |
| Avg View Duration | | | |
| Retention | | 50%+ | |
| First 30s Retention | | 70%+ | |
## Retention Curve Analysis
[Description of curve shape and what it means]
## Traffic Sources Breakdown
| Source | % of Views | Notes |
|--------|-----------|-------|
| Browse | | |
| Search | | |
| Suggested | | |
| External | | |
## Baseline Comparison (vs YOUR channel averages)
| Metric | This Video | Your Avg | vs Baseline | Interpretation |
|--------|------------|----------|-------------|----------------|
| Views (48h) | | | | |
| CTR | | | | |
| Retention | | | | |
| First 30s | | | | |
## Competitor Comparison (if applicable)
| Metric | Your Video | Competitor A | Competitor B |
|--------|------------|--------------|--------------|
| Views | | | |
| CTR | | | |
| Engagement | | | |
## What Worked Well
- [Based on metrics and retention]
## Areas for Improvement
- [Based on drops, CTR, etc.]
## Recommendations for Next Video
1. [Specific actionable item]
2. [Specific actionable item]
3. [Specific actionable item]
## Shorts Analysis
| Short | Views | Why It Worked/Didn't |
|-------|-------|---------------------|
| | | |
If the video has a todo.md, update the reflection section with:
## Reflection (After 1 Week)
- [x] Review analytics completed
- [x] Reflection questions answered
### Analytics Snapshot
| Metric | Result | Target | Notes |
|--------|--------|--------|-------|
| Views (48h) | X | | |
| CTR | X% | 4%+ | |
| Avg View Duration | X:XX | | |
| Retention | X% | 50%+ | |
| First 30s Retention | X% | 70%+ | |
| Best Performing Short | [Title] | | |
### What Went Well
- [Finding 1]
- [Finding 2]
### What Could Be Improved
- [Finding 1]
- [Finding 2]
### Key Learnings for Next Video
- [Learning 1]
- [Learning 2]
After completing the reflection, update ~/YT/_Analytics/channel-baseline.md:
Add to Individual Video Performance table:
Recalculate Running Averages:
Check Top/Bottom 5:
Update Monthly Totals:
Prompt user:
I've completed the reflection. Would you like me to update your channel baseline file with these metrics?
This helps track your growth over time and gives context for future videos.
| Range | Interpretation | Action |
|---|---|---|
| 0-2% | Poor | Thumbnail/title needs major work |
| 2-4% | Below average | Test new thumbnails |
| 4-6% | Good | Keep iterating |
| 6-10% | Excellent | Study what worked |
| 10%+ | Viral potential | This is working, do more of this |
| Range | Interpretation | Action |
|---|---|---|
| 0-30% | Poor | Video too long or wrong audience |
| 30-40% | Below average | Hook and pacing need work |
| 40-50% | Average | Room for improvement |
| 50-60% | Good | Top 17% of videos |
| 60%+ | Excellent | Strong content-audience fit |
| Range | Interpretation | Action |
|---|---|---|
| <50% | Hook failing | Completely rework intro |
| 50-70% | Needs work | Tighten opening, faster to value |
| 70-80% | Good | Hook is working |
| 80%+ | Excellent | Study and replicate |
| Problem | Likely Cause | Fix |
|---|---|---|
| Low CTR, high retention | Thumbnail underselling content | Better thumbnail, more curiosity |
| High CTR, low retention | Clickbait or wrong audience | Match thumbnail to content |
| Sharp early drop | Weak hook | Stronger first 30 seconds |
| Mid-video drop | Slow section | Cut filler, add pattern interrupts |
| Low suggested traffic | Not getting algorithmic push | Improve retention, longer watch time |
User: "How is my Claude Code video doing?"
Claude: "Let me pull your analytics using YouTube Studio.
Uses Playwright to navigate to YouTube Studio Extracts metrics from your video
Here's your performance analysis:
Views (first 48h): 1,247 CTR: 5.2% (Good - above 4% target) Avg View Duration: 6:42 / 12:15 (54% - top 17%!) First 30s Retention: 73% (Above target)
What's working:
Opportunity:
Next video recommendations:
Would you like me to:
Symptom: Page loads but can't see analytics
Solutions:
browser_snapshot to see what's on screenbrowser_wait_for with "Analytics" textSymptom: JavaScript selectors don't find metrics
Solutions:
browser_snapshot and look for new element patternsbrowser_wait_for with longer timeoutbrowser_take_screenshot and ask user to read the numbersSymptom: Can't access competitor video data
Remember:
These may need updating if YouTube changes their UI:
| Element | Current Pattern | Notes |
|---|---|---|
| Analytics tabs | [data-tab-id="analytics"] |
May change |
| Metric cards | ytcp-analytics-data-story |
Look for value within |
| Retention graph | Canvas element in engagement tab | Screenshot, can't extract points |
If you cannot extract any metrics: