
Motion Designer
- 433 installs
- 37 repo stars
- Updated February 26, 2026
- ncklrs/startup-os-skills
motion-designer is a Remotion video specification skill that turns vague video ideas into scene-by-scene motion specs with timing and audio for developers who need structured plans before writing React composition code.
About
motion-designer is a startup-os-skills guide that applies decades of After Effects and motion graphics knowledge to Remotion video specifications. Before any React code is written, the skill produces scene-by-scene breakdowns with visual descriptions, frame-level animation timing, background music strategy, sound effect placement, transition design, and visual hierarchy notes. It applies the 12 Disney animation principles, a four-phase emotional arc (hook, build, peak, resolve), and layered audio design across background music, SFX, ambient texture, and voiceover. Seven rules reference files cover scene composition, timing, audio, sound effects, transitions, visual hierarchy, and storytelling flow. Output maps directly to Remotion Sequence components, useCurrentFrame(), spring(), and interpolate() patterns via the remotion-best-practices skill for implementation.
- Produces scene-by-scene Remotion-oriented specs with visual hierarchy and narrative intent per frame
- Defines frame-accurate timing, pacing, and transition design between scenes
- Recommends background music mood and energy plus placed sound effects with exact timing
- Applies motion-graphics storytelling: rhythm, emotional resonance, and After Effects–style craft
- Triggers on create-a-video, motion-graphics planning, and spec-out-a-video requests
Motion Designer by the numbers
- 433 all-time installs (skills.sh)
- +9 installs in the week ending Jul 26, 2026 (Skillselion tracking)
- Ranked #421 of 1,337 Generative Media skills by installs in the Skillselion catalog
- Security screen: MEDIUM risk (skills.sh audit)
- Data as of Jul 31, 2026 (Skillselion catalog sync)
npx skills add https://github.com/ncklrs/startup-os-skills --skill motion-designerAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 433 |
|---|---|
| repo stars | ★ 37 |
| Security audit | 3 / 3 scanners passed |
| Last updated | February 26, 2026 |
| Repository | ncklrs/startup-os-skills ↗ |
How do you spec a Remotion video before coding?
Turn a vague video idea into a Remotion-ready scene-by-scene spec with timing, audio, and motion before anyone writes React composition code.
Who is it for?
Frontend developers and motion designers planning Remotion marketing videos, explainers, or product demos who need detailed specs before React implementation.
Skip if: Developers who need finished rendered video files immediately without a specification phase or teams not using Remotion React compositions.
When should I use this skill?
A developer asks to create a video, design motion graphics, plan video content, or spec out a Remotion animation before implementation.
What you get
Scene-by-scene video specification documents with frame timing, audio strategy, SFX placement, transition notes, and Remotion technical parameters.
- Scene-by-scene video specs
- Audio and SFX timing sheets
- Remotion technical parameters
By the numbers
- Applies 12 Disney animation principles to video specifications
- Includes 7 rules reference files for composition, timing, audio, and transitions
- Defines 6 common video type templates from 1-3s micro-interactions to 2-5min tutorials
Files
Motion Designer
Expert motion design guidance for creating compelling, engaging videos. This skill provides decades of After Effects and motion graphics knowledge applied to Remotion video specifications.
Philosophy
Great motion design combines three elements:
1. Visual storytelling — Every frame serves the narrative 2. Rhythmic timing — Motion follows natural rhythms and music beats 3. Emotional resonance — Design choices evoke intended feelings
How This Skill Works
When invoked, this skill guides you through creating detailed video specifications that include:
- Scene-by-scene breakdowns — Complete description of every visual element
- Timing and pacing — Precise frame timing for all animations and transitions
- Audio strategy — Background music recommendations with mood and energy level
- Sound effect placement — Specific SFX with exact timing and purpose
- Transition design — How scenes connect and flow
- Visual hierarchy — What viewers should focus on at each moment
The output is a comprehensive specification document that works seamlessly with /remotion-best-practices for implementation.
Core Frameworks
The 12 Principles of Animation (Disney)
1. Squash and Stretch — Gives weight and flexibility 2. Anticipation — Prepares the audience for action 3. Staging — Directs attention to most important elements 4. Straight Ahead vs Pose-to-Pose — Two animation approaches 5. Follow Through and Overlapping Action — Natural motion continues 6. Slow In and Slow Out — Easing creates realistic movement 7. Arcs — Natural movement follows curved paths 8. Secondary Action — Supporting details add life 9. Timing — Speed creates personality and mood 10. Exaggeration — Pushes reality for impact 11. Solid Drawing — Three-dimensional forms 12. Appeal — Design is engaging and pleasing
Motion Design Arc
Every engaging video follows an emotional arc:
Hook (0-5s) → Grab attention immediately
Build (5-30s) → Establish context and build interest
Peak (30-70s) → Deliver main message with maximum impact
Resolve (70-90s) → Satisfying conclusion and call-to-actionAudio Design Layers
Professional motion graphics use layered audio:
1. Background Music — Sets mood and energy (40-60% volume) 2. Sound Effects — Emphasizes actions and transitions (60-80% volume) 3. Ambient Texture — Subtle background presence (20-30% volume) 4. Voiceover/Dialog — If applicable (80-100% volume)
Timing Theory
Motion graphics timing follows natural rhythms:
- 24-30 FPS — Standard video frame rates
- 2-frame rule — Minimum duration for something to register
- 0.3s (9 frames) — Minimum for comfortable reading
- 0.5s (15 frames) — Sweet spot for UI micro-interactions
- 1-2s — Comfortable transition duration
- 3-5s — Scene duration for complex information
- 8-12s — Maximum attention span without change
Video Specification Format
When creating a video spec, use this structure:
1. Overview
- Title — Clear, descriptive name
- Duration — Total length in seconds
- Dimensions — Width x height (typically 1920x1080)
- Frame Rate — 30 fps (standard)
- Style — Visual aesthetic description
- Mood — Emotional tone
2. Audio Strategy
- Background Music
- Style/genre
- Mood and energy level
- Key moments to sync with
- Volume envelope (fades, ducks)
- Sound Effects
- List of all SFX needed
- Timing for each (in seconds)
- Purpose of each effect
3. Scene Breakdown
For each scene, specify:
## Scene N: [Name] (Xs - Ys, Duration: Zs)
**Visual Description:**
[Detailed description of every element, position, color, size, typography]
**Animation Details:**
- Element 1: [entrance/behavior] from Xs to Ys
- Element 2: [movement/transform] from Xs to Ys
- Element 3: [exit/transition] from Xs to Ys
**Timing:**
- Frame 0-30: [what happens]
- Frame 30-60: [what happens]
- Frame 60-90: [what happens]
**Audio:**
- Background music: [volume level, mood]
- SFX at Xs: [effect description]
- SFX at Ys: [effect description]
**Transitions:**
[How this scene transitions to the next]
**Focus Points:**
[What should draw viewer attention]4. Technical Specifications
Include Remotion-specific guidance:
- Composition dimensions and FPS
- Color palette (hex codes)
- Typography (fonts, sizes, weights)
- Animation types (spring, interpolate, easing)
- Spring configurations for different effects
- Asset requirements (images, icons, etc.)
Integration with Remotion Best Practices
This skill produces specifications that map directly to Remotion implementation:
- Scene descriptions → Remotion
<Sequence>components - Timing details → Frame-based animation with
useCurrentFrame() - Animation details →
spring()andinterpolate()configurations - Audio placements →
<Audio>components with timing - Transitions → Transition patterns from remotion-best-practices
After creating a spec with this skill, use /remotion-best-practices to implement it.
Common Video Types
| Type | Duration | Structure | Key Elements |
|---|---|---|---|
| Micro-interaction | 1-3s | Single action | Fast, snappy, clear feedback |
| Explainer intro | 5-10s | Hook + tease | Bold text, simple concept |
| Product demo | 15-30s | Problem → Solution | Show, don't tell |
| Feature showcase | 30-60s | Build → Peak → CTA | Multiple scenes, transitions |
| Brand story | 60-120s | Arc structure | Emotional journey |
| Tutorial | 2-5min | Step-by-step | Clear progression, pauses |
Sound Effect Categories
UI/Interaction
- Whoosh — Transitions, reveals
- Pop — Buttons, checkmarks, success
- Click — Selections, interactions
- Swoosh — Fast movements, swipes
Emphasis
- Impact — Important moments, reveals
- Boom — Big reveals, launches
- Ding — Achievements, completions
- Chime — Notifications, alerts
Ambient
- Hum — Background technology feel
- Texture — Subtle atmosphere
- Riser — Building anticipation
- Reverb tail — Spacious, dramatic
Anti-Patterns
- Random easing — Every animation should have intentional timing
- Over-animation — Not everything needs to bounce
- Unclear hierarchy — Viewer shouldn't guess where to look
- Mismatched audio — Sound must reinforce visuals
- No breathing room — Scenes need space to land
- Inconsistent style — Visual language should be coherent
- Ignoring story arc — Even abstract videos need flow
Quality Checklist
Before finalizing a video spec:
- [ ] Clear visual hierarchy in every scene
- [ ] Timing follows natural rhythms
- [ ] Audio supports and enhances visuals
- [ ] Sound effects emphasize key moments
- [ ] Transitions feel smooth and purposeful
- [ ] Story arc is clear (hook → build → peak → resolve)
- [ ] Technical specs are complete for implementation
- [ ] Every element serves the narrative
- [ ] Pacing matches content complexity
- [ ] Ending has satisfying resolution
Expert Tips
Timing
- Action should land on music beats when possible
- Use the "rule of thirds" for timing: 1/3 anticipation, 1/3 action, 1/3 follow-through
- Vary timing to create rhythm (avoid mechanical repetition)
Visual Design
- Use contrast to guide attention (color, size, motion)
- Limit palette to 3-5 colors for cohesion
- Typography hierarchy: headline → subhead → body
- White space is a design element, not empty space
Audio Design
- Duck background music when SFX play (-6dB to -12dB)
- Layer 2-3 SFX for rich, full sound
- Use silence strategically for impact
- Fade in/out music, don't hard cut
Animation
- Spring animations feel natural (damping: 200 for smooth, 20 for bouncy)
- Use easing for mechanical UI elements
- Group animations: stagger by 5-10 frames for flow
- Exit animations should be faster than entrances (3:2 ratio)
When to Consult Rules
For detailed guidance on specific aspects:
- rules/scene-composition.md — Visual hierarchy and staging
- rules/timing-pacing.md — Frame timing and rhythm
- rules/audio-design.md — Music and audio strategy
- rules/sound-effects.md — SFX selection and placement
- rules/transitions.md — Scene transitions and flow
- rules/visual-hierarchy.md — Directing attention
- rules/storytelling-flow.md — Narrative structure
- rules/camera-movement.md — Virtual camera techniques
Video Specification Output Template
Impact: CRITICAL
This is the format motion-designer should output when creating video specifications. This template ensures all necessary details are included for implementation with /remotion-best-practices.
---
[Video Title]
Overview
- Duration: [X] seconds
- Dimensions: 1920x1080 (or specify)
- Frame Rate: 30 fps
- Style: [Brief description of visual aesthetic]
- Mood: [Emotional tone: energetic, calm, professional, playful, etc.]
- Target Audience: [Who this is for]
Color Palette
Primary: #HEX - [Color name/purpose]
Secondary: #HEX - [Color name/purpose]
Accent: #HEX - [Color name/purpose]
Background: #HEX - [Color name/purpose]
Text: #HEX - [Color name/purpose]Typography
- Headline: [Font family], [Size]px, [Weight]
- Subheadline: [Font family], [Size]px, [Weight]
- Body: [Font family], [Size]px, [Weight]
Audio Strategy
Background Music
- Style/Genre: [Electronic, acoustic, orchestral, etc.]
- BPM: [Beats per minute]
- Mood: [Upbeat, dramatic, calm, etc.]
- Energy Level: [Low/Medium/High]
- Volume: 50% base (duck to 25-30% when SFX play)
- Key Sync Points:
- 0s: Music starts
- [X]s: Beat aligns with [visual event]
- [Y]s: Energy builds
- [Z]s: Fade out begins
Sound Effects
| Time | SFX Type | Description | Volume | Purpose |
|---|---|---|---|---|
| 0s | Whoosh | Entrance sweep | 70% | Logo entrance |
| 5s | Pop | Bright snap | 65% | Element reveal |
| 10s | Swoosh | Transition | 60% | Scene change |
| 25s | Ding | Success chime | 75% | CTA emphasis |
Ambient Texture (Optional)
- Type: [Tech hum, nature ambience, etc.]
- Volume: 25%
- Duration: [Full video or specific scenes]
---
Scene Breakdown
Scene 1: [Scene Name] (0s - [X]s, Duration: [X]s)
Purpose: [What this scene achieves in the narrative]
Visual Description:
- Background: [Full description - color, gradient, pattern, etc.]
- Primary element: [Description - what it is, size, position, color]
- Secondary elements: [Description]
- Typography: [Any text with exact copy, size, position]
Element Positions:
- [Element name]: (x: [#]px, y: [#]px), size: [#]x[#]px
- [Element name]: (x: [#]px, y: [#]px), size: [#]x[#]px
Animation Details:
Element 1 - [Name]:
- Frames 0-15: Spring entrance from scale 0.8 to 1.0
- Spring config:
{ damping: 200 } - Opacity: 0 → 1
- Frames 15-90: Hold at scale 1.0
- Frames 90-105: Fade out, opacity 1 → 0
Element 2 - [Name]:
- Frames 20-35: Slide in from right (x: 1920 → 960)
- Easing:
Easing.inOut(Easing.quad) - Frames 35-95: Subtle float (±5px Y-axis)
- Frames 95-110: Exit left
Timing Breakdown:
- Frame 0-15 (0-0.5s): Background fades in, primary element enters
- Frame 15-30 (0.5-1s): Secondary elements stagger in (6 frame delays)
- Frame 30-90 (1-3s): Hold composition, text is readable
- Frame 90-105 (3-3.5s): Elements exit for transition
Audio:
- Background music: 50% volume, [mood description]
- 0s: Whoosh SFX (70%), [purpose]
- 1.5s: Pop SFX (65%), [purpose]
Visual Hierarchy: 1. Primary: [What viewers see first] 2. Secondary: [Supporting elements] 3. Tertiary: [Background/atmosphere]
Transitions Out: [How this scene transitions to next - crossfade, slide, scale, etc.] [Duration and timing details]
---
Scene 2: [Scene Name] ([X]s - [Y]s, Duration: [Z]s)
[Repeat full structure above for each scene]
---
Technical Specifications for Remotion
Composition Setup
{
id: 'video-name',
component: VideoComponent,
durationInFrames: [total frames = seconds * 30],
fps: 30,
width: 1920,
height: 1080,
}Color Constants
const COLORS = {
primary: '#HEX',
secondary: '#HEX',
accent: '#HEX',
background: '#HEX',
text: '#HEX',
};Spring Configurations
// Smooth, no bounce - use for elegant transitions
const smooth = { damping: 200 };
// Snappy, minimal bounce - use for UI elements
const snappy = { damping: 20, stiffness: 200 };
// Bouncy entrance - use for playful animations
const bouncy = { damping: 8 };
// Heavy, slow - use for dramatic moments
const heavy = { damping: 15, stiffness: 80, mass: 2 };Animation Timing Constants
const { fps } = useVideoConfig();
const SCENE_1_DURATION = 3 * fps; // 90 frames
const SCENE_2_DURATION = 5 * fps; // 150 frames
const TRANSITION_TIME = 0.5 * fps; // 15 framesAsset Requirements
- [ ] Logo file: [format, dimensions]
- [ ] Product images: [list with specs]
- [ ] Icons: [list]
- [ ] Background music: [style, duration, BPM]
- [ ] Sound effects: [list]
- [ ] Fonts: [Google Fonts or local]
---
Implementation Notes
Scene Sequence Structure
<AbsoluteFill>
<Sequence from={0} durationInFrames={90}>
<Scene1 />
</Sequence>
<Sequence from={90} durationInFrames={150}>
<Scene2 />
</Sequence>
<Sequence from={240} durationInFrames={120}>
<Scene3 />
</Sequence>
</AbsoluteFill>Audio Implementation
// Background music with fade in/out
<Audio
src={staticFile('background-music.mp3')}
volume={(f) => {
// Fade in
const fadeIn = interpolate(f, [0, 30], [0, 0.5], {
extrapolateRight: 'clamp'
});
// Fade out
const fadeOut = interpolate(
f,
[durationInFrames - 30, durationInFrames],
[0.5, 0],
{ extrapolateLeft: 'clamp', extrapolateRight: 'clamp' }
);
return Math.min(fadeIn, fadeOut);
}}
/>
// Sound effects
<Sequence from={0}>
<Audio src={staticFile('whoosh.mp3')} volume={0.7} />
</Sequence>Parallax Implementation
const baseMovement = interpolate(frame, [0, 120], [0, -500]);
<Background style={{ transform: `translateX(${baseMovement * 0.5}px)` }} />
<Midground style={{ transform: `translateX(${baseMovement * 1.0}px)` }} />
<Foreground style={{ transform: `translateX(${baseMovement * 1.5}px)` }} />---
Quality Checklist
Before implementation:
Narrative:
- [ ] Clear hook within first 3 seconds
- [ ] Follows story arc (hook → build → peak → resolve)
- [ ] Maximum of 3 main points
- [ ] Satisfying conclusion with CTA
Visual Design:
- [ ] Clear visual hierarchy in every scene
- [ ] Sufficient negative space (30%+ per scene)
- [ ] Color contrast meets readability standards
- [ ] Typography hierarchy clear
Timing:
- [ ] All timings in seconds, converted to frames
- [ ] Minimum perception times respected (0.3s for text)
- [ ] Major actions sync with music beats
- [ ] Pacing varies (mix of fast and slow)
Audio:
- [ ] Music mood matches video tone
- [ ] Background music 40-60% volume
- [ ] Music ducks when SFX play
- [ ] Fade in/out, no hard cuts
- [ ] SFX placed at moment of action
Transitions:
- [ ] Transitions serve story (not gratuitous)
- [ ] Duration appropriate (0.3-1s typical)
- [ ] Audio synchronized
- [ ] Not overused (max 1 per 5-10s)
Technical:
- [ ] All required assets listed
- [ ] Spring configs specified
- [ ] Color values provided
- [ ] Implementation notes clear
- [ ] Works with remotion-best-practices patterns
---
Example Minimal Spec
For reference, here's a minimal 10-second spec:
# Quick Product Teaser
## Overview
- Duration: 10 seconds
- Style: Modern, minimal
- Mood: Exciting
## Audio
- Music: Upbeat electronic (120 BPM), 50% volume
- SFX: Whoosh at 0s, pop at 5s, ding at 9s
## Scene 1: Logo Reveal (0-5s)
- Logo scales in (0.8 → 1.0) with spring
- Background: Dark gradient (#0A0A0A → #171717)
- Whoosh SFX at entrance
## Scene 2: Product Shot (5-10s)
- Product image slides in from right
- Tagline appears below
- Pop at 5s, ding at 9s
- Crossfade transition (0.5s)
## Implementation
- Total frames: 300
- Spring config: { damping: 200 }
- Assets: logo.png, product.jpg---
This template ensures comprehensive, implementable video specifications that work seamlessly with Remotion and /remotion-best-practices.
Audio Design and Music Strategy
Impact: HIGH
Audio is 50% of the viewing experience. The right music creates mood, guides pacing, and reinforces the emotional arc of your video.
Audio Layer Architecture
Professional videos use 3-4 distinct audio layers:
Layer 1: Background Music (Foundation)
- Volume: 40-60% (allows other elements to shine)
- Purpose: Sets overall mood and energy
- Character: Continuous throughout video or scene
Layer 2: Sound Effects (Punctuation)
- Volume: 60-80% (emphasizes actions)
- Purpose: Reinforces visual actions and transitions
- Character: Brief, specific, timed precisely
Layer 3: Ambient Texture (Depth)
- Volume: 20-30% (subtle presence)
- Purpose: Adds richness and dimension
- Character: Continuous, atmospheric, non-intrusive
Layer 4: Voiceover/Dialog (Optional)
- Volume: 80-100% (when present)
- Purpose: Narration or spoken content
- Character: Clear, prioritized over all other audio
Good Example
30-second Product Video:
Background Music:
- Upbeat electronic (120 BPM)
- Volume: 50%
- Duration: 0-30s (full video)
- Duck to 30% when SFX play
Sound Effects:
- Whoosh at 0s (logo entrance): 70%
- Pop at 5s (feature reveal): 65%
- Swoosh at 10s (transition): 60%
- Ding at 25s (CTA): 75%
Ambient Texture:
- Subtle tech hum
- Volume: 25%
- Duration: 0-30sLayered audio creates depth and professional polish.
Bad Example
Just Background Music:
- One music track at 80%
- No sound effects
- No layering
- Feels flat and amateurMusic Mood and Energy Matrix
Choose music based on desired emotional response:
| Mood | Low Energy | Medium Energy | High Energy |
|---|---|---|---|
| Happy | Acoustic guitar | Indie pop | Dance electronic |
| Serious | Ambient drone | Minimal piano | Orchestral |
| Inspiring | Soft strings | Building rhythm | Epic anthem |
| Playful | Ukulele | Quirky synth | Upbeat funk |
| Dramatic | Dark ambient | Tension strings | Action cinematic |
Good Example
Video: SaaS Product Launch (Inspiring + Medium Energy)
Music Selection:
- Style: Building rhythm with piano and strings
- BPM: 100-120
- Mood: Optimistic, professional
- Character: Starts simple, builds to fuller arrangement
- Energy arc: Medium (intro) → High (middle) → Medium (outro)
Rationale: Inspires confidence while maintaining professionalism.Bad Example
Video: Professional SaaS Product
Music Selection:
- Style: Heavy metal
- BPM: 180
- Mood: Aggressive
- Character: Intense throughout
Mismatched tone for target audience.Music Energy Arc
Music energy should follow the video's emotional arc:
Standard Arc (Most common)
Hook (0-5s): Medium-High (grab attention)
Build (5-20s): Medium → High (building interest)
Peak (20-35s): High (maximum impact)
Resolve (35-45s): High → Medium (satisfying close)Dramatic Arc
Intro (0-10s): Low (mysterious)
Build (10-30s): Low → High (tension building)
Peak (30-50s): High (dramatic reveal)
Resolve (50-60s): Medium (settle)Energetic Arc
Start (0s): High immediately (burst of energy)
Sustain (0-40s): High throughout (maintain excitement)
End (40-45s): High (energetic finish)Good Example
60s Explainer Video:
Music Energy Curve:
0-10s: 60% energy (hook with moderate excitement)
10-30s: 60% → 85% (build as features revealed)
30-45s: 85% (peak during main message)
45-55s: 85% → 70% (wind down)
55-60s: 70% → 50% (resolve to calm CTA)
Gradual changes feel natural.Bad Example
Music Energy: Flat 70% throughout
No arc = no emotional journey.Tempo and BPM Sync
Sync visual beats to music tempo:
- 60-80 BPM: Slow, contemplative (2s per beat at 30fps = 60 frames)
- 80-100 BPM: Moderate, steady (0.75s = 22-23 frames)
- 100-120 BPM: Upbeat, energetic (0.5s = 15 frames)
- 120-140 BPM: Fast, exciting (0.43s = 13 frames)
- 140+ BPM: Very fast, intense (0.35s = 10-11 frames)
Good Example
Music: 120 BPM (beat every 0.5s = 15 frames at 30fps)
Animation Timing:
Frame 0: Scene 1 starts (beat 1)
Frame 15: Element enters (beat 2)
Frame 30: Transition starts (beat 3)
Frame 45: Scene 2 starts (beat 4)
Frame 60: Next element (beat 5)
Major visual events land on beats.Creates rhythmic coherence between audio and visual.
Ducking and Dynamic Volume
Duck (reduce) background music when other audio plays:
Good Example
Scene with Sound Effect:
Frame 0-90:
- Background music: 50% volume
Frame 90-120: (SFX plays)
- Background music: 25% volume (ducked -50%)
- Sound effect: 70% volume
- Transition: 5 frame fade down/up
Frame 120-onward:
- Background music: 50% volume (restored)Prevents audio clash, maintains clarity.
Bad Example
Background music: 60% constant
Sound effect: 70% on top
= 130% total volume, muddy mix.Fade In/Out Technique
Never hard-cut music. Always fade.
Good Example
// Fade in music over 1 second
<Audio
src={staticFile("background.mp3")}
volume={(f) =>
interpolate(f, [0, 30], [0, 0.5], {
extrapolateRight: 'clamp'
})
}
/>
// Fade out at end
volume={(f) => {
const { durationInFrames } = useVideoConfig();
return interpolate(
f,
[durationInFrames - 30, durationInFrames],
[0.5, 0],
{ extrapolateLeft: 'clamp', extrapolateRight: 'clamp' }
);
}}Smooth, professional audio transitions.
Bad Example
// Music just starts/stops
<Audio src={staticFile("background.mp3")} volume={0.5} />
// Hard cuts feel jarringMusic Selection Criteria
When choosing background music:
Must Have
- [ ] Matches emotional tone of video
- [ ] Appropriate energy level for content
- [ ] BPM allows visual sync (ideally 100-120)
- [ ] No sudden loud moments or drops
- [ ] Consistent quality throughout
- [ ] Legally licensed for use
Should Have
- [ ] Builds/evolves over time (not repetitive)
- [ ] Clear beats for synchronization
- [ ] Room for sound effects (not too dense)
- [ ] Ending that works with fade-out
Nice to Have
- [ ] Loops seamlessly if needed
- [ ] Multiple intensity versions (stems)
- [ ] Hit points that align with video beats
Common Music Styles for Different Videos
| Video Type | Music Style | BPM Range | Key Characteristics |
|---|---|---|---|
| SaaS Product | Electronic/Corporate | 100-120 | Clean, modern, optimistic |
| Explainer | Acoustic/Indie | 90-110 | Friendly, approachable |
| Brand Story | Cinematic/Orchestral | 70-100 | Emotional, sweeping |
| Tech Demo | Electronic/Minimal | 110-130 | Futuristic, precise |
| Tutorial | Light Ambient | 80-100 | Unobtrusive, calm |
| Launch Video | Epic/Anthemic | 120-140 | Exciting, building |
Silence as an Audio Element
Strategic silence is powerful:
Good Example
Scene: Dramatic Reveal
Frames 0-120: Music at 50%
Frames 120-135: Complete silence (0.5s)
- All audio cuts
- Creates anticipation
Frames 135-onward: Music returns at 70% with impact SFXSilence makes the following sound more impactful.
Checklist
- [ ] Music mood matches video tone
- [ ] Energy level appropriate for content
- [ ] Music follows emotional arc (not flat)
- [ ] BPM allows beat synchronization
- [ ] Background music volume: 40-60%
- [ ] Music ducks when SFX play (-6 to -12dB)
- [ ] Fade in over 0.5-1s at start
- [ ] Fade out over 0.5-1s at end
- [ ] No hard cuts or jarring transitions
- [ ] Audio layers create depth (music + SFX + ambient)
- [ ] Total mix doesn't exceed 100% volume
- [ ] Music supports but doesn't overpower visuals
Virtual Camera Movement and Perspective
Impact: MEDIUM
In motion graphics, virtual camera movement creates depth, dynamism, and cinematic quality. Even in 2D compositions, camera techniques bring scenes to life.
Camera Movement Types
1. Pan (Horizontal Movement)
When to Use: Show wide scenes, reveal content, follow action
Speed: Slow to medium for smooth feel
Good Example
// Smooth pan across landscape
const cameraX = interpolate(
frame,
[0, 120],
[0, -1920],
{
easing: Easing.inOut(Easing.quad),
extrapolateRight: 'clamp'
}
);
return (
<div style={{ transform: `translateX(${cameraX}px)` }}>
{/* Wide content */}
</div>
);Smooth, controlled horizontal movement.
Bad Example
Pan speed: 0.1s for 1920px = too fast, jarring2. Tilt (Vertical Movement)
When to Use: Reveal height, show top-to-bottom, dramatic reveals
Good Example
// Tilt up building reveal
const cameraY = spring({
frame,
fps,
from: 1080,
to: 0,
config: { damping: 200 }
});
<div style={{ transform: `translateY(${cameraY}px)` }} />3. Zoom (Scale)
When to Use: Emphasize details, create drama, focus shifts
Good Example
// Zoom in on product detail
const zoom = spring({
frame: frame - 60,
fps,
from: 1,
to: 2,
config: { damping: 200 }
});
const offsetX = -480; // Keep centered during zoom
const offsetY = -270;
<div style={{
transform: `scale(${zoom}) translate(${offsetX}px, ${offsetY}px)`
}} />Zoom while maintaining center point.
Bad Example
Scale without translate adjustment:
- Zooms from top-left corner
- Feels broken4. Dolly (Z-Axis Movement)
When to Use: Create depth, move through layers
Good Example
// Dolly through layers (parallax)
const dollyProgress = spring({ frame, fps });
const layer1Z = interpolate(dollyProgress, [0, 1], [0, -200]);
const layer2Z = interpolate(dollyProgress, [0, 1], [0, -100]);
const layer3Z = interpolate(dollyProgress, [0, 1], [0, 0]);
<>
<Layer style={{ transform: `translateZ(${layer1Z}px)` }} />
<Layer style={{ transform: `translateZ(${layer2Z}px)` }} />
<Layer style={{ transform: `translateZ(${layer3Z}px)` }} />
</>Creates depth perception through differential movement.
5. Orbit (Rotate Around)
When to Use: Show object from multiple angles, dynamic product shots
Good Example
// Orbit around product
const angle = interpolate(
frame,
[0, 120],
[0, 360]
);
<div style={{
transform: `rotate(${angle}deg)`
}} />Parallax Effect (Multi-Layer Movement)
Create depth with differential layer speeds:
The Parallax Ratio
- Foreground: 1.5x speed (fastest)
- Midground: 1.0x speed (normal)
- Background: 0.5x speed (slowest)
Good Example
const { fps } = useVideoConfig();
const frame = useCurrentFrame();
const baseMovement = interpolate(
frame,
[0, 90],
[0, -500]
);
const foregroundX = baseMovement * 1.5; // Fastest
const midgroundX = baseMovement * 1.0; // Normal
const backgroundX = baseMovement * 0.5; // Slowest
return (
<>
<Background style={{ transform: `translateX(${backgroundX}px)` }} />
<Midground style={{ transform: `translateX(${midgroundX}px)` }} />
<Foreground style={{ transform: `translateX(${foregroundX}px)` }} />
</>
);Creates convincing depth perception.
Bad Example
All layers move at same speed:
- No depth
- Feels flatCamera Easing and Feel
Different movements need different easing:
Smooth and Cinematic
spring({ config: { damping: 200 } })
// Gentle, elegant camera movesQuick and Snappy
spring({ config: { damping: 20, stiffness: 200 } })
// Fast camera whips, energeticMechanical and Precise
interpolate(frame, [0, 60], [0, 100], {
easing: Easing.inOut(Easing.quad)
})
// Controlled, predictableCamera Movement Timing
| Movement | Min Duration | Optimal | Max Duration |
|---|---|---|---|
| Quick pan | 0.5s | 1s | 2s |
| Smooth pan | 2s | 4s | 6s |
| Zoom in | 0.8s | 1.5s | 3s |
| Zoom out | 0.5s | 1s | 2s |
| Orbit | 3s | 5s | 8s |
| Parallax drift | 5s+ | Continuous | — |
The Ken Burns Effect
Static image with slow zoom/pan (documentary style):
Good Example
// Slow zoom and pan on photo
const progress = frame / (durationInFrames - 1);
const scale = interpolate(progress, [0, 1], [1, 1.2]);
const x = interpolate(progress, [0, 1], [0, -100]);
const y = interpolate(progress, [0, 1], [0, -50]);
<img
src="photo.jpg"
style={{
transform: `scale(${scale}) translate(${x}px, ${y}px)`
}}
/>Creates life in static images.
Camera Shake
Add energy or tension with subtle shake:
Good Example
// Subtle camera shake on impact
const shakeIntensity = spring({
frame: frame - impactFrame,
fps,
from: 10,
to: 0,
config: { damping: 15 }
});
const shakeX = Math.sin(frame * 0.5) * shakeIntensity;
const shakeY = Math.cos(frame * 0.7) * shakeIntensity;
<div style={{
transform: `translate(${shakeX}px, ${shakeY}px)`
}} />Controlled shake that settles quickly.
Bad Example
Random large movements:
- Nauseating
- UnprofessionalFocus Shifts (Simulated Depth of Field)
Blur background/foreground to direct attention:
Good Example
// Shift focus from background to foreground
const blurBg = interpolate(
frame,
[60, 90],
[0, 10],
{ extrapolateRight: 'clamp' }
);
const blurFg = interpolate(
frame,
[60, 90],
[10, 0],
{ extrapolateRight: 'clamp' }
);
<>
<Background style={{ filter: `blur(${blurBg}px)` }} />
<Foreground style={{ filter: `blur(${blurFg}px)` }} />
</>Mimics camera focus shift.
The 180-Degree Rule
Maintain consistent spatial relationships:
Good Example
Scene 1: Camera shows object from left
Scene 2: Camera moves right but stays on same side of object
Scene 3: Camera continues right, same side
Viewer maintains spatial awareness.Bad Example
Scene 1: View from left
Scene 2: Jump to opposite side
Disorients viewer.Dutch Angle (Tilted Frame)
Rotated camera for tension or dynamism:
Good Example
// Subtle tilt for energy (5-15 degrees)
const tilt = 8;
<div style={{ transform: `rotate(${tilt}deg)` }} />Use sparingly for emphasis.
Bad Example
45-degree tilt:
- Extreme, nauseating
- Use only for intentional disorientationCamera Path Planning
Plan camera movements on paper first:
Good Example
Shot List:
Shot 1 (0-3s): Wide establishing shot, static
Shot 2 (3-8s): Slow zoom in, 1.0 → 1.5 scale
Shot 3 (8-12s): Pan right while zoomed, reveal detail
Shot 4 (12-15s): Zoom out, return to wide
Intentional, storyboarded camera plan.Bad Example
Random camera movements:
- No plan
- Feels arbitraryCombining Camera Movements
Layer movements for complexity:
Good Example
// Pan + zoom simultaneously
const pan = interpolate(frame, [0, 120], [0, -500]);
const zoom = interpolate(frame, [0, 120], [1, 1.3]);
<div style={{
transform: `translateX(${pan}px) scale(${zoom})`
}} />Cinematic, dynamic movement.
Bad Example
Pan, then zoom (sequential):
- Feels mechanical
- Less engagingVirtual Camera Limits
Respect physical camera constraints for realism:
Good Limits
- Max zoom: 3x (feels realistic)
- Max rotation: 15° for energy, 45° for extreme
- Pan speed: Not faster than viewer can track
- Movement smoothness: No instant stops/starts
Bad Limits
10x zoom, instant movements, 90° rotations:
- Feels fake, videogame-likeHandheld Simulation
Subtle, irregular movement for documentary feel:
Good Example
// Subtle handheld wobble
const wobbleX = Math.sin(frame * 0.1) * 2 + Math.cos(frame * 0.15) * 1;
const wobbleY = Math.cos(frame * 0.12) * 2 + Math.sin(frame * 0.08) * 1;
<div style={{
transform: `translate(${wobbleX}px, ${wobbleY}px)`
}} />Subtle, organic motion.
Checklist
- [ ] Camera movement serves story purpose
- [ ] Movement speed is comfortable (not too fast)
- [ ] Easing applied (no linear movements)
- [ ] Parallax uses proper layer speed ratios (0.5x, 1x, 1.5x)
- [ ] Zoom maintains proper center point
- [ ] Camera shake is controlled and brief
- [ ] Movement duration appropriate (1-4s typical)
- [ ] 180-degree rule maintained
- [ ] Combined movements feel intentional
- [ ] Maximum zoom limited to 3x for realism
- [ ] No instant starts or stops
- [ ] Focus shifts direct attention effectively
- [ ] Camera plan supports narrative
- [ ] Handheld effect is subtle if used
- [ ] Movement doesn't cause motion sickness
Scene Composition and Visual Staging
Impact: CRITICAL
Effective scene composition directs viewer attention and creates visual clarity. Every element should have a purpose and proper placement within the frame.
The Rule of Thirds
Divide the frame into a 3x3 grid. Place important elements along the lines or at intersections for balanced, engaging composition.
Good Example
Scene: Product Hero (1920x1080)
Layout:
- Product image: Center-right intersection (1280, 360)
- Headline: Top-left third (320, 240)
- CTA button: Bottom-center third (960, 840)
- Background: Gradient from top-left to bottom-rightThis creates natural eye movement: headline → product → CTA.
Bad Example
Scene: Cluttered Layout
Layout:
- Everything centered vertically
- Text overlapping imagery
- Elements fighting for attention
- No clear focal pointCentered alignment can feel static. Overlapping creates confusion.
Z-Pattern Reading Flow
For western audiences, eyes naturally follow a Z-pattern: 1. Top-left (start) 2. Top-right (scan across) 3. Bottom-left (return) 4. Bottom-right (end/CTA)
Place elements to support this natural flow.
Good Example
Scene: Feature Highlight
0-300ms: Logo appears top-left
300-800ms: Headline animates in top-right
800-1200ms: Visual demo center (Z intersection)
1200-1500ms: CTA appears bottom-rightFlow guides viewer through the narrative naturally.
Depth and Layering
Create visual depth with foreground, midground, and background layers.
Good Example
Scene: Product Launch (Layering)
Background layer (z-index: 1):
- Subtle gradient
- Slow parallax movement (0.3x speed)
Midground layer (z-index: 2):
- Product imagery
- Normal movement (1x speed)
Foreground layer (z-index: 3):
- Text overlays
- Faster parallax (1.5x speed)
- Drop shadows for separationParallax at different speeds creates three-dimensional feel.
Bad Example
Scene: Flat Design
Single layer:
- All elements on same plane
- No depth cues
- Static background
- Everything moves togetherLacks visual interest and dimensional quality.
Focal Point Hierarchy
Only one primary focal point per moment. Use size, contrast, motion, and position to establish hierarchy.
Priority Levels:
1. Primary (Hero) — Where you want eyes first (largest, highest contrast, moving) 2. Secondary — Supporting information (medium size, moderate contrast) 3. Tertiary — Background elements (smallest, low contrast, subtle/static)
Good Example
Scene: Announcement (0-3s)
Primary focal point:
- "LAUNCHING" text
- Size: 120px font
- Color: #FF6B35 (high contrast)
- Animation: Spring entrance with scale
- Position: Center screen
Secondary elements:
- Date "January 2025"
- Size: 48px font
- Color: #A3A3A3 (medium contrast)
- Animation: Fade in after primary
- Position: Below primary
Tertiary elements:
- Background pattern
- Low opacity (20%)
- Subtle drift animation
- Fills entire frameClear hierarchy guides attention effectively.
Negative Space (Breathing Room)
Empty space is not wasted space. It provides visual rest and emphasizes important elements.
Good Example
Scene: Minimalist Product Intro
Content occupies: 40% of frame
Negative space: 60% of frame
Product image: 500x500px at center
Headline: 600px wide, ample padding
Background: Single solid color
Ratio creates elegance and focus.Bad Example
Scene: Overcrowded
Content occupies: 85% of frame
Negative space: 15% (margins only)
Elements cramped together
No visual breathing room
Feels cluttered and overwhelmingColor and Contrast
Use color to establish hierarchy and mood. Ensure sufficient contrast for readability.
Good Example
Scene: High Contrast Composition
Background: #0A0A0A (dark)
Primary element: #FFFFFF (white text, 18:1 contrast ratio)
Accent: #FF6B35 (ember orange, draws attention)
Secondary text: #A3A3A3 (silver, 7:1 contrast ratio)
All text meets WCAG AAA standards.Bad Example
Scene: Low Contrast
Background: #4A4A4A (medium gray)
Text: #6B6B6B (slightly lighter gray, 2:1 contrast)
Accent: #5A5A5A (barely distinguishable)
Text is difficult to read.Grid Systems
Use consistent grid systems for alignment and visual rhythm.
Good Example
Scene: Multi-Element Layout
8-column grid (240px columns with 32px gutters)
Element 1: Columns 1-3
Element 2: Columns 5-8
Element 3: Columns 1-4
Element 4: Columns 5-8
Consistent alignment creates professional feel.Checklist
- [ ] Clear focal point in every scene
- [ ] Rule of thirds applied to key elements
- [ ] Visual hierarchy established (primary, secondary, tertiary)
- [ ] Sufficient negative space (minimum 30% of frame)
- [ ] Depth created with layering and parallax
- [ ] Color contrast meets readability standards (4.5:1 minimum)
- [ ] Grid system used for alignment
- [ ] Reading flow supports narrative (Z-pattern or F-pattern)
- [ ] No overlapping elements that create confusion
- [ ] Composition balanced but not symmetrically boring
Sound Effects Selection and Placement
Impact: MEDIUM-HIGH
Sound effects (SFX) bring motion graphics to life. They emphasize actions, smooth transitions, and create satisfying feedback. Well-placed SFX make the difference between amateur and professional work.
The Role of Sound Effects
SFX serve three primary purposes:
1. Emphasis — Draw attention to important moments 2. Transition — Smooth scene changes 3. Feedback — Confirm actions and create satisfaction
Sound Effect Categories
UI/Interaction Sounds
Purpose: Feedback for user actions and interface elements
| Sound | When to Use | Character | Duration |
|---|---|---|---|
| Click | Buttons, selections | Sharp, short | 0.05-0.1s |
| Pop | Checkmarks, success states | Bright, snappy | 0.1-0.2s |
| Toggle | Switches, toggles | Two-tone (on/off) | 0.15-0.25s |
| Tap | Light interactions | Soft, brief | 0.05-0.1s |
Transition Sounds
Purpose: Connect scenes and smooth visual changes
| Sound | When to Use | Character | Duration |
|---|---|---|---|
| Whoosh | Fast movements, reveals | Airy, directional | 0.3-0.6s |
| Swoosh | Scene transitions | Smooth, flowing | 0.4-0.8s |
| Swipe | Slide transitions | Fast, cutting air | 0.2-0.4s |
| Whomp | Heavy transitions | Deep, substantial | 0.5-1s |
Emphasis Sounds
Purpose: Highlight important moments
| Sound | When to Use | Character | Duration |
|---|---|---|---|
| Impact | Big reveals | Powerful, attention-grabbing | 0.3-0.5s |
| Boom | Dramatic moments | Deep, resonant | 0.5-1s |
| Ding | Achievements, completions | Bright, musical | 0.3-0.5s |
| Chime | Notifications, alerts | Clear, pleasant | 0.4-0.6s |
Texture Sounds
Purpose: Add richness and depth
| Sound | When to Use | Character | Duration |
|---|---|---|---|
| Riser | Build anticipation | Ascending, tense | 1-3s |
| Reverb tail | After impacts | Spacious, echoing | 1-2s |
| Glitch | Tech/digital themes | Broken, stuttered | 0.1-0.3s |
| Shimmer | Magical moments | Sparkly, bright | 0.5-1s |
SFX Placement Strategy
Rule of Action Reinforcement
Place SFX at the moment of action, not before or after.
Good Example
Animation: Button Scaling
Frame 0-15: Button scales from 1.0 to 1.1
Frame 15: SFX "pop" plays (at peak of scale)
Frame 15-30: Button returns to 1.0
SFX plays at the moment of maximum action.Bad Example
Frame 0: SFX plays
Frame 0-15: Button scales
Frame 15-30: Button returns
SFX too early, disconnected from visual.Anticipation and Release
For dramatic moments, use a riser before the reveal.
Good Example
Dramatic Reveal:
Frames 0-60: Riser SFX builds (2s)
Frame 60: Impact SFX (coincides with reveal)
Frames 60-90: Reverb tail fades out
Creates anticipation → release pattern.Layering Sound Effects
Combine 2-3 SFX for rich, full sound.
Good Example
Logo Impact Moment:
SFX Layer 1: Impact (low frequency, 0.5s)
- Volume: 70%
- Provides weight
SFX Layer 2: Whoosh (mid frequency, 0.4s)
- Volume: 50%
- Provides movement
SFX Layer 3: Shimmer (high frequency, 0.8s)
- Volume: 40%
- Provides sparkle
All start at same frame, different durations.Creates complex, professional sound.
Bad Example
Single SFX: Generic "swoosh"
- Feels thin and cheapVolume and Ducking
Relative Volume Guidelines
| SFX Type | Volume Range | Purpose |
|---|---|---|
| Subtle | 30-40% | Background texture |
| Normal | 50-70% | Standard emphasis |
| Prominent | 70-85% | Key moments |
| Impact | 80-95% | Major reveals |
Duck Background Music
When SFX play, reduce background music:
Good Example
// Background music with ducking
const frame = useCurrentFrame();
const { fps } = useVideoConfig();
// SFX plays at frame 90-120
const isDucking = frame >= 90 && frame <= 120;
<Audio
src={staticFile("background.mp3")}
volume={isDucking ? 0.25 : 0.5}
/>
<Sequence from={90}>
<Audio
src={staticFile("impact.mp3")}
volume={0.75}
/>
</Sequence>Music drops 50% when SFX plays, prevents mud.
SFX Timing Patterns
Staggered SFX for Lists
When multiple items appear, stagger SFX:
Good Example
5 Items Entering:
Item 1 entrance: Frame 0, SFX "pop" at 70%
Item 2 entrance: Frame 6, SFX "pop" at 65%
Item 3 entrance: Frame 12, SFX "pop" at 60%
Item 4 entrance: Frame 18, SFX "pop" at 55%
Item 5 entrance: Frame 24, SFX "pop" at 50%
Stagger: 6 frames (0.2s) apart
Volume decreases to prevent overwhelmingCreates rhythmic cascade.
Bad Example
All items: Same frame, same SFX, same volume
= Wall of sound, muddyTransition SFX Overlap
Overlap transition SFX slightly with next scene:
Good Example
Scene Transition:
Scene 1 ends: Frame 90
Whoosh SFX starts: Frame 85 (5 frames before)
Scene 2 starts: Frame 90
Whoosh SFX ends: Frame 105 (15 frames after)
Whoosh bridges scenes smoothly.SFX Frequency Balance
Use different frequencies for layered effects:
- Low (< 250 Hz): Weight, impact, power
- Mid (250-2000 Hz): Body, presence
- High (> 2000 Hz): Sparkle, air, detail
Good Example
Logo Reveal SFX Stack:
Low: Deep impact "boom" (80 Hz fundamental)
Mid: Whoosh movement (600-1200 Hz)
High: Shimmer sparkle (4000-8000 Hz)
Full frequency spectrum covered.Silence Between SFX
Allow space between sound effects:
Good Example
SFX Timing:
0s: Whoosh (0.4s duration)
0.6s: Next SFX (0.2s gap after whoosh)
1.2s: Next SFX (0.6s gap)
Minimum 0.2s between SFX for clarity.Bad Example
0s: Whoosh
0.3s: Pop (overlaps whoosh)
0.5s: Impact (overlaps pop)
Too dense, chaotic.SFX for Different Video Types
| Video Type | Primary SFX | Secondary SFX | Density |
|---|---|---|---|
| UI Demo | Clicks, pops | Whooshes | High (every action) |
| Brand Story | Whooshes, impacts | Ambient textures | Low (key moments) |
| Product Launch | Booms, risers | Chimes, shimmers | Medium (punctuation) |
| Tutorial | Subtle pops | Light whooshes | Low (minimal distraction) |
| Explainer | Pops, dings | Swooshes | Medium (supportive) |
Common SFX Mistakes
Mistake 1: Too Many SFX
Bad: SFX every 0.5s throughout video
= Overwhelming, amateur
Good: SFX at key moments (every 3-5s)
= Professional restraintMistake 2: Stock Overuse
Bad: Same "whoosh.mp3" for every transition
= Repetitive, boring
Good: Variety of 3-5 different whooshes
= Dynamic, professionalMistake 3: Volume Too High
Bad: All SFX at 90%+ volume
= Overpowering, harsh
Good: SFX 50-75%, peaks at 85%
= Balanced, pleasantMistake 4: Poor Timing
Bad: SFX before or after visual action
= Disconnected
Good: SFX synchronized to peak of action
= CohesiveSFX Selection Checklist
When choosing sound effects:
- [ ] Matches visual action (whoosh for movement, pop for appear)
- [ ] Appropriate duration (not too long)
- [ ] Clean recording (no background noise)
- [ ] Proper frequency range for layering
- [ ] Consistent quality across all SFX
- [ ] Legally licensed for commercial use
SFX Placement Checklist
For each sound effect:
- [ ] Timed to exact moment of visual action
- [ ] Volume appropriate for emphasis level (30-85%)
- [ ] Doesn't overlap competing SFX (0.2s minimum gap)
- [ ] Background music ducks when SFX plays
- [ ] Layered with complementary frequencies if needed
- [ ] Adds value (doesn't feel gratuitous)
- [ ] Consistent style with other SFX in video
- [ ] Total audio mix doesn't exceed 100%
Quick Reference: SFX by Moment
| Visual Moment | Recommended SFX | Volume | Duration |
|---|---|---|---|
| Logo appears | Whoosh + shimmer | 70% | 0.5s |
| Button click | Pop or click | 65% | 0.1s |
| Checkmark | Bright pop | 70% | 0.2s |
| Scene transition | Swoosh | 60% | 0.4s |
| Big reveal | Impact + reverb | 80% | 0.8s |
| Counter counting | Subtle tick | 40% | 0.05s |
| Success state | Ding or chime | 75% | 0.4s |
| Error state | Low buzz | 60% | 0.3s |
| Panel slide in | Whoosh | 55% | 0.3s |
| Text appear | Soft pop | 50% | 0.15s |
Storytelling Flow and Narrative Structure
Impact: HIGH
Even abstract motion graphics tell a story. Every video needs a beginning, middle, and end with clear emotional progression. Good storytelling keeps viewers engaged from first frame to last.
The Universal Story Arc
All engaging videos follow an emotional arc, regardless of content:
Hook (0-10%) → Grab attention, establish intrigue
Build (10-40%) → Develop context, build interest
Peak (40-70%) → Deliver main message, maximum impact
Resolve (70-100%) → Satisfying conclusion, clear next stepGood Example (30s SaaS Product Video)
Hook (0-3s, 10%):
- Bold question: "Tired of complex workflows?"
- Visual: Chaotic, overwhelming UI mockup
- Emotion: Frustration (relatable problem)
Build (3-12s, 30%):
- Introduce product name and promise
- Visual: Clean, simple interface appears
- Emotion: Hope (solution exists)
Peak (12-21s, 30%):
- Show 3 key features with benefits
- Visual: Features in action, success states
- Emotion: Excitement (this works!)
Resolve (21-30s, 30%):
- Customer testimonial quote
- Clear CTA: "Start free trial"
- Emotion: Confidence (ready to act)
Clear emotional journey from problem to solution.Bad Example
0-30s: Features list, no story
- Feature 1, Feature 2, Feature 3, CTA
- No emotion, no arc
- Boring, forgettableThe Hook Principles
First 3-5 seconds determine if viewers keep watching.
Hook Types
| Type | When to Use | Example |
|---|---|---|
| Question | Create curiosity | "What if video creation was this easy?" |
| Problem | Relate to pain | "Spending hours on manual tasks?" |
| Contrast | Show before/after | Dark chaos → Bright clarity |
| Intrigue | Mystery reveal | Abstract shapes → Logo reveal |
| Action | Immediate energy | Dynamic animation burst |
Good Hook Example
Hook: Problem-Based (0-3s)
Visual:
- Cluttered desk with papers flying
- Fast, chaotic motion
- Dark, stressful colors (#8B0000, #2C2C2C)
Audio:
- Frantic, tense music (140 BPM)
- Paper rustling SFX
Text:
- "Overwhelmed by data?"
- Large, bold, urgent
Immediately relatable problem creates engagement.Bad Hook Example
0-3s: Logo slowly fades in
- Slow, no energy
- No story hook
- Viewer has no reason to continueThree-Act Structure
Adapt classic storytelling to motion graphics:
Act 1: Setup (25%)
- Establish context
- Introduce problem or topic
- Set visual style and tone
Act 2: Confrontation (50%)
- Develop complexity
- Show solution or exploration
- Build toward climax
Act 3: Resolution (25%)
- Deliver payoff
- Provide conclusion
- Clear call-to-action
Good Example (60s Brand Video)
Act 1 - Setup (0-15s):
- Show founders' original vision
- Introduce brand values
- Establish warm, authentic tone
Act 2 - Confrontation (15-45s):
- Show product development journey
- Highlight challenges overcome
- Build emotional connection
Act 3 - Resolution (45-60s):
- Reveal current success
- Customer impact testimonials
- Inspiring call to join journey
Complete story with satisfying arc.The Power of Contrast
Stories thrive on contrast: before/after, problem/solution, chaos/order.
Good Example
Contrast-Based Narrative:
Before State (0-8s):
- Visuals: Messy, cluttered, dark
- Motion: Jerky, unpredictable
- Audio: Dissonant, tense
- Emotion: Frustration
Transition (8-10s):
- Visual transformation
- Smooth morph animation
- Musical shift
After State (10-30s):
- Visuals: Clean, organized, bright
- Motion: Smooth, flowing
- Audio: Harmonious, uplifting
- Emotion: Relief, satisfaction
Contrast creates impact and memorable moment.Bad Example
0-30s: Consistent style, no change
- Same visuals throughout
- No transformation
- No contrast = no storyEmotional Pacing
Vary emotional intensity to maintain engagement:
Good Example (45s video)
Emotional Energy Curve:
0-5s: High (hook with excitement)
5-15s: Medium-Low (explain calmly)
15-25s: Medium-High (build excitement)
25-35s: High (peak moment)
35-45s: Medium (resolve, CTA)
Energy pattern: High → Low → Build → Peak → ResolveCreates dynamic, engaging experience.
Bad Example
0-45s: Flat medium energy
- No peaks or valleys
- Monotonous = boringThe Rule of Threes
Three is the magic number for information retention:
- Three key features
- Three customer benefits
- Three scene transitions
- Three-act structure
Good Example
Product Feature Story:
Feature 1 (10-20s): Speed
- "10x faster processing"
- Visual: Rapid animation
- Benefit: Save time
Feature 2 (20-30s): Simplicity
- "One-click deployment"
- Visual: Clean, minimal
- Benefit: Reduce complexity
Feature 3 (30-40s): Reliability
- "99.9% uptime"
- Visual: Solid, stable
- Benefit: Peace of mind
Three features = memorable, not overwhelming.Bad Example
Seven features in 30s:
- Information overload
- Can't remember anyProgressive Revelation
Reveal information layer by layer:
Good Example
Layered Product Reveal:
Layer 1 (0-5s): Problem context
- Set up why this matters
Layer 2 (5-12s): Product introduction
- What it is
Layer 3 (12-22s): How it works
- Demonstrate value
Layer 4 (22-30s): Social proof
- Who uses it
Layer 5 (30-35s): Call to action
- What to do next
Each layer builds on previous = coherent story.Bad Example
All information shown simultaneously:
- Problem, product, features, testimonial, CTA
- Overwhelming, no flowThe Payoff Principle
Set up expectations early, deliver payoff later:
Good Example
Setup (0-3s):
- Text: "Watch what happens when you click..."
- Visual: Finger approaching button
- Creates anticipation
Build (3-8s):
- Button press animation
- Suspenseful pause
- Maintains tension
Payoff (8-12s):
- Spectacular reveal/transformation
- Satisfying resolution
- Delivers on promise
Setup → tension → payoff = satisfying story.Bad Example
Instant reveal with no buildup:
- No anticipation
- No satisfactionCharacter and Perspective
Even without people, videos can have character:
Character Types
| Type | How to Convey |
|---|---|
| Product as hero | Center stage, spotlight |
| User as hero | User perspective, first-person |
| Problem as villain | Dark, chaotic visuals |
| Brand as guide | Helpful, supporting role |
Good Example
User-as-Hero Story:
Opening (0-5s):
- First-person perspective
- "You face this challenge..."
- Relatable situation
Journey (5-20s):
- User discovers product
- Product helps user
- User succeeds
Resolution (20-30s):
- User achievement
- Empowered feeling
- Call to user action
User is protagonist, product is tool.Momentum and Flow
Maintain forward momentum throughout:
Good Example
Momentum Techniques:
1. Visual Continuity:
- Element from Scene 1 carries into Scene 2
- Color theme threads through video
2. Directional Flow:
- Consistent left-to-right movement
- Implies progression
3. Building Complexity:
- Start simple, add layers
- Natural escalation
4. Musical Arc:
- Music builds in energy
- Supports visual progression
Always moving forward, never stagnant.Bad Example
Disjointed scenes:
- No visual connection
- Random directions
- Feels like disconnected clipsThe Callback
Reference earlier moments for cohesion:
Good Example
Opening (0-3s):
- Red square animates in
- Represents problem
Middle (15s):
- Red square transforms to blue circle
- Problem becomes solution
Ending (28-30s):
- Blue circle from middle reappears
- Callback creates closure
Bookend structure feels complete.Narrative Frameworks for Common Videos
Explainer Video
Structure:
1. Hook: Relatable problem (5s)
2. Introduce solution concept (10s)
3. Show how it works (15s)
4. Prove it works (social proof) (7s)
5. CTA (3s)Product Launch
Structure:
1. Build anticipation (10s)
2. Dramatic reveal (5s)
3. Feature showcase (20s)
4. Emotional appeal (7s)
5. Availability/CTA (3s)Brand Story
Structure:
1. Origin/values (15s)
2. Journey/challenges (20s)
3. Current impact (15s)
4. Future vision (10s)Tutorial
Structure:
1. Desired outcome (5s)
2. Step 1 (12s)
3. Step 2 (12s)
4. Step 3 (12s)
5. Result + next steps (9s)Checklist
- [ ] Clear hook within first 3-5 seconds
- [ ] Follows story arc (hook → build → peak → resolve)
- [ ] Emotional energy varies (not flat)
- [ ] Uses contrast (before/after, problem/solution)
- [ ] Information revealed progressively, not all at once
- [ ] Maximum of 3 main points/features
- [ ] Setup creates anticipation, payoff delivers
- [ ] Clear protagonist (user, product, or concept)
- [ ] Visual/audio elements create forward momentum
- [ ] Callbacks or bookends for cohesion
- [ ] Each scene serves the overall narrative
- [ ] Satisfying conclusion with clear resolution
- [ ] CTA feels natural, not tacked on
- [ ] Story appropriate for target audience
- [ ] Emotional journey is intentional
Timing and Pacing
Impact: CRITICAL
Timing is the soul of motion design. The same visual elements with different timing create entirely different emotional experiences.
Frame Rate Foundation
Working at 30 fps (frames per second):
- 1 second = 30 frames
- 0.1 second = 3 frames
- 0.5 second = 15 frames
Always think in seconds first, then multiply by fps for frame precision.
Good Example
const { fps } = useVideoConfig();
// Define in seconds, convert to frames
const INTRO_DURATION = 2 * fps; // 60 frames
const TRANSITION_TIME = 0.5 * fps; // 15 frames
const HOLD_TIME = 1.5 * fps; // 45 framesReadable and maintainable timing.
Bad Example
// Magic numbers with no context
const intro = spring({ frame: frame - 60 });
const transition = spring({ frame: frame - 15 });Unclear what the timings represent.
Minimum Perception Times
Human perception has physical limits:
- 2 frames (0.07s) — Absolute minimum to register something happened
- 6 frames (0.2s) — Minimum for recognizing what happened
- 9 frames (0.3s) — Comfortable minimum for reading short text
- 15 frames (0.5s) — Standard UI micro-interaction
- 30 frames (1s) — Comfortable for reading a sentence
Good Example
Scene: Success Notification
Frame 0-9: Checkmark appears (0.3s - recognizable)
Frame 9-69: "Success!" message holds (2s - readable)
Frame 69-84: Fade out (0.5s - smooth exit)
Total: 2.8 secondsEvery element has sufficient time to register.
Bad Example
Scene: Rushed Notification
Frame 0-3: Checkmark flashes (0.1s - too fast)
Frame 3-18: Message appears (0.5s - can't read)
Frame 18-21: Fade out (0.1s - jarring)
Total: 0.7 secondsToo fast to comprehend.
The Golden Ratio of Motion
Entrances and exits should follow asymmetric timing:
- Entrance: 1.0x — Normal speed, builds anticipation
- Hold: 2-3x — Longer duration, allows comprehension
- Exit: 0.5-0.7x — Faster than entrance, maintains energy
Good Example
Element Animation Arc:
Entrance: 0-45 frames (1.5s)
- Spring animation with anticipation
Hold: 45-135 frames (3s)
- Static or subtle animation
- Time to read/understand
Exit: 135-165 frames (1s)
- Faster spring or fade
- Move to next element
Ratio: 1.5s : 3s : 1s (1 : 2 : 0.67)Creates natural rhythm with emphasis on content.
Bad Example
Symmetric Timing:
Entrance: 1s
Hold: 1s
Exit: 1s
Ratio: 1 : 1 : 1Feels mechanical and boring.
Staggered Timing
When animating multiple elements, stagger by 3-10 frames for flow.
Good Example
List of 5 Items Entering:
Item 1: frame 0
Item 2: frame 6 (0.2s delay)
Item 3: frame 12 (0.4s delay)
Item 4: frame 18 (0.6s delay)
Item 5: frame 24 (0.8s delay)
Each item 6 frames (0.2s) after previous.
Total cascade: 24 frames (0.8s)Creates smooth, flowing cascade effect.
Bad Example
All Items Simultaneous:
All items: frame 0
OR
All items: random delaysSimultaneous feels chaotic. Random delays feel unintentional.
Easing and Spring Timing
Different animations need different timing curves:
Fast and Snappy (UI elements)
spring({
config: { damping: 20, stiffness: 200 }
// Quick, minimal bounce
// Duration: ~20-30 frames (0.7-1s)
})Smooth and Natural (transitions)
spring({
config: { damping: 200 }
// No bounce, elegant
// Duration: ~25-40 frames (0.8-1.3s)
})Bouncy and Playful (announcements)
spring({
config: { damping: 8, stiffness: 100 }
// Big bounce, energetic
// Duration: ~40-60 frames (1.3-2s)
})Heavy and Impactful (dramatic reveals)
spring({
config: { damping: 15, stiffness: 80, mass: 2 }
// Slow, weighty
// Duration: ~50-70 frames (1.7-2.3s)
})Beat-Based Timing
Sync major actions to music beats (typically 120 BPM = 0.5s per beat at 30fps = 15 frames).
Good Example
Background Music: 120 BPM (beat every 15 frames)
Frame 0: First element enters (beat 1)
Frame 15: Second element enters (beat 2)
Frame 30: Transition starts (beat 3)
Frame 45: New scene (beat 4)
All major actions land on beats.Creates rhythmic coherence with audio.
Bad Example
Frame 0: Element enters
Frame 17: Next element (off-beat)
Frame 29: Transition (off-beat)
Frame 51: New scene (off-beat)
Feels disconnected from music.Scene Duration Guidelines
| Scene Type | Minimum | Optimal | Maximum |
|---|---|---|---|
| Splash/Logo | 1s | 2s | 3s |
| Title card | 2s | 3s | 5s |
| Simple info | 3s | 5s | 7s |
| Complex info | 5s | 8s | 12s |
| Transition | 0.3s | 0.5s | 1s |
Good Example
Video Structure (30s total):
Scene 1 (Logo): 0-2s
Scene 2 (Hook): 2-7s (5s - optimal for concept)
Scene 3 (Feature 1): 7-14s (7s - complex info)
Scene 4 (Feature 2): 14-21s (7s - complex info)
Scene 5 (CTA): 21-30s (9s - allow action time)Each scene has appropriate duration for complexity.
Pacing Variation
Vary pacing to maintain engagement. Mix fast and slow moments.
Good Example (30s video)
0-5s: Fast (hook, grab attention)
5-12s: Medium (build, explain)
12-20s: Slow (emphasize key point)
20-25s: Fast (energy, excitement)
25-30s: Slow (resolve, CTA)
Energy Curve: Fast → Medium → Slow → Fast → SlowCreates dynamic, engaging rhythm.
Bad Example
0-30s: Constant medium pace throughout
No variation = monotonous.Anticipation and Follow-Through
Build anticipation before action, allow follow-through after.
Good Example
Button Click Animation:
Frames 0-6: Anticipation (scale down to 0.95, 0.2s)
Frames 6-12: Action (scale to 1.1, 0.2s)
Frames 12-24: Follow-through (spring back to 1.0, 0.4s)
Total: 24 frames (0.8s)
Ratio: 1:1:2 (anticipation:action:follow-through)Feels natural and satisfying.
Bad Example
Frames 0-6: Instant scale to 1.1
Frames 6-12: Instant back to 1.0
No anticipation or follow-through = mechanical.Checklist
- [ ] All timings defined in seconds, converted to frames
- [ ] Minimum perception times respected (0.3s for text)
- [ ] Entrance/hold/exit ratio follows 1:2:0.7 guideline
- [ ] Multiple elements use staggered timing (5-10 frame delays)
- [ ] Animation speed matches content importance
- [ ] Major actions sync with music beats
- [ ] Scene durations appropriate for content complexity
- [ ] Pacing varies (mix of fast and slow)
- [ ] Anticipation and follow-through included
- [ ] Total duration supports viewer comprehension
Transitions and Scene Flow
Impact: HIGH
Transitions connect scenes and maintain visual flow. Well-designed transitions feel invisible; poor transitions break immersion and feel jarring.
The Golden Rule of Transitions
The best transition is often no transition at all. Use transitions to serve the story, not to show off effects.
Transition Categories
1. Cut (Instant)
When to Use: Related scenes, fast pacing, energetic content
Character: Immediate, no overlap
Good Example
Scene 1: Product closeup (ends frame 90)
Scene 2: Product in context (starts frame 90)
Instant cut works because:
- Same subject matter
- Visual continuity
- Fast-paced energyBad Example
Scene 1: Dark, moody
Scene 2: Bright, playful
Instant cut creates jarring contrast.2. Crossfade (Dissolve)
When to Use: Gentle transitions, time passing, mood shifts
Duration: 0.3-1s (9-30 frames at 30fps)
Good Example
// Scene 1 fades out
const scene1Opacity = interpolate(
frame,
[60, 75],
[1, 0],
{ extrapolateRight: 'clamp' }
);
// Scene 2 fades in (overlap)
const scene2Opacity = interpolate(
frame,
[68, 83],
[0, 1],
{ extrapolateRight: 'clamp' }
);
// 8-frame overlap creates smooth blendOverlap creates seamless transition.
Bad Example
Scene 1 fades out: frames 60-75
Scene 2 fades in: frames 75-90
No overlap = visible gap.3. Slide/Push
When to Use: Directional flow, revealing new content, UI-style videos
Duration: 0.5-1s (15-30 frames)
Good Example
// Scene 1 slides left, exits
const scene1X = interpolate(
frame,
[90, 105],
[0, -1920],
{ extrapolateRight: 'clamp' }
);
// Scene 2 slides in from right
const scene2X = interpolate(
frame,
[90, 105],
[1920, 0],
{ extrapolateRight: 'clamp' }
);
// Both move in sync, same timingCreates cohesive directional movement.
4. Scale Transition
When to Use: Zooming focus, hierarchical relationships, dramatic reveals
Duration: 0.5-1.5s (15-45 frames)
Good Example
// Scene 1 scales down and fades
const scene1Scale = spring({
frame: frame - 90,
fps,
from: 1,
to: 0.8,
config: { damping: 200 }
});
const scene1Opacity = interpolate(
frame,
[90, 105],
[1, 0]
);
// Scene 2 scales up from small
const scene2Scale = spring({
frame: frame - 95,
fps,
from: 0.8,
to: 1,
config: { damping: 200 }
});Creates zoom hierarchy.
5. Wipe
When to Use: Clean segmentation, chapter changes, directional narrative
Duration: 0.4-0.8s (12-24 frames)
Good Example
Wipe Transition (left to right):
Wipe element:
- Width animates: 0 → 1920px over 20 frames
- Color: Brand color or white
- Covers scene 1, reveals scene 2
Timing:
Frame 90-100: Wipe covers scene 1
Frame 100-110: Wipe reveals scene 2Clean, directional scene change.
6. Morphing Elements
When to Use: Showing transformation, connecting related concepts
Duration: 0.8-1.5s (24-45 frames)
Good Example
Icon Morph Transition:
Scene 1: Ends with icon A (centered)
Transition: Icon A morphs to icon B (0.8s)
Scene 2: Starts with icon B (centered)
Visual continuity through shared element.Transition Timing Guidelines
| Transition Type | Min Duration | Optimal | Max Duration |
|---|---|---|---|
| Cut | 0s | 0s | 0s |
| Fast crossfade | 0.2s | 0.3s | 0.5s |
| Standard crossfade | 0.5s | 0.8s | 1.2s |
| Slide | 0.4s | 0.6s | 1s |
| Scale | 0.5s | 1s | 1.5s |
| Wipe | 0.3s | 0.5s | 0.8s |
| Morph | 0.8s | 1.2s | 2s |
Directional Consistency
Maintain logical directional flow across transitions.
Good Example
Video Navigation Flow:
Scene 1 → Scene 2: Slide left (forward)
Scene 2 → Scene 3: Slide left (forward)
Scene 3 → Scene 2: Slide right (back)
Direction indicates forward/backward navigation.Bad Example
Scene 1 → Scene 2: Slide left
Scene 2 → Scene 3: Slide right
Scene 3 → Scene 4: Slide up
Random directions = confusing.Easing and Spring Transitions
Different transitions need different timing curves:
Sharp/Snappy (UI, energetic)
spring({
config: { damping: 20, stiffness: 200 }
})
// Quick, minimal bounceSmooth/Elegant (brand, professional)
spring({
config: { damping: 200 }
})
// No bounce, smoothBouncy/Playful (fun, casual)
spring({
config: { damping: 8 }
})
// Visible bounceAudio Sync with Transitions
Pair transitions with appropriate sound effects:
| Transition Type | Recommended SFX |
|---|---|
| Cut | None (or subtle click) |
| Crossfade | Subtle whoosh |
| Slide | Directional swoosh |
| Scale | Whoosh + impact |
| Wipe | Sharp swoosh |
| Morph | Shimmer or glitch |
Good Example
Slide Transition:
Visual:
Frame 90-105: Scenes slide (0.5s)
Audio:
Frame 90: Swoosh SFX starts (0.4s duration)
Frame 90-95: Background music ducks to 30%
Frame 95-105: Background music returns to 50%
Audio emphasizes and smooths transition.Transition Overuse Prevention
Good Pattern
30-second video:
0-8s: Scene 1 (no transition, video starts)
8s: Crossfade to Scene 2 (0.5s)
8.5-16.5s: Scene 2
16.5s: Slide to Scene 3 (0.5s)
17-25s: Scene 3
25s: Scale to Scene 4 (0.8s)
25.8-30s: Scene 4 (holds for end)
3 transitions for 4 scenes = appropriate.Bad Pattern
Every 2 seconds: Different flashy transition
= Distracting, amateurComplex Multi-Element Transitions
For smooth scene changes, stagger element timing:
Good Example
Scene 1 to Scene 2 Transition:
Scene 1 elements exit (staggered):
Frame 90: Background fades (0.5s)
Frame 92: Text slides out left (0.4s)
Frame 94: Icon scales down (0.3s)
Scene 2 elements enter (staggered):
Frame 96: Background fades in (0.5s)
Frame 98: Text slides in right (0.4s)
Frame 100: Icon scales up (0.3s)
Total transition: 10 frames (0.33s)
Elements overlap for smooth flow.Bad Example
All Scene 1 elements exit at once: Frame 90
All Scene 2 elements enter at once: Frame 100
Feels mechanical, not flowing.Masked Transitions
Use shape masks for creative transitions:
Good Example
Circle Mask Transition:
Circle mask:
- Starts: 0px radius at center
- Ends: 2000px radius (covers frame)
- Duration: 0.6s (18 frames)
- Easing: Ease-out
Reveals Scene 2 through expanding circle.Color-Based Transitions
Use intermediate color frames for smooth color shifts:
Good Example
Dark to Light Scene Transition:
Frame 90-92: Scene 1 darkens (multiply by 0.7)
Frame 92-94: White flash overlay (0 → 1 → 0 opacity)
Frame 94-96: Scene 2 lightens (multiply by 0.7 → 1)
Total: 6 frames (0.2s)
Color shift feels intentional.Transition Matching Content
Match transition style to content:
| Content Type | Best Transitions |
|---|---|
| Professional/Corporate | Crossfade, simple slides |
| Tech/Modern | Wipes, glitch effects |
| Playful/Fun | Bouncy scales, colorful |
| Elegant/Luxury | Slow crossfades, smooth |
| Energetic/Sports | Fast cuts, dynamic slides |
| Educational | Clean wipes, simple fades |
Checklist
- [ ] Transition serves the story (not gratuitous)
- [ ] Duration appropriate for content (0.3-1s typical)
- [ ] Easing/spring config matches video mood
- [ ] Direction is consistent and logical
- [ ] Audio (SFX) synchronized with transition
- [ ] Background music ducks during transition if SFX present
- [ ] Multi-element transitions use staggering
- [ ] Transition type matches content style
- [ ] Not overused (max 1 transition per 5-10s)
- [ ] Consistent style with other transitions in video
- [ ] Elements don't feel "cut off" mid-animation
- [ ] Total transition count is reasonable (3-6 for 30s video)
Visual Hierarchy and Attention Direction
Impact: CRITICAL
Visual hierarchy controls where viewers look and in what order. Every frame should have a clear primary, secondary, and tertiary focus. Without hierarchy, viewers feel lost and overwhelmed.
The Hierarchy Triangle
Every scene should have exactly ONE of each:
1. Primary (Hero) — The star, what you want seen first (10-20% of frame) 2. Secondary — Supporting cast, contextual info (20-30% of frame) 3. Tertiary — Background, atmosphere (50-70% of frame)
Good Example
Scene: Product Announcement
Primary (Hero):
- "LAUNCHING SOON" headline
- Size: 96px bold
- Color: #FF6B35 (ember, highest contrast)
- Position: Center, upper third
- Animation: Spring entrance, scale 0.8 → 1.1 → 1
Secondary:
- Product image
- Size: 400x400px
- Color: Full color with shadow
- Position: Center
- Animation: Fade in after hero (0.3s delay)
Tertiary:
- Background gradient
- Color: #0A0A0A → #171717 (subtle)
- Pattern: Subtle grid
- Animation: Slow driftClear 1-2-3 reading order.
Bad Example
Scene: Cluttered Announcement
Everything competing:
- 3 headlines at same size
- Multiple images same prominence
- Bright colors everywhere
- All animations start simultaneously
Viewer doesn't know where to look first.The Five Hierarchy Tools
Use these tools to establish importance:
1. Size
Bigger = more important (most powerful tool)
2. Contrast
Higher contrast = more attention
3. Color
Vibrant/unique = draws eye
4. Motion
Movement = attention magnet (use carefully)
5. Position
Center and upper areas = priority
Size-Based Hierarchy
Scale creates instant hierarchy:
Good Example
Typography Hierarchy:
Hero headline: 96px (largest)
Subheadline: 48px (50% of hero)
Body text: 24px (25% of hero)
Fine print: 14px (15% of hero)
Clear 4:2:1:0.5 ratio = scannable.Bad Example
All text 32-40px = no hierarchyContrast-Based Hierarchy
Contrast ratio determines visibility priority:
Good Example
High Contrast Hierarchy:
Primary element:
- White (#FFFFFF) on dark (#0A0A0A)
- Contrast ratio: 18:1 (maximum)
- Instantly draws attention
Secondary element:
- Light gray (#A3A3A3) on dark (#0A0A0A)
- Contrast ratio: 7:1 (good)
- Readable but less prominent
Tertiary element:
- Medium gray (#525252) on dark (#0A0A0A)
- Contrast ratio: 3.5:1 (minimum)
- Background presenceBad Example
All elements: 6:1 contrast ratio
No hierarchy, all equal prominence.Color-Based Hierarchy
Use color saturation and uniqueness:
Good Example
Color Hierarchy:
Primary: Vibrant orange (#FF6B35)
- Highest saturation
- Unique color (only element this color)
- Draws eye immediately
Secondary: White (#FFFFFF)
- Neutral, readable
- Supports primary
Tertiary: Grays (#525252, #262626)
- Desaturated
- Recedes to backgroundOnly one vibrant color = clear focus.
Bad Example
5 different vibrant colors:
Red, blue, green, yellow, purple
= Rainbow chaos, no focal point.Motion-Based Hierarchy
Motion is the strongest attention grabber—use sparingly:
Good Example
Animation Hierarchy:
Primary element:
- Spring animation entrance
- Scale + opacity + position all change
- Fastest, most prominent motion
Secondary element:
- Fade in only
- Slower, subtle
- After primary settles
Tertiary element:
- Very subtle drift or static
- Barely perceptible motionOnly hero element gets complex animation.
Bad Example
All elements:
- Complex spring animations
- Spinning, scaling, rotating
- All moving simultaneously
= Motion overload, seizure-inducing.Position-Based Hierarchy
Western reading: left → right, top → bottom
Good Example
Priority Quadrants (1920x1080):
Highest Priority:
- Top-center (960, 200)
- Seen first
High Priority:
- Center-left (640, 540)
- Natural reading flow
Medium Priority:
- Center-right (1280, 540)
- Secondary info
Lower Priority:
- Bottom corners
- Legal, disclaimersBad Example
Critical CTA in bottom-right corner:
- Last place viewers look
- Often missed entirelyTemporal Hierarchy (Timing)
Control what's seen when through timing:
Good Example
Staggered Entrance (Priority Order):
Frame 0-15: Primary element enters
- Gets viewer's full attention
Frame 15-30: Secondary element enters
- After primary is established
Frame 30-45: Tertiary elements enter
- Complete the scene
Sequential = guided experience.Bad Example
Frame 0: Everything appears at once
= Overwhelming, no guidance.Depth-Based Hierarchy
Use layering and shadows for perceived depth:
Good Example
Z-Depth Layers:
Layer 1 (Foreground, z-index: 3):
- Primary CTA button
- Large drop shadow: 0 8px 24px rgba(0,0,0,0.3)
- Appears closest to viewer
Layer 2 (Midground, z-index: 2):
- Content cards
- Medium shadow: 0 4px 12px rgba(0,0,0,0.15)
- Middle distance
Layer 3 (Background, z-index: 1):
- Background gradient
- No shadow
- Furthest from viewerShadow size indicates proximity = hierarchy.
Bad Example
All elements:
- Same z-index
- No shadows
- Flat appearance, no depth cuesThe 3-Second Rule
Within 3 seconds, viewer should understand: 1. What this is about (primary element) 2. Why it matters (secondary context) 3. What to do next (tertiary CTA or continuation)
Good Example
0-1s: Hero headline visible, readable
1-2s: Supporting visual appears
2-3s: CTA or next scene hint visible
Complete hierarchy established in 3s.Typography Hierarchy Rules
Good Example
Text Hierarchy:
H1 (Hero):
- 96px, Bold (700)
- Color: High contrast
- Letter spacing: -2%
- Line height: 1.1
H2 (Subhead):
- 48px, Semi-bold (600)
- Color: Medium contrast
- Letter spacing: -1%
- Line height: 1.2
Body:
- 24px, Regular (400)
- Color: Lower contrast
- Letter spacing: 0%
- Line height: 1.5
Clear size, weight, spacing hierarchy.Bad Example
All text:
- 36-42px (similar)
- Same weight
- Same color
- Same spacing
No visual distinction = hard to scan.Isolation Creates Hierarchy
Negative space makes elements stand out:
Good Example
Hero Element with Isolation:
Element: 600px wide
Surrounding space: 660px empty on all sides
Total scene: 1920x1080
Element occupies ~19% of frame
Negative space: ~81%
Isolation creates immediate focus.Bad Example
Element: 600px wide
Padding: 30px
Other elements nearby
= Crowded, fights for attention.Progressive Disclosure
Reveal information in priority order:
Good Example
Scene Evolution:
0-1s: Headline only (establishes topic)
1-2s: Add supporting image (context)
2-3s: Add details (depth)
3-4s: Add CTA (action)
Each layer adds hierarchy level.Bad Example
All information appears at 0s:
Headline, image, details, CTA together
= Information overload.The Squint Test
If you squint at the frame, the primary element should still be clearly visible.
Good Example
When squinted:
- Large headline still readable
- High contrast maintains visibility
- Clear focal point remains
Passes squint test.Bad Example
When squinted:
- Everything blurs together
- No clear focus
- Can't distinguish elements
Fails squint test.Checklist
- [ ] One clear primary focal point per scene
- [ ] Secondary elements support but don't compete
- [ ] Tertiary elements recede to background
- [ ] Size hierarchy: Primary > Secondary > Tertiary
- [ ] Contrast hierarchy: Primary highest (12:1+), Secondary medium (7:1), Tertiary lower (4.5:1)
- [ ] Only one vibrant/unique color (for primary)
- [ ] Motion reserved primarily for hero elements
- [ ] Primary element in top-center or center position
- [ ] Staggered timing (primary → secondary → tertiary)
- [ ] Shadow depth indicates importance
- [ ] Negative space isolates important elements
- [ ] Passes squint test (primary still visible when squinting)
- [ ] Within 3s, viewer knows what, why, and what next
- [ ] No elements competing for attention
- [ ] Clear reading flow established
Related skills
How it compares
Pick motion-designer over remotion-best-practices when you need a creative scene-by-scene spec first; use remotion-best-practices for the React implementation pass.
FAQ
What does motion-designer output?
motion-designer outputs detailed video specification documents with scene breakdowns, frame-level timing, background music strategy, sound effect placements, transition design, color palettes, typography, and Remotion-specific spring and interpolate guidance before any React code
How does motion-designer connect to Remotion?
motion-designer maps scene descriptions to Remotion Sequence components, useCurrentFrame() timing, spring() and interpolate() animations, and Audio components. After spec completion, developers implement with the remotion-best-practices skill.
Is Motion Designer safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.