
ad-multiplier
Free Claude Code skill: recast the on-camera talent in a video ad that's already converting. Same shots, cuts, camera moves, product blocking, captions and a…
Install with your AI
Paste into Claude Code, Cursor, or any agent — it reads the repo and wires the tool into your project.
Install and set up ad-multiplier (claude-skill project) into my current project. Found on https://claudeers.com/ad-multiplier Repo: https://github.com/mikefutia/ad-multiplier Homepage/docs: https://www.skool.com/scale-ai/about Detected install method: claude-skill → # copy this skill into .claude/skills/ad-multiplier/ Category: data. Platforms: cli, api. Read the repo's README for exact setup and env vars, then install it and wire it into my project. Claudeers Health Verdict: active; community-verified: false. Confirm the source before running anything.
# copy the skill dir into your project: # .claude/skills/ad-multiplier/ (or ~/.claude/skills/ad-multiplier/ for all projects)
git clone https://github.com/mikefutia/ad-multiplier
// compatibility
| Platforms | cli, api |
|---|---|
| Operating systems | — |
| AI compatibility | claude |
| License | — |
| Pricing | open-source |
| Language | Python |
Ad Multiplier
A free Claude Code skill that takes a video ad which is already converting and puts a different person in it — same shots, same cuts, same camera moves, same product blocking, same captions, same audio. Only the presenter changes.
Runs on your own API key. You pay per render, roughly $0.34 per second of video at 720p. No subscription.
Contents
- What it does
- Known limitation — read this first
- Requirements
- Setup (one time)
- How to use it
- Preparing your inputs
- Cost
- Troubleshooting
- How it works
What it does
You give it two things: a video ad (4–30 seconds) and a photo of the new person.
It watches the ad, extracts the structure — shot table, cut timestamps, camera behaviour, lighting, on-screen text — shows you exactly what it will lock and what it will change, quotes the cost, then renders the new version with your original audio muxed back on.
The lock is the default. Everything is held unless a change is explicitly argued for and scoped to specific shots and timestamps. That's what stops the model quietly reinterpreting an ad that already works.
Known limitation — read this first
Shots showing the person's body with no face in frame will keep the original person.
Product close-ups — hands pouring, tearing a sachet, applying a cream, unboxing — have no face for the model to anchor identity to, so it preserves whatever is there. This was tested twice with a dedicated replace instruction, an explicit pointer to the reference photo's own visible hands, and a negative constraint. It does not work. It is a model limitation, not a prompting problem.
It shows up most obviously as a skin-tone mismatch, but build, nails and jewellery persist too.
Working around it:
- Cast a replacement with a similar skin tone to the source creator, or
- Choose a source ad where the face is in frame whenever the body is, or
- Accept it — on many ads the hand shots are brief
The skill tells you which shots are affected, and what percentage of runtime they represent, before you spend anything.
Requirements
| Claude Code | https://claude.com/claude-code |
| ffmpeg + ffprobe | brew install ffmpeg (macOS) · sudo apt install ffmpeg (Linux) |
| Python 3.9+ | Already on macOS/Linux. No pip installs — standard library only. |
| kie.ai account with credits | See setup below |
Check ffmpeg is available:
ffmpeg -version | head -1
ffprobe -version | head -1
Setup (one time)
Step 1 — Install the skill
Download or clone this repo:
git clone https://github.com/mikefutia/ad-multiplier.git
Copy it into your Claude Code skills folder:
mkdir -p ~/.claude/skills
cp -r ad-multiplier ~/.claude/skills/
Restart Claude Code. To confirm it loaded, type:
/ad-multiplier
Step 2 — Create a kie.ai account
- Go to https://kie.ai and sign up (Google or Microsoft)
- Click Billing in the left sidebar
- Add credits — start with $10, which covers roughly one 25-second render at 720p
Step 3 — Create your API key
- Click API Keys in the left sidebar
- Click Create New Key
- Click the copy icon next to the key
Step 4 — Save the key
Paste it into this command, replacing paste_your_key_here:
mkdir -p ~/.config/kie
echo 'KIE_API_KEY=paste_your_key_here' > ~/.config/kie/.env
chmod 600 ~/.config/kie/.env
Verify it saved:
cat ~/.config/kie/.env
Never paste your key into a chat window, and never commit it. The skill reads it from that file, or from a
KIE_API_KEYenvironment variable.
Setup is done. You won't repeat any of this.
How to use it
Step 1 — Put your files in a folder
Create a working folder and drop in your two inputs:
my-ad/
source.mp4 ← the ad you want to recast (4-30 seconds)
talent.png ← photo of the new person
Avoid commas and quotes in filenames — they break some command-line tools.
Step 2 — Open that folder in Claude Code
cd my-ad
claude
Step 3 — Ask for the recast
recast this ad — source is source.mp4, new talent is talent.png
Step 4 — Approve the lock list
Claude analyses the video and shows you exactly what it found:
Source: 8 shots, 26.10s, 720x1280, 30fps, original audio
LOCKED
cuts at 7.5s / 9.5s / 10.9s / 12.9s / 15.2s / 16.5s / 18.5s
camera: handheld shots 1,2,6,8 - static 3,4,5,7
beats: product enters 7.5 - sachet torn 9.6 - powder hits water 11.0 - glass lifts 16.0
lighting continuity and direction
original audio and its sync
on-screen text: captions bottom-centre throughout
CHANGING
presenter identity + wardrobe -> talent.png
⚠️ Shots 3-6 (9.5-16.5s, 27% of runtime) show hands with no face in frame.
These will keep the source creator's hands.
Approve, or tell me what to move between the lists.
Read the warning. If the hand shots matter for your ad, this is the moment to change the casting or pick a different source — before spending anything.
Step 5 — Approve the cost
source 26.10s 720x1280 30fps audio=aac
output 720p, ratio+duration follow the source
estimate ~$8.87
proceed? [y/N]
Step 6 — Wait
Renders take 5–15 minutes depending on queue. Claude polls and reports progress. When it
finishes you get recast.mp4 with your original audio already muxed back on.
Running the scripts directly
If you'd rather skip Claude and drive it yourself:
# Preflight only — checks your source against the model's limits
python3 ~/.claude/skills/ad-multiplier/scripts/probe.py source.mp4
# Full run — you supply the prompt (see SKILL.md for the template)
python3 ~/.claude/skills/ad-multiplier/scripts/run.py \
--video source.mp4 \
--talent talent.png \
--prompt-file prompt.txt \
--resolution 720p \
--out recast.mp4
Preparing your inputs
Source video requirements
| Duration | 4–30 seconds |
| Frame rate | 24–60 fps |
| File size | ≤ 200 MB |
| Dimensions | 300–6000 px per side |
| Aspect ratio | 0.4–2.5 (9:16, 1:1, 16:9 all fine) |
Longer than 30 seconds? Cut a segment first:
ffmpeg -ss 0 -to 28 -i long-ad.mp4 -c copy segment.mp4
The talent reference photo
This matters more than anything else you control. What makes a good one:
- Front or three-quarter angle, face unobstructed, settled neutral expression. Theatrical expressions get baked into every frame.
- Realistic skin texture — visible pores, natural asymmetry, faint under-eye shadow. Retouched, poreless faces produce a plastic look throughout.
- Lighting in roughly the same direction and quality as the source video. A brightly lit studio headshot fights a dim bedroom ad.
- Wardrobe appropriate to the ad's setting.
- No text or logos on clothing — generated lettering comes out as mush.
- Similar skin tone to the source creator, if the ad has hand or body close-ups. See the known limitation.
You can generate one with any image model. A prompt that works:
A candid photo of a [age] [description] person, photographed straight-on at chest height, head and shoulders in frame. [Hair, skin tone, face]. Realistic skin with visible pores and natural asymmetry. Wearing [wardrobe]. [Setting] with [lighting direction], soft and low-key. Settled neutral expression, mouth closed, looking at the lens. Shot on a phone camera. Avoid: studio lighting, retouching, poreless skin, heavy makeup, text or logos on clothing, blurred background, posed model expression.
Cost
Billed by the source video's duration, not the output length.
| Resolution | Approx. $/second | 10-second ad | 20-second ad | 30-second ad |
|---|---|---|---|---|
| 480p | $0.17 | ~$1.70 | ~$3.40 | ~$5.10 |
| 720p | $0.34 | ~$3.40 | ~$6.80 | ~$10.20 |
| 1080p | $0.84 | ~$8.40 | ~$16.80 | ~$25.20 |
Measured against real charges in September 2026 — treat as ±20%. kie.ai has no cost-preflight endpoint, so the skill estimates from source duration and always asks before spending.
Develop at 480p, finalise at 720p.
Troubleshooting
ratio must be adaptive
Aspect ratio can't be set in edit mode — it follows the source. The script already handles this; you
only see it if you're calling the API yourself.
Upload returns 404
The file upload API is on kieai.redpandaai.co, not api.kie.ai. kie.ai's own docs contradict
themselves on this. The script uses the correct host.
Upload returns 403
The upload host rejects default Python/urllib user agents. The script sends its own. If you're
calling the API directly, set a User-Agent header.
curl: (26) Failed to open/read local data
Your filename contains commas or spaces. Rename it.
Output is 24fps when the source was 30fps Expected. Frame rate isn't preserved; cut timing still is.
Output is a fraction of a second shorter than the source
Expected and imperceptible. The audio remux uses -shortest.
The person didn't change in some shots See Known limitation.
No API key
Check cat ~/.config/kie/.env shows KIE_API_KEY= followed by your key, with no quotes or spaces.
Preflight fails on duration Your source is outside 4–30 seconds. Trim it with the ffmpeg command above.
How it works
- Preflight —
ffprobevalidates the source against the model's hard limits - Analyse — extracts shot table, cut timestamps, sub-shot beats, lighting, on-screen text, and which shots contain a face
- Lock list — derives keep vs change from your instruction and shows it for approval
- Compose — writes a prompt enumerating the keep list, scoping each change to shots and timestamps
- Quote — estimates cost from source duration and waits for confirmation
- Render — uploads, submits to Seedance 2.5, polls to completion
- Finish — remuxes your original audio over the silent render
Built on Seedance 2.5 via kie.ai.
Built by Mike Futia | SCALE AI — where I share a new Claude Code system for DTC brands and creative agencies most weeks.
// faq
What is ad-multiplier?
Free Claude Code skill: recast the on-camera talent in a video ad that's already converting. Same shots, cuts, camera moves, product blocking, captions and audio — only the presenter changes. Built on Seedance 2.5. By Mike Futia — SCALE AI.. It is open-source on GitHub.
Is ad-multiplier free to use?
ad-multiplier is open-source, so it is free to use.
What category does ad-multiplier belong to?
ad-multiplier is listed under data in the Claudeers registry of Claude-compatible tools.
// embed badge
[](https://claudeers.com/ad-multiplier)
// retro hit counter
[](https://claudeers.com/ad-multiplier)
// reviews
// guestbook
// related in Data & Analytics
Wrap Antigravity, ChatGPT Codex, Claude Code, Grok Build as an OpenAI/Gemini/Claude/Codex compatible API service, allowing you to enjoy the free Gemini 3.1 P…
Marketing skills for Claude Code and AI agents. CRO, copywriting, SEO, analytics, and growth engineering.
Apache Airflow - A platform to programmatically author, schedule, and monitor workflows
CLI tool for configuring and monitoring Claude Code