youtube-research · git:20260114.bdae5c6 · 2026-01-14 · sha256 599ca69c972e801a

youtube-research git:20260114.bdae5c6A

Immutable. This exact content is served forever at /api/v1/blob/599ca69c972e801a.

---
name: youtube-research
description: |
  Research high-performing YouTube videos in a niche using TubeLab's outlier detection API.
  Identifies outlier videos, analyzes top 3 relevant videos with AI, and generates reports with actionable hook formulas.

  Use when asked to:
  - Find trending videos in a YouTube niche
  - Research competitor content
  - Discover viral video patterns
  - Generate content ideas based on what's working
  - Run YouTube research
  - Find outlier videos
  - Analyze hooks and content structure

  Triggers: "youtube research", "find outlier videos", "research YouTube trends",
  "what videos are performing well", "find content ideas for my channel", "youtube trends"
---

# YouTube Research

Research high-performing YouTube outlier videos, analyze top content with AI, and generate actionable reports.

## Prerequisites

- `TUBELAB_API_KEY` environment variable. Get key from https://tubelab.net/settings/api
- `GEMINI_API_KEY` environment variable (for video analysis)
- `google-genai` and `requests` Python packages

## Workflow

### Step 1: Create Run Folder

```bash
mkdir -p youtube-research/$(date +%Y-%m-%d_%H%M%S)
```

### Step 2: Get Channel ID

Read `.claude/context/youtube-channel.md` to get the channel ID.

### Step 3: Fetch Channel Videos

```bash
python scripts/get_channel_videos.py CHANNEL_ID --format summary
```

This returns JSON with the channel's video titles and view counts.

### Step 4: Analyze Channel

Analyze the channel data to extract:
- **keywords**: 4 search terms for the channel's direct niche
- **adjacent-keywords**: 4 search terms for topics the same audience watches
- **audience**: 2-3 profiles with objections, transformations, stakes
- **formulas**: Reusable title templates

See `references/channel-analysis-schema.md` for the full schema and example output.

### Step 5: Search for Outliers

Run the outlier search with both keyword sets:

```bash
python .claude/skills/youtube-research/scripts/find_outliers.py \
  --keywords "keyword1" "keyword2" "keyword3" "keyword4" \
  --adjacent-keywords "adjacent1" "adjacent2" "adjacent3" "adjacent4" \
  --output-dir youtube-research/{run-folder} \
  --top 5
```

This runs two searches:
- **Direct niche**: keywords with 5K+ views threshold
- **Adjacent audience**: adjacent-keywords with 10K+ views threshold

Output files:
- `outliers.json` - All outliers normalized for video analysis
- `report.md` - Basic markdown report
- `thumbnails/*.jpg` - Video thumbnails
- `transcripts/*.txt` - Video transcripts

### Step 6: Filter Relevant Videos for Analysis

Read `outliers.json` and the user's niche from `.claude/context/youtube-channel.md`.

**CRITICAL**: Select MAX 3 videos that are most relevant to the user's niche. Filter by:
1. **Title relevance**: Title contains keywords related to user's niche/topics
2. **Transcript relevance**: If transcript exists, check it mentions relevant topics
3. **Direct niche priority**: Prefer videos from direct keyword search over adjacent

Skip videos that are clearly outside the user's content style (e.g., entertainment/vlogs when user does tutorials).

Write the filtered videos to `{RUN_FOLDER}/filtered-outliers.json`:
```json
{
  "outliers": [/* max 3 relevant videos */],
  "filter_reason": "Selected based on relevance to [user's niche]"
}
```

### Step 7: Analyze Top Videos with AI

```bash
python3 .claude/skills/video-content-analyzer/scripts/analyze_videos.py \
  --input {RUN_FOLDER}/filtered-outliers.json \
  --output {RUN_FOLDER}/video-analysis.json \
  --platform youtube \
  --max-videos 3
```

Extracts from each video:
- Hook technique and replicable formula
- Content structure and sections
- Retention techniques
- CTA strategy

See the `video-content-analyzer` skill for full output schema and hook/format types.

### Step 8: Generate Final Report

Read `{RUN_FOLDER}/outliers.json` and `{RUN_FOLDER}/video-analysis.json`, then generate `{RUN_FOLDER}/report.md`.

**Report Structure:**

```markdown
# YouTube Research Report

Generated: {date}

## Top Performing Hooks

Ranked by engagement. Use these formulas for your content.

### Hook 1: {technique} - {channelTitle}
- **Video**: "{title}"
- **Opening**: "{opening_line}"
- **Why it works**: {attention_grab}
- **Replicable Formula**: {replicable_formula}
- **Views**: {viewCount} | **zScore**: {zScore}
- [Watch Video]({url})

[Repeat for each analyzed video]

## Content Structure Patterns

| Video | Format | Pacing | Key Retention Techniques |
|-------|--------|--------|--------------------------|
| {title} | {format} | {pacing} | {techniques} |

## CTA Strategies

| Video | CTA Type | CTA Text | Placement |
|-------|----------|----------|-----------|
| {title} | {type} | "{cta_text}" | {placement} |

## All Outliers

### Direct Niche
| Rank | Channel | Title | Views | zScore |
|------|---------|-------|-------|--------|
[List direct niche outliers]

### Adjacent Audience
| Rank | Channel | Title | Views | zScore |
|------|---------|-------|-------|--------|
[List adjacent outliers]

## Actionable Takeaways

[Synthesize patterns into 4-6 specific recommendations based on video analysis]
```

Focus on actionable insights. The "Top Performing Hooks" section with replicable formulas should be prominent.

## Quick Reference

Full pipeline:
```bash
RUN_FOLDER="youtube-research/$(date +%Y-%m-%d_%H%M%S)" && mkdir -p "$RUN_FOLDER" && \
python .claude/skills/youtube-research/scripts/find_outliers.py \
  --keywords "k1" "k2" "k3" "k4" \
  --adjacent-keywords "a1" "a2" "a3" "a4" \
  --output-dir "$RUN_FOLDER" --top 5
```

Then filter outliers for niche relevance (max 3), run video analysis, and generate the report.

## Script Reference

### get_channel_videos.py

```
python .claude/skills/youtube-research/scripts/get_channel_videos.py CHANNEL_ID [--format json|summary]
```

| Arg | Description |
|-----|-------------|
| `CHANNEL_ID` | YouTube channel ID (24 chars) |
| `--format` | `json` (full data) or `summary` (for analysis) |

### find_outliers.py

```
python .claude/skills/youtube-research/scripts/find_outliers.py --keywords K1 K2 K3 K4 --adjacent-keywords A1 A2 A3 A4 --output-dir DIR [options]
```

| Arg | Description |
|-----|-------------|
| `--keywords` | Direct niche keywords (4 recommended) |
| `--adjacent-keywords` | Adjacent topic keywords (4 recommended) |
| `--output-dir` | Output directory (required) |
| `--top` | Videos per category (default: 5) |
| `--days` | Days back to search (default: 30) |
| `--json` | Also save raw JSON data |

Output: `outliers.json`, `report.md`, `thumbnails/`, `transcripts/`

## Scoring Algorithm

Videos ranked by: `zScore × recency_boost`
- **zScore**: How much video outperforms its channel average
- **recency_boost**: 1.0 for today, decays 5%/day (min 0.3×)