本文へ移動
cccskills
無料GitHub で公開日本語紹介

clone-ad

参考広告の映像やセリフ、テンポを分析し、商品やブランドに合わせたSeedance 2.0の動画広告を生成する一連の作業を支援します。

原文原文の説明を見る

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.

mrpaidsocial/arcads-claude-code-mrpaidsocialスター 1,634(GitHub 1,634 + cccskills 0)

実行スコア 未検証

インストール方法を見る

こんなときに便利

  • 参考広告を別の商品向けに作り替えたいとき
  • 広告のテンポやカメラ表現を再現したいとき
  • 商品画像から短い動画広告を作りたいとき
  • 長い広告を連続した短尺に分けたいとき

日本語での紹介

できること

参考となる動画広告をフレーム単位で確認し、構成、テンポ、カメラワーク、編集、セリフ、トーンなどを分析します。その特徴を残しながら、商品名や特徴、訴求点を別の商品向けに置き換え、Seedance 2.0用のプロンプトを作成して動画を生成します。商品画像があれば参照画像として使い、商品説明やブランドの声があればセリフや見せ方に反映します。15秒を超える広告は場面の区切りで複数クリップに分け、連続性を保つ手順も含みます。

こんなときに便利

参考にした広告の雰囲気を別商品で再現したいときや、既存広告の映像表現を自社ブランド向けに作り替えたいときに使えます。単に分析結果をテンプレートとして保存するのではなく、調整した動画を生成して受け取りたい場合に向いています。

使い方の例

  • 「この広告を、添付した商品画像を使って作り替えてください」
  • 「この動画のテンポと話し方を参考に、別商品の広告を作ってください」
  • 「この長い広告を短いクリップに分けて生成してください」

注意点

ffmpegが必要で、音声の文字起こしにはwhisperを使います。商品画像または商品説明が必要です。Seedance 2.0の動画生成にはAPI環境が必要で、生成前に内容確認やクレジット費用の見積もり確認を行います。人物の顔を含む参照動画を使う方式には制約があります。

この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。

含まれるファイル(1)

  • SKILL.md21.3 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

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:

InputRequiredNotes
Source videoyesThe video ad to clone. File path to .mp4, .mov, .webm
Product imagerecommendedReference photo of the user's product. Becomes referenceImages / @(img1) in the prompt. Without this, Seedance invents its own product design.
Product/offer descriptionif no imageText description of the product, its features, target audience, and key selling points. Used to rewrite dialogue and product references.
Brand voiceoptionalCheck 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 durationFrames
Under 10s8
10–20s12
20–30s16
Over 30s20

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:
  ✅ Beat structure, pacing, camera angles, edit style, tone, energy
  ✅ Dialogue pattern (adapted for your product)
  ✅ Lighting and technical quality cues

What gets swapped:
  🔄 Product references → your product
  🔄 Specific claims → your product's features
  🔄 Brand mentions → your brand (if provided)

Proceed with adaptation? (yes / adjust)

Wait for user confirmation before continuing.

Step 5: Decide generation mode

Walk through this decision tree:

┌─ Source video ≤ 15s?
│   YES → Single-clip generation
│   NO  → Multi-clip split at natural beat boundaries
│         Each clip ≤ 15s (Seedance max)
│         Identify best split points from beat map
│         Use the CHAINED MULTI-CLIP PIPELINE below
│
├─ User provided a product IMAGE?
│   YES → Image-to-video mode (referenceImages with @(img1) in prompt)
│         For multi-clip: use i2v for clip 1 ONLY, then chain v2v for clips 2+
│   NO  → Text-only mode (describe product in prompt text only)
│         OR v2v if:
│           - Source video has NO human faces
│           - AND user wants to preserve exact visual style
│           - (v2v with faces → content checker rejection + billed)
│
├─ Source video has person SPEAKING?
│   YES → audioEnabled: true (confirm with user)
│         Dialogue confirmation gate REQUIRED (step 7)
│   NO  → audioEnabled: false (or ask user preference)
│         Skip dialogue gate
│
└─ User wants voice clone from source audio?
    YES → Upload source audio as referenceAudios
          (check audio+image regression: run sanity probe first)
    NO  → Seedance generates its own voice from text

Chained multi-clip pipeline (confirmed 2026-04-10)

When the source ad is longer than 15s, use this hybrid i2v→v2v chaining pattern for visual continuity:

Clip 1: i2v mode
  - referenceImages: [product image]  ← establishes brand fidelity
  - audioEnabled: true (if speech)
  - Generate → poll → download output

Clip 2: v2v mode
  - referenceVideos: [clip 1 output]  ← inherits hands, surface, lighting, product
  - NO referenceImages (mutually exclusive)
  - audioEnabled: true (if speech)
  - Upload clip 1 output via fresh presigned URL
  - Generate → poll → download output

