Put the product on screen in your AI UGC video ads

A founder looking for an AI presenter for their product asked on Reddit: "I want to show screenshots and videos of my products on part of the screen while my avatar is talking (instead of just jumping to full-screen B-roll). Is this possible to do directly inside […], or am I going to have to export the green-screen avatar and do all the layering in CapCut or Premiere?" (r/AIAssisted(opens in new tab))
If that's how your AI UGC video ads get made, you're not doing it wrong. Most tools hand back a person talking and stop there, so the product goes on in an editor afterwards. Some teams that make these ads hire an editor just for that: one recent job post for an AI and UGC ads editor counts the work as "5 concepts a week", each "a 1-3 min ad (usually around 1.5 min) + 4 hook variants" (a W Ads hiring post on X(opens in new tab)).
Templates move that layering into the request. You quote the words where the product should appear, pick what the viewer sees on them, and your Clipwright.io agent sends it with the script. The video comes back with the product already on screen.
This guide covers what appears around the presenter. Making the presenter act on your words is the live shots guide.
What you need before you start
- A Clipwright.io account with your agent connected over MCP(opens in new tab): the claude.ai connector, Claude Code, Cursor or any MCP client.
- A script of 15 to 30 seconds for a 9:16 ad.
- Your product pictures saved as assets. A picture your agent made with
generate_imagebecomes an asset throughcreate_assetwithsource: { run_id }. broll_policy: "anyone"on the run. Templates that use your own images or video need it.
Step 1: Mark the words that sell
By the end of this step you'll have two or three phrases from your script marked for a template.
A template enters on a phrase you quote from the script, its anchor, and stays for cover_words spoken words. Inside it, a beat such as a reveal lands on the first word of a second quoted phrase. Write the script as you would read it, then find the moments where a viewer should see something instead of hearing about it:
- The proof. A before and after, said out loud.
- The number. A claim with a figure in it.
- The ask. The last line, where the viewer should know where to go.
Three is plenty for 15 seconds. A graphic on every sentence turns the ad into a slideshow, and at most two templates or overlays can sit over the presenter at the same time. Check: each marked phrase is in the script word for word.
Here is the example script, marked up:
Three templates in a 45-word script: a before-and-after on the proof, a number over the presenter, and an end card on the ask.
Step 2: Pick a kind for each moment
By the end of this step each marked phrase has a kind. There are more than twenty; these three carry a product ad:
| Moment | Kind | What the viewer sees |
|---|---|---|
The proof | compare | Two pictures. The first shows alone, then a wipe reveals the second on the word you quote |
The number | stat | A number counting up to its value, with a short label |
The ask | end_card | Your site or "link in bio" and a call to action, in the caption spot |
The full list of kinds and their fields is in the API reference(opens in new tab).
Full frame or over the presenter. Some kinds fill the frame and hide the presenter, as compare does. Others sit over the presenter, and stat can do either: give it placement: "over" and it sits low over the presenter, below her face, while she talks. A full-frame template doesn't lower the presenter seconds, so use it where the picture says more than the face. Check: each marked phrase has a kind, and you know which ones fill the frame.

