New opening hooks for a video
hook_variantsGenerate multiple A/B test versions of a finished video ad by swapping in new opening hooks, keeping the rest of the footage and original soundtrack.
Instructions
HOOK MULTIPLIER: give ONE finished video ad N NEW OPENING HOOKS, N complete versions to A/B test. A planned hook replaces the first ~1.5-4 s (ends at the source's first cut there, else 3 s; hookSeconds overrides) with a new silent shot on a DIFFERENT named mechanic (list_hooks); the rest of the footage and the WHOLE original soundtrack stay, so every version keeps the source's length, and nobody in the hook talks or shows text. hooks[] adds your own openings: {url} a FOUND viral hook (post link or file) joined in front with the approved bridge (cut before its payoff, its own payoff sound carried across; post_edit price), {prompt} an opening described in words, {mechanic} a named one; with hooks and no count only those are made. To make the found hook's subject your product or creator first: recast_hook. Pass the video's FILE URL (a render, job result, list_library or upload_file). 1-5 versions, default 3. Refused free before billing: a source over 120 s, too short for a 1.5 s hook plus 2 s after it, unreadable, or a social post as the SOURCE (clone_video remakes someone else's ad). COST: a small planning read, then each planned version is billed like fix_beat for the hook's seconds; the reply quotes credits, and dryRun:true returns the plan and quote without rendering (pass that plan back to render exactly those). Returns ONE JOB PER VERSION; call get_job on each until done, never describe a version before its URL arrives. Hooks that show the product use the brand's product photo (productImage overrides; useBrand:false sends none).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| plan | No | the `plan` object a previous dryRun returned, to render exactly those hooks without planning again | |
| count | No | how many hook versions, 1-5 (default 3) | |
| hooks | No | your own openings, one version each | |
| notes | No | anything the hooks must respect, e.g. "keep it calm", "show the product in every hook" | |
| video | Yes | the finished video to give new hooks: its served file URL | |
| dryRun | No | true = return the plan and the quote, render nothing | |
| useBrand | No | false = send no brand name or product photo (for a video that is not this workspace brand’s) | |
| resolution | No | render tier for the new opening. Defaults to the source’s OWN tier so the hook matches the rest of the ad; a lower tier costs a lot less and is scaled into the source’s canvas (visibly softer for the first seconds). dryRun quotes whichever you pick. | |
| hookSeconds | No | where the CURRENT hook ends, in seconds (1.5-4). Omit to use the first shot cut. | |
| productImage | No | product photo URL used as a reference in hooks that show the product (defaults to the workspace brand’s first product photo) |