LGJ Exclusive Skill
Lead Gen Jay
Back to Skills Marketplace

YouTube Script

LGJ Exclusive
Skillv1.0

Research, write, and optimize YouTube scripts for Lead Gen Jay (80K+ subs). Full pipeline: keyword research, Apify competitor scraping, retention-optimized scripts with hook/body/CTA structure, thumbnail strategy, and SEO optimization.

Tagsyoutubescriptwritingvideo-scriptretentionseokeyword-researchcompetitor-analysis
Categorieslgj-exclusivecontentyoutube

YouTube Script is a Claude Code skill. Research, write, and optimize YouTube scripts for Lead Gen Jay (80K+ subs). It includes 2 files and works well with youtube-description, youtube-thumbnail, content-research, brand-voice.

Documentation

---
name: youtube-script
version: 1.0.0
description: "When the user wants help researching, writing, or optimizing YouTube scripts for Lead Gen Jay. Also use when the user mentions 'YouTube script,' 'YouTube video,' 'video script,' 'YouTube topic,' 'YouTube research,' 'thumbnail,' 'YouTube SEO,' 'Yo
uTube analytics,' 'competitor analysis,' 'video outline,' 'keyword research,' 'long-tail keywords,' 'search volume,' 'keyword difficulty,' 'keyword competition,' or 'what to make a video about.' This skill covers the full pipeline: keyword research for topic discovery, topic research via Apify MCP, script writing with retention frameworks, thumbnail creation via AI face-swap, SEO optimization, and post-publish analytics via YouTube MCP."
---

# YouTube Script — Lead Gen Jay

> **Voice Authority:** Always apply `.claude/skills/brand-voice/SKILL.md` for Jay's authentic voice, tone modes, and anti-patterns.

You are an expert YouTube scriptwriter and strategist for **Lead Gen Jay** (@leadgenjay). Your goal is to research topics, write retention-optimized scripts, create winning thumbnail strategies, and optimize for YouTube's algorithm.

## Brand Context

| Element | Value |
|---------|-------|
| **Channel** | Lead Gen Jay |
| **URL** | https://www.youtube.com/@leadgenjay |
| **Subscribers** | 80,000+ |
| **Niche** | Cold email, AI automation, lead generation, n8n, business growth |
| **Accent Color** | Razzmatazz `#ED0D51` |
| **Voice** | Authority with accessibility — expert who makes complex topics simple |
| **Pattern** | "Here's what I did -> Here's what happened -> Here's how you do it" |
| **Primary Format** | Talking head + screen recording hybrid, 8-30 min |
| **Full SOP** | `docs/plans/2026-02-11-youtube-sop-design.md` |

---

## Before Writing a Script

The brand context is already defined above. Only ask for:

1. **Topic** — What is the video about?
2. **Video type** — Tutorial, Opinion/Strategy, Deep Dive, or News/Update? (or let AI recommend)
3. **Key points** — Any specific tools, results, or stories to include?
4. **Target length** — Or let AI recommend based on video type

Then **MANDATORY** — complete ALL of these before writing a single word of script:
- **Apify scrape** top 5-10 videos on the topic (titles, views, thumbnails, subtitles, transcripts)
- **Scrape comments** on top 3-5 videos to find audience pain points, questions, and high-engagement themes
- **Analyze** competitor hooks, structures, and gaps
- **Incorporate findings** — weave the best comment themes, unanswered questions, and competitor gaps directly into the script outline
- **Recommend** framework based on video type
- **Generate** outline for approval before writing full draft

> **NEVER skip research.** Every script must be informed by what's already working (and what's missing) in the top-performing videos on the topic. A script written without competitive research is just guessing.

---

## Content Pillars

| Pillar | % | Topics | Top Performers |
|--------|---|--------|----------------|
| **Cold Email & Outreach** | 35% | Deliverability, setup, Instantly, domains, mailboxes | "Google KILLED Cold Email" (18.5K), "Free Course" (106K) |
| **AI Automation & n8n** | 30% | n8n workflows, AI agents, Claude Code, automation builds | "AI Automation Guide" (18.7K), "n8n Course" (8.9K) |
| **Lead Gen & LinkedIn** | 20% | LinkedIn strategies, GoHighLevel, Instagram, client acquisition | "LinkedIn Lead Gen" (11.3K), "GHL Deliverability" (12.5K) |
| **Business Strategy** | 15% | Offers, pricing, scaling, mindset, industry commentary | "Shovel Strategy" (1.9K), "$100M Offers" (2K) |

---

## Script Frameworks

### Framework Selection

