# Josiahsiegel Claude Plugin Marketplace Viral Video Hook Templates

> CRITICAL GUIDELINES

- Skill: `tomevault-io/josiahsiegel-claude-plugin-marketplace-viral-video-hook-temp` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/josiahsiegel-claude-plugin-marketplace-viral-video-hook-temp`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/josiahsiegel-claude-plugin-marketplace-viral-video-hook-temp/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/josiahsiegel-claude-plugin-marketplace-viral-video-hook-temp

---


## CRITICAL GUIDELINES

### Windows File Path Requirements

**MANDATORY: Always Use Backslashes on Windows for File Paths**

When using Edit or Write tools on Windows, you MUST use backslashes (`\`) in file paths, NOT forward slashes (`/`).

### Documentation Guidelines

**NEVER create new documentation files unless explicitly requested by the user.**

---

# Viral Video Hook Templates (2025-2026)

## The Science of Hooks

**The Critical Window**: You have **1.3-3 seconds** to stop the scroll. Research shows:
- 65% of viewers decide to watch or skip within 3 seconds
- Videos with strong hooks have 2-3x higher completion rates
- The hook accounts for up to 80% of a video's viral potential

---

## Hook Timing Reference

### Optimal Hook Durations by Type

| Hook Type | Duration | Reasoning |
|-----------|----------|-----------|
| Pattern Interrupt (visual) | 0.3-0.5s | Quick shock, then content |
| Pattern Interrupt (text) | 1.0-1.5s | Time to read "STOP" etc |
| Curiosity Gap | 2.0-3.0s | Two-part reveal timing |
| Direct Challenge | 1.5-2.5s | Read + process + react |
| Transformation Tease | 2.0-3.0s | Before/after comparison |
| Question Hook | 1.5-2.0s | Read + mental engagement |

### FFmpeg Time Units Quick Reference

**All FFmpeg filter expressions use SECONDS with decimals**:

| Expression | Meaning | Example Use |
|------------|---------|-------------|
| `t` | Current time | `enable='lt(t,2)'` = first 2 seconds |
| `between(t,0,2.5)` | Time range | Hook visible for 2.5s |
| `if(lt(t,1),expr1,expr2)` | Conditional | Different effect in first second |
| `sin(t*10)` | Oscillation | 10 cycles per second |
| `exp(-t*3)` | Decay | Quick fade (3 = fast decay) |

### Recommended Hook Timing

```bash
# Hook window timing breakdown:
# 0.0-0.3s: Visual impact (flash, zoom, color)
# 0.3-1.5s: Primary hook text appears
# 1.0-2.5s: Secondary text/elaboration
# 2.5-3.0s: Transition to main content

# Example: Complete hook with timed elements
ffmpeg -i input.mp4 \
  -vf "
    eq=brightness='0.2*between(t,0,0.2)',
    drawtext=text='STOP':fontsize=80:fontcolor=red:x=(w-tw)/2:y=h*0.12:enable='between(t,0.2,1.5)',
    drawtext=text='This changes everything':fontsize=48:fontcolor=white:x=(w-tw)/2:y=h*0.20:enable='between(t,1.0,2.8)'
  " \
  output_timed_hook.mp4
```

---

## The 10 Proven Hook Templates

### 1. The Pattern Interrupt

**Psychology**: Breaks viewer's passive scrolling state with unexpected visual/audio

**Best For**: All content types, especially saturated niches

**FFmpeg Implementation**:

```bash
# Flash/brightness pulse at start (0.5 seconds)
ffmpeg -i input.mp4 \
  -vf "eq=brightness='0.3*between(t,0,0.1)+0.2*between(t,0.1,0.2)+0.1*between(t,0.2,0.3)'" \
  -c:v libx264 -preset fast -crf 23 \
  -c:a copy \
  output_pattern_interrupt.mp4

# Zoom punch effect - 1.5x to 1.0x zoom over 0.5s at 60fps for maximum impact
# 50% initial zoom (1.5x) is highly visible on mobile, completes within 0.5s attention window
# Note: d=1 ensures continuous per-frame processing; the time conditional limits zoom to first 0.5s
ffmpeg -i input.mp4 \
  -vf "fps=60,zoompan=z='if(lt(t,0.5),1.5-t,1)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':s=1080x1920" \
  -c:v libx264 -preset fast -crf 23 \
  -c:a copy \
  output_zoom_punch.mp4

