# Recreate an ad you like

> Tear a reference ad down with the analyser, then rebuild it shot by shot on your own product using two reference images.

Source: https://advibly.com/docs/use-cases/recreate-an-ad



Someone sends a link to an ad that works and asks for the same thing with
their product in it. The temptation is to watch it, describe it in prose, and
generate from the description.

That loses exactly the details you were trying to keep. The reliable technique
is a **teardown** followed by **two references** per shot.

## Tear the reference down [#tear-the-reference-down]

`advibly_analyze_video` is free and reads the real file, not a summary of it.

```
advibly_analyze_video {
  video_url: "https://www.youtube.com/watch?v=...",
  format: "ad_breakdown",
  context: "Reading the structure of the reference ad the user wants recreated before rebuilding it with their own product."
}
  → analysis_id, hook, cta, claims, on_screen_text, transcript, shots, segments
```

`ad_breakdown` returns the creative teardown: the hook, the CTA, the claims,
every piece of on-screen text, a verbatim timestamped transcript, a shot list,
and `segments` - a 3-10 second cut plan that is your shot-by-shot build order.

| Source                | How to pass it                          |
| --------------------- | --------------------------------------- |
| YouTube               | The watch URL, directly.                |
| An Advibly generation | `generation_id` instead of `video_url`. |
| A direct file         | Public https URL, up to 18 MB.          |
| Cloud Storage         | A `gs://` URI.                          |

A share page (Google Drive, Dropbox) is not a file. Download it and upload it
via `advibly_create_upload_url` first.

To ask more about the same ad, pass `follow_up_of: analysis_id` with just a
`question`. The video is already in context, which makes it the cheapest way
to keep digging.

## Verify the cut points [#verify-the-cut-points]

Timestamps in the teardown are the model's estimate. Check them against the
real duration before you build anything around them. For a frame-precise look
at one window:

```
advibly_analyze_video {
  video_url,
  clip_start_seconds: 2.4,
  clip_end_seconds: 5.0,
  fps: 6,
  detail: "high",
  question: "Exactly when does the product first enter frame, and what text is on screen?",
  context: "Confirming the precise cut point and on-screen text of the reference ad's opening shot before rebuilding it."
}
```

`clip_*` and `fps` switch the analyser into static mode, which samples the
window at a fixed rate instead of navigating agentically.

## Decide what transfers [#decide-what-transfers]

Structure transfers between brands. Aesthetics usually do not: the reference's
palette belongs to a different company, and carrying it over makes the ad look
like theirs rather than the user's.

| Keep                        | Drop                   |
| --------------------------- | ---------------------- |
| The argument it makes       | Their colours          |
| The beat order and pacing   | Their type             |
| The product's role in frame | Their voice and claims |

The exception is the shot-level composition, which you keep deliberately in
the next step because that is what the reference was for.

## Open a project [#open-a-project]

```
advibly_create_project {
  brand_id,
  name: "Competitor spot, our version",
  context: "Grouping every rebuilt shot and the final assembly of the requested ad recreation into one project."
}
  → project_id
```

## Rebuild each shot: two references, never prose [#rebuild-each-shot-two-references-never-prose]

This is the step everything else depends on. For each segment in the cut plan,
generate the opening still with **both** the source frame and your product as
reference images:

```
advibly_generate_image {
  brand_id,
  project_id,
  reference_image_urls: [sourceFrameUrl, productPhotoUrl],
  prompt: "Recreate the composition, framing, lighting and colour grade of
    image 1, with the product from image 2 in place of its product. Keep the
    camera angle and the position in frame identical.",
  context: "Rebuilding the reference ad's opening composition with the brand's own product as the subject."
}
```

The source frame carries the composition, the grade and the crop. The product
photo carries the thing you are actually selling. Describing either one in
words is where the resemblance goes.

Get the source frames by extracting stills from the reference, or by asking
the analyser for the exact moments and pulling those frames.

<Callout>
  A recreation is a new creative execution on your own product, not a copy of
  someone's footage. Rebuild the structure - hook, pacing, shot grammar, CTA -
  and put your own product, brand and claims in it.
</Callout>

## Animate each still [#animate-each-still]

```
advibly_generate_video {
  brand_id,
  project_id,
  start_image_url: rebuiltStillUrl,
  prompt: "Slow handheld drift right, the subject stays centred.",
  duration: 4,
  aspect_ratio: "9:16",
  context: "Animating the rebuilt opening still to match the reference ad's camera move for that segment."
}
```

Match each clip's `duration` to its segment length in the cut plan. Describe
the camera move only; the still already decided the look.

## Re-voice it [#re-voice-it]

Rewrite the transcript for your product, keeping the beat structure and the
line lengths, then:

```
advibly_generate_voiceover {
  brand_id,
  project_id,
  text: "...",
  voice: "eve",
  context: "Generating the rewritten narration for the recreated ad so the timing matches the reference ad's beat structure."
}
```

0.03 credits per 1000 characters. Write to time at roughly 2.5 words a second.
With the default `xai` provider the text takes inline `[pause]`, `[sigh]`,
`[laugh]` and wrapping `<whisper>` / `<slow>` tags; with `cartesia` those tags
are read aloud, so leave them out there.

## Assemble to the cut plan [#assemble-to-the-cut-plan]

```
advibly_render_composition {
  brand_id,
  project_id,
  scenes: [ { source: clip1 }, { source: clip2 }, { source: clip3 } ],
  voiceovers: [
    { source: voGenerationId, start_seconds: 0 }
  ],
  music: musicGenerationId?,
  texts: [
    { content: "60% off, today only", start_seconds: 8.5, position: "bottom", size: "lg" }
  ],
  context: "Assembling the rebuilt shots, rewritten narration and on-screen text into the finished recreated ad."
}
```

One voiceover segment per scene, each started at that scene's timeline offset,
keeps narration locked to the visuals. A single full-length track also works
when the pacing already matches.

## The other route: restyle the clip itself [#the-other-route-restyle-the-clip-itself]

When the ask is "the same ad, different look" rather than "the same ad, our
product", skip the rebuild entirely:

```
advibly_generate_video {
  brand_id,
  model: "gemini-omni-flash-1.1",
  source_video_url: sourceClipUrl,
  prompt: "Restyle as hand-painted gouache animation, warm palette.",
  context: "Restyling the user's existing clip into the requested visual world while keeping its timing intact."
}
```

Video-to-video output inherits the source's length and aspect ratio, so
`duration` and `aspect_ratio` are ignored. It needs an actual video file; hand
it a still and the call is refused rather than silently wasting four minutes.

## Next [#next]

* Give the recreation captions and a schedule:
  [UGC video ad](/use-cases/ugc-video-ad),
  [Schedule a week of posts](/use-cases/schedule-a-campaign).
