Skip to content

Turn any landing page into a product launch video. MCP + CLI powered by TabStack, Gemini, WaveSpeed & Remotion.

Notifications You must be signed in to change notification settings

Bhonar/tabstack-video-generator

Repository files navigation

@tabstack/video-generator

MCP + Skill for Claude Code: Turn any landing page into a premium product launch video with AI-generated animations, beat-synced music, and accurate branding.

URL in, HD video out. Claude Code designs unique animations, generates React code, and renders professional videos β€” in minutes. No external AI API keys needed!


✨ What Makes This Special

  • 🎨 Claude Code Generates React Code: No external AI APIs needed (no Gemini, no Claude API)
  • 🎯 Accurate Branding: Extracts exact colors and fonts using Playwright browser automation
  • 🎡 Beat-Synchronized: Animations hit perfectly on music beats using automatic beat detection
  • πŸ’Ž Modern UI: Glassmorphism, animated gradients, glow effects
  • πŸš€ MCP + Skill Architecture: Claude Code orchestrates tools and writes creative code

🎬 How It Works

You say: "Generate a video for https://stripe.com"

Claude Code:

  1. Calls extract_page_data β†’ TabStack + Playwright get content, colors, fonts
  2. Calls generate_audio β†’ WaveSpeed creates music + beat times
  3. Generates React/Remotion code itself with beat-synced animations
  4. Calls render_video β†’ Remotion renders to HD MP4

Result: 12-15 second video with accurate branding and professional animations!


πŸš€ Quick Start (5 Minutes)

Step 1: Install Prerequisites

Node.js v18+:

node --version   # Should show v18 or higher

Don't have it? Download from nodejs.org

FFmpeg (required for video rendering):

ffmpeg -version   # Check if installed

Install FFmpeg:

OS Command
macOS brew install ffmpeg
Ubuntu/Debian sudo apt install ffmpeg
Windows winget install ffmpeg

Step 2: Get API Keys (Free Tiers)

Required:

  • TabStack API Key - Extract page content and branding
    • Go to tabstack.ai
    • Sign up β†’ Get API key
    • Free tier available

Optional (Recommended):

  • WaveSpeed API Key - Generate AI music with beat sync
    • Go to wavespeed.ai
    • Sign up β†’ Get API key
    • Free tier available
    • Without this, videos render silently or with placeholder audio

✨ No Gemini or Claude API keys needed! Claude Code generates video code directly using its built-in AI.


Step 3: Install MCP Server

Add the MCP server to Claude Code:

claude mcp add tabstack-video \
  -e TABSTACK_API_KEY=your_tabstack_key_here \
  -e WAVESPEED_API_KEY=your_wavespeed_key_here \
  -- npx @tabstack/video-generator

Replace your_tabstack_key_here with your actual TabStack API key. (WaveSpeed key is optional but recommended for AI music)


Step 4: Restart Claude Code

Important: MCP servers only load on startup.

  1. Close all Claude Code windows completely
  2. Quit the Claude Code application
  3. Open Claude Code again
  4. Verify MCP server is loaded (check status bar or settings)

Step 5: Generate Your First Video!

In Claude Code, just say:

Generate a video for https://stripe.com

Or with AI music:

Generate a video for https://vercel.com with AI music

That's it! Claude Code will:

  • Extract page data and branding
  • Generate AI music with beat detection
  • Write React/Remotion code with beat-synced animations
  • Render the video to out/stripe-video.mp4

🎯 Example Prompts

"Generate a video for https://linear.app"

"Create a product launch video for https://notion.so with AI music"

"Make a video for https://supabase.com with dramatic animations"

"Generate a video for https://resend.com and sync it to the beat"

Claude Code understands natural language and will orchestrate the entire workflow!


πŸ› οΈ Verify Setup

Run the setup wizard to check your installation:

npx @tabstack/video-generator --setup

This checks for:

  • βœ… Node.js v18+
  • βœ… FFmpeg installation
  • βœ… TABSTACK_API_KEY
  • ⚠️ WAVESPEED_API_KEY (optional)

πŸ—οΈ Architecture

MCP Tools (Server Provides)

  1. extract_page_data

    • TabStack API: Extracts title, features, pricing from URL
    • Playwright: Launches headless Chrome to get computed CSS colors and fonts
    • Returns: Complete page data + accurate branding
  2. generate_audio (optional)

    • WaveSpeed: Generates AI music from prompt
    • Beat detection: Uses music-tempo library to analyze beats
    • Returns: MP3 file + BPM + beat times in milliseconds + beat frames @ 30fps
  3. render_video

    • Takes: React/Remotion code generated by Claude Code
    • Remotion: Renders frames + encodes to MP4 with FFmpeg
    • Returns: HD video (1920x1080, 30fps)

Skill (Teaches Claude Code)

The .skills/generate-video.md file teaches Claude Code:

  • βœ… Workflow: extract β†’ generate audio β†’ write React code β†’ render
  • βœ… Design best practices: glassmorphism, gradients, glow effects
  • βœ… Beat synchronization: pulse on beats, smooth waves, scene timing
  • βœ… Modern UI patterns: proper typography, spacing, animations
  • βœ… Quality checklist: colors, fonts, animations, readability