The three kinds in the example: compare after the wipe, stat over the presenter, end_card on the last line.
Step 3: Give it your look
By the end of this step your templates have a preset and an accent colour, or you've decided to use your brand kit.
template_theme sets the look of every template in the run. Pick a preset (clean_light, bold_dark, neon, paper or mono) and an accent colour as #RRGGBB. An accent with less than 3:1 contrast against the preset is refused, so a pale brand colour on clean_light won't pass. If the run names no theme, the templates follow your saved brand kit.
The example uses clean_light with a sage accent, #5E8C6A, close to the mug. Check: your accent is dark enough to read on the preset's background. Templates and their transitions play short sounds; template_sounds: false on the run turns them all off.
Step 4: Ask Claude Code, or any MCP client, then check the quote
By the end of this step the video is quoted, and you run it.
You don't write the request by hand. Tell your agent which words get what:
Make a 15-second presenter ad for our mug, 9:16, with our two mug photos. On "Here is a regular mug", show the regular mug full frame, then wipe to ours next to it on "And here is mine". On "It keeps coffee hot", count up to 3h over her, labelled "hot, right on your desk". On "Grab yours", an end card: "link in bio", "grab yours today". Clean light look, sage accent. Quote it first.
Your agent turns that into a make_ugc call with this templates part:
1{
2 "broll_policy": "anyone",
3 "template_theme": { "preset": "clean_light", "accent": "#5E8C6A" },
4 "templates": [
5 {
6 "id": "compare",
7 "kind": "compare",
8 "anchor": { "quote": "Here is a regular mug" },
9 "cover_words": 16,
10 "data": {
11 "before": { "asset_id": "ast_…" },
12 "after": { "asset_id": "ast_…" },
13 "labels": { "before": "Regular mug", "after": "Ours" },
14 "reveal_at": "And here is mine",
15 "reveal": "wipe"
16 }
17 },
18 {
19 "id": "hours",
20 "kind": "stat",
21 "placement": "over",
22 "anchor": { "quote": "It keeps coffee hot" },
23 "cover_words": 7,
24 "data": { "value": 3, "suffix": "h", "label": "hot, right on your desk", "size": "large" }
25 },
26 {
27 "id": "cta",
28 "kind": "end_card",
29 "anchor": { "quote": "Grab yours" },
30 "cover_words": 5,
31 "data": { "site": "link in bio", "cta": "grab yours today" }
32 }
33 ]
34}
The same request works from Claude Code, Cursor or the claude.ai connector: the agent reads the tool's fields and fills them in. The script, the actor and the voice go in the same call, as in the live shots guide.
Read the quote before you say yes. It's free, and it lists the presenter seconds and the finished-video seconds. Templates add no line of their own. Check: the quote has no template line, and the presenter line covers the whole script.
The run behind this guide
The finished ad runs 14.9 seconds. For the first four seconds, Maya talks to the lens. On "Here is a regular mug" the frame switches to the regular mug, and on "And here is mine" a wipe brings in the sage mug next to it. The count runs up to 3h over her on "It keeps coffee hot", and the end card takes the caption spot on the last line.
It came out shorter than the quote's estimate of about 18 seconds, and you pay for the delivered seconds: the quote said 180 credits and the run was charged 150. Presenter 15 s × 9 = 135, finished video 15 s × 1 = 15, and the three templates added nothing. The presenter line covers the whole take, the five or so seconds behind the compare included.
Common mistakes
A stat without placement: "over". It fills the frame on a plain background, and the presenter disappears for those words. Set the placement when you want the number next to her.
Pictures in the wrong shape. A picture that doesn't match the card's shape is cut to fill it, and the run says so in warnings[]. Pick pictures close to the card: taller than wide.
A picture that isn't an asset yet. before and after take { asset_id } of a ready picture. Save the photo, or turn a generated picture into an asset with create_asset, before the run.
Your own pictures without broll_policy: "anyone". The run is refused before anything is charged. Add the field.
A reveal quoted before the template starts. A beat spoken before its template enters moves to just after it, with a warning. Quote a phrase inside the template's own words.
Three graphics over the presenter at once. At most two templates or overlays can sit over the presenter at once, and they can't overlap. A request that puts a third on screen is refused before anything is charged. Move the third to other words.
Long labels or emoji. Long text shrinks to fit, so keep labels to one short line. A template with an emoji in it is refused, and the message names the character.
FAQ
Do templates change the price?
No. Templates add no charge. The parts of the video are billed as the price list(opens in new tab) says, and a full-frame template doesn't lower the presenter seconds. Your agent quotes the run before anything is charged.
Can I use my own product photos?
Yes. Save them as assets and set broll_policy: "anyone" on the run. Pick photos that are taller than wide, so the card doesn't cut much away.
Do captions stay on?
It depends on the kind, and a template never sits on top of captions. A full-frame template, an end_card, a hand_title, a lower_third, a quote, a title_card or a word_title hides them while it shows. A stat, notification, checklist, callout, progress or rating keeps them: the captions move to a free spot and hide only when none is left. In the example the large stat filled the lower third, so the captions sat out those two seconds.
Can my agent reuse the same graphics across variants?
Yes. The templates are part of the request, so your agent can send the same ones with each new hook. Anchor them on lines every variant shares, such as the product line and the call to action. The UGC ad loop playbook shows how to run variants in batches.
Where is the full list of kinds?
In the API reference(opens in new tab), under templates. Your agent reads the same list from the tool.
Try it on your last ad
Take the script of the last ad you finished in an editor. Mark the three words where you added the product by hand, and ask your agent for the same ad with templates on them. Read the quote, run it, and compare it with the version you edited. If you sell a physical product, Clipwright.io for e-commerce(opens in new tab) shows more of what the agent can make for a product page.
Every variant needs the product on screen again.
The hours of editing each variant cap how many ads you test. Put the product moments in the request your agent already sends, and every variant comes back with them.
Give your agent the first adAbout the Author
Founder at Dimantika
Co-founder of Dimantika, the company behind Clipwright.io and ViralFaceless. Builds both with coding agents. Previously ran GlockSoft with a partner for about 15 years. Writes here about handing video production to agents.
View all postsMore articles you might like.

How to create a video ad with AI from one brief
How to create a video ad with AI where you approve every step: a short brief, a reel that took off, a beat plan, your notes, then the price before it runs.

Make your AI UGC actor act, not just talk
An AI UGC ad where the actor only talks reads as generated. Live shots hand chosen words of your script to a take where the actor acts or shows your product.

Thirty hooks by Friday: running a UGC ad loop with an agent and Clipwright.io
A UGC ad loop you can hand to an agent: six steps and eight prompts, from buyer segments to a reviewed queue, plus one example run with its quote and charge.