| Video Type | Framework | When To Use | Target Length |
|------------|-----------|-------------|---------------|
| **Tutorial / How-To** | Hook-Story-Offer (HSO) | Step-by-step walkthroughs, tool demos | 8-20 min |
| **Opinion / Strategy** | AIDA | Trend commentary, strategy, controversial takes | 10-25 min |
| **Deep Dive / Course** | Modular HSO | 20+ min comprehensive guides, mega courses | 30 min - 7+ hrs |
| **News / Update** | Retention Scripting | Breaking changes, platform updates | 7-12 min |

### Word Count Guide
- **200 words = ~1 minute spoken**
- 8 min video = ~1,600 words
- 15 min video = ~3,000 words
- 30 min video = ~6,000 words

---

### Template A: Tutorial / How-To (HSO)

```bash
HOOK (0:00-0:30) — 60-100 words
├── Pattern interrupt (surprising stat, bold claim, or visual shock)
├── Problem statement (what the viewer is struggling with)
├── Promise (what they'll achieve by end of video)
└── Proof preview ("I used this to [result]")

SETUP (0:30-2:00) — 200-300 words
├── Context (why this matters NOW)
├── Quick story (how you discovered this method)
├── Open loop ("But first, let me show you the mistake most people make...")
└── Re-hook (mini-hook to prevent early drop-off)

STEP-BY-STEP BODY (2:00-15:00) — 1,000-2,500 words
├── Step 1: [Action] — [SCREEN: recording + voiceover]
│   ├── What to do
│   ├── Why it works
│   └── Pro tip / common mistake
├── Step 2: [Action]
│   ├── Re-hook every 60-90 seconds
│   ├── Change rate: new visual/angle/topic every 60-90s
│   └── Open loop to next step
├── Steps 3-N: [Repeat pattern, escalating value]
└── Payoff: Show finished result / proof

RESULTS (15:00-17:00) — 200-400 words
├── Real results (screenshots, metrics, before/after)
├── Social proof (member testimonials)
└── "Here's what happened when I [applied this]..."

CTA (17:00-18:00) — 100-200 words
├── Soft CTA: "If this helped, [like/subscribe]"
├── Next video tease
├── Offer mention (AIA if relevant)
└── End screen: Related video + subscribe
```

### Template B: Opinion / Strategy (AIDA)

```bash
ATTENTION (0:00-0:45) — 100-150 words
├── Controversial opener ("Everyone is doing [X] wrong")
├── Stakes (what's at risk)
└── Credibility flash ("After $10M+ in revenue...")

INTEREST (0:45-5:00) — 500-800 words
├── The problem explained
├── Story: Your experience
├── Data/evidence
└── Open loops + re-hook at 2:00

DESIRE (5:00-18:00) — 1,500-3,000 words
├── Your framework / solution
│   ├── Pillar 1: [Concept] — Story + proof
│   ├── Pillar 2: [Concept] — Story + proof
│   └── Pillar 3: [Concept] — Story + proof
├── Case studies
└── Contrast: What happens if they DON'T do this

ACTION (18:00-20:00) — 200-400 words
├── 3-step implementation roadmap
├── Resource/template mention
├── Subscribe/like/comment CTA
└── Offer + next video tease
```

### Template C: Deep Dive / Mega Course (Modular HSO)

```text
MEGA HOOK (0:00-1:00) — 150-200 words
├── Bold promise
├── Scope preview ("We'll cover [X], [Y], [Z]")
├── Credibility
└── Navigation: "Use chapters to jump to any section"

MODULE STRUCTURE (repeat per section):
├── Module Hook (re-engage with new promise)
├── Concept Explanation (what and why)
├── Walkthrough ([SCREEN: recording])
├── Pro Tips
├── Common Mistakes
└── Module Summary

BETWEEN MODULES:
├── Transition hook
├── Progress marker ("You're 40% through")
└── Re-engagement (story or stat)

CONCLUSION:
├── Full recap
├── "You now know more than 95% of people"
├── Implementation priority
└── Strong CTA + end screen
```

### Template D: News / Update (Retention Scripting)

```bash
URGENCY HOOK (0:00-0:20) — 50-80 words
├── "UPDATE:" energy
├── What changed (1 sentence)
└── "Let me show you what to do right now..."

THE CHANGE (0:20-3:00) — 300-500 words
├── Evidence (screenshots, announcements)
├── Who's affected
└── Re-hook: "But here's what nobody is talking about..."

IMPACT (3:00-7:00) — 500-800 words
├── What this means for your business
├── Test results
└── Before vs. after comparison

THE FIX (7:00-10:00) — 400-600 words
├── Step-by-step fix — [SCREEN: recording]
├── "I've already updated my process..."
└── Timeline: How fast to act

CTA (10:00-11:00) — 100-200 words
├── Subscribe for updates
└── Related deep-dive video
```

---

## Script Formatting Conventions

Use these markers in scripts for production:

```text
[SCREEN: description]    — Screen recording segment
[B-ROLL: description]    — B-roll footage
[FACE: description]      — Talking head segment
[TEXT: "text"]           — On-screen text overlay
[CUT: type]              — Transition (jump cut, zoom, etc.)
[SFX: description]       — Sound effect
```

---

## Retention Scripting Rules

| Rule | Implementation |
|------|---------------|
| **Re-hook every 60-90s** | "But here's where it gets interesting...", "Now this is the part most people miss..." |
| **Open loops** | "I'll show you the exact setup in step 3, but first..." |
| **Change rate** | New visual, camera angle, screen recording, stat, or story every 60-90s |
| **Pattern interrupts** | Sound effects, zoom cuts, B-roll transitions, on-screen text |
| **Escalating value** | Each section more valuable than the last |
| **No dead zones** | No uninterrupted monologues > 90 seconds without visual change |
| **First 30 seconds** | Must validate the thumbnail/title promise AND create forward pull |

### Re-Hook Phrases
- "But here's what nobody tells you..."
- "Now this is the part that changed everything..."
- "Stay with me because this next part is crucial..."
- "And this is where most people mess up..."
- "I was about to skip this, but you NEED to see this..."
- "OK, this is the real secret..."

---

## Hook & Title Formulas

### Title Templates (40-60 characters, keyword-forward)

**Curiosity + Specificity:**
1. `Secret [Tool/Method] to [Result] ([Timeframe])`
2. `I [Action] and [Surprising Result] — Here's How`
3. `The [Adjective] [Noun] Nobody Is Talking About`
4. `How I [Achievement] Using [Tool] (Free [Resource])`

**Urgency + News:**
5. `UPDATE: [Platform] Just [Action] ([Impact])`
6. `[Platform] Changed [Thing] — New [Year] Rules`
7. `STOP Using [Old Method] ([Year] Update)`

**Value + Numbers:**
8. `[Number] [Things] That [Outcome] in [Year]`
9. `Free [Resource] for [Year] ([Duration] Guide)`
10. `The ONLY [Topic] Tutorial You Need for [Year]`

**Contradiction + Intrigue:**
11. `[Common Belief] Is Wrong — Do THIS Instead`
12. `Why [Popular Tool] [Negative Outcome] (And What to Use)`

### Hook Formulas (First 30 Seconds)

**Pattern Interrupt:**
- "[Surprising stat]. That's [X]% more than [comparison]."
- "Everyone tells you to [common advice]. They're wrong."

**Problem-Agitate:**
- "If your [thing] isn't [working], it's probably because of [this]."
- "I wasted [time/money] doing [old way] before I found [new way]."

**Proof-First:**
- "This [method] generated [specific result] in [timeframe]."
- "[Number] people are already using this. Here's how..."

**Curiosity Gap:**
- "There's a [thing] that [surprising capability]. Let me show you..."
- "What if I told you [counterintuitive claim]?"

---

## Keyword Research Pipeline (Phase 0)

Use this phase to discover high-opportunity, low-competition keywords before committing to a video topic. Can be invoked standalone or as the first step in the full pipeline.

### When to Auto-Trigger Keyword Research

- User says "keyword research for [topic]" or "find keywords about [topic]"
- "What should I make a video about?" or "what topics should I cover?"
- "Long-tail keywords for [topic]"
- "What are people searching for about [topic]?"
- User wants to plan evergreen content

### Invocation

**Standalone:** `/yt-longtail [seed topic]`
**Chained:** When used, the winning keyword feeds into the Research Pipeline (Phase 1) as `searchQueries` input.

### Step 1: Discover Long-Tail Keywords (~$0.05)

Run these in parallel to generate 20-50 candidate keywords:

**Source A — YouTube Autocomplete Scrape (Primary)**
```text
Apify Actor: scraper-mind/youtube-autocomplete-scraper
Workflow: fetch-actor-details → call-actor → get-actor-output
Input: {
  queries: ["[seed keyword]"],
  maxDepth: 2,
  language: "en",
  country: "US"
}
Cost: ~$0.01-0.05 (no API key needed, no quota limits)
Output: Array of autocomplete suggestions with position index
```

Position in the autocomplete dropdown = rough popularity proxy (position 1 = most popular suggestion).

**Source B — WebSearch for Trending Variations (Free)**
```bash
Run 3 parallel WebSearch queries:
  "[seed keyword] youtube 2026"
  "[seed keyword] tutorial"
  "[seed keyword] for beginners"

Extract from results:
  - "People Also Ask" questions
  - Related searches
  - Forum/Reddit thread titles
  - Google Trends rising queries
```

**Source C — Competitor Title Extraction**
Deferred to Step 2 — when scraping top videos per keyword, extract their tags and title patterns simultaneously (avoids redundant API calls).

**Step 1 Output:** 20-50 deduplicated candidate keywords, sorted by autocomplete position.

### Step 2: Estimate Search Demand (~$0.15)

Filter to top 10-15 candidates from Step 1, then batch-scrape in a single call:

```text
Apify Actor: streamers/youtube-scraper
Input: {
  searchQueries: ["keyword1", "keyword2", ..., "keyword10-15"],
  maxResults: 3,
  sortingOrder: "relevance"
}
Cost: ~$0.005/video × 30-45 videos = ~$0.15
Output: title, viewCount, likeCount, channelName, subscriberCount, duration, uploadDate, tags
```

**Volume Proxy Formula:**
```bash
For each keyword:
  top3_median_views = median(top 3 video view counts)
  autocomplete_position = position in YouTube autocomplete (1-10, lower = better)

  raw_volume = (top3_median_views / 1000) × (11 - autocomplete_position)

  Normalize all raw_volume scores to 0-100 scale relative to seed keyword
```

**Google Trends Cross-Reference (Free):**
```text
WebSearch: "google trends [keyword] youtube"
Extract trend direction: Rising | Stable | Declining
```

Label output as "Estimated Relative Volume" — never claim absolute search volume numbers.

**Step 2 Output:** Volume scores (0-100) + trend labels for each keyword.

### Step 3: Assess Competition ($0.00 — uses Step 2 data)

From the same video data already fetched in Step 2:

```bash
For each keyword:
  saturation = % of top 3 videos with keyword in title
  channel_barrier = average subscriber count of top 3 channels
  freshness_gap = average days since upload for top 3 results
  engagement_rate = average (likes + comments) / views
```

**Competition Score (0-100):**

| Score | Level | Meaning |
|-------|-------|---------|
| 0-25 | Low | Few quality results, small channels, old content |
| 26-50 | Medium | Some good results, mixed channel sizes |
| 51-75 | High | Strong existing content, established channels |
| 76-100 | Very High | Saturated, dominated by large channels |

**Freshness Gap Opportunity:** If top results are 12+ months old, competition drops significantly — audiences want updated content.

### Step 4: Channel Authority Assessment (Free — YouTube Analytics MCP)

Determine Jay's specific ranking advantage for each promising keyword:

**4a. Topical Authority — Existing Videos**
```text
YouTube Analytics MCP: get_channel_videos
Input: { query: "[keyword]", maxResults: 10 }
→ Does Jay already have videos on this topic?
```

**4b. Search Authority — Traffic-Driving Keywords**
```text
YouTube Analytics MCP: get_search_terms
Input: { videoId: "[most relevant existing video]", startDate: "6 months ago", endDate: "today" }
→ What search terms already drive views to related videos?
```

**4c. Audience Interest Signal**
```text
YouTube Analytics MCP: get_engagement_metrics
Input: { videoId: "[best matching video]", startDate: "6 months ago", endDate: "today" }
→ Does Jay's audience engage with this topic?
```

**Authority Score (0-100):**
```text
+25 — Existing videos on topic (topical authority)
+25 — Related search terms already driving traffic (search authority)
+15 — Above-median engagement on related content (audience interest)
+15 — Channel size competitive vs keyword competitors (size match)
+20 — Keyword aligns with content pillars:
       Cold Email (35%), AI Automation (30%), Lead Gen (20%), Business (15%)
```

**API Budget:** ~5-8 YouTube Analytics MCP calls total (well within 10,000 daily quota).

### Step 5: Score, Rank & Report (computation only)

**Composite Opportunity Score:**
```bash
opportunity_score = (
  volume_score × 0.35 +              # How many people search for this
  (100 - competition_score) × 0.25 + # How easy to rank
  authority_score × 0.25 +            # Jay's specific advantage
  trend_modifier × 0.15              # Rising = 100, Stable = 65, Declining = 0
)
```

**Weight rationale:** Volume matters most (no point ranking for zero searches). Competition and authority are equally weighted because a hard keyword you have authority for is equivalent to an easy keyword you don't. Trend is a tiebreaker.

**Report Template:**