πŸ“Š What Gets Generated

Video Specs

  • Resolution: 1920x1080 (Full HD)
  • Frame Rate: 30fps
  • Duration: 12-15 seconds
  • Format: H.264 MP4
  • Audio: AI-generated music (if WaveSpeed key provided)

Design Quality

  • βœ… Exact brand colors (from Playwright CSS extraction)
  • βœ… Exact brand fonts (from computed styles)
  • βœ… Modern UI (glassmorphism, gradients, glows, shadows)
  • βœ… Beat-synced animations (pulse, transitions, entrances)
  • βœ… Professional typography (readable sizes, proper hierarchy)
  • βœ… Smooth animations (spring physics, interpolate)

🎡 Beat Synchronization

One of the standout features is automatic beat synchronization:

// Generated code includes beat detection
const beatFrames = [0, 14, 28, 42, 56, 70, ...]; // @ 30fps

// Animations hit on beats
const isBeat = beatFrames.some(b => Math.abs(frame - b) < 2);
transform: `scale(${isBeat ? 1.1 : 1})`  // Pulse on beat

Benefits:

  • Animations feel professional and intentional
  • Scene transitions align with music
  • Feature cards enter on beats
  • CTA buttons pulse with rhythm

πŸ› Troubleshooting

ffmpeg: command not found

Fix: Install FFmpeg

# macOS
brew install ffmpeg

# Ubuntu/Debian
sudo apt install ffmpeg

# Windows
winget install ffmpeg

MCP Server Not Working

Fix: Restart Claude Code completely

  1. Close all windows
  2. Quit application
  3. Open Claude Code fresh
  4. Try: "Generate a video for https://stripe.com"

Video Has No Music

Fix: Add WaveSpeed API key

claude mcp add tabstack-video \
  -e TABSTACK_API_KEY=your_key \
  -e WAVESPEED_API_KEY=your_wavespeed_key \
  -- npx @tabstack/video-generator

Then restart Claude Code.

TABSTACK_API_KEY not set

Fix: Get API key and add to MCP server

  1. Get key at tabstack.ai
  2. Add with claude mcp add command (see Step 3)
  3. Restart Claude Code

Colors Look Wrong

The tool uses Playwright browser automation to extract exact CSS colors. If colors still look wrong:

  • Check the website has clear branding (CTA buttons, headings)
  • Try a different page with more obvious brand colors
  • Report issues at GitHub with the URL

πŸ“š Learn More


🎯 Best Practices

For Best Results:

  • Use clean, professional landing pages
  • Sites with clear value propositions work best
  • Pages with CTA buttons help color extraction
  • Well-designed sites produce better videos

Works Great With:

  • SaaS product landing pages (Stripe, Vercel, Linear)
  • Marketing websites (clear messaging)
  • Product launch pages

May Struggle With:

  • E-commerce sites with many products
  • Complex multi-page sites
  • Sites with poor structure or minimal content

πŸ’Ž What Makes This Different

Traditional Approach:

User β†’ External AI API (Gemini/Claude) β†’ Truncated code β†’ Poor quality

MCP + Skill Approach:

User β†’ Claude Code β†’ MCP tools + Self-generated code β†’ Premium video

Benefits:

  • βœ… Claude Code sees full context (no token limits)
  • βœ… No code truncation (can generate 500+ lines)
  • βœ… Follows Skill best practices consistently
  • βœ… Beat synchronization works perfectly
  • βœ… No external AI API keys needed (only data extraction)
  • βœ… Can iterate and refine based on results

πŸ“– Example Workflow

User: "Generate a video for https://stripe.com with AI music"

Claude Code:
  [1] Calling extract_page_data...
      β†’ TabStack: {title: "Stripe", features: [...]}
      β†’ Playwright: {colors: "#635BFF", fonts: "SΓΆhne"}

  [2] Calling generate_audio...
      β†’ WaveSpeed: Generated music
      β†’ Beat detection: 128 BPM, beats at [0, 468, 937, ...]

  [3] Generating React/Remotion code...
      β†’ Writing premium UI with glassmorphism
      β†’ Syncing animations to beat frames [0, 14, 28, ...]
      β†’ Using exact brand colors and fonts

  [4] Calling render_video...
      β†’ Remotion: Rendering 360 frames @ 30fps
      β†’ FFmpeg: Encoding to H.264 MP4

βœ… Done! Video saved to: out/stripe-video.mp4

🀝 Contributing

Found a bug? Have a feature request?


πŸ“„ License

MIT - Use freely for personal and commercial projects!


πŸŽ‰ Credits

Built with:

  • TabStack - Page data extraction API
  • Playwright - Browser automation for color/font extraction
  • WaveSpeed - AI music generation (Minimax Music 2.5)
  • music-tempo - Beat detection library
  • Remotion - React-based video rendering
  • Claude Code - AI-powered code generation

Ready to create amazing videos? Follow the Quick Start above! πŸš€

About

Turn any landing page into a product launch video. MCP + CLI powered by TabStack, Gemini, WaveSpeed & Remotion.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •