Skip to content

Prerequisites

What needs to exist before the first render.

Most of this is what you would expect from a Remotion and Playwright project. The two items in the silent failures section are the ones that actually cost people an afternoon, because neither of them raises an error.

The whole checklist, copy and paste

Everything below in one block. It checks what you already have before installing anything, because most machines are already most of the way there. Pick your platform.

Windows, PowerShell
# 1. Check what you already have
node --version        # need 20 or newer
ffmpeg -version       # need 4.0 or newer

# 2. Install whatever was missing. Reopen the terminal after ffmpeg,
#    winget only puts it on PATH for new shells.
winget install --id Gyan.FFmpeg -e
npm install playwright && npx playwright install chromium
pip install -U edge-tts  # narration, optional, 7.3 or newer

# 3. Start the app you want to film, then ask your agent:
#    "run preflight against http://localhost:3000"
macOS, Homebrew
# 1. Check what you already have
node --version        # need 20 or newer
ffmpeg -version       # need 4.0 or newer

# 2. Install whatever was missing
brew install ffmpeg
npm install playwright && npx playwright install chromium
pip install -U edge-tts  # narration, optional, 7.3 or newer

# 3. Start the app you want to film, then ask your agent:
#    "run preflight against http://localhost:3000"
Linux, Debian or Ubuntu
# 1. Check what you already have
node --version        # need 20 or newer
ffmpeg -version       # need 4.0 or newer

# 2. Install whatever was missing
sudo apt update && sudo apt install -y ffmpeg
npm install playwright && npx playwright install chromium
pip install -U edge-tts  # narration, optional, 7.3 or newer

# 3. Start the app you want to film, then ask your agent:
#    "run preflight against http://localhost:3000"

Required

  • Node.js 20 or newer

    The one version preflight enforces numerically. It runs the server, and npm comes with it for the Playwright install line below.

  • git and pnpm, only to run from source

    The normal install is npx, which needs neither. To run the server from a clone, to contribute or to try unreleased changes, you need git and pnpm (npm install -g pnpm, or corepack enable).

  • An MCP capable agent

    Claude Code, Cursor, VS Code, Claude Desktop, or any client that speaks MCP. This is the only interface openvidstudio has.

  • Playwright 1.48 or newer, plus Chromium

    The capture tools drive a real browser. The playwright dependency downloads Chromium on install; if that step was skipped, capture fails at the first screenshot.

  • ffmpeg 4.0 or newer

    Used to pull QC frames back out of a render, and to synthesize the sound effect pack with scripts/gen-sfx.sh. Not version checked, but every filter the pipeline uses has been in ffmpeg since the 3.x era.

  • Your app, running

    Capture points a browser at a real URL. If there is nothing serving, there is nothing to film.

Optional

  • edge-tts, or another text to speech source

    The default narration engine, installed with pip and needing Python 3.8 or newer. Use edge-tts 7.3 or newer: 7.2.8 was refused by the Microsoft speech service in October 2026, and pip install -U edge-tts fixes it. Lessons need a voice, so for them this is required. Preflight treats it as non-blocking, so a render still succeeds without it and simply plays silent. Anything that can write an mp3 per beat works instead.

  • A Higgsfield subscription

    Only for the b roll tier, and only for shots with no product UI in them. Your subscription, your MCP connection.

  • numpy, scipy, soundfile, pyloudnorm, matplotlib

    Python libraries that compose_score needs to write and check an original score. Install them with pip. Nothing else in the pipeline uses them.

  • A music bed

    A track at public/audio/music-bed.mp3 if you want one. compose_score writes an original one, and find_music_bed searches public-domain catalogs.

Two things that fail silently

Neither of these throws. Both produce a video that renders successfully and is quietly wrong, which is worse than a crash.

Narration is skipped, not reported

stitch_composition looks for public/audio/vo/<beatId>.mp3 for every beat. If a file is not at exactly that path it skips the audio layer with no error and no warning. A video missing three of its five narration files renders fine and simply plays silent in those beats. Check the files are on disk before stitching.

Asset paths are fixed

Screenshots go to public/images/<beatId>.png and recordings and imported clips to public/video/<beatId>.mp4. Put an asset somewhere else and the scene references a file that resolves to nothing at render time.

On Windows

  • npx remotion skills add fails with spawn EINVAL. Run npx -y skills@1.2.0 add remotion-dev/skills instead.
  • A render that dies on a webpack wasm-hash error usually clears by deleting node_modules/.cache and retrying.
  • Run npm and pnpm commands from the project's own directory. Some agent harnesses reset the working directory between tool calls.

Once that is all set

In Claude Code, install the plugin: it adds the server and the skills together. Anywhere else, add this block to your MCP client config and restart the client. It starts with npx.

Claude Code
/plugin marketplace add AnayDhawan/openvidstudio
/plugin install openvidstudio@openvidstudio
mcp.json, any other client
{
  "mcpServers": {
    "openvidstudio": {
      "command": "npx",
      "args": ["-y", "@openvidstudio/mcp-server"]
    }
  }
}

The clone is for running from source: to contribute, or to try changes that are not in a release yet. The normal install is the npx config above.

from source
git clone https://github.com/AnayDhawan/openvidstudio.git
cd openvidstudio
pnpm install
pnpm build