Video Studio
GitHub

Tour

Your first video, step by step.

This page is for someone who has never opened the repo. In about an hour you will have the tools installed, one video's first frames on screen, and a clear idea of where everything lives.

What you need

Required

Node.js

Version 20.19 or newer (24 is recommended). Check with node --version. Remotion and the helper scripts run on it.

Required

ffmpeg

On your PATH. It joins frames into contact sheets, generates sound effects and checks finished videos. Check with ffmpeg -version.

Required

Claude Code

The command line assistant that does the directing, building and reviewing. You talk to it in plain language.

You also need a few GB of free disk space (Remotion downloads a browser the first time) and an internet connection for the install. No video editing experience is needed, but a sense of what you want to see helps a lot.

Clone and install

  1. Get the repo.
    git clone https://github.com/AnnasMustafaDev/video-studio.git
    cd video-studio
  2. Install the skills. Skills are instruction packs Claude loads on demand. This copies them into ~/.claude/skills and backs up any you already have.
    node tools/install-skills.mjs
  3. Install the studio. This is the Remotion project where videos are built.
    cd studio
    npm install
  4. Add the official Remotion skills. They are not stored in this repo (their upstream has no licence), so you fetch them yourself. The versions are pinned in skills-lock.json.
    npx remotion skills add
  5. Prove it works. This renders five frames of the showcase video and tiles them into one image. Open studio/out/stills/LibraryShowcase/contact-sheet.png to look at it.
    npm run stills -- LibraryShowcase 50,130,245,350,449
  6. Optional: preview live. Opens Remotion Studio in your browser, with a timeline you can scrub. Stop it with Ctrl+C.
    npm run dev
If a step fails

Jump to troubleshooting. Most problems are a missing ffmpeg, an old Node, or a path with spaces.

Your first video, in seven moves

Open a second terminal at the repo root and run claude. Then work through these stages. The point is that you never ask for the whole video at once: each move ends with something you can look at and approve.

  1. Write a brief. Say what the video is for, how long, which format, the mood and the exact words on screen. Prompt 40-brief-template gives you the fields. A weak brief gives you a generic video.
  2. Get three directions. Ask for three genuinely different looks and no code yet. The motion-director skill does this, with prompt 10-creative-directions. Pick one, or mix.
  3. Approve a storyboard. Prompt 11-storyboard returns a timed table of scenes with first and last frame, exact text, motion, easing, transition and sound cue. Read it like a script, and change anything you do not like now, while it is cheap.
  4. Build one scene. Prompt 12-build-one-scene, handled by the remotion-studio skill. Claude writes only scene 1, renders stills and a contact sheet, looks at them and fixes what is wrong. This first scene sets the standard for every other one.
  5. Review it strictly. Prompt 13-quality-review, ideally by a fresh agent that did not build it (motion-review). It scores the frames and lists the five worst defects with fixes. Fix them, re-render.
  6. Build the rest. Prompt 14-build-next-scene, one scene at a time, reviewing as you go. Then sound (50), other formats such as 9:16 (52) and the final render with checks (53).
  7. Feed lessons back. Prompt 70-post-mortem writes what you learned into the skills, so the next video starts smarter.

The full ordered list, with a diagram, is in Prompts. The Skills page says what each skill is for.

Repo map

Everything sits at the top level, so you can find it without a search.

studio/The Remotion project. Components in src/lib, one folder per video in src/videos, design rules in DESIGN_SYSTEM.md.
prompts/The prompt library. INDEX.md says which prompt to use for which purpose, and in what order.
skills/The Claude Code skills, in source form. One script copies them where Claude can find them.
third_party/Skills made by other people, pinned to one upstream version and never edited here.
guide/The illustrated guide: one offline page with workflow, vocabulary and every prompt.
shot-library/Curated motion shots to choose from while storyboarding, with build notes.
research/What was learned from other people's Claude-made videos: findings and a gallery.
learning/The 7-day learning plan, a short exercise for each day.
projects/A paper trail per video: brief, directions, storyboard, review, notes. Renders stay on your machine.
tools/Small scripts for the repo itself. The main one installs the skills.
source/The notes this repo was built from.
docs/This website and the script that generates it.

The engines: which one when

A video can be made in more than one way. This table is the quick answer, and the default is Remotion.

EngineUse it forNot for
Remotion (studio/)The default. Kinetic type, titles, UI demos, diagrams, data visualisation, explainers, captions, reels, reusable templates.Real 3D or heavy compositing.
HTML engine (motion-studio)Narrated product films where every cut, caption and camera move lands on a spoken word, reviewed live in an HTML player.Silent pieces; use Remotion.
brag (third_party/brag)A quick 15 to 25 second launch video of a project you just built, in one command, run from that project's folder.Directed, storyboarded work with a house style.
After Effects or BlenderShots that need real compositing or real 3D.Anything code can do; say so instead of faking it.

How to ask Claude

Good requests name the stage, the format, the look and the exact text, and they say what not to do yet. Copy one of these and replace the placeholders.