# Glitch effect burst (first 0.5s)
ffmpeg -i input.mp4 \
  -vf "rgbashift=rh=-5:rv=5:gh=3:gv=-3:bh=-2:bv=2:enable='lt(t,0.5)',chromashift=cbh=3:cbv=3:crh=-3:crv=-3:enable='lt(t,0.5)'" \
  -c:v libx264 -preset fast -crf 23 \
  -c:a copy \
  output_glitch_hook.mp4
```

**Text Overlay Example**:
```bash
# "STOP." appearing suddenly
ffmpeg -i input.mp4 \
  -vf "drawtext=text='STOP.':fontsize=120:fontcolor=red:borderw=5:bordercolor=white:x=(w-tw)/2:y=(h-th)/2:enable='between(t,0,1.5)'" \
  -c:v libx264 -preset fast -crf 23 \
  -c:a copy \
  output_stop_hook.mp4
```

---

### 2. The Curiosity Gap

**Psychology**: Creates information deficit that viewer must resolve by watching

**Best For**: Educational, storytelling, reveals

**Templates**:
- "You won't believe what happens at [X]..."
- "This is why you've been doing [X] wrong..."
- "Nobody talks about this, but..."
- "The secret [industry] doesn't want you to know..."

**FFmpeg Implementation**:

```bash
# Two-part curiosity hook
ffmpeg -i input.mp4 \
  -vf "
    drawtext=text='What happens next':fontsize=56:fontcolor=white:borderw=4:bordercolor=black:x=(w-tw)/2:y=h*0.35:enable='between(t,0,1.5)',
    drawtext=text='will SHOCK you...':fontsize=64:fontcolor=yellow:borderw=4:bordercolor=black:x=(w-tw)/2:y=h*0.45:enable='between(t,0.8,2.5)'
  " \
  -c:v libx264 -preset fast -crf 23 \
  -c:a copy \
  output_curiosity.mp4

# Animated reveal text
ffmpeg -i input.mp4 \
  -vf "
    drawtext=text='The truth about...':fontsize=48:fontcolor=white:borderw=3:bordercolor=black:x=(w-tw)/2:y=h*0.15:alpha='if(lt(t,0.5),t*2,1)':enable='lt(t,3)',
    drawtext=text='[REVEALED]':fontsize=72:fontcolor=red:borderw=4:bordercolor=white:x=(w-tw)/2:y=h*0.25:enable='between(t,1.5,3)'
  " \
  -c:v libx264 -preset fast -crf 23 \
  -c:a copy \
  output_reveal.mp4
```

---

### 3. The Direct Challenge

**Psychology**: Triggers ego/identity response, forces engagement

**Best For**: Hot takes, controversial opinions, niche content

**Templates**:
- "If you do [X], you're doing it wrong"
- "Stop scrolling if you're a [type of person]"
- "This is for the 1% who actually want to [achieve X]"
- "Most people will ignore this, but..."

**FFmpeg Implementation**:

```bash
# Direct address hook
ffmpeg -i input.mp4 \
  -vf "
    drawtext=text='STOP SCROLLING':fontsize=72:fontcolor=red:borderw=5:bordercolor=white:x=(w-tw)/2:y=h*0.12:enable='between(t,0,2)',
    drawtext=text='if you want to':fontsize=48:fontcolor=white:borderw=3:bordercolor=black:x=(w-tw)/2:y=h*0.20:enable='between(t,0.5,2)',
    drawtext=text='[YOUR BENEFIT]':fontsize=56:fontcolor=yellow:borderw=4:bordercolor=black:x=(w-tw)/2:y=h*0.27:enable='between(t,1,2.5)'
  " \
  -c:v libx264 -preset fast -crf 23 \
  -c:a copy \
  output_challenge.mp4
```

---

### 4. The Transformation Tease

**Psychology**: Shows result first, creates desire to learn how

**Best For**: Before/after, tutorials, product demos

**Templates**:
- "From [bad state] to [good state] in [time]"
- "This is the before... (pause) ...and this is after"
- "Watch this transformation"

**FFmpeg Implementation**:

```bash
# Split screen before/after teaser
ffmpeg -i before.mp4 -i after.mp4 \
  -filter_complex "
    [0:v]scale=540:1920,crop=540:960:0:480[left];
    [1:v]scale=540:1920,crop=540:960:0:480[right];
    [left][right]hstack=inputs=2[v];
    [0:a][1:a]amix=inputs=2[a]
  " \
  -map "[v]" -map "[a]" \
  -c:v libx264 -preset fast -crf 23 \
  -t 3 \
  output_transform_tease.mp4

# Before label then after reveal
ffmpeg -i input.mp4 \
  -vf "
    drawtext=text='BEFORE':fontsize=72:fontcolor=red:borderw=4:bordercolor=white:x=(w-tw)/2:y=h*0.10:enable='between(t,0,1.5)',
    drawtext=text='AFTER':fontsize=72:fontcolor=green:borderw=4:bordercolor=white:x=(w-tw)/2:y=h*0.10:enable='between(t,2,3.5)'
  " \
  -c:v libx264 -preset fast -crf 23 \
  -c:a copy \
  output_before_after.mp4
```

---

### 5. The Bold Claim

**Psychology**: Triggers skepticism that must be resolved by watching

**Best For**: Tutorials, hacks, revelations

**Templates**:
- "This [thing] changed my life"
- "The [X] that makes everything else obsolete"
- "I discovered this and my [metric] went up [X]%"
- "This one trick [dramatic result]"

**FFmpeg Implementation**:

```bash
# Bold claim with emphasis
ffmpeg -i input.mp4 \
  -vf "
    drawtext=text='This ONE thing':fontsize=56:fontcolor=white:borderw=4:bordercolor=black:x=(w-tw)/2:y=h*0.12:enable='between(t,0,1.5)',
    drawtext=text='changed EVERYTHING':fontsize=64:fontcolor=yellow:borderw=4:bordercolor=black:x=(w-tw)/2:y=h*0.20:enable='between(t,0.8,2.5)'
  " \
  -c:v libx264 -preset fast -crf 23 \
  -c:a copy \
  output_bold_claim.mp4
```

---

### 6. The Counter-Intuitive

**Psychology**: Challenges existing beliefs, triggers cognitive dissonance

**Best For**: Educational, myth-busting, industry secrets

**Templates**:
- "[Common belief]? That's actually wrong"
- "Everything you know about [X] is backwards"
- "The [X] industry doesn't want you to know this"
- "Why [opposite of expectation] is actually true"

**FFmpeg Implementation**:

```bash
# Myth vs Reality hook
ffmpeg -i input.mp4 \
  -vf "
    drawtext=text='MYTH':fontsize=64:fontcolor=red:borderw=4:bordercolor=white:x=w*0.25-(tw/2):y=h*0.12:enable='between(t,0,1.5)',
    drawtext=text='vs':fontsize=48:fontcolor=white:x=(w-tw)/2:y=h*0.12:enable='between(t,0.5,1.5)',
    drawtext=text='REALITY':fontsize=64:fontcolor=green:borderw=4:bordercolor=white:x=w*0.75-(tw/2):y=h*0.12:enable='between(t,0,1.5)'
  " \
  -c:v libx264 -preset fast -crf 23 \
  -c:a copy \
  output_counter_intuitive.mp4
```

---

### 7. The Social Proof

**Psychology**: Leverages herd mentality and FOMO

**Best For**: Product reviews, recommendations, trending topics

**Templates**:
- "[X million] people use this and don't know about [Y]"
- "This is why [authority/celebrity] does [X]"
- "Everyone's talking about this..."
- "[X]% of people don't know this exists"

**FFmpeg Implementation**:

```bash
# Stats-based social proof
ffmpeg -i input.mp4 \
  -vf "
    drawtext=text='10 MILLION people':fontsize=56:fontcolor=white:borderw=4:bordercolor=black:x=(w-tw)/2:y=h*0.10:enable='between(t,0,2)',
    drawtext=text='are using this wrong':fontsize=48:fontcolor=yellow:borderw=3:bordercolor=black:x=(w-tw)/2:y=h*0.18:enable='between(t,0.8,2.5)'
  " \
  -c:v libx264 -preset fast -crf 23 \
  -c:a copy \
  output_social_proof.mp4