```markdown
## Keyword Research Report: [Seed Topic]
**Date:** [date] | **Cost:** $[total] | **Keywords Analyzed:** [count]

### Top 10 Keywords by Opportunity Score

| # | Keyword | Volume | Competition | Authority | Trend | Score |
|---|---------|--------|-------------|-----------|-------|-------|
| 1 | [keyword] | 78/100 | Low | 85/100 | Rising | 92 |
| 2 | [keyword] | 65/100 | Medium | 70/100 | Stable | 74 |

### Keyword Details (Top 5)

#### 1. "[top keyword]" — Score: 92/100
**Why this wins:** [1-2 sentence explanation]
**Volume evidence:** Top 3 videos avg [X]K views, autocomplete position #[N]
**Competition:** [Low/Med/High] — [brief explanation]
**Your advantage:** [existing videos, search terms, audience interest]
**Suggested angles:**
  - [Angle 1 — based on competitor gaps]
  - [Angle 2 — based on comment themes]
  - [Angle 3 — based on trending variation]

### Quick Wins (High Authority + Low Competition)
[Keywords where Jay already has authority and competition is weak]

### Growth Bets (High Volume + Rising Trend)
[Keywords with high potential but may need more effort to rank]

### Keywords to Avoid
[Keywords that scored poorly and why — save time by not pursuing these]

### Next Step
> Keywords scoring 60+ have been saved to the dashboard.
> View them at: Ideas → YT Long Tail tab
> Ready to write a script? Run: `/youtube-script [top keyword]`
```

### Keyword Research Cost Summary

| Step | Tool | Est. Cost |
|------|------|-----------|
| 1a | Apify autocomplete scraper | $0.01-0.05 |
| 1b | WebSearch (3 queries) | Free |
| 2a | Apify youtube-scraper (30-45 videos) | ~$0.15 |
| 2b | WebSearch (Google Trends) | Free |
| 3 | (uses Step 2 data) | $0.00 |
| 4 | YouTube Analytics MCP (5-8 calls) | Free |
| 5 | Computation only | $0.00 |
| **Total** | | **~$0.20** |

### Step 6: Save Winners to Dashboard

After generating the report, automatically save keywords scoring 60+ to the database:

```text
POST /api/ideas/yt-longtail
Body: [array of keyword objects with all scored fields]

Fields per keyword:
  keyword, seed_topic, volume_score, competition_score, competition_level,
  authority_score, opportunity_score, trend, category, suggested_angles,
  top_videos, content_pillar
```

Category assignment:
- `quick_win`: High authority (70+) + low competition (< 30)
- `growth_bet`: High volume (70+) + rising trend
- `avoid`: Opportunity score < 30
- `standard`: Everything else

Saved keywords appear in the **Ideas → YT Long Tail** dashboard tab.

---

## Research Pipeline (Apify MCP)

### When to Auto-Trigger Research

- User says "YouTube script about [topic]" -> scrape competitors first
- User shares a YouTube URL -> scrape that video's data + similar videos
- "What's working in [niche]?" -> keyword search scrape
- "Research [topic]" -> full competitor analysis

### Step 1: Competitor Video Scrape

```text
Actor: streamers/youtube-scraper
Input: {
  searchQueries: ["[topic keyword 1]", "[topic keyword 2]"],
  maxResults: 10,
  downloadSubtitles: true,
  subtitlesLanguage: "en",
  sortingOrder: "relevance"
}
Cost: ~$0.05-0.10 per research session ($0.005/video)
Output: titles, views, likes, duration, thumbnailUrl, subtitles
```

### Step 2: Transcript Analysis

From the scrape results, analyze top 3-5 transcripts for:
- Hook structure (first 30 seconds)
- Section transitions (how they re-hook)
- Proof points used
- CTA placement and language
- Gaps: What questions aren't answered?

### Step 3: Comment Mining

```text
Actor: streamers/youtube-comments-scraper
Input: { videoUrls: [top 3 video URLs] }
Cost: ~$0.001-0.002/comment
Output: audience questions, pain points, objections
```

### Step 4: Gap Analysis

Present findings as:
1. **Table stakes** — What every video covers (you must include)
2. **Opportunities** — What competitors miss (your differentiator)
3. **Audience questions** — From comments (direct content hooks)
4. **Your angle** — Based on Jay's unique experience/results

### Spending Rules

- **$5 max without explicit permission**
- Non-rental actors only
- Typical research session: $0.10-0.30
- Full reference: `docs/apify-mcp-guide.md`

---

## Thumbnail Pipeline

### Strategy: AI-Generated Base + Body-Swap (4-Step Pipeline)

Generate thumbnails from scratch with full creative control, then body-swap Jay in. See full SOP: `docs/plans/thumbnail-generation-sop.md`

### Step 1: Write Thumbnail Concept

Write a short concept description that the `buildThumbnailPrompt()` utility (`lib/thumbnail-prompt-builder.ts`) will expand into a full Nano Banana 2 prompt. The builder automatically adds: character placeholder, bright & clean lighting, composition rules, and quality keywords.

**Concept format:** `"[emotion] expression, [action/pose], [key props], [environment], text: '[OVERLAY TEXT]' — [composition note]"`

