mcpField
V
viral-video-hook-templates

viral-video-hook-templates

github.com/josiahsiegelMarketing & growth59112 installsUpdated 19w ago
Repository

About viral-video-hook-templates

A marketing skill for short-form video creators, with ten hook templates, FFmpeg filter guidance, and platform recommendations. It supports planning and testing video openings.

Key features

  1. 01Ten short-video hook templates
  2. 02FFmpeg filter graphs and parameters
  3. 03Visual hook effect examples
  4. 04Hook timing reference
  5. 05Platform-specific hook recommendations
  6. 06A/B testing workflow

Use cases

  1. 01Plan opening text and visuals for short videos
  2. 02Add visual effects to openings with FFmpeg
  3. 03Generate multiple opening variants for testing

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/josiahsiegel/claude-plugin-marketplace --skill viral-video-hook-templates

After installing, type/viral-video-hook-templatesin Claude Code to confirm it loaded.

Bundled filesreferences/animation-color-audio-parameters.mdreferences/ten-hook-templates.md

Details

From the project README

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 TypeDurationReasoning
Pattern Interrupt (visual)0.3-0.5sQuick shock, then content
Pattern Interrupt (text)1.0-1.5sTime to read "STOP" etc
Curiosity Gap2.0-3.0sTwo-part reveal timing
Direct Challenge1.5-2.5sRead + process + react
Transformation Tease2.0-3.0sBefore/after comparison
Question Hook1.5-2.0sRead + mental engagement
FFmpeg Time Units Quick Reference

All FFmpeg filter expressions use SECONDS with decimals:

ExpressionMeaningExample Use
tCurrent timeenable='lt(t,2)' = first 2 seconds
between(t,0,2.5)Time rangeHook visible for 2.5s
if(lt(t,1),expr1,expr2)ConditionalDifferent effect in first second
sin(t*10)Oscillation10 cycles per second
exp(-t*3)DecayQuick fade (3 = fast decay)
Recommended Hook Timing
# 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

A compact index of the ten canonical viral-video hooks. Each entry has its full FFmpeg filter graph and parameters in references/ten-hook-templates.md.

  1. Pattern Interrupt — unexpected visual shift in the first 0.5 s.
  2. Question Hook — provocative text overlay aligned with quick cut.
  3. Bold Statement Hook — declarative on-screen text with emphasis.
  4. Curiosity Gap — partial reveal that promises payoff later.
  5. Negative Hook — counterintuitive opener.
  6. Number Hook — "5 things..." text overlay.
  7. Story Hook — open with a mid-action scene.
  8. Visual Spectacle — striking transition or shot composition.
  9. Direct Address — character looks into camera and speaks first frame.
  10. Cliffhanger — hold a beat that resolves seconds later.

Load references/ten-hook-templates.md for the full filter graph of any template.

Visual Hook Effects Library

Shake/Tremor Effect
# 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
# 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
# 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
# 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
#!/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 TypeAvg Stop RateBest Content TypeRisk Level
Pattern Interrupt85%AllLow
Curiosity Gap78%EducationalLow
Direct Challenge75%Opinion/NicheMedium
Transformation80%Tutorial/DemoLow
Bold Claim72%How-toMedium
Counter-Intuitive70%EducationalMedium
Social Proof68%ReviewsLow
Urgency65%Trending/NewsHigh
Storytelling82%Personal/BrandLow
Question74%EducationalLow

Platform-Specific Hook Recommendations

PlatformBest HooksAvoid
TikTokPattern Interrupt, Curiosity Gap, Direct ChallengeLong text hooks
YouTube ShortsTransformation, Question, StorytellingClickbait-y urgency
Instagram ReelsSocial Proof, Transformation, Bold ClaimToo promotional
Facebook ReelsStorytelling, Social Proof, QuestionYouth slang

Animation, Color & Audio Parameters (2025-2026)

Concrete parameter values for animation timing, color grading LUTs, and audio hook design live in references/animation-color-audio-parameters.md. Highlights:

  • Animation timing: kinetic-text holds at 0.4-0.6 s; pattern-interrupt cuts at 0.3 s.
  • Color grading: boost saturation 1.15-1.3x for thumbnail pop; teal/orange split-tone for cinematic feel.
  • Audio: trending sound layer at -8 dB under primary; voice-over at -3 dB.

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

Comments

Markdown supported