import-canvas-capture

$npx mdskill add remotion-dev/remotion/import-canvas-capture

This is an internal, unstable workflow. Keep this skill in `.agents/skills`; do not distribute it through `packages/skills` or document the command as a stable API.

SKILL.md

.github/skills/import-canvas-captureView on GitHub ↗
---
name: import-canvas-capture
description: Import a recorded Remotion Canvas Capture into a project without Studio interactions using the internal experimental-codemod command. Use when adding a capture file as an editable composition with cursor keyframes.
---

# Import Canvas Capture

This is an internal, unstable workflow. Keep this skill in `.agents/skills`; do
not distribute it through `packages/skills` or document the command as a stable API.

## Workflow

1. Locate the recorded capture file and the target Remotion project. The original
   recording must contain embedded `REMOTION_CAPTURE_DATA` metadata; a converted
   video that has lost this metadata cannot be imported.
2. Inspect the project to find the TypeScript file containing its composition
   registrations (usually `src/Root.tsx`). Choose an unused composition ID.
3. From the target project's root, run:

   ```sh
   bunx remotion experimental-codemod add-canvas-capture /absolute/path/capture.webm \
     --composition-file src/Root.tsx \
     --id MyCapture
   ```

   When developing this command in the monorepo, build the CLI first with
   `bun run build`, then invoke the local CLI from the target project's root:

   ```sh
   node /absolute/path/to/remotion/packages/cli/remotion-cli.js \
     experimental-codemod add-canvas-capture /absolute/path/capture.webm \
     --composition-file src/Root.tsx --id MyCapture
   ```

4. Review the reported source files and public asset. The importer generates a
   component beside the registration file, registers it, copies the video to the
   public directory, and installs missing `@remotion/media` and
   `@remotion/mac-cursors` dependencies at the project's Remotion version. Studio
   does not need to be running. Existing Studio sessions pick up source changes
   through their file watchers; this operation does not enter Studio's undo stack.
5. Report the composition ID and changed files to the user.

## Options and conflicts

- Defaults match Studio's capture import: 1920×1080, 60 fps, and duration rounded
  up from the recording. Pass `--width`, `--height`, or `--fps` to override them.
  Recorded video dimensions remain independent from composition dimensions.
- `--public-dir` overrides the configured public directory. `--package-manager`
  selects the dependency installer.
- `--dry-run` parses the recording and generates source changes without installing
  dependencies or writing project files. The programmatic result includes the
  proposed source changes.
- The registration file is resolved relative to the project root; the CLI capture
  path is resolved relative to the current working directory.
- Existing component files and conflicting public assets are rejected. If the
  recording is already in the public directory, pass that file as the input to
  reuse it. Otherwise rename the input or select another composition ID; do not
  overwrite an existing asset or component to bypass an error.

## Programmatic access

Use `CliInternals.importCanvasCapture` from `@remotion/cli`. It is internal and
unstable. Its inputs are `captureFile`, `compositionFile`, `compositionId`,
`remotionRoot`, `publicDir`, `fps`, `width`, `height`, `packageManager`, `logLevel`,
and `dryRun`. Supply `null` for default directory, dimensions, frame rate, and
package manager. File paths are resolved relative to `remotionRoot`.

The result contains the composition ID, source and asset paths, composition
metadata, and codemod changes. Pass `dryRun: true` to inspect changes in memory.

More from remotion-dev/remotion

SkillDescription
add-bugAdd a new Remotion bug entry to packages/bugs/api/[v].ts. Use when the user describes a bug and affected Remotion versions that should be surfaced through the bugs API.
add-cli-optionAdd a new Remotion CLI or config option by creating an AnyRemotionOption, registering CLI parsing, wiring config setters, and updating documentation. Use when adding or converting command-line flags or Remotion options.
add-effectAdd a new effect to @remotion/effects, including implementation, package exports, docs, demos, preview images, Remotion skill updates, formatting, and builds.
add-expertAdd a new expert to the Remotion experts page
add-new-packageAdd a new package to the Remotion monorepo, including package scaffolding, monorepo registration, documentation, build scripts, and release checklist updates. Use when creating a new @remotion package.
add-sfxAdd a new sound effect to @remotion/sfx
add-webcodecs-bugAdd a browser WebCodecs bug to the Remotion Mediabunny WebCodecs bugs docs page. Use when given a Chromium, WebKit, or Firefox issue URL that should be tracked in packages/docs/docs/mediabunny/webcodecs-bugs.mdx, especially when needing to look up the issue title, filing date, reporter, and resolution state before editing the MDX table.
canvas-capture-extensionRebuild, install, and reload the private Remotion Canvas Capture unpacked Chrome extension. Use when the extension needs to be restored after a Codex worktree was deleted, rebuilt after source changes, moved to its durable install directory, or reloaded in Chrome or Chrome Canary.
checkoutCheckout a requested branch or ref in the Remotion repo, rename the current task to the associated PR title when running in Codex, then install dependencies and build. Use when the user asks to checkout a ref and prepare the workspace.
convertStart the local @remotion/convert app and open it in the Codex browser. Use when the user invokes /convert or $convert, asks to launch convert.remotion.dev locally, or wants to inspect the Convert package UI.