```

---

### 8. The Time-Sensitive Urgency

**Psychology**: Creates artificial scarcity, triggers fear of missing out

**Best For**: Trends, limited offers, news, seasonal content

**Templates**:
- "Before [date/event], you need to know this"
- "This won't work after [time]"
- "You have [X days] left to..."
- "Do this NOW before it's too late"

**FFmpeg Implementation**:

```bash
# Urgent countdown style
ffmpeg -i input.mp4 \
  -vf "
    drawtext=text='DO THIS NOW':fontsize=72:fontcolor=red:borderw=5:bordercolor=white:x=(w-tw)/2:y=h*0.10:enable='between(t,0,2)',
    drawtext=text='before it's too late':fontsize=48:fontcolor=yellow:borderw=3:bordercolor=black:x=(w-tw)/2:y=h*0.18:enable='between(t,0.8,2.5)'
  " \
  -c:v libx264 -preset fast -crf 23 \
  -c:a copy \
  output_urgency.mp4
```

---

### 9. The Storytelling Hook

**Psychology**: Triggers narrative engagement, emotional investment

**Best For**: Personal stories, case studies, testimonials

**Templates**:
- "3 months ago, I [bad situation]..."
- "This is the story of how I [achievement]"
- "It started when..."
- "Nobody expected what happened next"

**FFmpeg Implementation**:

```bash
# Story opener with fade-in text
ffmpeg -i input.mp4 \
  -vf "
    drawtext=text='3 months ago...':fontsize=56:fontcolor=white:borderw=4:bordercolor=black:x=(w-tw)/2:y=h*0.15:alpha='if(lt(t,1),t,1)':enable='lt(t,3)',
    drawtext=text='everything changed':fontsize=48:fontcolor=yellow:borderw=3:bordercolor=black:x=(w-tw)/2:y=h*0.23:alpha='if(lt(t-1,1),max(0,t-1),1)':enable='between(t,1,3)'
  " \
  -c:v libx264 -preset fast -crf 23 \
  -c:a copy \
  output_story.mp4
```

---

### 10. The Question Hook

**Psychology**: Activates problem-solving brain, demands mental engagement

**Best For**: Educational, listicles, Q&A content

**Templates**:
- "Have you ever wondered why [X]?"
- "What if I told you [X]?"
- "Can you guess [X]?"
- "Why does everyone get [X] wrong?"

**FFmpeg Implementation**:

```bash
# Question with reveal
ffmpeg -i input.mp4 \
  -vf "
    drawtext=text='Have you ever wondered':fontsize=48:fontcolor=white:borderw=3:bordercolor=black:x=(w-tw)/2:y=h*0.12:enable='between(t,0,1.5)',
    drawtext=text='WHY this happens?':fontsize=56:fontcolor=yellow:borderw=4:bordercolor=black:x=(w-tw)/2:y=h*0.20:enable='between(t,0.8,2.5)'
  " \
  -c:v libx264 -preset fast -crf 23 \
  -c:a copy \
  output_question.mp4
```

---

## Visual Hook Effects Library

### Shake/Tremor Effect

```bash
# Subtle shake for emphasis
ffmpeg -i input.mp4 \
  -vf "crop=1060:1900:(10+10*sin(t*30)):(10+10*cos(t*25)):enable='lt(t,1)',scale=1080:1920" \
  -c:v libx264 -preset fast -crf 23 \
  -c:a copy \
  output_shake.mp4
```

### Zoom Pulse

```bash
# Rhythmic zoom pulse - 8% amplitude at ~2Hz for 1.5s (60% more visible than 5%)
# sin(t*12) = 12 rad/s = 1.91 Hz oscillation. Completes before 1.3-second decision point
# Note: 60fps ensures smooth motion; d=1 for continuous per-frame processing
ffmpeg -i input.mp4 \
  -vf "fps=60,zoompan=z='if(lt(t,1.5),1+0.08*sin(t*12),1)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':s=1080x1920" \
  -c:v libx264 -preset fast -crf 23 \
  -c:a copy \
  output_zoom_pulse.mp4
```

### Color Flash

```bash
# Red flash then normal
ffmpeg -i input.mp4 \
  -vf "colorbalance=rs=0.5:gs=-0.2:bs=-0.2:enable='lt(t,0.3)',colorbalance=rs=0.3:enable='between(t,0.3,0.5)'" \
  -c:v libx264 -preset fast -crf 23 \
  -c:a copy \
  output_color_flash.mp4
```

### Vignette Reveal

```bash
# Dark vignette that opens up
ffmpeg -i input.mp4 \
  -vf "vignette=PI*min(t,2)/2" \
  -c:v libx264 -preset fast -crf 23 \
  -c:a copy \
  output_vignette_reveal.mp4
```

---

## A/B Testing Workflow

### Generate Multiple Hook Variants

```bash
#!/bin/bash
# generate_hook_variants.sh - Create multiple hook versions for testing

INPUT="$1"
BASE=$(basename "$INPUT" .mp4)

# Variant A: Curiosity Gap
ffmpeg -i "$INPUT" \
  -vf "drawtext=text='Wait for it...':fontsize=64:fontcolor=yellow:borderw=4:bordercolor=black:x=(w-tw)/2:y=h*0.15:enable='between(t,0,2)'" \
  -c:v libx264 -preset fast -crf 23 -c:a copy \
  "${BASE}_hook_A.mp4" &

# Variant B: Direct Challenge
ffmpeg -i "$INPUT" \
  -vf "drawtext=text='STOP SCROLLING':fontsize=72:fontcolor=red:borderw=5:bordercolor=white:x=(w-tw)/2:y=h*0.12:enable='between(t,0,2)'" \
  -c:v libx264 -preset fast -crf 23 -c:a copy \
  "${BASE}_hook_B.mp4" &

# Variant C: Question Hook
ffmpeg -i "$INPUT" \
  -vf "drawtext=text='Did you know?':fontsize=56:fontcolor=white:borderw=4:bordercolor=black:x=(w-tw)/2:y=h*0.15:enable='between(t,0,2)'" \
  -c:v libx264 -preset fast -crf 23 -c:a copy \
  "${BASE}_hook_C.mp4" &

wait
echo "Generated 3 hook variants for A/B testing"
ls -la "${BASE}_hook_*.mp4"
```

---

## Hook Performance Metrics

| Hook Type | Avg Stop Rate | Best Content Type | Risk Level |
|-----------|---------------|-------------------|------------|
| Pattern Interrupt | 85% | All | Low |
| Curiosity Gap | 78% | Educational | Low |
| Direct Challenge | 75% | Opinion/Niche | Medium |
| Transformation | 80% | Tutorial/Demo | Low |
| Bold Claim | 72% | How-to | Medium |
| Counter-Intuitive | 70% | Educational | Medium |
| Social Proof | 68% | Reviews | Low |
| Urgency | 65% | Trending/News | High |
| Storytelling | 82% | Personal/Brand | Low |
| Question | 74% | Educational | Low |

---

## Platform-Specific Hook Recommendations

| Platform | Best Hooks | Avoid |
|----------|-----------|-------|
| **TikTok** | Pattern Interrupt, Curiosity Gap, Direct Challenge | Long text hooks |
| **YouTube Shorts** | Transformation, Question, Storytelling | Clickbait-y urgency |
| **Instagram Reels** | Social Proof, Transformation, Bold Claim | Too promotional |
| **Facebook Reels** | Storytelling, Social Proof, Question | Youth slang |

---

## Optimal Animation Parameter Reference (2025-2026)

Based on viewer psychology research and platform algorithm analysis:

### Zoom Parameters for Maximum Impact

| Platform | Hook Zoom | Hook Duration | Continuous Zoom | FPS | Reasoning |
|----------|-----------|---------------|-----------------|-----|-----------|
| **TikTok** | 1.5x (50%) | 0.4-0.5s | +0.2%/sec | 60 | Mobile screens need strong motion |
| **YouTube Shorts** | 1.5x (50%) | 0.5-0.6s | +0.15%/sec | 60 | Larger screens (TV), subtler zoom |
| **Instagram Reels** | 1.4x (40%) | 0.5-0.6s | +0.18%/sec | 60 | Balance for mobile + tablet |

**Science**: 50% initial zoom (1.5x) is minimum perceptible motion on mobile screens. Less than 40% zoom appears static in first 0.5s.

### Pan & Tilt Parameters for Maximum Impact

| Movement Type | Distance | Duration | Velocity | Visibility |
|---------------|----------|----------|----------|------------|
| **Hook pan** | 10-15% frame | 0.4-0.6s | Fast | High |
| **Subtle pan** | 5% frame | 2-3s | Slow | Medium (background motion) |
| **Reveal pan** | 20-30% frame | 0.6-0.8s | Very fast | Maximum (attention grab) |
| **Tilt up** | 10-15% frame | 0.5-0.7s | Medium | Medium (power/scale) |
| **Tilt down** | 10-15% frame | 0.5-0.7s | Medium | Low (diminish subject) |

**Best practices**:
- Pan/tilt speed: 25-50% of frame width per second for "fast" motion
- Slower than 10%/sec appears static on mobile
- Faster than 80%/sec causes motion blur/disorientation

### Flash/Brightness Parameters

| Effect | Peak Brightness | Duration | Pattern | Use Case |
|--------|----------------|----------|---------|----------|
| **Pattern interrupt** | +30% | 0.2-0.3s | Single pulse | Hook opening |
| **Beat sync flash** | +20% | 0.1s | Rhythmic (4-6 Hz) | Music sync |
| **Attention grab** | +40% | 0.15s | Double pulse | Mid-video re-engagement |
| **Strobe effect** | +50% | 0.05s on, 0.05s off | 10 Hz | High-energy content (use sparingly) |

**Warning**: Avoid >10% brightness change for >0.5s (eye strain). Flashing >3Hz can trigger photosensitivity.

### Shake/Tremor Parameters

| Effect | Amplitude | Frequency | Duration | Use Case |
|--------|-----------|-----------|----------|----------|
| **Subtle engagement** | 3-5px | 25-30 Hz | Continuous | Background motion |
| **Hook shake** | 10-15px | 30 Hz | 0.3-0.5s | Pattern interrupt |
| **Impact shake** | 20-30px | 40 Hz | 0.2-0.3s | Beat drop, reveal |
| **Handheld simulation** | 2-4px | 5-8 Hz | Continuous | Authentic feel |

### Speed Ramping Parameters

| Effect | Start Speed | End Speed | Duration | Use Case |
|--------|-------------|-----------|----------|----------|
| **Slow-mo reveal** | 1.0x → 0.3x | 0.5-1.0s | Dramatic moment |
| **Speed up** | 1.0x → 2.0x | 0.3-0.5s | Transition, montage |
| **Freeze frame** | 1.0x → 0.0x | 0.2s | Pause for text overlay |
| **Ramp to normal** | 0.5x → 1.0x | 0.4-0.6s | Resume action |

### Formula Reference

```bash
# 1.5x zoom over 0.5s at 60fps (optimal hook):
# Always use d=1 for continuous processing; time conditional limits effect duration
fps=60,zoompan=z='if(lt(t,0.5),1.5-t,1)':d=1:s=1080x1920

# 10% pan over 0.4s (attention-grabbing movement):
crop=ih*9/16:ih:'(iw-ih*9/16)/2 + (iw*0.1)*min(t/0.4,1)':0

# 30% brightness flash for 0.3s:
eq=brightness='0.3*between(t,0,0.3)'

# 8% zoom pulse at ~2Hz (sin(t*12) = 12 rad/s = 1.91 Hz):
fps=60,zoompan=z='if(lt(t,1.5),1+0.08*sin(t*12),1)':d=1:s=1080x1920

# 10px shake at 30Hz for 0.4s:
crop=1060:1900:(10+10*sin(t*30)):(10+10*cos(t*25)):enable='lt(t,0.4)',scale=1080:1920

# Slow-mo 1x to 0.3x over 0.8s:
setpts='if(lt(t,0.8),PTS/(1-0.875*t/0.8),PTS/0.3)'
```

---

## Color Grading for Viral Hooks (2025-2026)

### Research-Backed Color Psychology

| Color Treatment | Engagement Boost | Best For | Avoid For |
|-----------------|------------------|----------|-----------|
| **High saturation** | +23% | Product showcases, lifestyle | Skin tones (looks unnatural) |
| **Orange & teal** | +18% | Cinematic, storytelling | Authentic/raw content |
| **High contrast** | +15% | Mobile viewing, text readability | Subtle/artistic content |
| **Vibrant/punchy** | +27% | TikTok, Reels | Professional/corporate |
| **Moody/desaturated** | +12% | Storytelling, documentaries | High-energy content |

### Hook-Specific Color Grading

#### Pattern Interrupt - Color Flash

```bash
# Red flash in first 0.3s (danger/urgency response)
ffmpeg -i input.mp4 \
  -vf "colorbalance=rs=0.5:gs=-0.3:bs=-0.3:enable='lt(t,0.3)'" \
  -c:v libx264 -preset medium -crf 22 \
  output_red_flash.mp4

# Saturation burst (grab attention)
ffmpeg -i input.mp4 \
  -vf "eq=saturation='if(lt(t,0.4),1+0.8*t/0.4,1.8)':enable='lt(t,2)'" \
  -c:v libx264 -preset medium -crf 22 \
  output_saturation_burst.mp4
```

#### Viral-Optimized Color Grade (Complete)

```bash
# Full viral color treatment - punchy, saturated, mobile-optimized
ffmpeg -i input.mp4 \
  -vf "\
    eq=saturation=1.2:contrast=1.18:brightness=-0.01:gamma=1.05,\
    colorbalance=rs=0.08:bs=-0.06,\
    curves=all='0/0.01 0.25/0.28 0.5/0.52 0.75/0.76 1/0.99',\
    unsharp=5:5:0.7\
  " \
  -c:v libx264 -preset medium -crf 22 \
  output_viral_grade.mp4
```

**Parameters explained**:
- `saturation=1.2`: 20% boost for mobile screens
- `contrast=1.18`: Punchier blacks/whites
- `brightness=-0.01`: Slight crush (prevents washed-out look)
- `gamma=1.05`: Lift midtones slightly
- `colorbalance`: Warm shift (red/yellow more engaging than blue)
- `curves`: S-curve for film-like contrast
- `unsharp`: Sharpen for mobile clarity

---

## Audio Hook Parameters (2025-2026)

### Audio Loudness Targets by Platform

| Platform | Target LUFS | True Peak | Reasoning |
|----------|-------------|-----------|-----------|
| **TikTok** | -10 to -12 LUFS | -1.5 dBTP | Mobile speakers need volume |
| **YouTube Shorts** | -13 to -15 LUFS | -1.5 dBTP | YouTube normalizes to -14 LUFS |
| **Instagram** | -10 to -12 LUFS | -1.5 dBTP | Same as TikTok |
| **Facebook** | -13 LUFS | -1 dBTP | Facebook normalizes to -13 LUFS |

**Key insight**: TikTok/Instagram favor louder audio (-10 to -12 LUFS) vs YouTube/Facebook (-13 to -14 LUFS).

### Audio Hook Techniques

#### 1. Volume Swell (Attention Grab)

```bash
# Fade in quickly from silence (0.3s hook)
ffmpeg -i input.mp4 \
  -af "afade=t=in:st=0:d=0.3,loudnorm=I=-11:TP=-1.5" \
  -c:v copy \
  output_volume_swell.mp4
```

#### 2. Bass Boost for Music Hooks

```bash
# Heavy bass for music content (TikTok dances, etc.)
ffmpeg -i input.mp4 \
  -af "bass=g=8:f=110:w=0.5,loudnorm=I=-11:TP=-1.5:LRA=11" \
  -c:v copy \
  output_bass_hook.mp4
```

#### 3. Voice Clarity for Talking Heads

```bash
# Compress and boost voice frequencies
ffmpeg -i input.mp4 \
  -af "highpass=f=100,lowpass=f=8000,compand=attacks=0:points=-80/-900|-45/-15|-27/-9|0/-7|20/-7:gain=5,loudnorm=I=-11:TP=-1.5" \
  -c:v copy \
  output_voice_hook.mp4
```

#### 4. Sound Effect Layers

```bash
# Layer whoosh sound effect on video hook
ffmpeg -i video.mp4 -i whoosh.mp3 \
  -filter_complex "\
    [1:a]afade=t=in:st=0:d=0.1,afade=t=out:st=0.4:d=0.1,volume=2[sfx];\
    [0:a][sfx]amix=inputs=2:duration=first:weights='1 0.7',loudnorm=I=-11:TP=-1.5[a]\
  " \
  -map 0:v -map "[a]" \
  -c:v copy -c:a aac -b:a 192k \
  output_with_sfx.mp4
```

### Compression Settings for Mobile Clarity

```bash
# Dynamic range compression for mobile speakers (prevents quiet parts)
ffmpeg -i input.mp4 \
  -af "acompressor=threshold=-18dB:ratio=4:attack=5:release=50,loudnorm=I=-11:TP=-1.5" \
  -c:v copy \
  output_compressed_audio.mp4
```

---

## Related Skills

- `viral-video-platform-specs` - Platform requirements
- `viral-video-animated-captions` - Caption styling
- `ffmpeg-viral-tiktok` - TikTok optimization
- `ffmpeg-viral-shorts` - YouTube Shorts optimization

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/josiahsiegel) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-11 -->