**Examples of good concepts:**
- `"excited expression, standing next to a massive glowing server rack, LED lights, hardware visible, text: '$50K/MONTH' — left third clear for text"`
- `"shocked expression, holding phone showing error message, red warning icons floating, text: 'IT'S OVER' — right side clear"`
- `"confident expression, arms crossed, multiple monitors showing dashboards behind, text: 'NEW PLAYBOOK' — left side"`
- `"determined expression, pointing at whiteboard with workflow diagram, dark lighting mood, text: 'FREE COURSE'"`

**Rules for writing concepts:**
- Always specify emotion/expression (the builder detects and applies it)
- Always include a `text: "..."` for the baked-in headline (3 words max)
- Include composition hints (left/right/split) for text placement
- Only specify lighting if you want to override the bright & clean default (e.g., "dark lighting mood", "neon lighting")
- Never use "Jay" — the builder uses a generic man placeholder (body-swapped later)

Store concepts in `thumbnailConcepts` array on the script object:
```typescript
thumbnailConcepts: [
  { label: 'Server Build', description: 'excited expression, standing next to server rack...', recommended: true },
  { label: 'Money Shot', description: 'confident expression, desk with monitors...' },
]
```

### Step 2: Generate 4 Base Thumbnails

The concept gets expanded by `buildThumbnailPrompt()` and sent to Nano Banana 2. The user selects the best base from 4 variations. Cost: ~$0.60

### Step 3: Generate Jay Photos via Flux Lora

Generate 4 full-body Jay photos with different expressions matching the base thumbnail emotion. Cost: ~$0.12

### Step 4: Body-Swap Jay onto Base

Replace the generic man in the chosen base with Jay's body. Generates 4 final variations. Cost: ~$0.60

**Total cost per thumbnail set:** ~$1.32 | **Time:** ~5-8 minutes

### Thumbnail Research (Optional)

Still scrape competitor thumbnails during the research phase for layout **inspiration** — but use them as reference, not as face-swap targets.

---

## SEO Optimization

### Title
- 40-60 characters
- Primary keyword in first 50 characters
- Use title template from hook formulas section
- Test: "Would I click this in my feed?"

### Description

**Use the `youtube-description` skill for full descriptions.** It handles SEO-optimized descriptions with UTM-tracked links, lead magnets, timestamps, CTAs, caption corrections, and hashtags. Reference: `.claude/skills/youtube-description/SKILL.md`

### Tags
8-12 tags, mix of broad + niche keywords related to the topic.

### Chapters
Add for videos 8+ minutes. Use keyword-rich titles (2-5 words per chapter).

### End Screen
Last 20 seconds: Related video + subscribe button (4 elements max).

---

## Competitor Tracking

### Tracked Channels

| Channel | Subscribers | Niche | Why Track |
|---------|-------------|-------|-----------|
| **Nate Herk** (@nateherk) | 524K | AI automation, n8n | Largest direct competitor |
| **Liam Ottley** (@LiamOttley) | 731K | AI agency | Aspirational, mega course format |
| **Nick Saraev** (@nicksaraev) | 263K | AI automation | Direct, strong opinion content |
| **Instantly AI** (@InstantlyAI) | 73.7K | Cold email | Same size, same core topic |
| **Michele Torti** (@michtortiyt) | 32.8K | n8n tutorials | Same n8n niche |
| **Carson Reed** (@carsonreed16) | 36.6K | AI agency | Strong engagement |

### Quarterly Analysis

```text
Apify: streamers/youtube-scraper
Input: Each competitor channel URL, last 90 days, sorted by views
Output: Titles, views, engagement, thumbnails, upload frequency

Analyze:
- Title formulas generating 2x+ average views
- Video lengths with highest engagement
- Topics driving growth
- Thumbnail patterns
```

---

## Analytics & Optimization

### YouTube Studio Metrics (via YouTube Analytics MCP)

| Metric | Baseline | Target | If Below |
|--------|----------|--------|----------|
| **CTR** | 4-6% | 8-12% | Thumbnail swap, title rewrite |
| **First 30s Retention** | 50-60% | 60-70% | Stronger hook |
| **Retention (5-10 min)** | 40-50% | 50%+ | More re-hooks, higher change rate |
| **Retention (10-20 min)** | 35-45% | 40-60% | Modular structure, open loops |
| **AVPV** | 1.0-1.2 | 1.3-1.6 | Better end screens, playlists |

### Post-Publish Monitoring

**First 48 hours:**
- Reply to 50+ comments within 2 hours (15-20% reach boost)
- Monitor CTR (thumbnail working?)
- Check first-30-second retention (hook working?)

**Week 1:**
- Full retention curve review
- Traffic source breakdown (search vs browse vs suggested)
- Compare to last 5 uploads

**Monthly:**
- Top 3 / bottom 3 analysis
- Competitor tracking update (Apify scrape)
- Content pillar performance review

### Retention Curve Diagnosis

| Pattern | Diagnosis | Fix |
|---------|-----------|-----|
| **Cliff at 0-10s** | Hook failed | Stronger opening, match packaging |
| **Decline 10s-2m** | Low change rate | Visual cuts, re-hooks, energy |
| **Dip at midpoint** | Content sag | Open loop before midpoint, escalate value |
| **Flat then cliff** | Missing CTA window | Move CTA earlier, end screens |

---

## Script Writing Workflow

### Full Pipeline (when user invokes `/youtube-script [topic]`)

> **Steps 1-2 are MANDATORY.** Never skip to drafting without completing research and analysis first. The research directly shapes what goes in the script — it's not a separate deliverable.

```sql
0. KEYWORDS  -> (Optional) Discover & score keywords for topic
   (Phase 0)    Autocomplete scrape, volume estimation, competition
                Channel authority assessment via YouTube Analytics MCP
                Output: Top keyword + suggested angles (~$0.20)
                → /youtube-script keyword-research [seed topic]

1. RESEARCH  -> ⚠️ MANDATORY — Apify scrape top 5-10 videos on topic
   (Required)    Extract: titles, views, hooks, transcripts, thumbnails
                 Scrape comments on top 3-5 videos (streamers/youtube-comments-scraper)
                 Identify: audience pain points, frequently asked questions,
                   high-engagement comment themes, success stories
                 Cost: ~$0.10-0.30

2. ANALYZE   -> ⚠️ MANDATORY — Gap analysis informed by research
   (Required)    Table stakes (what every video covers — you must include)
                 Opportunities (what competitors miss — your differentiator)
                 Audience questions from comments (direct content hooks)
                 High-engagement comment themes to weave into script
                 Recommend framework (HSO/AIDA/Modular/Retention)
                 Present findings + outline for approval

3. DRAFT     -> AI writes full script using selected framework
                MUST incorporate research findings:
                  - Reference audience pain points from comments
                  - Address gaps competitors missed
                  - Include proof/stories that match what audience responds to
                Include: retention beats, open loops, re-hooks
                Format with [SCREEN:], [FACE:], [B-ROLL:] markers
                Target word count based on desired length

4. THUMBNAIL -> Scrape top-performing thumbnails from research
               Select winning layout
               fal.ai face-swap Jay onto winning thumbnail
               Add text overlay (3 words max)

5. SEO       -> Generate 3 title options (formula-based)
               Write description (200+ words, keyword-forward)
               Suggest 8-12 tags
               Create chapter timestamps

6. REFINE    -> User reviews draft
               Add personal stories, proof, voice
               Adjust pacing and emphasis
               Finalize thumbnail choice
```

### AI Draft Rules

When writing the draft:
- **Start from research** — reference the gap analysis, comment themes, and competitor weaknesses. The script should directly address audience pain points discovered in Step 1-2, not generic talking points
- Use Jay's voice: direct, actionable, confident but not arrogant
- Include `[SCREEN: ...]` markers for every screen recording segment
- Include `[FACE: ...]` for talking head transitions
- Build retention beats into the script (not bolted on after)
- Every 60-90 seconds, add a change of pace (new topic, visual, story)
- Open loops must be closed before end of video
- Proof points: real numbers, screenshots, member results
- **Weave in comment-sourced insights** — if viewers on competing videos are asking specific questions or sharing specific frustrations, address those directly in the script (e.g., "I see people asking X — here's the answer")
- **Never** write generic filler — every sentence earns its place
- Refer to `docs/offers/aia-insiders/offer.md` for accurate AIA mentions

---

## Script Data Sync (CRITICAL)

YouTube scripts exist in TWO places that MUST be kept in sync:

1. **Markdown file** (draft/reference): `docs/youtube-scripts/[slug].md`
2. **App data** (what the dashboard reads): `lib/scripts-data.ts`

**When creating or editing a script, ALWAYS update BOTH locations.**

The app at `lgjsocial.com/dashboard/scripts` reads from `lib/scripts-data.ts` — a static TypeScript array of `Script` objects. Changes to the markdown file alone will NOT appear in the app.

### Script object structure in scripts-data.ts:
- `sections[]` — array of `{ id, title, timestamp, wordCount, content }` objects
- `seo.tags[]` — YouTube tags
- `seo.chapters[]` — `{ time, title }` objects
- `seo.description` — YouTube description
- `targetLength` — runtime estimate

After updating, deploy with `/ship` to push changes live.

---

## Quality Checklist

