# Your first video

Start a video from a brief with /rapid new or rapid video, give notes, and render the demo project with no agents.

Assumes [rapid is installed](/docs/install) and `rapid setup --check` prints `rapid is ready.`

## From Claude Code

```text
/rapid new Twenty seconds, vertical. A person says what they want out loud; the assistant answers and a file card arrives. Calm, editorial, one idea at a time.
```

`/rapid new <brief>` runs `rapid video --brief <brief>`: a project folder under `~/rapid/` named for the brief's first line, the brief in its `brief.md`, the `swiss` style and `reel` format (1080×1920, 30 fps), and the CLI's default stops (`all`). The pane opens on the job; the reply names the job, the folder, and the screening page.

Asked in plain words instead ("make me a twenty-second reel about…"), Claude runs the `rapid-brief` skill: one round of questions, a written `brief.md`, then the `new_video` tool with `stops: none`, so it runs to the finished video. See [the MCP tools](/docs/using-the-mcp-tools).

## From a terminal

```sh
rapid video --brief "Twenty seconds, vertical. A person says what they want out loud; the assistant answers and a file card arrives."
```

It starts the daemon if none answers (`started the daemon in the background`), then prints the job, the project, and the screening page, and returns:

```text
j_819b0fb4
project /Users/you/rapid/twenty-seconds-vertical-a-person-says-what-they
http://127.0.0.1:4317/#/job/j_819b0fb4
```

- `rapid video ~/videos/launch --brief "…"` names the folder. A folder that already holds a different `brief.md` is refused.
- `rapid video <folder>` uses the folder's own `brief.md`; its first `# heading` is the job's title.
- `--style <ref>` and `--format <ref>` default to the project's pins in `rapid.lock`, else `swiss` and `reel`.
- `--stops all|storyboard|none`, `--keys agent|person|off`, `--review agent|none`, `--rounds <n>`: see [`rapid video`](/docs/cli#rapid-video).

## With a track or a model

- `--music <track>` cuts the video to a song you own: rapid hears it first, plans the cuts to its beats, and mixes it under the video. See [music](/docs/music).
- A 3D model in the project's `assets/` lets the storyboard plan real product shots, rendered in Blender before the scenes that show them. See [Blender shots](/docs/blender-shots).

## What runs

1. **Storyboard.** With a track, `rapid listen` hears it first. With no `storyboard.json`, `rapid-storyboarder` writes it and `storyboard.md` from the brief, the style, the format, and `assets/`. `rapid-director` judges the plan and sends it back until it holds, three looks at most. Then an approval.
2. **Key frames.** Any Blender shots render first, for the scenes that show them. Per scene, `rapid-builder` builds the hero as a still at `meta.key` (`renders/<id>/key-k1.png`); code checks it and `rapid-reviewer` judges it (`reviews/<id>-k1.json`), three tries at most.
3. **Rounds.** Per scene, as lanes allow: build `scenes/<id>.html`, render, check, contact sheet, review (`reviews/<id>-r1.json`). A `revise` builds the next round from the marks, up to `--rounds` (4).
4. **The video.** With every scene accepted: join with the storyboard's [transitions](/docs/transitions), the director's look at the cut (two looks at most), then mix, mux, and the phone copy.

With `--stops all` (the CLI's default) the video waits for you at the storyboard, at a key frame that doesn't converge, and at a scene out of rounds. With `--stops none` (the `new_video` default) nothing waits: each would-be stop takes its best try or round, and `rapid job` and `video_status` list each choice. The whole planner: [the job graph](/docs/the-job-graph#the-planner-grows-the-graph).

At a stop:

```sh
rapid job <job>                                   # find the node in needs_you
rapid approve <node>
rapid redo <node> --note "three scenes, not five"
```

## Notes on a finished video

```sh
rapid revise <job> --note "…"                             # the whole video: storyboarded again
rapid revise <job> --scene card --note "…"                # one scene, built again to the note
rapid revise <job> --scene card --at 1.2 --to 2 --note "…"  # a moment: a mark and a new round of that scene
```

Each runs to the video again with no stops. In Claude Code, say the note; Claude routes it with `revise_video`. Marks pinned in the screening page land in `renders/<scene>/marks.json`, which every build of the scene reads first.

## Watching

```sh
rapid jobs                     # every job and its state
rapid job j_819b0fb4           # its nodes, wait and run times, and the choices made without you
rapid events --job j_819b0fb4  # the live event stream; Ctrl-C stops it
rapid lanes                    # running and queued, per lane
rapid open                     # the screening page, at the newest job
```

In Claude Code, `/rapid status` opens the pane. See [using the pane](/docs/using-the-pane).

## The demo, with no agents

`projects/demo` holds a brief, a storyboard, and two scenes already written. From the repository root:

```sh
rapid video projects/demo --review none
```

`--review none` passes a scene on the code checks alone and turns off key frames and the director, so no agent runs. With `storyboard.json` and both scene files present, rapid skips the storyboard and the builds: per scene it renders, checks, and draws a contact sheet, then joins, mixes the sound from the cues, muxes, and makes the phone copy. `--style terminal` renders the same scenes in another built-in look.

```text
j_819b0fb4  done  A two-scene demo  (/path/to/rapid/projects/demo)
n_4bb7986c17  done       web     render      render idea r1  waited 2ms, ran 4.4s
n_a9eaf8241e  done       web     check       check idea r1  waited 1ms, ran 972ms
...
n_2ea9c3d5c4  done       encode  phone       the phone copy  waited 2ms, ran 1.3s
```

The output lands in the project: `video.mp4`, `video-phone.mp4`, and `renders/` (every file: [projects](/docs/projects#the-layout)). Running the command again makes a new job; delete `renders/` and the MP4s to start clean.
