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.
  • tools and exclude_tools are mutually exclusive.
  • New tool categories added to the registry in the future are automatically available to auto_broll_placer without any code changes.