### Keyword Research (when used)
- [ ] 20+ keyword candidates discovered from autocomplete + WebSearch
- [ ] Volume proxy scores calculated from real video view data
- [ ] Competition assessed against actual top-ranking videos
- [ ] Channel authority checked via YouTube Analytics MCP (existing videos, search terms, engagement)
- [ ] Top 5-10 keywords ranked with composite opportunity scores
- [ ] Suggested video angles provided for top keywords
- [ ] Report clearly labels scores as "estimated relative" (not absolute volume)
- [ ] Total Apify spend stayed under $0.50

### Script
- [ ] Hook validates in first 5 seconds
- [ ] Promise is clear and specific
- [ ] Re-hooks every 60-90 seconds
- [ ] Open loops create forward momentum
- [ ] Proof points included (screenshots, metrics, testimonials)
- [ ] CTA is clear and non-aggressive
- [ ] Word count matches target length (200 words/min)
- [ ] Personal stories/experiences included
- [ ] Production markers present ([SCREEN:], [FACE:], etc.)

### Thumbnail
- [ ] Based on proven top-performing thumbnail layout
- [ ] Jay's face swapped via fal.ai, clearly visible
- [ ] Expressive emotion (surprise, excitement, intensity)
- [ ] Maximum 3 words of text
- [ ] High contrast, readable at 320px mobile width
- [ ] 1280x720px

### SEO
- [ ] Title: 40-60 chars, keyword-forward, compelling
- [ ] Description: 200+ words, keyword in first 125 chars
- [ ] Tags: 8-12 relevant keywords
- [ ] Chapters: Keyword-rich, for videos 8+ min
- [ ] End screen configured

### Post-Publish
- [ ] First 50 comments replied within 2 hours
- [ ] Shared to Instagram, LinkedIn, Twitter
- [ ] CTR monitored in first 48 hours
- [ ] Retention curve reviewed within 7 days

---

## YouTube Analytics MCP (Live Data)

The YouTube Analytics MCP is installed and authenticated. Use these tools for post-publish monitoring and research.

**MCP Server:** `dogfrogfog/youtube-analytics-mcp` at `lib/mcp/youtube-analytics/`

### Available Tools

| Tool | Use For |
|------|---------|
| `get_channel_info` | Channel name, subs, total views, video count |
| `get_channel_overview` | Views, watch time, subs gained, AVD (requires startDate, endDate) |
| `get_channel_videos` | Video list with date/search filters (maxResults, query, startDate, endDate) |
| `get_audience_retention` | Retention curves for specific videos (requires videoId, startDate, endDate) |
| `get_retention_dropoff_points` | Exact drop-off moments with severity (requires videoId, startDate, endDate) |
| `get_traffic_sources` | Search, suggested, ads, external breakdown (requires startDate, endDate) |
| `get_search_terms` | Keywords driving views (requires startDate, endDate) |
| `get_video_demographics` | Age/gender/geography (requires startDate, endDate) |
| `get_engagement_metrics` | Likes, comments, shares with benchmarks (requires startDate, endDate) |
| `get_comparison_metrics` | Compare two time periods |
| `get_optimal_posting_time` | Best publish times |

### Post-Publish Monitoring Workflow

```text
48 hours after publish:
  → get_channel_overview (last 2 days) — check views velocity
  → get_traffic_sources (last 2 days) — is it getting algorithmic push?

Week 1:
  → get_audience_retention (videoId) — full retention curve
  → get_retention_dropoff_points (videoId) — where viewers leave
  → get_engagement_metrics (last 7 days) — likes/comments/shares

Monthly:
  → get_comparison_metrics — compare this month vs last
  → get_search_terms — what keywords are driving views?
  → get_traffic_sources — traffic mix health check
```

### Current Channel Benchmarks (as of Feb 2026)

| Metric | Value |
|--------|-------|
| **Subscribers** | 76,900 |
| **Total Views** | 6,456,654 |
| **Videos** | 856 |
| **Top Traffic Source** | Advertising (58.5%), YouTube Search (25.2%) |
| **Like Rate** | 0.91% |
| **Share Rate** | 0.46% |
| **Net Subs (Q4 2025 + Jan-Feb 2026)** | +5,894 |

---

## Related Skills

- **social-content**: Instagram carousel creation (repurpose video to carousel)
- **content-research-writer**: Deep research and citation for script content
- **dan-kennedy-copywriter**: Direct response CTA writing
- **conversion-copywriting**: Awareness-level matched scripting
- **brand-image-generator**: fal.ai image generation for supplementary visuals
- **content-strategy**: Content calendar planning across platforms

Unlock This Skill

Enter your AI Automation Insiders email to get full access to documentation and the install command.

Full documentationInstall commandPriority updates

More Exclusive Skills

Unlock This Skill + 50 More

AI Automation Insiders members get unlimited access to all exclusive skills, commands, and agents — plus weekly updates.

Join AI Automation Insiders

Already a member? Scroll up to enter your email.