Clip 3: v2v mode
  - referenceVideos: [clip 2 output]  ← chain from MOST RECENT clip, not clip 1
  - Upload clip 2 output via fresh presigned URL
  - Generate → poll → download output

...continue for clips 4+

Critical rules for chaining:

  1. Always chain from the most recent clip — do not reuse earlier uploads. Presigned URLs expire and stale uploads may fail silently.
  2. Upload each clip output fresh via POST /v1/file-upload/get-presigned-url immediately before using it as a reference. Do not reuse filePath values from previous uploads.
  3. Wait for each clip to reach generated status before uploading it as a reference for the next clip. Do not fire clips in parallel — they must be sequential.
  4. Clip 1 uses i2v for brand fidelity (product image as reference). All subsequent clips use v2v (previous clip as reference) for visual continuity.
  5. After all clips are generated, stitch with ffmpeg: ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4 (use absolute paths in the list file).

Why chaining works: Seedance v2v inherits the visual style, hands, surface, lighting, and product appearance from the reference video. By chaining clip N → clip N+1, each subsequent clip maintains continuity with the one before it. The first clip's i2v reference image establishes the product identity; v2v propagates it through the series.

Cost note: Clip 1 costs the i2v rate (~0.06/sec, 0.9 cr at 15s). Clips 2+ cost the v2v rate (~0.1/sec, 1.5 cr at 15s). A 3-clip series costs ~0.9 + 1.5 + 1.5 = ~3.9 credits total.

Important constraints to check:

  • referenceImages and referenceVideos are mutually exclusive — pick one per call
  • v2v with human-containing reference videos → content checker rejection (credits burned)
  • audioEnabled: true + referenceImages may 500 (intermittent server regression) — sanity probe first
  • referenceVideos count > 1 fails — only 1 ref video works
  • If using v2v: only use product-only/abstract/hands-only videos (no faces)
  • Hands-only clips (no face visible) pass the v2v content checker — confirmed 2026-04-10

Tell the user which mode you're using and why.

Step 6: Adapt for user's product

This is the creative core. Using the analysis from step 3:

Dialogue adaptation (if source has speech):

  • Keep the same conversational pattern: if the source uses a question hook, use a question hook. If it uses filler words ("like," "okay so"), keep filler words.
  • Keep the same number of spoken lines and same silent beat placement
  • Keep the same energy arc (excited → calm, or flat, or building)
  • Replace product-specific references with the user's product name, features, and claims
  • Match the word count of each line closely (±3 words per beat) to preserve pacing
  • Read the adapted dialogue out loud at natural pace — it must fit the target duration

Visual adaptation:

  • Keep the analyzed camera work, framing per beat, and edit style
  • Replace the product description with the user's product (physical appearance, colors, materials, label details)
  • Keep the setting, lighting, and atmosphere
  • Keep the person description (or adapt if user specifies a different persona)
  • Keep the technical flaw cues (phone quality, mic type, lighting imperfections)

Prompt composition:

  • Read seedance-2.md for platform rules before composing
  • Read the closest matching style template (e.g., seedance-2-ugc.md for UGC-style sources) for structural guidance
  • Follow the Subject + Action + Camera + Style + Constraints order
  • Stay within 100–260 words (Seedance sweet spot)
  • Include @(img1) token if user provided a product image
  • Add consistency anchors: "The product from @(img1) must remain visually unchanged in every shot"
  • Add pacing cues in the tone direction paragraph
  • Use timestamps [00:00], [00:04], etc. for multi-beat sequences
  • No forbidden words: cinematic, professional, stunning, 8k, studio, perfect

Duration selection:

  • If source ≤ 15s: match source duration (or round to nearest second in 4–15 range)
  • If source > 15s: split into clips, each ≤ 15s
  • Use dialogue word count to validate (see main SKILL.md duration table: ~2.5 words/sec)

Step 7: Dialogue confirmation gate

MANDATORY for any clone with spoken dialogue. Follow the exact format from the main SKILL.md:

📝 Dialogue script (please confirm before I generate)

  1. [HOOK]    "adapted line matching original pattern"
  2. [SHOW]    "adapted feature call-out for user's product"
  3. [DEMO]    (silent beat — physical demonstration, no dialogue)
  4. [VERDICT] "adapted closing line / CTA"

Total spoken words: ~N  |  Target duration: Xs  |  Fits at natural pace: ✅/❌

Approve this dialogue? (yes / edit / rewrite)

Rules:

  • This gate is separate from the credit cost confirmation — both must be satisfied
  • Never assume approval from earlier confirmations (tone, analysis, credit cost)
  • If user says "edit" or proposes changes, revise and re-present until approved
  • Skip ONLY if the source video is entirely silent (no speech detected in step 2)

Step 8: Audio decision

Ask the user:

  1. Enable audio output? (audioEnabled: true / false)
    • Default to true if source video has speech
    • Default to false if source video is silent
  2. Supply reference audio for voice cloning?
    • Offer to extract the source video's audio and use it as referenceAudios
    • Or user can provide their own voice clip
    • Upload via presigned URL if provided
  3. Sanity probe (if using audioEnabled: true + referenceImages):
    • This combo has a known regression that returns 500
    • Before the full call, fire a minimal test to check if the regression is still active
    • If still broken, offer fallbacks:
      • Drop audio (audioEnabled: false)
      • Drop reference image (text-only, lose brand fidelity)
      • Use v2v workaround (generate silent i2v first, then v2v with audio on top)

Step 9: Credit cost estimation

Follow the main SKILL.md's mandatory estimation flow:

  1. Check logs/arcads-api.jsonl for matching model + similar config
  2. Fall back to MASTER_CONTEXT.md rate table
  3. For multi-clip: show per-clip and total
  4. Present with source citation and estimate-only disclosure:
Estimated credit cost:
  Seedance 2.0 (15s i2v) × 1 clip × 1 variation = ~0.9 credits
    (from logs/arcads-api.jsonl 2026-04-09)
  ─────────────────────────────────────
  Estimated total: ~0.9 credits

  ⚠️ Estimate only — confirm exact cost in the Arcads platform.
  Proceed? (yes/no)

Do NOT generate until the user confirms.

Step 10: Session setup and upload

Follow the main SKILL.md session folder checklist:

  1. GET /v1/products → resolve productId (default from MASTER_CONTEXT.md)
  2. Check for existing "Arcads API - YYYY-MM-DD" folder → create if missing
  3. Create project inside the folder → store projectId
  4. Upload references via POST /v1/file-upload/get-presigned-url:
    • Product image → fileType: "image/jpeg" → auto-upscale if longest side < 1024px
    • Source video (if v2v mode) → fileType: "video/mp4"
    • Reference audio (if voice clone) → fileType: "audio/mpeg" or appropriate type
  5. Store all filePath values for the generation payload

Step 11: Generate

  1. Compose the CreateVideoDto JSON:

    • model: "seedance-2.0"
    • productId, projectId
    • prompt (from step 6)
    • aspectRatio: match source video (9:16 or 16:9)
    • duration: from step 6
    • resolution: 720p (default)
    • audioEnabled: from step 8
    • referenceImages: product image filePath (if i2v mode)
    • referenceVideos: source video filePath (if v2v mode, product-only, no faces)
    • referenceAudios: voice clip filePath (if voice clone)
  2. Ask generation count (how many variations? default 1)

  3. Single-clip: Fire N parallel POST /v2/videos/generate calls. Multi-clip (chained): Fire clips sequentially per the chaining pipeline in step 5. Each clip depends on the previous clip's output — do not fire in parallel.

  4. Log immediately to logs/arcads-api.jsonl:

    {
      "timestamp": "...",
      "endpoint": "POST /v2/videos/generate",
      "model": "seedance-2.0",
      "assetId": "...",
      "request": { "duration": ..., "resolution": ..., ... },
      "response": { "status": "pending", "creditsCharged": ... },
      "session": { "folderName": "Arcads API - YYYY-MM-DD", "notes": "clone-ad: ..." }
    }
    
  5. Poll GET /v1/assets/{id} until generated or failed

    • Single-clip: poll all variation IDs concurrently
    • Multi-clip: poll each clip individually, wait for generated before proceeding to the next
    • Update log entry with final status, creditsCharged, generationTimeSec, URLs
  6. For multi-clip: upload each completed clip as a fresh presigned URL reference for the next clip (see chaining pipeline in step 5)

Step 12: Present results

  1. Assign all assets to session project via POST /v1/assets/add-to-project
  2. Save all videos to outputs/clone-ad-tests/ (or a descriptive subfolder)
  3. Open the output folder on the user's machine so they can immediately review:
    open "outputs/clone-ad-tests/"   # macOS
    
  4. Present watch/download URLs
  5. For multiple variations: numbered list for comparison
  6. For multi-clip:
    • Present each clip separately
    • Stitch with ffmpeg using absolute paths:
      printf "file '%s'\n" "$(pwd)/clip1.mp4" "$(pwd)/clip2.mp4" "$(pwd)/clip3.mp4" > /tmp/stitch-list.txt
      ffmpeg -y -f concat -safe 0 -i /tmp/stitch-list.txt -c copy stitched-output.mp4
      
    • Provide both stitched file and individual clips
  7. Show credit summary (total creditsCharged across all clips/variations)

