title_card

Generates transparent text overlay clips with fade in/out and places them in the first available gap on a target timeline level.

When to use

Use to add lower-third title cards (name + title), section titles, or any text overlay that should appear during a broll gap. The processor finds the first available gap on the gap_level automatically; you don't need to specify a timestamp.

Tip: The edit processor's title_card operation generates a single title card placed at a spot you set. This processor remains the option for gap-finding and multi-card layouts.

In the editor

Add it from the Library (Overlays group), or with + add step and a search for title_card, after the steps that fill your b-roll level.

It takes no inputs. gap_level names the level it should look at for a quiet moment to put the card in, and broll is the usual answer. cards holds the cards themselves, each with its lines of text, and it is a free-form field: the YAML tab is the easier place to write more than one, and hovering a key there explains what belongs in it.

Per card, duration_sec is the time on screen, fade_in_sec and fade_out_sec soften the entrance and exit, position_y moves it up or down the frame (negative is lower), and the color and outline settings make it readable over whatever is behind it. Set position_sec if you want the card at an exact moment instead of in the next free gap. Set Output Level to an overlay level that draws above your footage.

The cards appear as their own clips on that overlay level in the run timeline. Because the step looks at the finished b-roll level rather than taking an input, add the b-roll step to cache_deps in the YAML tab, so changing your b-roll makes the cards find their gaps again.

YAML Example

- id: title_card
  processor: title_card
  cache_deps:
    - broll_ai
  params:
    gap_level: broll
    cards:
      - lines:
          - text: "Your Name"
            font_size: 90
            bold: true
          - text: "Your Title @ Company"
            font_size: 56
        find_gap_after_sec: 2.0
        duration_sec: 2.5
        fade_in_sec: 0.25
        fade_out_sec: 0.25
        position_y: -200
        scale: 0.75
        symbol_font_scale: 1.4
        text_color: "white"
        outline_color: "black"
        outline_size: 8
        outline_fuzziness: 3
        line_gap: 14
        font_file: ""
        symbol_font_file: ""
  output:
    timeline: overlay
  cache: true

Inputs

None. Reads the gap_level timeline state directly from the pipeline context.

Params

Param Type Default Description
gap_level level "broll" Scan this level for a gap to place the card
backbone_step string none Step ID for backbone duration. Prevents title cards from overflowing the timeline end. Recommended when gap_level clips span the full edit.
cards text none One entry per title card. Each finds its own gap.
lines text none Text lines. Each: {text, font_size, bold}
text string none Per-line: the text string to display. Set inside each lines[*] entry.
duration_sec duration (s) 3 Card display duration
position_sec duration (s) none Place the card at this exact timeline position. When set, gap-finding is skipped; the card overlays whatever is on screen.
find_gap_after_sec duration (s) none Search for gap after this many seconds into the timeline (used when position_sec is not set)
position_y number 0 FCP pixels from center. Negative = below center.
scale number 1 FCP transform scale
text_color color "white" Text fill color
outline_color color "black" Outline/shadow color
outline_size number 8 Border width in pixels
outline_fuzziness number 3 Shadow spread in pixels
line_gap number 0 Vertical gap between lines in pixels
font_size number none Text size in pixels for this card.
bold bool false Render the title card text in bold.
font_file string none Path to .ttf. Auto-detects Arial Bold if empty.
symbol_font_file string none Path to .ttf for symbols. Auto-detects Apple Symbols.
symbol_font_scale number 1 Scale for symbol/emoji characters relative to main text
fade_in_sec duration (s) 0.3 Alpha fade-in duration (0 = no fade)
fade_out_sec duration (s) 0.3 Alpha fade-out duration

Output

EditDecisions on the configured output level.

Notes

  • title_card reads all clips on gap_level across all pipeline steps; it does not need broll as a direct input. Use cache_deps: to ensure it re-runs when broll changes.
  • Fades apply to the alpha channel only (RGB unchanged), giving a clean transparency fade for overlays.
  • Symbol characters (arrows ⬆, emoji, Unicode) are rendered with a separate symbol font at symbol_font_scale size.