video-js

Create short animated videos programmatically using React, Framer Motion, GSAP, and Three.js.

Updated May 25, 2026
One-click install
npx skills add https://github.com/dheejay282002/final_project --skill video-js-dheejay282002
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: video-js
Source: https://github.com/dheejay282002/final_project/tree/main/.local/skills/video-js
Command: npx skills add https://github.com/dheejay282002/final_project --skill video-js-dheejay282002

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires framer-motion, gsap, @react-spring/web, three, @react-three/fiber, @react-three/drei, lucide-react, tailwindcss, lottie-react, and includes references (resource) components.

What problem does it solve? Producing polished animated marketing videos, motion graphics, and product demos normally requires professional video editing software and motion design expertise. This Skill generates agency-quality animated videos entirely in code, rendered in the browser and exportable as recordings. ## Core Features & Use Cases - Code-Based Motion Graphics: Builds choreographed multi-scene animations with React, Framer Motion, GSAP, and Three.js, including layered backgrounds, kinetic typography, and custom scene transitions. - Media Asset Integration: Incorporates user-attached images and video clips, AI-generated imagery, stock photos, and AI-generated video clips as layered visual elements. - Audio & Playback Controls: Generates synchronized background music, optional voiceover and sound effects, plus an interactive scene-jump and loop-lock control bar for previewing. - Use Case: A startup founder needs a 45-second product launch teaser for social media. The Skill produces a looping 16:9 animated video with branded colors, staggered typography, generated background footage, and a synced music bed, ready to export. ## Quick Start Create a 30-second animated product launch video for my app using the attached logo and screenshots, with upbeat electronic background music.

Frequently Asked Questions about video-js

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create an animated video with React and Framer Motion?▼

Define scenes as React components with durations in a SCENE_DURATIONS map, then drive playback with the useVideoPlayer hook. Use Framer Motion for element animations, staggered entrances, and AnimatePresence for scene transitions, composing everything in a 16:9 full-viewport container.

What is the maximum length for videos made with this approach?▼

Videos should stay under roughly two minutes, with most pieces running 30 to 60 seconds. Longer videos become much harder to export through the recording pipeline, so the duration should be sized to the content rather than maximized.

Can I edit or trim existing video footage with this Skill?▼

No, this is not a video editor. It cannot trim, splice, or perform timeline-based editing of existing footage. Attached video clips can only be used as visual elements inside animations; for editing tasks, a full-stack video editing application is required.

Why do my video and image assets return 404 errors in the animation?▼

Bare absolute paths like src="/videos/hero.mp4" fail because the app is served at a subpath. Always prefix public asset references with import.meta.env.BASE_URL, for example src={`${import.meta.env.BASE_URL}videos/hero.mp4`}, for all video, image, and CSS url() references.

How do I add background music that stays synced with video scenes?▼

Generate an instrumental track matching the total runtime computed from SCENE_DURATIONS, save it under public/audio, and wire an audio element in VideoTemplate that seeks to each scene's start offset on scene changes. Use declarative muted={muted} rather than setting audio.muted in an effect.

Why does my animated video look like a slideshow instead of motion graphics?▼

Slideshows happen when each scene is static centered text that fades in and out with nothing persisting between scenes. Fix this by layering background, midground, and foreground elements, keeping persistent elements outside AnimatePresence that transform across scenes, and varying animation timing per element.