Skip to content
Marketing
Skill

/clone-ad

Clone an existing video ad for a different product or offer. Analyzes the source video's style, pacing, camera work, dialogue, and tone, then adapts and generates a new Seedance 2.0 video customized for the user's product. End-to-end workflow: input video → analysis → adapted

BOOST
From plugin
arcads-claude-code
1.6k8 skills
Install
$ npx -y skills add krusemediallc/arcads-claude-code --skill clone-ad --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/clone-ad

Context preview

The summary Claude sees to decide when to auto-load this skill.

Clone an existing video ad for a different product or offer. Analyzes the source video's style, pacing, camera work, dialogue, and tone, then adapts and generates a new Seedance 2.0 video customized for the user's product. End-to-end workflow: input video → analysis → adapted

SKILL.md

clone-ad.SKILL.md
name: clone-ad
description: >
  Clone an existing video ad for a different product or offer. Analyzes the source
  video's style, pacing, camera work, dialogue, and tone, then adapts and generates
  a new Seedance 2.0 video customized for the user's product. End-to-end workflow:
  input video → analysis → adapted prompt → generation → delivery. Use when someone
  says "clone this ad", "make this ad but for my product", "recreate this video for
  my brand", or provides a video ad and a product image asking for a similar video.

Clone ad — Seedance 2.0

Clone an existing video ad for a different product or offer. The agent analyzes the source video frame-by-frame, transcribes dialogue, extracts the visual style and beat structure, then generates a new Seedance 2.0 video adapted for the user's product.

**How this differs from analyze-video:**

  • **analyze-video** → output is a **reusable markdown template** saved to `prompt-library/`
  • **clone-ad** → output is a **generated Seedance 2.0 video** delivered to the user

Prerequisites

Before starting, verify:

which ffmpeg || echo "MISSING — run: brew install ffmpeg"
python3 -c "import whisper; print('whisper OK')" 2>/dev/null || echo "MISSING — run: pip3 install openai-whisper"

Both `extract-frames.sh` and whisper depend on ffmpeg. If missing, install via `brew install ffmpeg` before proceeding.

Workflow

Step 0: Gather inputs

Collect from the user:

| Input | Required | Notes | |-------|----------|-------| | **Source video** | yes | The video ad to clone. File path to `.mp4`, `.mov`, `.webm` | | **Product image** | recommended | Reference photo of the user's product. Becomes `referenceImages` / `@(img1)` in the prompt. Without this, Seedance invents its own product design. | | **Product/offer description** | if no image | Text description of the product, its features, target audience, and key selling points. Used to rewrite dialogue and product references. | | **Brand voice** | optional | Check `MASTER_CONTEXT.md` for brand blocks. If empty, ask the user for tone/audience preferences. |

If the user only provides a video and says "clone this for my product," ask them for at least a product image or a text description before proceeding.

Step 1: Extract frames and audio

Reuse the analyze-video extraction script — do NOT duplicate it.

bash "skills/arcads-external-api/prompting/analyze-video/scripts/extract-frames.sh" \
  "<source_video_path>" "/tmp/clone-ad-analysis" <num_frames>

**Frame count by duration:**

| Source duration | Frames | |-----------------|--------| | Under 10s | 8 | | 10–20s | 12 | | 20–30s | 16 | | Over 30s | 20 |

**Outputs:**

  • `frame_001.jpg` through `frame_NNN.jpg`
  • `audio.wav` (16 kHz mono, whisper-ready)
  • `metadata.txt` (duration, resolution, fps, frame count)

Read `metadata.txt` to get the source video duration — you'll need it for step 6.

Step 2: Transcribe audio

Use whisper to get the exact dialogue. This is critical — the dialogue pattern is what gets adapted for the user's product.

import whisper
model = whisper.load_model("base")
result = model.transcribe("/tmp/clone-ad-analysis/audio.wav")

Record:

  • Full transcript text
  • Per-segment timestamps and text (`result["segments"]`)
  • Total word count
  • Language detected

If the video is **silent** (no speech detected), note that and skip the dialogue adaptation in step 7. The clone will be a visual-style clone only.

Step 3: Compressed analysis

Read **ALL** extracted frames visually. For each frame, note:

**Structure and pacing:**

  • How many distinct beats/shots are there?
  • What's the narrative arc? (hook → demo → verdict? reveal → detail → CTA?)
  • How long does each beat last? (map to segment timestamps)

**Camera and framing:**

  • POV style: selfie/handheld, tripod, propped phone, over-the-shoulder?
  • Framing per beat: wide, medium, close-up, macro?
  • Camera movement: static, pan, dolly, handheld shake?
  • Signature framing moves (e.g., "leans into camera," "tilts product toward lens")

**Edit style:**

  • Transition type: jump cuts, dissolves, match cuts?
  • Visual rhythm: fast cuts vs held shots?
  • Any recurring motif (e.g., "every other beat is an extreme close-up")?

**Dialogue and script structure:**

  • Hook format: question, statement, exclamation, reaction?
  • Speech pattern: casual/formal, filler words, trailing thoughts, mid-sentence cuts?
  • How many spoken lines? How many silent beats?
  • CTA style: direct ("link in bio"), soft ("you need to try this"), none?

**Tone and energy:**

  • Emotion words that describe the speaker/mood
  • Energy arc: starts calm → builds excitement? Flat? Burst then settle?
  • Speaker's relationship to viewer: friend, expert, skeptic, fan?

**Lighting and technical quality:**

  • Light source: natural/artificial, direction, quality
  • Camera quality: phone/DSLR/cinema, intentional flaws?
  • Audio quality: phone mic, studio, car, outdoor?

**Product references:**

  • How is the product physically shown? (held up, worn, applied, on a surface)
  • What specific claims or features are called out?
  • Brand mentions, labels visible, text overlays?

**What makes this ad distinctive (2–3 defining traits):**

  • The unique combination of elements that makes this ad recognizable
  • These are the traits that MUST transfer to the clone

Store this analysis internally — it does NOT get saved as a template file.

Step 4: Present analysis summary

Show the user a structured breakdown before proceeding:

📋 Source video analysis

Duration: Xs | Beats: N | Dialogue: Y words | Style: [style name]

Beat map:
  [00:00–00:03]  HOOK — close-up, excited expression, "opening line"
  [00:03–00:07]  SHOW — tilts product to camera, "feature call-out"
  [00:07–00:10]  DEMO — (silent) applies/uses product, close-up on texture
  [00:10–00:15]  VERDICT — back to camera, "closing line + CTA"

Defining traits:
  1. [trait 1]
  2. [trait 2]
  3. [trait 3]

What transfers to your product:
  ✅ Be
Read more
Ships witharcads-claude-code

Create AI marketing videos and images using your Arcads account, powered by AI agents in Claude Code or Cursor.

Get the whole plugin
Stats
1,580
Stars
380
Forks
Active
Maintenance
Python
Language
MIT
License
16d ago
Last commit
6mo ago
Created
1d ago
Added

Repo: krusemediallc/arcads-claude-code

Other skills on arcads-claude-code.