Seedance 2.0 constraints (quick reference)

Check reference.md for full details. These are the ones most likely to bite during clone-ad:

ConstraintImpact
referenceVideos + referenceImages mutually exclusiveCannot combine in same request (500)
v2v with human faces in reference videoContent checker rejects, credits still charged
audioEnabled: true + referenceImages regressionMay return 500 — sanity probe first
referenceVideos count > 1 failsOnly 1 reference video accepted despite docs saying 3
Content check bills before checkingCredits charged at create time, not refunded on rejection
endFrame non-functional on Seedance 2.0Do not use
Prompt length100–260 words (Seedance sweet spot)
Duration4–15 seconds (continuous integer)
Aspect ratio9:16 or 16:9 only (no 1:1)
Forbidden wordscinematic, professional, stunning, 8k, studio, perfect

Error recovery

ErrorRecovery
Content checker rejects promptDo NOT retry same payload. Remove potentially flagged language. Tighten motion descriptions. Check for forbidden words.
500 on audioEnabled: true + referenceImagesAudio+image regression is active. Fallback options: (a) drop audio, (b) drop image and go text-only, (c) v2v workaround: generate silent i2v first, then run v2v with audio on top using the i2v output as reference video
v2v face rejectionSource video has humans — switch to i2v mode with user's product image
Prompt too long (> 260 words)Trim: cut filler from tone direction, compress setting details, shorten consistency anchors. Prioritize beat structure and dialogue.
Source video > 15sSplit into clips at natural beat boundaries. Generate each separately. Offer to stitch.
Generation fails (status: failed)Check data.error.message. If content-related, rewrite prompt. If server error, wait and retry once.

Related files

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

analyze-video

無料概要あり

参考動画の構成やテンポ、カメラ、編集、話し方を分析し、Seedance 2.0で別の題材にも応用できる動画生成用テンプレートにまとめます。

  • 参考動画のスタイルを型にしたいとき
  • 動画の構成やカメラワークを分析したいとき
  • 長い動画の雰囲気を短尺にまとめたいとき
mrpaidsocial/arcads-claude-code-mrpaidsocial1,6342026年10月20日 更新

arcads-external-api

無料概要あり

Arcadsの外部APIを通じて、複数のAIモデルによる動画・画像、B-roll、シーン、台本やアクター素材の生成と取得を進めるための手順を参照できます。

  • Arcadsで商品紹介動画を生成したいとき
  • 広告用の画像やB-rollを作りたいとき
  • 生成した素材の状態を確認したいとき
mrpaidsocial/arcads-claude-code-mrpaidsocial1,6342026年10月20日 更新

chatgpt-image-ad

無料概要あり

ArcadsのChatGPT Image 2を使ってMeta広告向け静止画を生成・編集します。文字量の多い広告やチャット画面風などの表現に向けて指示文を整え、生成画像を確認して受け渡します。

  • 会話画面風の広告画像を作りたいとき
  • 比較表や検索画面の広告を作りたいとき
  • 文字の多い静止画広告を編集したいとき
mrpaidsocial/arcads-claude-code-mrpaidsocial1,6342026年10月20日 更新

generate-youtube-thumbnail

無料概要あり

動画のテーマや人物、ブランド素材に合わせたYouTubeサムネイルを生成し、表情や構図の異なる案をまとめて比較できるようにします。

  • YouTube動画のサムネイルを作りたいとき
  • サムネイルのA/Bテスト案を作りたいとき
  • 顔写真やロゴを使った案を作りたいとき
mrpaidsocial/arcads-claude-code-mrpaidsocial1,6342026年10月20日 更新

image-ad-clone

無料概要あり

既存の画像広告を分析し、ブランド固有の要素を差し替えられる再利用可能なプロンプトテンプレートにして、生成画像で検証・記録します。

  • 参考広告を再利用可能にしたいとき
  • 別ブランド向けに広告構成を応用したいとき
  • 生成モデルごとの再現性を比べたいとき
mrpaidsocial/arcads-claude-code-mrpaidsocial1,6342026年10月20日 更新

meta-ad-builder

無料概要あり

完成した画像や動画をMeta広告として既存の広告セットに登録し、広告文の作成や成果上位広告・競合広告の調査も支援します。

  • 完成した動画をMeta広告に登録したいとき
  • 広告文を作って既存セットに追加したいとき
  • ROAS上位の広告を調べたいとき
mrpaidsocial/arcads-claude-code-mrpaidsocial1,6342026年10月20日 更新

mrpaidsocial のスキルをすべて見る

このスキルの問題を報告する