A fixed hook line is wasted on a clip you will regen
add_video_captions burns one authored line for the whole file. Overlay it before picture lock and you typeset a miss.
A text overlay is not a caption. You write the line. add_video_captions burns it for the whole clip — top, center, or bottom — as a hook, a badge, a CTA. That is a delivery choice about this file. If the file is still a sample, the overlay is typesetting you will throw away.
Add a text overlay to a video is the page. list_caption_fonts is how you pick a real font instead of a guess. The render is a standard editor operation. It is cheap next to a generate and expensive next to doing it twice.
One line, whole duration, your words
The tool does not listen. Silence, native dialogue, a music bed — none of that changes the string. If you needed a transcript, you opened the wrong door. If you needed three lines that swap at 0s, 2s, and 4s, you wanted timed overlays (add_timestamped_captions). This path is the persistent headline.
Position is a three-way enum, not a free pixel. "A bit higher" is not a setting. Safe-zone collisions with platform chrome are your problem after the crop, which is why overlaying before you reframe is another way to pay twice: the line that sat clean on 16:9 sits in the TikTok UI after a 9:16 crop.
People overlay early because the plate looks empty. Empty is information. It means you can still see whether the face, the product, and the motion are right. Type hides that. Type also bakes a claim into pixels you may recut.
Lock the picture. Then print the line.
The line is usually the last true sentence you know. Offers change. CTAs change. Legal lines change. Picture lock is "this take is the take." Copy lock can be even later. If either is open, do not burn.
Generate the clip MOS or with native audio, whichever the model is for. Decide the crop. Decide whether the lower third will also hold a transcript. Then place one authored string. If you already know the crop will change, wait — add_video_captions does not follow a later reframe.
estimate_cost against the actual file if you want the number. Do not run the overlay as a way to "see the ad." You can read the hook on paper. The composite is for the keeper.
What this pass is not
It is not a title card with a timed in and out, unless you are fine with the line sitting on the whole duration. For a three-second chapter mark, timestamped captions are the better fit.
It is not brand-kit enforcement. A house style across many videos is set_brand_kit, which stores defaults. Overlaying a one-off on a miss does not create a kit. It creates a leftover file.
The AI video generator and UGC generator make the plate. Overlay is how you label a plate you are keeping.
FAQ
Can the overlay change mid-clip?
Not on this tool. One string, whole file. Timed lines are add_timestamped_captions.
Should I overlay before I crop to 9:16?
No. Top/center/bottom sit in a different safe zone after a reframe. Crop the keeper, then print.
Is a model-rendered headline in the generate cheaper?
It is how you get misspelled product names you cannot edit. Generate a clean plate. Type the real string in the overlay pass.
What if I only want to test three hooks on one take?
That is a reason to wait until the take is the take, then run three overlay renders on the same locked file. Testing hooks on three different misses is three composites you will never post.