Drawings Guide
Drawings are animated video clips (lists, text cards, logo displays, diagrams, and data visualizations) that Puffin Ship renders and places on a timeline level (usually broll).
Drawing types
| Processor | What it creates |
|---|---|
drawing_list |
Animated bullet/numbered/checkmark list |
drawing_text |
Text headline + optional subtext |
drawing_logos |
Company logos with connectors |
drawing_diagram |
Flow diagram with nodes and edges |
drawing_remotion |
Remotion compositions (stats, chart, etc.) |
In the editor
Every drawing type is a step you add from the Library, under Overlays, and configure in the Inspector. There are two ways to work.
Place them yourself. Add one step per drawing, fill in its content (the lines of a list, the text of a headline, the companies in a logo row), and set duration_sec. Leave position_sec empty and each clip drops into the next free gap; set it and the clip appears at that second exactly. This is the approach when you know what you want on screen and when.
Let it decide. Add a single drawings_ai_placer step with your transcript wired in, and it invents the overlays and their timing from what is being said. Cap it with max_generate, and tick Review gate so you see the result before the run carries on.
Either way the overlays arrive as their own clips on the level you chose, and you can preview, retime or delete them in the run timeline afterwards. Use the same brand_palette on every drawing step in a template, or the overlays will not look like they belong to the same video.
Manual placement
Add a drawing processor directly to your pipeline at a specific position:
- id: features
processor: drawing_list
params:
title: "Key Features"
items:
- "Real-time streaming"
- "Zero ops"
- "Kafka API compatible"
style: checkmark
duration_sec: 5.0
background: "solid:#1a1a2e"
brand_palette: "e94560"
output:
timeline: broll
The clip is placed at the next available position on the broll level. To control timing precisely, use position_sec or set it via drawings_ai_placer.
AI placement
drawings_ai_placer reads your transcript and automatically decides what to create and where to place it:
- id: drawings
processor: drawings_ai_placer
input:
- id: transcript
step: transcribe_main
params:
max_generate: 6
brand_palette: "1a1a2e,e94560,0f3460"
safe_zone_bottom_pct: 20 # keep bottom 20% clear for captions
backbone_step: ai_cut
output:
timeline: broll
review: true
cache: true
Use review: true to approve the placements before continuing.
Shared params (all drawing processors)
| Param | Default | Description |
|---|---|---|
background |
"auto" |
"auto" or "solid:#rrggbb". "auto" picks from brand_palette or defaults to dark. |
brand_palette |
none | Comma-separated hex colors used for styling |
padding_pct |
8 |
Padding around content as % of frame width |
duration_sec |
5.0 |
Clip duration in seconds |
level |
"broll" |
Output timeline level |
Safe zones
If you're using captions, set safe_zone_bottom_pct in drawings_ai_placer to prevent drawing content from overlapping with caption text. A value of 20 keeps the bottom 20% of the frame clear.
Brand palette
Pass 2–4 hex colors as a comma-separated string:
brand_palette: "1a1a2e,e94560,0f3460,533483"
All drawing processors in the pipeline should use the same palette for visual consistency.