auto_broll_placer
A unified AI agent that reads your full transcript and fills timeline gaps using the best available content type (existing broll clips, web-sourced media, web screenshots, AI-generated video with Veo, AI-generated images with Imagen, or animated drawing overlays), all decided in a single Claude session.
When to use
Use auto_broll_placer as a single step that does the work of broll_place, broll_websource, and drawings_ai_placer combined. Claude sees the whole transcript and timeline state at once and picks the most appropriate content type per gap.
In the editor
Add it from the Library (AI group), or with + add step and a search for auto_broll_placer. It replaces a row of separate b-roll and overlay steps, so a template using it is usually one transcript step, one cut, and this.
Under Inputs, add transcript as a step input. Then set the few parameters that shape the whole thing: max_generate is the total number of clips it may place, min_gap_sec the shortest gap worth filling, and level where everything lands. backbone_step is the ID of the step that sets the video's length.
The most useful control is exclude_tools, which is how you keep it away from the expensive options: excluding the generating tools leaves it to work with footage you already have and free web material. tools is the opposite, restricting it to a named set. Anything whose service you have no key for is left out on its own, so this step still works with no keys set at all.
This step has a lot of parameters, most of them prefixed with the kind of content they apply to and tucked behind Show advanced. You do not need them to start. If you find yourself hunting for one, the YAML tab and its hover help on the processor name lists every setting with its type and default, which is often quicker than scrolling the form.
Tick Review gate. A step that can fill a whole video in one pass is a step you want to see the output of before it becomes the basis for captions and titles.
Everything it places appears on the level you chose in the run timeline, whatever it came from, and you can preview, retime or remove any of it there.
YAML Example
- id: visuals
processor: auto_broll_placer
input:
- id: transcript
step: generate_transcript
params:
level: broll
backbone_step: ai_cut
max_generate: 12
min_gap_sec: 3
exclude_tools: [broll_veo, broll_imagen]
output:
timeline: broll
cache: true
review: true
Inputs
| ID | Source | Required | Description |
|---|---|---|---|
transcript |
step | yes | Transcript used to decide what content to place where |
Params
| Param | Type | Default | Description |
|---|---|---|---|
level |
level | "broll" |
Timeline level to place clips on |
backbone_step |
string | none | Step ID whose output defines total timeline duration |
max_generate |
number | 10 |
Maximum clips to place total (0 = unlimited) |
min_gap_sec |
duration (s) | 3 |
Ignore gaps shorter than this |
min_duration_sec |
duration (s) | 2 |
Minimum clip duration |
max_duration_sec |
duration (s) | 10 |
Maximum clip duration |
content_variants |
number | 1 |
When > 1, place N alternatives per slot; one enabled, rest disabled in FCP for easy swapping |
broll_websource_content_variants |
number | 0 |
Override content_variants for broll_websource only (0 = use global). |
broll_screenshot_content_variants |
number | 0 |
Override content_variants for broll_screenshot only (0 = use global). |
drawings_content_variants |
number | 0 |
Override content_variants for drawings only (0 = use global). |
broll_veo_content_variants |
number | 0 |
Override content_variants for broll_veo only (0 = use global). |
broll_imagen_content_variants |
number | 0 |
Override content_variants for broll_imagen only (0 = use global). |
broll_place_content_variants |
number | 0 |
Override content_variants for broll_place only (0 = use global). |
tools |
list | none | Restrict the AI to these tool categories only |
exclude_tools |
list | none | Tool categories to disable |
prompt |
string | none | Extra instructions appended to the agent system prompt |
background |
string | "auto" |
Drawing background ("auto" or "solid:#rrggbb") |
brand_palette |
string | none | Comma-separated hex colors for drawings |
padding_pct |
number | 8 |
Content padding % for classic drawings |
safe_zone_bottom_pct |
number | 0 |
Reserve space at bottom of frame (e.g. for captions) |
broll_dir |
string | none | Local clips directory for broll_place |
eval_prompt |
string | none | Custom clip evaluation criteria |
min_clip_sec |
number | 2 |
Minimum Veo clip duration after trimming |
target_clip_sec |
number | 4 |
Target Veo clip duration |
trim_style |
string | "aggressive" |
Veo trim style: "aggressive" or "conservative" |
broll_websource_media_type |
select: both, video, image |
"both" |
Restrict web search to video, image, or both. |
broll_websource_providers |
list | none | Restrict to specific search providers (e.g. wikimedia). Empty = all available. |
broll_websource_review_clips |
bool | true |
Use Claude vision to reject off-topic or diagram-heavy results. |
broll_websource_auto_reframe |
bool | true |
Scale downloaded clips to fill the canvas. |
broll_websource_max_per_gap |
number | 5 |
How many search results to evaluate per gap (0 = default 5). |
broll_screenshot_animation_style |
select: zoom_blur, pulse, noise, both, none |
"zoom_blur" |
Animation applied to screenshot clips. |
broll_screenshot_blur_type |
select: none, pixelate, blur, both |
"none" |
Background blur treatment for screenshot clips. |
broll_screenshot_favicon_fallback |
bool | true |
Fall back to a tiled favicon image when the screenshot is blank or gated. |
broll_screenshot_source_label |
string | "SOURCE" |
Text shown on the source attribution card. |
broll_screenshot_card_accent_color |
string | "red" |
Color of the accent bar on the source attribution card. |
broll_screenshot_dont_use_domains |
list | none | Domains the screenshot tool will never use. |
broll_screenshot_animation_speed |
number | 1 |
How fast the pulse animation cycles, in seconds per cycle, when the screenshot animation is pulse or both. |
broll_screenshot_zoom_factor |
number | 1.3 |
How much the screenshot zooms in over the clip when the screenshot animation is zoom_blur, as a fraction of its size. |
broll_screenshot_blur_sigma |
number | 10 |
Strength of the background blur when the screenshot blur is blur or both. |
broll_screenshot_pixelate_block_size |
number | 20 |
Size of each mosaic block when the screenshot blur is pixelate or both, in pixels. |
broll_screenshot_zoom_blur_max |
number | 5 |
Maximum blur strength reached by the end of the clip when the screenshot animation is zoom_blur. |
broll_screenshot_source_label_font_size |
number | 24 |
Font size of the source label on the attribution card, in pixels. |
broll_screenshot_url_font_size |
number | 18 |
Font size of the URL text on the attribution card, in pixels. |
broll_screenshot_line_gap |
number | 6 |
Vertical spacing between lines of text on the attribution card, in pixels. |
broll_screenshot_card_bg_color |
color | "#FFFFFF" |
Background color of the source attribution card. |
broll_screenshot_card_accent_width |
number | 4 |
Width of the accent bar on the left edge of the source attribution card, in pixels. |
broll_screenshot_card_position_y_frac |
number | 0.85 |
Vertical position of the source attribution card, as a fraction of the frame height measured from the top. |
broll_screenshot_card_padding |
number | 16 |
Padding inside the source attribution card around the text, in pixels. |
broll_screenshot_edge_padding_px |
number | 24 |
Minimum distance the source attribution card keeps from the left and right video edges, in pixels. |
broll_screenshot_width |
number | 1280 |
Width of the captured screenshot, in pixels. |
broll_screenshot_height |
number | 720 |
Height of the captured screenshot, in pixels. |
broll_screenshot_timeout_sec |
duration (s) | 15 |
How long to wait for the page to finish loading before giving up on the screenshot. |
broll_screenshot_selector_priority |
list | none | Page elements to prefer when choosing what to capture, most specific first (not yet used by the current capture process). |
broll_screenshot_hide_selectors |
list | none | Page elements to hide before capturing the screenshot, such as cookie banners, ads, and navigation. |
drawings_background |
string | none | Override background for all drawing types (text, list, logos, diagram, remotion). "auto", "solid:#rrggbb", or brand palette entry. |
drawings_brand_palette |
string | none | Override brand palette for drawings. Comma-separated hex colors, e.g. "#FF0000,#00FF00". |
drawings_padding_pct |
number | none | Override padding % for drawings (0 = use global padding_pct). |
drawings_safe_zone_bottom_pct |
number | none | Override safe zone bottom % for drawings (0 = use global safe_zone_bottom_pct). |
broll_veo_min_clip_sec |
number | none | Override min clip duration after trimming for Veo clips (0 = use global min_clip_sec). |
broll_veo_target_clip_sec |
number | none | Override target clip duration after trimming for Veo clips (0 = use global target_clip_sec). |
broll_veo_trim_style |
select: aggressive, gentle |
none | Override trim style for Veo clips. "aggressive" keeps only the best moment; "gentle" trims less. |
broll_veo_eval_prompt |
string | none | Extra instructions for the LLM when it evaluates generated Veo clips. |
broll_place_dir |
string | none | Override the directory scanned for local broll clips (default: the broll folder in your workspace). |
broll_place_eval_prompt |
string | none | Extra instructions for the LLM when it evaluates local broll clips. |
broll_place_no_clip_reuse |
bool | false |
Prevent the same local clip from being placed more than once. |
broll_place_min_use_sec |
duration (s) | 0 |
Exclude local clips shorter than this from consideration. |
broll_imagen_motion_style |
select: zoom_in, zoom_out, pan_left, pan_right, static |
"zoom_in" |
Camera motion applied to Imagen still images. |
broll_imagen_zoom_pct |
number | none | Zoom amount for zoom_in/zoom_out motion (0 = default 5%). |
broll_imagen_pan_pct |
number | none | Pan amount for pan_left/pan_right motion (0 = default 10%). |
broll_imagen_model |
string | none | Imagen model to use (default: imagen-4.0-generate-001). |
broll_imagen_eval_prompt |
string | none | Extra instructions for the LLM when it evaluates generated Imagen clips. |
media_providers |
text | none | Written as YAML: a list of { name, preset, vars } the agent can call via generate_media, e.g. [{name: veo, preset: veo, vars: {}}]. |
Output
EditDecisions: one per placed clip at the configured level. Clips this step generates or downloads are kept for reuse, so re-running it does not pay to fetch them again.
Manifest
A unified manifest tracks the generated/downloaded clips. On re-runs (cache miss), previously generated/downloaded clips are reused, avoiding redundant generation. Ask the AI Assistant to clear the step's saved work, or re-run from that step with the per-step control on the run page, to regenerate everything.
Notes
- Categories whose required service is unavailable (no API key, no renderer) are silently excluded from the tool list, so Claude never sees them.
toolsandexclude_toolsare mutually exclusive.- New tool categories added to the registry in the future are automatically available to
auto_broll_placerwithout any code changes.