Add AI-generated b-roll clips
Goal: add short AI-generated video clips ("b-roll") to an edited video: a cutaway shown while someone keeps talking, a cold open before the video starts, or an end card after it ends. A shot-director AI plans the clips, a generation step pays a video-generation service to make them, and the compile step places them.
This costs real money. Every generated clip is billed by the provider (MiniMax). ReelBolt caps spending at several levels, described below, and never buys anything that would go over a cap.
Prerequisites for generated b-roll
- The video uploaded to the project.
- A chat AI provider.
- A video-generation provider: an admin adds one under Admin, Inference Providers with kind
MiniMax, capabilityVideoGeneration, endpointhttps://api.minimax.ioand a MiniMax API key, and marks it default (or the step names it withproviderId). Testing the provider from the admin page does not cost anything. - Funds on the MiniMax account.
What generated clips cost
Prices per second of generated video, as published by MiniMax and built into ReelBolt:
Model (model) | Resolution (resolution) | Price per second |
|---|---|---|
MiniMax-H3 (default) | 768P (default) | $0.08 |
MiniMax-H3 | 2K | $0.13 |
MiniMax-H3-Max | 480P | $0.05 |
MiniMax-H3-Max | 768P | $0.08 |
A 6-second clip at the default settings is estimated at $0.48. Clip lengths: 4 to 15 seconds for
MiniMax-H3, 5 to 15 for MiniMax-H3-Max.
Spending caps for generated clips
Three caps protect you; a purchase must fit under all of them:
- Per step:
maxSpendUsdon theVideoGeneratestep (required, must be above 0). The whole plan's estimated cost is checked against it before anything is bought. - Per project per day: set by the administrator (default $20 per project per day, counted from midnight UTC).
- Whole platform per day: set by the administrator (default $50 per day across all projects).
If any cap would be exceeded, nothing at all is bought and the step fails with
BUDGET_EXCEEDED. There is no partial purchase. maxClips (1 to 4) also limits how many clips one
step can make; planned shots beyond it are skipped, not bought.
The generated b-roll workflow
Add the Footage edit with AI-generated b-roll template (video-derush-edit-broll) and select your video
in step 1.
| # | Label | Step type | Agent |
|---|---|---|---|
| 1 | Analyze source video | VideoAnalyze | VideoTransform (not an AI) |
| 2 | Decide which spans to keep | Agent | VideoStoryEditor |
| 3 | Plan generated b-roll shots | Agent (context FullWorkflow) | ShotDirector |
| 4 | Generate planned b-roll clips | VideoGenerate | VideoTransform (calls the paid service) |
| 5 | Compile edited video with generated clips | VideoCompile | VideoTransform (not an AI) |
| 6 | Review edit quality | ReviewLoop | VideoReviewAgent |
Step 4 as shipped:
{"planSource": "StepRef", "plan": {"from": "Step", "stepOrder": 3},
"analysis": {"from": "Step", "stepOrder": 1},
"model": "MiniMax-H3", "resolution": "768P", "durationSeconds": 6, "ratio": "16:9",
"takes": 1, "maxClips": 4, "maxSpendUsd": 5.0,
"pollIntervalSeconds": 10, "timeoutSeconds": 1800}
"planSource": "StepRef"makes one clip per planned shot from step 3.takes— versions per shot (1 to 4, never more thanmaxClips).ratio— one of21:9,16:9,4:3,1:1,3:4,9:16; match your footage.timeoutSeconds— how long to wait for each clip (60 to 7200).
Step 5:
{"version": 1, "decision": {"from": "Step", "stepOrder": 2}, "analysisStepOrder": 1,
"enableGeneratedClips": true, "generatedClips": {"from": "Step", "stepOrder": 4},
"maxGeneratedClips": 4, "transitionPolicy": "Auto", "programFadeInMs": 500,
"programFadeOutMs": 800, "programAudioFadeInMs": 300, "programAudioFadeOutMs": 900,
"minSegmentMs": 800}
What the shot director plans
The ShotDirector plans zero or more shots. For each it chooses:
- a purpose:
Cutaway(replaces the picture for a moment while the sound continues),ColdOpen(added before the start) orEndCard(added after the end).SeamBridge,ExtendandScreenContentare accepted words but are not placed in this version; such clips are reported as not supported; - where it goes: one of the offered shot, pause or phrase ids;
- a camera word and a length word (
Short,Medium,Long), which ReelBolt turns into real settings; - a written prompt describing the clip. This is the only text sent to the provider, after cleaning.
The shot director cannot spend money; only step 4 can, and only within the caps. Steer it through the run's brief (the Your brief box when you click Run), for example "One cutaway of a busy coffee shop when I mention the café, and an end card with a sunset over the city".
Running and re-running generated b-roll
When you run or retry this workflow, ReelBolt asks:
- Run and reuse previous clips (default, free): any clip with exactly the same prompt and settings that was already generated in this project, and still exists, is reused.
- Regenerate (costs money): pay for fresh clips. The dialog shows the most it could cost.
When the review step sends the run back to step 2, unchanged clips are reused too; set step 4's
"loopBackBehavior": "Regenerate" to pay for new ones on every round instead.
What to check: step 4's result lists every clip, whether it was delivered, reused or skipped, and its cost. Its detailed record (data view) is the full clip list. Step 5's result reports which clips were placed and any dropped with a reason.
Privacy: sending your own footage to the provider
The shot director may ask for a clip to start or end on a frame from your own footage, so the clip matches visually. That frame is your footage, and once sent to a provider it cannot be called back. So:
allowSourceMediaEgresson step 4 isfalseby default. If any planned shot asks for a frame from your footage while this isfalse, the whole step stops withEGRESS_REFUSEDbefore anything is bought. Either set it totrue(your explicit permission) or ask for shots without frames.- In this version, even with permission, the frame is not actually sent: the clip is generated from its prompt alone, and the clip list records that the frame could not be used.
Variation: one clip from your own prompt
For a single clip described by you, without the shot director, use a VideoGenerate step on its
own with "planSource": "Inline":
{"planSource": "Inline", "inlinePrompt": "Slow dolly shot through a sunlit greenhouse full of ferns",
"model": "MiniMax-H3", "resolution": "768P", "durationSeconds": 6, "ratio": "16:9",
"takes": 1, "maxClips": 1, "maxSpendUsd": 1.0}
The first clip becomes the step's output video (visible in Renders). A later VideoAnalyze step can
use it as its source with {"kind": "PreviousStepOutput"} or
{"kind": "StepOutput", "stepOrder": 1} (the generation step's number), so it can be edited like
any other footage.
Pitfalls with generated b-roll
CONFIG_INVALIDbefore anything happens:maxSpendUsdmissing or 0,takesabovemaxClips, an unsupported resolution or ratio for the model, orplanSource"StepRef"withoutplan.BUDGET_EXCEEDED: the plan costs more thanmaxSpendUsd, or a daily cap is reached. Nothing was bought. Raise the step cap, ask for fewer or shorter clips, or wait for the next UTC day.EGRESS_REFUSED: see the privacy section above.INVALID_PROMPT: an empty prompt or one over 7000 characters (inline mode).POLL_TIMEOUT: the provider took longer thantimeoutSeconds. The clip may still be charged.- Clips not in the video: step 5 needs
"enableGeneratedClips": true,generatedClipspointing at step 4, and"mode": "Reencode"(otherwiseGENERATED_CLIPS_REQUIRE_REENCODE). A cutaway whose moment was cut out of the edit is dropped. - Unexpected re-spend: choosing Regenerate, setting
loopBackBehaviorto"Regenerate", or changing a clip's prompt or settings (including the shot director planning different shots) all buy new clips.