A launch teaser, directions first
New video: 20 s launch teaser (16:9, 30 fps) for my side project <name>.
Goal: people understand what it does in the first 5 s.
Mood: calm and confident. Look: off-white background, near-black type, one blue accent.
Exact text: "<headline>" then "<one-line promise>".
Give me three creative directions and recommend one. No code yet.
Storyboard after you chose a direction
Direction B. Storyboard it.
Give me a timed scene table: first and last frame, focal point, exact text,
animation, easing, transition and sound cue per scene, plus a hits table for sound.
Keep every scene to one focal point. Stop after the table so I can edit it.
Build only the first scene
Build scene 1 only, in studio/src/videos/<slug>/.
Use components from studio/src/lib and the design tokens, nothing hand-rolled.
Render stills at the key frames and a contact sheet, open them, and fix what looks wrong.
Tell me plainly if you could not look at the images.
A strict review
Strict review of the rendered frames, from a fresh pair of eyes.
Score typography, hierarchy, spacing, timing, easing, transitions, consistency and pacing
with frame evidence. Give me the five worst defects with concrete fixes and a
READY or ANOTHER ROUND verdict.
Copy a feel, not a design
Analyse this reel: <path or link>. Break down composition, type, motion, timing and sound,
and separate what you can see from what you are guessing.
Then plan a video for <my app> with the same feel. Keep the principles, not the branding.

Glossary

The words you will meet in the prompts and in Claude's answers.

Deterministic frame

A frame that depends only on its frame number. Same number, same picture, every render. It is why no timers, CSS transitions or random numbers are allowed.

Spring

A motion curve that behaves like a weight on a spring: it accelerates, overshoots a little and settles. Feels physical. Overshoot is kept small here.

Easing

How speed changes between two states. Ease-out starts fast and lands softly. The curve is a large part of how motion feels.

Interpolate

Mapping a frame number to a value, such as frames 0 to 20 to opacity 0 to 1. The basic building block of a Remotion animation.

Composition

One renderable video: an id, a size, a frame rate and a length. A project can hold many.

Scene

A segment of a video with one job and one focal point. Scenes are joined by transitions.

Focal point

The one thing the eye should land on in a scene. If there are two, one is wrong.

Storyboard

The timed plan of scenes. Here it is a table, not drawings.

Golden scene

The first scene you build and approve. Every later scene is held to its standard of spacing, motion and polish.

Banned list

A per-film list of things you refuse to see, such as glow, particles or bouncy overshoot. It removes the model's defaults.

Hits table

A list of moments in the video that need a sound, with their frames. Sound is placed from it, not by feel.

Contact sheet

Many rendered frames tiled into one image so you can judge a whole video at a glance.

Still

A single rendered frame saved as an image. Quality is judged on stills, not on code.

Safe area

The margin inside the frame where text must stay so it is not cropped on a phone or covered by an interface.

LUFS and dBTP

Loudness and peak level. The target here is -14 LUFS with peaks under -1 dBTP, a normal level for online video.

Skill

A folder of instructions Claude loads when your request matches it. This repo ships several.

Troubleshooting and FAQ

My path has spaces, such as D:\My Projects\...

Wrap the path in double quotes in every command, for example cd "D:\My Projects\video-studio". If a script still breaks, clone into a folder without spaces, such as C:\dev\video-studio. When you ask Claude to read a file, paste the path in quotes too.

ffmpeg is not found

Install it, then open a new terminal so the PATH refreshes. On Windows use winget install ffmpeg or download a build and add its bin folder to PATH. On macOS use brew install ffmpeg. Verify with ffmpeg -version. Contact sheets and sound effects need it.

Node says the engine is not supported

The studio needs Node 20.19, 22.13 or 24 and newer. Check with node --version and upgrade through your installer or a version manager.

A preview or player freezes because the audio stalls

Some previews follow the audio clock, so if the audio file fails to load or the browser blocks autoplay, the picture stops with it. Click once in the page to allow sound, check that the audio file exists at the path the page expects, and reload. For Remotion previews, make sure no sound file is missing in studio/public. Final renders are not affected, because they are built frame by frame.

Fonts look different in my render

The studio loads its fonts from Google Fonts through Remotion, and rendering waits until they are ready. If you are offline the first render can fall back to a system font. Connect once, render again, and the font is cached. Use only the fonts defined in studio/src/lib/fonts.ts.

The preview will not start or the port is taken

Remotion Studio uses a local port, 3000 by default. If it is busy, stop the other process or start on another port: npx remotion studio --port 3100. The preview is long-running on purpose, so stop it with Ctrl+C when done.

Claude says it cannot find a skill

Run node tools/install-skills.mjs again and restart Claude Code, because skills are read at startup. Prompt 01-skills-check lists what Claude sees.

The animation flickers or differs between renders

Something is not frame-based. Run prompt 02-deterministic-rule, which audits the code for CSS transitions, timers and random numbers, and replaces them with useCurrentFrame, interpolate and spring.

Claude says the video looks good but I disagree

Ask it whether it opened the rendered images. Judgements from code alone do not count. Ask for stills at the key frames, and for a strict review by a fresh agent.

Can I push this to my own GitHub?

Yes, it is your clone. The repo ships no licence file, so check the credits page before you republish anything, and note that the vendored third-party folders carry their own licences.

A 7-day learning plan

One small piece per day, each with a ready prompt in prompts/learning/. By day seven you have made a title, a type sequence, a UI demo, a chart, a teaser and a sound-designed cut, and copied a style you admire.

Day1

Title

A 5-second animated title. Learn what a frame, a spring and an easing curve do.

Day2

Kinetic type

A short typography sequence. Learn staggering, timing and one focal point.

Day3

Product UI

An animated interface demo. Learn cursors, highlights and camera moves.

Day4

Data

A data visualisation with real numbers only. Learn counters and chart motion.

Day5

Teaser

A 15-second product teaser. Learn the whole workflow on one piece.

Day6

Sound

Add sound to that teaser from a hits table. Learn mixing and loudness.

Day7

Reference

Recreate the style of a reference. Learn to take principles without copying.

Where to go next