Video Scene Planner
You are responsible for transforming user video requirements into production-ready storyboards with precise specifications that the video-generator skill can implement with Remotion.
When This Skill Activates
This skill activates automatically when:
- The video-generator skill receives a video creation request
- User explicitly requests storyboard or scene planning
- Video structure needs to be revised based on feedback
Core Responsibilities
- Analyze user requirements and extract video specifications
- Classify video type (explainer, product demo, social media, presentation, product launch, open-source promo, data ranking, map route, kinetic typography, app walkthrough, before/after, thread summary, music visualization, release announcement)
- Select appropriate template from the templates library
- Create scene breakdown with timing and visual specifications
- Define design system (colors, fonts, spacing, animations)
- List asset requirements so user knows what to provide
- Output structured storyboard ready for code generation
Planning Process
Step 1: Requirements Analysis
Extract the following from user input:
Essential Information
Video purpose/goal:
- What is the video trying to achieve?
- Examples: Explain concept, showcase product, drive signups, educate viewers
Target audience:
- Who will watch this video?
- Examples: Developers, business executives, general consumers, students
Key messages:
- What are the 3-5 main points to communicate?
- What should viewers remember after watching?
Duration preference:
- How long should the video be?
- Default based on type if not specified:
- Explainer: 60-120 seconds
- Product demo: 45-75 seconds
- Social media: 15-30 seconds
- Presentation: 120-240 seconds
Additional Context
Style preferences:
- Professional/corporate, creative/modern, minimal/clean, energetic/bold?
- Any reference videos or styles mentioned?
Brand elements:
- Brand colors (hex codes if provided)
- Logo availability
- Fonts (if specified)
Available assets:
- Images, screenshots, product photos
- Logo files
- Background music or voiceover
- Existing content (slides, documents, scripts)
Technical constraints:
- Aspect ratio (16:9 standard, 9:16 vertical, 1:1 square)
- Resolution (1920x1080 default)
- File size limitations
- Platform requirements (Instagram, YouTube, etc.)
If Information is Missing
Ask clarifying questions (but be selective - don't overwhelm user):
Critical questions (always ask if unclear):
- "What's the main message or goal for this video?"
- "How long should it be?"
- "What visual assets do you have available (images, logos, etc.)?"
Optional questions (ask only if relevant):
- "Who is your target audience?"
- "Any specific brand colors to use?"
- "What style do you prefer: professional, creative, minimal, or bold?"
Smart defaults (use if user doesn't specify):
- Audience: Assume general/broad audience
- Style: Professional and clean (works for most cases)
- Colors: Use neutral palette (blacks, whites, grays with one accent color)
Step 2: Video Type Classification
Determine the primary video type based on requirements:
Explainer Video
Indicators:
- User mentions: "explain", "educate", "how it works", "understand", "learn"
- Goal is teaching a concept or process
- Problem-solution structure mentioned
Characteristics:
- Duration: 60-180 seconds
- Structure: Hook → Problem → Solution → How It Works → Benefits → CTA
- Visual style: Clean, educational, icon-driven
Product Demo
Indicators:
- User mentions: "showcase", "demo", "features", "product", "app", "platform"
- Goal is showing software or product functionality
- Screenshots or UI mentioned
Characteristics:
- Duration: 30-90 seconds
- Structure: Intro → Overview → Feature Highlights → Value Prop → CTA
- Visual style: Product-focused, annotation-heavy, professional
Social Media
Indicators:
- User mentions: "Instagram", "TikTok", "Reels", "Shorts", "viral", "trending"
- Goal is attention-grabbing and brief
- Vertical format requested or implied
Characteristics:
- Duration: 15-60 seconds
- Structure: Hook → Message → Visual → CTA
- Visual style: Bold, high-contrast, fast-paced
- Format: Often 9:16 (vertical)
Presentation
Indicators:
- User mentions: "slides", "presentation", "deck", "pitch", "report"
- Goal is structured information delivery
- Multiple topics or sections mentioned
Characteristics:
- Duration: 120-300 seconds
- Structure: Title → Content Slides → Summary → Closing
- Visual style: Professional, slide-based, data-friendly
Product Launch Announcement
Indicators:
- User mentions: "launch", "announce", "new product", "waitlist", "reveal"
- Goal is creating buzz for a new product or major feature
- Short, punchy format
Characteristics:
- Duration: 10-15 seconds
- Structure: Hook → Selling Points → Before/After → CTA
- Visual style: Minimalist, dark background, high contrast, typewriter effects
- FPS: 60
Open Source Project Promo
Indicators:
- User mentions: "open source", "GitHub", "npm", "library", "framework", "CLI", "stars"
- Goal is attracting users/contributors to an OSS project
- Developer-oriented aesthetic
Characteristics:
- Duration: 15-30 seconds
- Structure: Project Identity → Features → Social Proof → Install CTA
- Visual style: GitHub dark theme, terminal aesthetic, monospace fonts
Data Ranking / Top N
Indicators:
- User mentions: "ranking", "top 10", "chart", "data", "comparison", "statistics", "leaderboard"
- Goal is visualizing ranked or comparative data
- Numerical data provided
Characteristics:
- Duration: 15-30 seconds
- Structure: Title → Animated Bars → Insight Summary
- Visual style: Clean, data-driven, animated bar charts
Map Route / City Zoom
Indicators:
- User mentions: "map", "route", "locations", "journey", "cities", "travel", "offices"
- Goal is showing geographical movement or location highlights
- Multiple location points mentioned
Characteristics:
- Duration: 15-30 seconds
- Structure: Map Overview → Route Animation → Location Highlights → Summary
- Visual style: Dark themed map, SVG route drawing, zoom effects
Kinetic Typography
Indicators:
- User mentions: "text animation", "quote", "lyrics", "words", "typography", "manifesto"
- Goal is communicating through animated text as primary visual
- Script or text-heavy content
Characteristics:
- Duration: 15-60 seconds
- Structure: Sequential text with motion, scale, rotation, color
- Visual style: Bold typography, minimal background, emphasis effects
- FPS: 60
App Walkthrough / UI Demo
Indicators:
- User mentions: "walkthrough", "UI", "screens", "app demo", "user flow", "tutorial"
- Goal is guiding through app screens with device frame
- Screenshots or screen recordings mentioned
Characteristics:
- Duration: 30-60 seconds
- Structure: App Intro → Screen-by-Screen → Key Interaction → CTA
- Visual style: Device mockup, spotlight highlights, captions
Before/After Comparison
Indicators:
- User mentions: "before", "after", "comparison", "transformation", "improvement", "upgrade"
- Goal is showing dramatic contrast between old and new states
- Two-state data mentioned
Characteristics:
- Duration: 10-20 seconds
- Structure: Context → Before State → Transition → After State → Summary
- Visual style: Split screen, desaturated vs vibrant, red vs green
Thread / Post Summary
Indicators:
- User mentions: "thread", "tweet", "summary", "key points", "newsletter", "carousel"
- Goal is converting long-form text into visual video
- Sequential points or numbered list provided
Characteristics:
- Duration: 20-45 seconds
- Structure: Thread Title → Key Points Sequence → Takeaway → CTA
- Visual style: Twitter/X dark theme, card-based, progress dots
Music Visualization
Indicators:
- User mentions: "music", "audio", "visualization", "waveform", "spectrum", "podcast"
- Goal is creating visual response to audio
- Audio file provided or referenced
Characteristics:
- Duration: Matches audio length
- Structure: Audio Analysis → Visual Response → Continuous Visualization
- Visual style: Bars/circles/waves, gradient colors, glow effects
- FPS: 60
Release / Version Announcement
Indicators:
- User mentions: "release", "version", "update", "changelog", "v2", "v3", "patch"
- Goal is announcing a software version update
- Changelog items or feature list provided
Characteristics:
- Duration: 15-30 seconds
- Structure: Version Badge → What's New List → Key Highlight → Upgrade CTA
- Visual style: Dark, changelog-style, colored tags (NEW/IMPROVED/FIXED)
Multiple types: If video crosses categories, choose primary type based on dominant goal.
Step 3: Template Selection
Load the appropriate template from ${CODEBUDDY_PLUGIN_ROOT}/templates/:
Core Templates:
- explainer-video.md: For educational/explanatory content
- product-demo.md: For software/product showcases
- social-media.md: For short-form social content
- presentation.md: For slide-based presentations
Extended Templates:
- product-launch.md: For product launch announcements (10-15s, 60fps)
- open-source-promo.md: For open-source project promotion
- data-ranking.md: For Top N / data ranking animations
- map-route.md: For map route / city zoom animations
- kinetic-typography.md: For text-as-visual kinetic typography (60fps)
- app-walkthrough.md: For app UI walkthroughs with device frames
- before-after.md: For before/after comparison videos
- thread-summary.md: For Twitter/X thread summaries
- music-visualization.md: For audio-reactive visualizations (60fps)
- release-announcement.md: For software release/changelog announcements
How to use templates:
- Read the template file for the selected video type
- Use its structure as the foundation
- Adapt to user's specific requirements
- Apply template guidelines (timing, layout, animation patterns)
Step 4: Scene Breakdown
Create a detailed scene-by-scene breakdown following this structure:
Scene Specification Format
For each scene, define:
{
"scene_id": 1,
"name": "Hook",
"duration_seconds": 5,
"from_frame": 0,
"duration_frames": 150,
"type": "title|content|feature|transition|cta",
"content": {
"heading": "Scene heading text",
"body": "Main content text",
"typography": {
"heading_font": "Inter",
"heading_size": 60,
"heading_weight": 700,
"heading_color": "#1a1a1a",
"body_font": "Inter",
"body_size": 28,
"body_weight": 400,
"body_color": "#4a5568"
},
"layout": "centered|left-aligned|split-screen|full-bleed",
"background": {
"type": "solid|gradient|image",
"value": "#ffffff" or "linear-gradient(...)" or "asset-path.jpg"
}
},
"animations": [
{
"element": "heading|body|image|icon",
"type": "fade-in|slide-in|scale|spring|typewriter",
"start_frame": 0,
"duration_frames": 30,
"easing": "smooth|snappy|bouncy",
"config": {
"damping": 100,
"stiffness": 200
}
}
],
"assets": [
{
"type": "image|video|icon|logo",
"name": "Descriptive asset name",
"path": "public/assets/filename.ext",
"position": "background|foreground|centered|top-right",
"size": "full|large|medium|small",
"fit": "cover|contain|fill",
"optional": false
}
],
"transitions": {
"in": "fade|slide|wipe|none",
"out": "fade|slide|wipe|none",
"duration_frames": 20
}
}
Scene Calculation
Frame rate: Default to 30 fps
- Alternative: 60 fps for ultra-smooth (mention if needed)
Frame calculation:
duration_frames = duration_seconds * fps
Example: 5 seconds @ 30fps = 150 frames
Cumulative timing:
- Scene 1: from_frame = 0
- Scene 2: from_frame = Scene 1 duration_frames
- Scene 3: from_frame = Scene 1 + Scene 2 duration_frames
- And so on...
Scene Types
Title/Hook Scene:
- Purpose: Grab attention or introduce topic
- Duration: 3-5 seconds
- Visual: Centered text, bold typography, solid background
- Animation: Fade in + slight scale
Content Scene:
- Purpose: Deliver main information
- Duration: 10-15 seconds
- Visual: Heading + body text or bullets
- Animation: Sequential reveals
Feature Scene (for demos):
- Purpose: Highlight specific functionality
- Duration: 10-12 seconds
- Visual: Screenshot + annotation
- Animation: Pan or spotlight effect
Transition Scene:
- Purpose: Bridge between major sections
- Duration: 1-2 seconds
- Visual: Minimal (often just animation)
- Animation: Wipe, fade, or slide
CTA Scene:
- Purpose: Drive user action
- Duration: 5-7 seconds
- Visual: Bold CTA text + URL
- Animation: Pulse or glow effect
Step 5: Visual Design System
Define a consistent visual language for the entire video:
Color Palette
Choose based on:
- User-specified brand colors (if provided)
- Video type and audience
- Accessibility (ensure sufficient contrast)
Standard palette structure:
{
"primary": "#2563EB", // Main brand color
"secondary": "#7C3AED", // Complementary color
"accent": "#F97316", // Highlight/CTA color
"background": "#FFFFFF", // Main background
"background_alt": "#F3F4F6", // Alternate background
"text_primary": "#111827", // Main text color
"text_secondary": "#6B7280" // Secondary text
}
Color psychology:
- Blue: Trust, professionalism, tech
- Green: Growth, health, eco
- Purple: Creativity, luxury, innovation
- Orange/Red: Energy, urgency, excitement
- Black/White: Elegance, simplicity, clarity
Ensure accessibility:
- Contrast ratio 4.5:1 minimum for normal text
- Contrast ratio 3:1 minimum for large text (18px+ bold or 24px+ regular)
Typography
Font selection:
- Sans-serif for modern/digital content (Inter, Roboto, Poppins, Montserrat)
- Serif for formal/traditional (Merriweather, Lora)
- Monospace for technical content (Fira Code, JetBrains Mono)
Size hierarchy (for 1920x1080):
{
"hero": 72, // Main titles
"h1": 60, // Scene titles
"h2": 48, // Subtitles
"body_large": 36, // Emphasis text
"body": 28, // Standard text
"body_small": 24, // Secondary text
"caption": 18 // Fine print, footnotes
}
Weight scale:
- 400: Regular (body text)
- 500: Medium (secondary headings)
- 600: Semi-bold (subheadings)
- 700: Bold (headings)
- 800-900: Extra bold (hero text, impact)
Spacing & Layout
Margins (safe zones):
- Standard 16:9: 80-100px from edges
- Vertical 9:16: 60px sides, 80px top, 120px bottom
- Square 1:1: 80px all sides
Padding (between elements):
- Between heading and body: 40-60px
- Between paragraphs: 30-40px
- Between list items: 20-30px
Grid system:
- Use 12-column grid for alignment
- Consistent spacing multiples (8px, 16px, 24px, 32px, 40px, 48px)
Animation Style
Easing presets (for Remotion spring animations):
Smooth (professional, subtle):
{
"damping": 100,
"stiffness": 200
}
Snappy (dynamic, responsive):
{
"damping": 200,
"stiffness": 400
}
Bouncy (playful, energetic):
{
"damping": 50,
"stiffness": 300
}
Timing guidelines:
- Fade: 15-30 frames (0.5-1 second)
- Slide: 20-40 frames (0.67-1.33 seconds)
- Scale: 15-30 frames
- Spring: Let physics determine (usually 30-60 frames)
Stagger timing (sequential reveals):
- Between list items: 15-30 frames apart
- Between words: 5-10 frames apart
- Between characters (typewriter): 2-3 frames apart
Step 6: Technical Specifications
Video Configuration
{
"fps": 30,
"width": 1920,
"height": 1080,
"aspectRatio": "16:9",
"durationInFrames": 1800,
"durationInSeconds": 60,
"format": "mp4",
"codec": "h264",
"audioCodec": "aac"
}
Frame rate selection:
- 30 fps: Standard, efficient, works for most content
- 60 fps: Ultra-smooth, for high-motion content, larger files
Resolution options:
- 1920x1080: Full HD, standard (default)
- 3840x2160: 4K, premium quality, much larger files
- 1080x1920: Vertical (social media)
- 1080x1080: Square (Instagram feed)
- 1280x720: HD, smaller files, acceptable quality
Audio (if applicable):
- Background music track
- Voiceover narration
- Sound effects
Step 7: Asset Requirements
Generate a comprehensive checklist of all assets needed:
Essential Assets
Mark as required - video cannot be generated without these:
- [ ] Logo (PNG, transparent background, minimum 512x512px)
- [ ] Product screenshot 1 (1920x1080 or higher)
- [ ] Main visual/hero image (1920x1080 or higher)
Optional Assets
Mark as optional - video can proceed without these but will be enhanced with them:
- [ ] Background music (MP3/WAV, duration matching video length)
- [ ] Additional product screenshots
- [ ] Icon set (SVG or PNG, 64x64px each)
- [ ] Custom fonts (if not using web fonts)
Asset specifications:
- Images: PNG or JPG, RGB color mode, minimum 1920x1080 resolution
- Logos: PNG with transparency, square aspect ratio, vector-based if possible
- Icons: SVG (preferred) or PNG with transparency, 64x64px or larger
- Audio: MP3 (256kbps) or WAV, length should match or exceed video duration
- Fonts: TTF or OTF files, include all weights needed
Output Format
Generate a structured markdown storyboard document:
# Video Storyboard: [Video Title]
## Project Overview
**Type**: [Explainer Video | Product Demo | Social Media | Presentation]
**Duration**: [X] seconds ([Y] frames @ [Z] fps)
**Resolution**: 1920x1080 (16:9)
**Purpose**: [Brief description of video goal]
**Target Audience**: [Who this is for]
---
## Design System
### Color Palette
- **Primary**: #2563EB (Blue - trust, professional)
- **Secondary**: #7C3AED (Purple - creative)
- **Accent**: #F97316 (Orange - CTA, attention)
- **Background**: #FFFFFF (White)
- **Text Primary**: #111827 (Near black)
- **Text Secondary**: #6B7280 (Gray)
### Typography
- **Font Family**: Inter (sans-serif)
- **Heading Sizes**: 72px (hero), 60px (h1), 48px (h2)
- **Body Sizes**: 36px (large), 28px (standard), 24px (small)
- **Weights**: 400 (regular), 600 (semi-bold), 700 (bold)
### Animation Style
- **Easing**: Smooth spring (damping: 100, stiffness: 200)
- **Timing**: Fade 20 frames, Slide 30 frames
- **Stagger**: 20 frames between sequential elements
---
## Scene Breakdown
### Scene 1: Hook / Title Screen
**Duration**: 5 seconds (0:00 - 0:05, frames 0-150)
**Visual Description**:
- Centered bold text on solid blue background
- White typography, 72px
- Clean, minimal composition
**Content**:
- Heading: "[Attention-grabbing question or statement]"
- No body text
**Animation**:
- Frame 0-20: Fade in from 0% to 100% opacity
- Frame 10-30: Scale from 0.95 to 1.0 (slight zoom)
- Frame 120-150: Hold steady
**Assets Required**:
- Logo (top-right corner, 100x100px)
**Transitions**:
- In: Fade (20 frames)
- Out: Fade (20 frames)
---
### Scene 2: [Next Scene Name]
[Repeat structure for each scene...]
---
## Complete Timeline
| Scene | Content | Duration | Frames | Cumulative Time |
|-------|---------|----------|--------|-----------------|
| 1 | Hook | 5s | 0-150 | 0:00-0:05 |
| 2 | Problem | 12s | 150-510 | 0:05-0:17 |
| 3 | Solution | 8s | 510-750 | 0:17-0:25 |
| 4 | How It Works | 30s | 750-1650 | 0:25-0:55 |
| 5 | CTA | 5s | 1650-1800 | 0:55-1:00 |
| **Total** | | **60s** | **1800** | **0:00-1:00** |
---
## Asset Requirements
### Essential (Required)
- [ ] Logo (PNG, transparent, 512x512px minimum)
- [ ] [Specific asset 1]
- [ ] [Specific asset 2]
### Optional (Recommended)
- [ ] Background music (MP3, 60s, upbeat/neutral)
- [ ] [Optional asset 1]
- [ ] [Optional asset 2]
### Asset Specifications
- **Image Format**: PNG or JPG, RGB mode
- **Minimum Resolution**: 1920x1080
- **File Naming**: Use kebab-case (logo-main.png, screenshot-1.jpg)
- **Asset Location**: Place in public/assets/ directory
---
## Technical Configuration
```json
{
"composition_name": "[video-name]",
"fps": 30,
"width": 1920,
"height": 1080,
"duration_frames": 1800,
"video_image_format": "jpeg",
"overwrite_output": true
}
Notes & Considerations
- [Any special notes about implementation]
- [Platform-specific requirements]
- [Accessibility considerations]
- [Performance optimizations]
Next Steps
- Review storyboard: Confirm structure and content
- Gather assets: Collect all required files
- Generate code: Proceed to Remotion implementation
- Preview: Use Remotion Studio to review
- Render: Generate final MP4 file
---
## Best Practices
### Content Planning
**One idea per scene**: Don't try to communicate multiple concepts in one scene
**Visual hierarchy**: Most important content should be most prominent
**Pacing**: Allow enough time to read text (general rule: 3 seconds per sentence)
**Consistency**: Maintain visual style throughout all scenes
**Progressive disclosure**: Reveal information sequentially, not all at once
### Timing Guidelines
**Minimum scene duration**: 3 seconds (anything shorter feels rushed)
**Maximum scene duration**: 20 seconds (unless it's complex data visualization)
**Reading time**: Allow 2-3 seconds per line of text for viewers to read comfortably
**Animation duration**: Keep transitions under 1 second (20-30 frames @ 30fps)
**Pause between scenes**: Brief hold (30-60 frames) before transition
### Animation Principles
**Ease in**: Use for scene entrances (feels natural)
**Ease out**: Use for scene exits (graceful departure)
**Spring physics**: Use for interactive feel (buttons, icons)
**Avoid motion sickness**: No rapid spinning, excessive shaking, or jarring movements
**Purposeful movement**: Every animation should have a reason (reveal, emphasis, transition)
### Accessibility
**Color contrast**: Ensure text is readable (4.5:1 ratio minimum)
**Font size**: Don't go below 24px for important text
**Captions**: Include text on screen (many watch without sound)
**Simple language**: Avoid jargon, use clear terminology
**Visual clarity**: Don't overlay text on busy backgrounds
---
## Template Adaptation
When adapting templates to user requirements:
**Preserve structure**: Keep the proven scene flow from templates
**Customize content**: Replace placeholder text with user's specific content
**Adapt timing**: Adjust durations based on content complexity
**Apply branding**: Use user's colors, fonts, and visual style
**Respect best practices**: Follow template guidelines for timing and animation
**Add personality**: Incorporate user's unique style while maintaining quality
---
## Example Workflow
**User Request**: "I need a 60-second explainer video about our task management app"
**Planning Process**:
1. **Analyze requirements**:
- Purpose: Explain task management app
- Type: Explainer video
- Duration: 60 seconds
- Audience: Productivity-focused users
2. **Load template**: explainer-video.md
3. **Scene breakdown** (based on template):
- Scene 1: Hook (4s) - "Drowning in tasks?"
- Scene 2: Problem (12s) - Scattered tasks, missed deadlines
- Scene 3: Solution (8s) - Introduce app
- Scene 4: How It Works (26s) - 3 key features
- Scene 5: Benefits (7s) - Time saved, clarity
- Scene 6: CTA (3s) - "Try free at [website]"
4. **Define design**:
- Colors: Blue (trust, productivity), White (clean)
- Fonts: Inter (modern, readable)
- Animation: Smooth spring (professional feel)
5. **List assets**:
- App logo
- 3 feature screenshots
- App icon
6. **Output storyboard**: Complete markdown document as specified above
**Total planning time**: 2-3 minutes
---
## Integration with Other Skills
### Called by video-generator
The video-generator skill invokes this skill to plan video structure before generating Remotion code.
### Uses templates
This skill reads template files from `${CODEBUDDY_PLUGIN_ROOT}/templates/` directory.
### Output to video-generator
Returns complete storyboard specification that video-generator uses to:
- Generate Remotion React components
- Create scene-specific files
- Configure composition timing
- Set up asset references
---
## Extended Video Type Classification
Beyond the 4 core types (explainer, product demo, social media, presentation), this skill also supports these high-impact video styles from the prompt library:
### Product Launch / Feature Announcement
**Indicators**: "launch", "announce", "release", "new feature", "공告"
**Template**: `${CODEBUDDY_PLUGIN_ROOT}/templates/prompt-library/01-product-launch.md`
**Characteristics**: 10-15s, dark background, high contrast, typewriter + blur effects
### Developer Tool Promo
**Indicators**: "open source", "CLI", "SDK", "developer tool", "npm", "GitHub"
**Template**: `${CODEBUDDY_PLUGIN_ROOT}/templates/prompt-library/02-developer-tool-promo.md`
**Characteristics**: 12-18s, terminal-style cards, command typing, counter animations
### Data Ranking / Top N
**Indicators**: "ranking", "top 10", "leaderboard", "chart", "data", "statistics"
**Template**: `${CODEBUDDY_PLUGIN_ROOT}/templates/prompt-library/03-data-ranking.md`
**Characteristics**: 15-30s, animated bar charts, count-up numbers, staggered reveals
### Kinetic Typography
**Indicators**: "quote", "lyrics", "金句", "caption", "口播", "typography"
**Template**: `${CODEBUDDY_PLUGIN_ROOT}/templates/prompt-library/04-kinetic-typography.md`
**Characteristics**: 8-15s, word-by-word reveals, highlight emphasis, gradient backgrounds
### App Walkthrough
**Indicators**: "walkthrough", "tutorial", "step by step", "how to use", "UI demo"
**Template**: `${CODEBUDDY_PLUGIN_ROOT}/templates/prompt-library/05-app-walkthrough.md`
**Characteristics**: 15-25s, phone frame, highlight boxes, info bubbles
### Before vs After
**Indicators**: "before after", "comparison", "对比", "vs", "versus"
**Template**: `${CODEBUDDY_PLUGIN_ROOT}/templates/prompt-library/06-before-after.md`
**Characteristics**: 10-15s, split screen, staggered reveals, breathing divider
### Release Announcement
**Indicators**: "changelog", "version", "update", "release notes", "v2.0"
**Template**: `${CODEBUDDY_PLUGIN_ROOT}/templates/prompt-library/07-release-announcement.md`
**Characteristics**: 8-12s, version badge, typewriter, blur-in effects
### Thread / Post Summary
**Indicators**: "thread", "summary", "帖子", "list", "要点", "takeaways"
**Template**: `${CODEBUDDY_PLUGIN_ROOT}/templates/prompt-library/08-thread-summary.md`
**Characteristics**: 15-25s, card-based, news-style header, numbered points
---
## Post-Generation Polish Process
After the initial storyboard and code generation, apply a structured polish process to elevate quality from "functional" to "professional". Reference the polish prompts at `${CODEBUDDY_PLUGIN_ROOT}/templates/prompt-library/09-polish-prompts.md`.
### Polish Round 1: Structure Check
- Verify content is correct and complete
- Check timeline is logical (hook fast → content steady → CTA clear)
- Ensure every scene has enough reading time (2-3s per line)
- Add "hold" periods after key information (30-60 frames)
### Polish Round 2: Visual Consistency
- Unify to maximum 2 fonts (heading + body)
- Limit to 1 primary + 1 accent color (rest is grayscale)
- Align all spacing to 8px grid
- Verify contrast ratios (4.5:1 for text, 3:1 for large text)
- Check: no pure black (#000) or pure white (#FFF) — use near-black and near-white
### Polish Round 3: Animation Refinement
- Replace linear animations with spring() where appropriate
- Add clamp to all interpolate() calls
- Apply subtle background motion (gradient drift, noise float, breathing scale)
- Ensure text reveals are staggered (not everything at once)
- Scene exits should be 30% faster than entrances
- All transitions use crossfade + subtle blur (15-25 frames)
### Polish Round 4: Detail Enhancement
- Add box-shadow for depth (cards, panels)
- Check safe zones (80px from edges for 16:9, 60px sides + 80px top/120px bottom for 9:16)
- Verify text line width doesn't exceed 60 chars (EN) or 30 chars (ZH)
- Add subtle glow effects on CTA elements
### Anti-Pattern Checklist
During polish, verify these common mistakes are avoided:
- ❌ Per-character opacity for typewriter → ✅ Use string.slice()
- ❌ Abrupt cursor blink → ✅ Smooth interpolated blink
- ❌ No fixed width on word carousel → ✅ Measure longest word
- ❌ CSS transition/animation → ✅ useCurrentFrame() + interpolate/spring
- ❌ HTML <img>/<video> → ✅ Remotion <Img>/<Video>
- ❌ Hardcoded paths → ✅ staticFile()
- ❌ interpolate without clamp → ✅ Always add extrapolateLeft/Right: 'clamp'
---
## Constants-First Design Principle
> Source: remotion-dev/template-prompt-to-motion-graphics
All generated code MUST follow the Constants-First Design pattern:
1. **All editable values at the top** of each file as typed constants
2. **Grouped by concern**: BRAND (colors), TYPOGRAPHY (fonts/sizes), CONTENT (text), TIMING (frames/durations)
3. **Single source of truth**: No duplicated color/font/size values scattered in component code
4. **Type-safe**: Use TypeScript interfaces for brand and content configurations
This ensures generated videos can be quickly customized by editing only the constant block at the top, without understanding component internals.
---
## Skill Detection and Injection
> Source: remotion-dev/template-prompt-to-motion-graphics
When planning a video, analyze the requirements to determine which Remotion skill rules to reference:
| Video Need | Inject Rules From |
|------------|------------------|
| Text animations | `rules/text-animations.md` |
| Charts/graphs | `rules/charts.md` (if exists) |
| Scene transitions | `rules/transitions.md` |
| Spring physics | `rules/timing.md` |
| Image handling | `rules/images.md` |
| Audio sync | `rules/audio.md` (if exists) |
| 3D elements | `rules/three.md` (if exists) |
| Captions | `rules/display-captions.md`, `rules/import-srt-captions.md` |
Only inject relevant rules — avoid bloating context with unused skill content.
---
## Brand Configuration System
> Source: digitalsamba/claude-code-video-toolkit
When user provides brand information, structure it into a reusable brand config:
```typescript
const BRAND_CONFIG = {
colors: {
primary: '#[user-color]',
accent: '#[derived-or-specified]',
background: '#[dark-or-light]',
text: '#[contrast-to-bg]',
},
typography: {
heading: { font: '[user-font or Inter]', weight: 700, sizes: [72, 60, 48] },
body: { font: '[user-font or Inter]', weight: 400, sizes: [36, 28, 24] },
},
animation: {
style: 'smooth', // or 'snappy' or 'bouncy'
springConfig: { damping: 100, stiffness: 200 },
},
};
This config is embedded at the top of every generated component, ensuring brand consistency across all scenes.
This skill transforms vague video ideas into precise, implementable specifications that result in high-quality, professional videos. It leverages community-proven templates, the Constants-First Design principle, and structured polish rounds to consistently produce polished output.
1---2name: scene-planner3description: Creates detailed video storyboards and scene breakdowns for Remotion video generation. Analyzes user requirements, determines video type, selects appropriate template, and outputs structured scene plans with visual specifications, timing, animation details, and asset requirements. Use when planning video structure before code generation.4---5
6# Video Scene Planner
7
8You are responsible for transforming user video requirements into production-ready storyboards with precise specifications that the video-generator skill can implement with Remotion.
9
10## When This Skill Activates
11
12This skill activates automatically when:
13- The video-generator skill receives a video creation request
14- User explicitly requests storyboard or scene planning
15- Video structure needs to be revised based on feedback
16
17## Core Responsibilities
18
191. **Analyze user requirements** and extract video specifications
202. **Classify video type** (explainer, product demo, social media, presentation, product launch, open-source promo, data ranking, map route, kinetic typography, app walkthrough, before/after, thread summary, music visualization, release announcement)
213. **Select appropriate template** from the templates library
224. **Create scene breakdown** with timing and visual specifications
235. **Define design system** (colors, fonts, spacing, animations)
246. **List asset requirements** so user knows what to provide
257. **Output structured storyboard** ready for code generation
26
27---
28
29## Planning Process
30
31### Step 1: Requirements Analysis
32
33Extract the following from user input:
34
35#### Essential Information
36
37**Video purpose/goal**:
38- What is the video trying to achieve?
39- Examples: Explain concept, showcase product, drive signups, educate viewers
40
41**Target audience**:
42- Who will watch this video?
43- Examples: Developers, business executives, general consumers, students
44
45**Key messages**:
46- What are the 3-5 main points to communicate?
47- What should viewers remember after watching?
48
49**Duration preference**:
50- How long should the video be?
51- Default based on type if not specified:
52 - Explainer: 60-120 seconds
53 - Product demo: 45-75 seconds
54 - Social media: 15-30 seconds
55 - Presentation: 120-240 seconds
56
57#### Additional Context
58
59**Style preferences**:
60- Professional/corporate, creative/modern, minimal/clean, energetic/bold?
61- Any reference videos or styles mentioned?
62
63**Brand elements**:
64- Brand colors (hex codes if provided)
65- Logo availability
66- Fonts (if specified)
67
68**Available assets**:
69- Images, screenshots, product photos
70- Logo files
71- Background music or voiceover
72- Existing content (slides, documents, scripts)
73
74**Technical constraints**:
75- Aspect ratio (16:9 standard, 9:16 vertical, 1:1 square)
76- Resolution (1920x1080 default)
77- File size limitations
78- Platform requirements (Instagram, YouTube, etc.)
79
80#### If Information is Missing
81
82Ask clarifying questions (but be selective - don't overwhelm user):
83
84**Critical questions** (always ask if unclear):
85- "What's the main message or goal for this video?"
86- "How long should it be?"
87- "What visual assets do you have available (images, logos, etc.)?"
88
89**Optional questions** (ask only if relevant):
90- "Who is your target audience?"
91- "Any specific brand colors to use?"
92- "What style do you prefer: professional, creative, minimal, or bold?"
93
94**Smart defaults** (use if user doesn't specify):
95- Audience: Assume general/broad audience
96- Style: Professional and clean (works for most cases)
97- Colors: Use neutral palette (blacks, whites, grays with one accent color)
98
99---
100
101### Step 2: Video Type Classification
102
103Determine the primary video type based on requirements:
104
105#### Explainer Video
106**Indicators**:
107- User mentions: "explain", "educate", "how it works", "understand", "learn"
108- Goal is teaching a concept or process
109- Problem-solution structure mentioned
110
111**Characteristics**:
112- Duration: 60-180 seconds
113- Structure: Hook → Problem → Solution → How It Works → Benefits → CTA
114- Visual style: Clean, educational, icon-driven
115
116#### Product Demo
117**Indicators**:
118- User mentions: "showcase", "demo", "features", "product", "app", "platform"
119- Goal is showing software or product functionality
120- Screenshots or UI mentioned
121
122**Characteristics**:
123- Duration: 30-90 seconds
124- Structure: Intro → Overview → Feature Highlights → Value Prop → CTA
125- Visual style: Product-focused, annotation-heavy, professional
126
127#### Social Media
128**Indicators**:
129- User mentions: "Instagram", "TikTok", "Reels", "Shorts", "viral", "trending"
130- Goal is attention-grabbing and brief
131- Vertical format requested or implied
132
133**Characteristics**:
134- Duration: 15-60 seconds
135- Structure: Hook → Message → Visual → CTA
136- Visual style: Bold, high-contrast, fast-paced
137- Format: Often 9:16 (vertical)
138
139#### Presentation
140**Indicators**:
141- User mentions: "slides", "presentation", "deck", "pitch", "report"
142- Goal is structured information delivery
143- Multiple topics or sections mentioned
144
145**Characteristics**:
146- Duration: 120-300 seconds
147- Structure: Title → Content Slides → Summary → Closing
148- Visual style: Professional, slide-based, data-friendly
149
150#### Product Launch Announcement
151**Indicators**:
152- User mentions: "launch", "announce", "new product", "waitlist", "reveal"
153- Goal is creating buzz for a new product or major feature
154- Short, punchy format
155
156**Characteristics**:
157- Duration: 10-15 seconds
158- Structure: Hook → Selling Points → Before/After → CTA
159- Visual style: Minimalist, dark background, high contrast, typewriter effects
160- FPS: 60
161
162#### Open Source Project Promo
163**Indicators**:
164- User mentions: "open source", "GitHub", "npm", "library", "framework", "CLI", "stars"
165- Goal is attracting users/contributors to an OSS project
166- Developer-oriented aesthetic
167
168**Characteristics**:
169- Duration: 15-30 seconds
170- Structure: Project Identity → Features → Social Proof → Install CTA
171- Visual style: GitHub dark theme, terminal aesthetic, monospace fonts
172
173#### Data Ranking / Top N
174**Indicators**:
175- User mentions: "ranking", "top 10", "chart", "data", "comparison", "statistics", "leaderboard"
176- Goal is visualizing ranked or comparative data
177- Numerical data provided
178
179**Characteristics**:
180- Duration: 15-30 seconds
181- Structure: Title → Animated Bars → Insight Summary
182- Visual style: Clean, data-driven, animated bar charts
183
184#### Map Route / City Zoom
185**Indicators**:
186- User mentions: "map", "route", "locations", "journey", "cities", "travel", "offices"
187- Goal is showing geographical movement or location highlights
188- Multiple location points mentioned
189
190**Characteristics**:
191- Duration: 15-30 seconds
192- Structure: Map Overview → Route Animation → Location Highlights → Summary
193- Visual style: Dark themed map, SVG route drawing, zoom effects
194
195#### Kinetic Typography
196**Indicators**:
197- User mentions: "text animation", "quote", "lyrics", "words", "typography", "manifesto"
198- Goal is communicating through animated text as primary visual
199- Script or text-heavy content
200
201**Characteristics**:
202- Duration: 15-60 seconds
203- Structure: Sequential text with motion, scale, rotation, color
204- Visual style: Bold typography, minimal background, emphasis effects
205- FPS: 60
206
207#### App Walkthrough / UI Demo
208**Indicators**:
209- User mentions: "walkthrough", "UI", "screens", "app demo", "user flow", "tutorial"
210- Goal is guiding through app screens with device frame
211- Screenshots or screen recordings mentioned
212
213**Characteristics**:
214- Duration: 30-60 seconds
215- Structure: App Intro → Screen-by-Screen → Key Interaction → CTA
216- Visual style: Device mockup, spotlight highlights, captions
217
218#### Before/After Comparison
219**Indicators**:
220- User mentions: "before", "after", "comparison", "transformation", "improvement", "upgrade"
221- Goal is showing dramatic contrast between old and new states
222- Two-state data mentioned
223
224**Characteristics**:
225- Duration: 10-20 seconds
226- Structure: Context → Before State → Transition → After State → Summary
227- Visual style: Split screen, desaturated vs vibrant, red vs green
228
229#### Thread / Post Summary
230**Indicators**:
231- User mentions: "thread", "tweet", "summary", "key points", "newsletter", "carousel"
232- Goal is converting long-form text into visual video
233- Sequential points or numbered list provided
234
235**Characteristics**:
236- Duration: 20-45 seconds
237- Structure: Thread Title → Key Points Sequence → Takeaway → CTA
238- Visual style: Twitter/X dark theme, card-based, progress dots
239
240#### Music Visualization
241**Indicators**:
242- User mentions: "music", "audio", "visualization", "waveform", "spectrum", "podcast"
243- Goal is creating visual response to audio
244- Audio file provided or referenced
245
246**Characteristics**:
247- Duration: Matches audio length
248- Structure: Audio Analysis → Visual Response → Continuous Visualization
249- Visual style: Bars/circles/waves, gradient colors, glow effects
250- FPS: 60
251
252#### Release / Version Announcement
253**Indicators**:
254- User mentions: "release", "version", "update", "changelog", "v2", "v3", "patch"
255- Goal is announcing a software version update
256- Changelog items or feature list provided
257
258**Characteristics**:
259- Duration: 15-30 seconds
260- Structure: Version Badge → What's New List → Key Highlight → Upgrade CTA
261- Visual style: Dark, changelog-style, colored tags (NEW/IMPROVED/FIXED)
262
263**Multiple types**: If video crosses categories, choose primary type based on dominant goal.
264
265---
266
267### Step 3: Template Selection
268
269Load the appropriate template from `${CODEBUDDY_PLUGIN_ROOT}/templates/`:
270
271**Core Templates**:
272- **explainer-video.md**: For educational/explanatory content
273- **product-demo.md**: For software/product showcases
274- **social-media.md**: For short-form social content
275- **presentation.md**: For slide-based presentations
276
277**Extended Templates**:
278- **product-launch.md**: For product launch announcements (10-15s, 60fps)
279- **open-source-promo.md**: For open-source project promotion
280- **data-ranking.md**: For Top N / data ranking animations
281- **map-route.md**: For map route / city zoom animations
282- **kinetic-typography.md**: For text-as-visual kinetic typography (60fps)
283- **app-walkthrough.md**: For app UI walkthroughs with device frames
284- **before-after.md**: For before/after comparison videos
285- **thread-summary.md**: For Twitter/X thread summaries
286- **music-visualization.md**: For audio-reactive visualizations (60fps)
287- **release-announcement.md**: For software release/changelog announcements
288
289**How to use templates**:
2901. Read the template file for the selected video type
2912. Use its structure as the foundation
2923. Adapt to user's specific requirements
2934. Apply template guidelines (timing, layout, animation patterns)
294
295---
296
297### Step 4: Scene Breakdown
298
299Create a detailed scene-by-scene breakdown following this structure:
300
301#### Scene Specification Format
302
303For each scene, define:
304
305```json
306{
307 "scene_id": 1,
308 "name": "Hook",
309 "duration_seconds": 5,
310 "from_frame": 0,
311 "duration_frames": 150,
312 "type": "title|content|feature|transition|cta",
313
314 "content": {
315 "heading": "Scene heading text",
316 "body": "Main content text",
317 "typography": {
318 "heading_font": "Inter",
319 "heading_size": 60,
320 "heading_weight": 700,
321 "heading_color": "#1a1a1a",
322 "body_font": "Inter",
323 "body_size": 28,
324 "body_weight": 400,
325 "body_color": "#4a5568"
326 },
327 "layout": "centered|left-aligned|split-screen|full-bleed",
328 "background": {
329 "type": "solid|gradient|image",
330 "value": "#ffffff" or "linear-gradient(...)" or "asset-path.jpg"
331 }
332 },
333
334 "animations": [
335 {
336 "element": "heading|body|image|icon",
337 "type": "fade-in|slide-in|scale|spring|typewriter",
338 "start_frame": 0,
339 "duration_frames": 30,
340 "easing": "smooth|snappy|bouncy",
341 "config": {
342 "damping": 100,
343 "stiffness": 200
344 }
345 }
346 ],
347
348 "assets": [
349 {
350 "type": "image|video|icon|logo",
351 "name": "Descriptive asset name",
352 "path": "public/assets/filename.ext",
353 "position": "background|foreground|centered|top-right",
354 "size": "full|large|medium|small",
355 "fit": "cover|contain|fill",
356 "optional": false
357 }
358 ],
359
360 "transitions": {
361 "in": "fade|slide|wipe|none",
362 "out": "fade|slide|wipe|none",
363 "duration_frames": 20
364 }
365}
366```
367
368#### Scene Calculation
369
370**Frame rate**: Default to 30 fps
371- Alternative: 60 fps for ultra-smooth (mention if needed)
372
373**Frame calculation**:
374```
375duration_frames = duration_seconds * fps
376```
377
378Example: 5 seconds @ 30fps = 150 frames
379
380**Cumulative timing**:
381- Scene 1: from_frame = 0
382- Scene 2: from_frame = Scene 1 duration_frames
383- Scene 3: from_frame = Scene 1 + Scene 2 duration_frames
384- And so on...
385
386#### Scene Types
387
388**Title/Hook Scene**:
389- Purpose: Grab attention or introduce topic
390- Duration: 3-5 seconds
391- Visual: Centered text, bold typography, solid background
392- Animation: Fade in + slight scale
393
394**Content Scene**:
395- Purpose: Deliver main information
396- Duration: 10-15 seconds
397- Visual: Heading + body text or bullets
398- Animation: Sequential reveals
399
400**Feature Scene** (for demos):
401- Purpose: Highlight specific functionality
402- Duration: 10-12 seconds
403- Visual: Screenshot + annotation
404- Animation: Pan or spotlight effect
405
406**Transition Scene**:
407- Purpose: Bridge between major sections
408- Duration: 1-2 seconds
409- Visual: Minimal (often just animation)
410- Animation: Wipe, fade, or slide
411
412**CTA Scene**:
413- Purpose: Drive user action
414- Duration: 5-7 seconds
415- Visual: Bold CTA text + URL
416- Animation: Pulse or glow effect
417
418---
419
420### Step 5: Visual Design System
421
422Define a consistent visual language for the entire video:
423
424#### Color Palette
425
426Choose based on:
427- User-specified brand colors (if provided)
428- Video type and audience
429- Accessibility (ensure sufficient contrast)
430
431**Standard palette structure**:
432```json
433{
434 "primary": "#2563EB", // Main brand color
435 "secondary": "#7C3AED", // Complementary color
436 "accent": "#F97316", // Highlight/CTA color
437 "background": "#FFFFFF", // Main background
438 "background_alt": "#F3F4F6", // Alternate background
439 "text_primary": "#111827", // Main text color
440 "text_secondary": "#6B7280" // Secondary text
441}
442```
443
444**Color psychology**:
445- Blue: Trust, professionalism, tech
446- Green: Growth, health, eco
447- Purple: Creativity, luxury, innovation
448- Orange/Red: Energy, urgency, excitement
449- Black/White: Elegance, simplicity, clarity
450
451**Ensure accessibility**:
452- Contrast ratio 4.5:1 minimum for normal text
453- Contrast ratio 3:1 minimum for large text (18px+ bold or 24px+ regular)
454
455#### Typography
456
457**Font selection**:
458- Sans-serif for modern/digital content (Inter, Roboto, Poppins, Montserrat)
459- Serif for formal/traditional (Merriweather, Lora)
460- Monospace for technical content (Fira Code, JetBrains Mono)
461
462**Size hierarchy** (for 1920x1080):
463```json
464{
465 "hero": 72, // Main titles
466 "h1": 60, // Scene titles
467 "h2": 48, // Subtitles
468 "body_large": 36, // Emphasis text
469 "body": 28, // Standard text
470 "body_small": 24, // Secondary text
471 "caption": 18 // Fine print, footnotes
472}
473```
474
475**Weight scale**:
476- 400: Regular (body text)
477- 500: Medium (secondary headings)
478- 600: Semi-bold (subheadings)
479- 700: Bold (headings)
480- 800-900: Extra bold (hero text, impact)
481
482#### Spacing & Layout
483
484**Margins** (safe zones):
485- Standard 16:9: 80-100px from edges
486- Vertical 9:16: 60px sides, 80px top, 120px bottom
487- Square 1:1: 80px all sides
488
489**Padding** (between elements):
490- Between heading and body: 40-60px
491- Between paragraphs: 30-40px
492- Between list items: 20-30px
493
494**Grid system**:
495- Use 12-column grid for alignment
496- Consistent spacing multiples (8px, 16px, 24px, 32px, 40px, 48px)
497
498#### Animation Style
499
500**Easing presets** (for Remotion spring animations):
501
502**Smooth** (professional, subtle):
503```json
504{
505 "damping": 100,
506 "stiffness": 200
507}
508```
509
510**Snappy** (dynamic, responsive):
511```json
512{
513 "damping": 200,
514 "stiffness": 400
515}
516```
517
518**Bouncy** (playful, energetic):
519```json
520{
521 "damping": 50,
522 "stiffness": 300
523}
524```
525
526**Timing guidelines**:
527- Fade: 15-30 frames (0.5-1 second)
528- Slide: 20-40 frames (0.67-1.33 seconds)
529- Scale: 15-30 frames
530- Spring: Let physics determine (usually 30-60 frames)
531
532**Stagger timing** (sequential reveals):
533- Between list items: 15-30 frames apart
534- Between words: 5-10 frames apart
535- Between characters (typewriter): 2-3 frames apart
536
537---
538
539### Step 6: Technical Specifications
540
541#### Video Configuration
542
543```json
544{
545 "fps": 30,
546 "width": 1920,
547 "height": 1080,
548 "aspectRatio": "16:9",
549 "durationInFrames": 1800,
550 "durationInSeconds": 60,
551 "format": "mp4",
552 "codec": "h264",
553 "audioCodec": "aac"
554}
555```
556
557**Frame rate selection**:
558- 30 fps: Standard, efficient, works for most content
559- 60 fps: Ultra-smooth, for high-motion content, larger files
560
561**Resolution options**:
562- 1920x1080: Full HD, standard (default)
563- 3840x2160: 4K, premium quality, much larger files
564- 1080x1920: Vertical (social media)
565- 1080x1080: Square (Instagram feed)
566- 1280x720: HD, smaller files, acceptable quality
567
568**Audio** (if applicable):
569- Background music track
570- Voiceover narration
571- Sound effects
572
573---
574
575### Step 7: Asset Requirements
576
577Generate a comprehensive checklist of all assets needed:
578
579#### Essential Assets
580Mark as **required** - video cannot be generated without these:
581
582```markdown
583- [ ] Logo (PNG, transparent background, minimum 512x512px)
584- [ ] Product screenshot 1 (1920x1080 or higher)
585- [ ] Main visual/hero image (1920x1080 or higher)
586```
587
588#### Optional Assets
589Mark as **optional** - video can proceed without these but will be enhanced with them:
590
591```markdown
592- [ ] Background music (MP3/WAV, duration matching video length)
593- [ ] Additional product screenshots
594- [ ] Icon set (SVG or PNG, 64x64px each)
595- [ ] Custom fonts (if not using web fonts)
596```
597
598**Asset specifications**:
599- **Images**: PNG or JPG, RGB color mode, minimum 1920x1080 resolution
600- **Logos**: PNG with transparency, square aspect ratio, vector-based if possible
601- **Icons**: SVG (preferred) or PNG with transparency, 64x64px or larger
602- **Audio**: MP3 (256kbps) or WAV, length should match or exceed video duration
603- **Fonts**: TTF or OTF files, include all weights needed
604
605---
606
607## Output Format
608
609Generate a structured markdown storyboard document:
610
611```markdown
612# Video Storyboard: [Video Title]
613
614## Project Overview
615
616**Type**: [Explainer Video | Product Demo | Social Media | Presentation]
617**Duration**: [X] seconds ([Y] frames @ [Z] fps)
618**Resolution**: 1920x1080 (16:9)
619**Purpose**: [Brief description of video goal]
620**Target Audience**: [Who this is for]
621
622---
623
624## Design System
625
626### Color Palette
627- **Primary**: #2563EB (Blue - trust, professional)
628- **Secondary**: #7C3AED (Purple - creative)
629- **Accent**: #F97316 (Orange - CTA, attention)
630- **Background**: #FFFFFF (White)
631- **Text Primary**: #111827 (Near black)
632- **Text Secondary**: #6B7280 (Gray)
633
634### Typography
635- **Font Family**: Inter (sans-serif)
636- **Heading Sizes**: 72px (hero), 60px (h1), 48px (h2)
637- **Body Sizes**: 36px (large), 28px (standard), 24px (small)
638- **Weights**: 400 (regular), 600 (semi-bold), 700 (bold)
639
640### Animation Style
641- **Easing**: Smooth spring (damping: 100, stiffness: 200)
642- **Timing**: Fade 20 frames, Slide 30 frames
643- **Stagger**: 20 frames between sequential elements
644
645---
646
647## Scene Breakdown
648
649### Scene 1: Hook / Title Screen
650**Duration**: 5 seconds (0:00 - 0:05, frames 0-150)
651
652**Visual Description**:
653- Centered bold text on solid blue background
654- White typography, 72px
655- Clean, minimal composition
656
657**Content**:
658- Heading: "[Attention-grabbing question or statement]"
659- No body text
660
661**Animation**:
662- Frame 0-20: Fade in from 0% to 100% opacity
663- Frame 10-30: Scale from 0.95 to 1.0 (slight zoom)
664- Frame 120-150: Hold steady
665
666**Assets Required**:
667- Logo (top-right corner, 100x100px)
668
669**Transitions**:
670- In: Fade (20 frames)
671- Out: Fade (20 frames)
672
673---
674
675### Scene 2: [Next Scene Name]
676[Repeat structure for each scene...]
677
678---
679
680## Complete Timeline
681
682| Scene | Content | Duration | Frames | Cumulative Time |
683|-------|---------|----------|--------|-----------------|
684| 1 | Hook | 5s | 0-150 | 0:00-0:05 |
685| 2 | Problem | 12s | 150-510 | 0:05-0:17 |
686| 3 | Solution | 8s | 510-750 | 0:17-0:25 |
687| 4 | How It Works | 30s | 750-1650 | 0:25-0:55 |
688| 5 | CTA | 5s | 1650-1800 | 0:55-1:00 |
689| **Total** | | **60s** | **1800** | **0:00-1:00** |
690
691---
692
693## Asset Requirements
694
695### Essential (Required)
696- [ ] Logo (PNG, transparent, 512x512px minimum)
697- [ ] [Specific asset 1]
698- [ ] [Specific asset 2]
699
700### Optional (Recommended)
701- [ ] Background music (MP3, 60s, upbeat/neutral)
702- [ ] [Optional asset 1]
703- [ ] [Optional asset 2]
704
705### Asset Specifications
706- **Image Format**: PNG or JPG, RGB mode
707- **Minimum Resolution**: 1920x1080
708- **File Naming**: Use kebab-case (logo-main.png, screenshot-1.jpg)
709- **Asset Location**: Place in public/assets/ directory
710
711---
712
713## Technical Configuration
714
715```json
716{
717 "composition_name": "[video-name]",
718 "fps": 30,
719 "width": 1920,
720 "height": 1080,
721 "duration_frames": 1800,
722 "video_image_format": "jpeg",
723 "overwrite_output": true
724}
725```
726
727---
728
729## Notes & Considerations
730
731- [Any special notes about implementation]
732- [Platform-specific requirements]
733- [Accessibility considerations]
734- [Performance optimizations]
735
736---
737
738## Next Steps
739
7401. **Review storyboard**: Confirm structure and content
7412. **Gather assets**: Collect all required files
7423. **Generate code**: Proceed to Remotion implementation
7434. **Preview**: Use Remotion Studio to review
7445. **Render**: Generate final MP4 file
745```
746
747---
748
749## Best Practices
750
751### Content Planning
752
753**One idea per scene**: Don't try to communicate multiple concepts in one scene
754
755**Visual hierarchy**: Most important content should be most prominent
756
757**Pacing**: Allow enough time to read text (general rule: 3 seconds per sentence)
758
759**Consistency**: Maintain visual style throughout all scenes
760
761**Progressive disclosure**: Reveal information sequentially, not all at once
762
763### Timing Guidelines
764
765**Minimum scene duration**: 3 seconds (anything shorter feels rushed)
766
767**Maximum scene duration**: 20 seconds (unless it's complex data visualization)
768
769**Reading time**: Allow 2-3 seconds per line of text for viewers to read comfortably
770
771**Animation duration**: Keep transitions under 1 second (20-30 frames @ 30fps)
772
773**Pause between scenes**: Brief hold (30-60 frames) before transition
774
775### Animation Principles
776
777**Ease in**: Use for scene entrances (feels natural)
778
779**Ease out**: Use for scene exits (graceful departure)
780
781**Spring physics**: Use for interactive feel (buttons, icons)
782
783**Avoid motion sickness**: No rapid spinning, excessive shaking, or jarring movements
784
785**Purposeful movement**: Every animation should have a reason (reveal, emphasis, transition)
786
787### Accessibility
788
789**Color contrast**: Ensure text is readable (4.5:1 ratio minimum)
790
791**Font size**: Don't go below 24px for important text
792
793**Captions**: Include text on screen (many watch without sound)
794
795**Simple language**: Avoid jargon, use clear terminology
796
797**Visual clarity**: Don't overlay text on busy backgrounds
798
799---
800
801## Template Adaptation
802
803When adapting templates to user requirements:
804
805**Preserve structure**: Keep the proven scene flow from templates
806
807**Customize content**: Replace placeholder text with user's specific content
808
809**Adapt timing**: Adjust durations based on content complexity
810
811**Apply branding**: Use user's colors, fonts, and visual style
812
813**Respect best practices**: Follow template guidelines for timing and animation
814
815**Add personality**: Incorporate user's unique style while maintaining quality
816
817---
818
819## Example Workflow
820
821**User Request**: "I need a 60-second explainer video about our task management app"
822
823**Planning Process**:
824
8251. **Analyze requirements**:
826 - Purpose: Explain task management app
827 - Type: Explainer video
828 - Duration: 60 seconds
829 - Audience: Productivity-focused users
830
8312. **Load template**: explainer-video.md
832
8333. **Scene breakdown** (based on template):
834 - Scene 1: Hook (4s) - "Drowning in tasks?"
835 - Scene 2: Problem (12s) - Scattered tasks, missed deadlines
836 - Scene 3: Solution (8s) - Introduce app
837 - Scene 4: How It Works (26s) - 3 key features
838 - Scene 5: Benefits (7s) - Time saved, clarity
839 - Scene 6: CTA (3s) - "Try free at [website]"
840
8414. **Define design**:
842 - Colors: Blue (trust, productivity), White (clean)
843 - Fonts: Inter (modern, readable)
844 - Animation: Smooth spring (professional feel)
845
8465. **List assets**:
847 - App logo
848 - 3 feature screenshots
849 - App icon
850
8516. **Output storyboard**: Complete markdown document as specified above
852
853**Total planning time**: 2-3 minutes
854
855---
856
857## Integration with Other Skills
858
859### Called by video-generator
860
861The video-generator skill invokes this skill to plan video structure before generating Remotion code.
862
863### Uses templates
864
865This skill reads template files from `${CODEBUDDY_PLUGIN_ROOT}/templates/` directory.
866
867### Output to video-generator
868
869Returns complete storyboard specification that video-generator uses to:
870- Generate Remotion React components
871- Create scene-specific files
872- Configure composition timing
873- Set up asset references
874
875---
876
877## Extended Video Type Classification
878
879Beyond the 4 core types (explainer, product demo, social media, presentation), this skill also supports these high-impact video styles from the prompt library:
880
881### Product Launch / Feature Announcement
882**Indicators**: "launch", "announce", "release", "new feature", "공告"
883**Template**: `${CODEBUDDY_PLUGIN_ROOT}/templates/prompt-library/01-product-launch.md`
884**Characteristics**: 10-15s, dark background, high contrast, typewriter + blur effects
885
886### Developer Tool Promo
887**Indicators**: "open source", "CLI", "SDK", "developer tool", "npm", "GitHub"
888**Template**: `${CODEBUDDY_PLUGIN_ROOT}/templates/prompt-library/02-developer-tool-promo.md`
889**Characteristics**: 12-18s, terminal-style cards, command typing, counter animations
890
891### Data Ranking / Top N
892**Indicators**: "ranking", "top 10", "leaderboard", "chart", "data", "statistics"
893**Template**: `${CODEBUDDY_PLUGIN_ROOT}/templates/prompt-library/03-data-ranking.md`
894**Characteristics**: 15-30s, animated bar charts, count-up numbers, staggered reveals
895
896### Kinetic Typography
897**Indicators**: "quote", "lyrics", "金句", "caption", "口播", "typography"
898**Template**: `${CODEBUDDY_PLUGIN_ROOT}/templates/prompt-library/04-kinetic-typography.md`
899**Characteristics**: 8-15s, word-by-word reveals, highlight emphasis, gradient backgrounds
900
901### App Walkthrough
902**Indicators**: "walkthrough", "tutorial", "step by step", "how to use", "UI demo"
903**Template**: `${CODEBUDDY_PLUGIN_ROOT}/templates/prompt-library/05-app-walkthrough.md`
904**Characteristics**: 15-25s, phone frame, highlight boxes, info bubbles
905
906### Before vs After
907**Indicators**: "before after", "comparison", "对比", "vs", "versus"
908**Template**: `${CODEBUDDY_PLUGIN_ROOT}/templates/prompt-library/06-before-after.md`
909**Characteristics**: 10-15s, split screen, staggered reveals, breathing divider
910
911### Release Announcement
912**Indicators**: "changelog", "version", "update", "release notes", "v2.0"
913**Template**: `${CODEBUDDY_PLUGIN_ROOT}/templates/prompt-library/07-release-announcement.md`
914**Characteristics**: 8-12s, version badge, typewriter, blur-in effects
915
916### Thread / Post Summary
917**Indicators**: "thread", "summary", "帖子", "list", "要点", "takeaways"
918**Template**: `${CODEBUDDY_PLUGIN_ROOT}/templates/prompt-library/08-thread-summary.md`
919**Characteristics**: 15-25s, card-based, news-style header, numbered points
920
921---
922
923## Post-Generation Polish Process
924
925After the initial storyboard and code generation, apply a structured polish process to elevate quality from "functional" to "professional". Reference the polish prompts at `${CODEBUDDY_PLUGIN_ROOT}/templates/prompt-library/09-polish-prompts.md`.
926
927### Polish Round 1: Structure Check
928- Verify content is correct and complete
929- Check timeline is logical (hook fast → content steady → CTA clear)
930- Ensure every scene has enough reading time (2-3s per line)
931- Add "hold" periods after key information (30-60 frames)
932
933### Polish Round 2: Visual Consistency
934- Unify to maximum 2 fonts (heading + body)
935- Limit to 1 primary + 1 accent color (rest is grayscale)
936- Align all spacing to 8px grid
937- Verify contrast ratios (4.5:1 for text, 3:1 for large text)
938- Check: no pure black (#000) or pure white (#FFF) — use near-black and near-white
939
940### Polish Round 3: Animation Refinement
941- Replace linear animations with spring() where appropriate
942- Add clamp to all interpolate() calls
943- Apply subtle background motion (gradient drift, noise float, breathing scale)
944- Ensure text reveals are staggered (not everything at once)
945- Scene exits should be 30% faster than entrances
946- All transitions use crossfade + subtle blur (15-25 frames)
947
948### Polish Round 4: Detail Enhancement
949- Add box-shadow for depth (cards, panels)
950- Check safe zones (80px from edges for 16:9, 60px sides + 80px top/120px bottom for 9:16)
951- Verify text line width doesn't exceed 60 chars (EN) or 30 chars (ZH)
952- Add subtle glow effects on CTA elements
953
954### Anti-Pattern Checklist
955During polish, verify these common mistakes are avoided:
956
957- ❌ Per-character opacity for typewriter → ✅ Use string.slice()
958- ❌ Abrupt cursor blink → ✅ Smooth interpolated blink
959- ❌ No fixed width on word carousel → ✅ Measure longest word
960- ❌ CSS transition/animation → ✅ useCurrentFrame() + interpolate/spring
961- ❌ HTML <img>/<video> → ✅ Remotion <Img>/<Video>
962- ❌ Hardcoded paths → ✅ staticFile()
963- ❌ interpolate without clamp → ✅ Always add extrapolateLeft/Right: 'clamp'
964
965---
966
967## Constants-First Design Principle
968
969> Source: remotion-dev/template-prompt-to-motion-graphics
970
971All generated code MUST follow the Constants-First Design pattern:
972
9731. **All editable values at the top** of each file as typed constants
9742. **Grouped by concern**: BRAND (colors), TYPOGRAPHY (fonts/sizes), CONTENT (text), TIMING (frames/durations)
9753. **Single source of truth**: No duplicated color/font/size values scattered in component code
9764. **Type-safe**: Use TypeScript interfaces for brand and content configurations
977
978This ensures generated videos can be quickly customized by editing only the constant block at the top, without understanding component internals.
979
980---
981
982## Skill Detection and Injection
983
984> Source: remotion-dev/template-prompt-to-motion-graphics
985
986When planning a video, analyze the requirements to determine which Remotion skill rules to reference:
987
988| Video Need | Inject Rules From |
989|------------|------------------|
990| Text animations | `rules/text-animations.md` |
991| Charts/graphs | `rules/charts.md` (if exists) |
992| Scene transitions | `rules/transitions.md` |
993| Spring physics | `rules/timing.md` |
994| Image handling | `rules/images.md` |
995| Audio sync | `rules/audio.md` (if exists) |
996| 3D elements | `rules/three.md` (if exists) |
997| Captions | `rules/display-captions.md`, `rules/import-srt-captions.md` |
998
999Only inject relevant rules — avoid bloating context with unused skill content.
1000
1001---
1002
1003## Brand Configuration System
1004
1005> Source: digitalsamba/claude-code-video-toolkit
1006
1007When user provides brand information, structure it into a reusable brand config:
1008
1009```typescript
1010const BRAND_CONFIG = {
1011 colors: {
1012 primary: '#[user-color]',
1013 accent: '#[derived-or-specified]',
1014 background: '#[dark-or-light]',
1015 text: '#[contrast-to-bg]',
1016 },
1017 typography: {
1018 heading: { font: '[user-font or Inter]', weight: 700, sizes: [72, 60, 48] },
1019 body: { font: '[user-font or Inter]', weight: 400, sizes: [36, 28, 24] },
1020 },
1021 animation: {
1022 style: 'smooth', // or 'snappy' or 'bouncy'
1023 springConfig: { damping: 100, stiffness: 200 },
1024 },
1025};
1026```
1027
1028This config is embedded at the top of every generated component, ensuring brand consistency across all scenes.
1029
1030---
1031
1032This skill transforms vague video ideas into precise, implementable specifications that result in high-quality, professional videos. It leverages community-proven templates, the Constants-First Design principle, and structured polish rounds to consistently produce polished output.