# Clone Ad > Clona un anuncio de video existente para otro producto u oferta: analiza estilo, ritmo, cámara, diálogo y tono del video fuente, y genera un nuevo video de Seedance 2.0 adaptado al producto del usuario, de principio a fin. Fuente: https://skillsagentes.com/skills/krusemediallc/arcads-claude-code/clone-ad Markdown: https://skillsagentes.com/skills/krusemediallc/arcads-claude-code/clone-ad.md Repositorio: https://github.com/krusemediallc/arcads-claude-code Autor: krusemediallc Licencia: MIT Actualizado: hace 4 meses Coste de contexto: 124 tok instalada, 5.5k tok al activarse, 5.5k tok con todos los archivos del bundle Bundle: 1 archivo, 21 KB Permisos que pide: ninguno declarado ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add krusemediallc/arcads-claude-code --skill clone-ad --agent claude-code # Cursor npx -y skills add krusemediallc/arcads-claude-code --skill clone-ad --agent cursor # Codex npx -y skills add krusemediallc/arcads-claude-code --skill clone-ad --agent codex # Gemini CLI npx -y skills add krusemediallc/arcads-claude-code --skill clone-ad --agent gemini # Windsurf npx -y skills add krusemediallc/arcads-claude-code --skill clone-ad --agent windsurf # Cline npx -y skills add krusemediallc/arcads-claude-code --skill clone-ad --agent cline ``` ## Qué hace - Analiza el video fuente frame por frame y transcribe el diálogo, y presenta al usuario un mapa de beats con los rasgos distintivos del anuncio antes de continuar - Si el video fuente dura más de 15 segundos, lo divide en varios clips encadenados: el primero por imagen a video (con la foto del producto) y los siguientes por video a video, para mantener continuidad visual - Adapta el diálogo manteniendo el mismo patrón conversacional, número de líneas y energía, pero reemplazando las referencias al producto original por las del usuario - Exige la misma puerta de aprobación de diálogo y de costo en créditos que `arcads-external-api`, y nunca genera hasta que el usuario confirma ambas por separado ## Cuándo usarla - El usuario pide 'clone this ad', 'make this ad but for my product' o da un video de anuncio junto con una imagen de su producto ## Qué la activa - "Clona este anuncio pero con mi producto" - "Recrea este video para mi marca" ## Antes de instalar - Requiere ffmpeg y whisper instalados (`brew install ffmpeg`, `pip3 install openai-whisper`). - Necesita en el PATH: python3 ## Archivos - SKILL.md — 21 KB ## SKILL.md Reproducido tal cual desde krusemediallc/arcads-claude-code bajo MIT. Esta sección es el documento original y está en inglés. # 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: ```bash 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 bash "skills/arcads-external-api/prompting/analyze-video/scripts/extract-frames.sh" \ "" "/tmp/clone-ad-analysis" ``` **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. ```python 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](../prompt-library/seedance-2.md) for platform rules before composing - Read the closest matching style template (e.g., [seedance-2-ugc.md](../prompt-library/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`: ```json { "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: ```bash 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**: ```bash 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](../../reference.md) for full details. These are the ones most likely to bite during clone-ad: | Constraint | Impact | |-----------|--------| | `referenceVideos` + `referenceImages` mutually exclusive | Cannot combine in same request (500) | | v2v with human faces in reference video | Content checker rejects, credits still charged | | `audioEnabled: true` + `referenceImages` regression | May return 500 — sanity probe first | | `referenceVideos` count > 1 fails | Only 1 reference video accepted despite docs saying 3 | | Content check bills before checking | Credits charged at create time, not refunded on rejection | | `endFrame` non-functional on Seedance 2.0 | Do not use | | Prompt length | 100–260 words (Seedance sweet spot) | | Duration | 4–15 seconds (continuous integer) | | Aspect ratio | `9:16` or `16:9` only (no `1:1`) | | Forbidden words | cinematic, professional, stunning, 8k, studio, perfect | ## Error recovery | Error | Recovery | |-------|----------| | Content checker rejects prompt | Do NOT retry same payload. Remove potentially flagged language. Tighten motion descriptions. Check for forbidden words. | | 500 on `audioEnabled: true` + `referenceImages` | Audio+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 rejection | Source 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 > 15s | Split 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 - [analyze-video/SKILL.md](../analyze-video/SKILL.md) — the template-creation cousin (creates reusable `.md` templates instead of generating) - [analyze-video/scripts/extract-frames.sh](../analyze-video/scripts/extract-frames.sh) — frame + audio extraction (reused by this skill) - [seedance-2.md](../prompt-library/seedance-2.md) — Seedance 2.0 platform rules (read before composing any prompt) - [seedance-2-ugc.md](../prompt-library/seedance-2-ugc.md) — 9-layer UGC formula (use as structural reference for UGC-style source videos) - [seedance-2-premium-reveal.md](../prompt-library/seedance-2-premium-reveal.md) — premium reveal formula (for dark-void product-only source videos) - [seedance-2-product-hero.md](../prompt-library/seedance-2-product-hero.md) — product hero formula (for elemental/effects product-only source videos) - [seedance-2-studio-lookbook.md](../prompt-library/seedance-2-studio-lookbook.md) — studio lookbook formula (for polished voiceover-style source videos) - [seedance-2-feature-walkthrough.md](../prompt-library/seedance-2-feature-walkthrough.md) — feature walkthrough formula (for fast-paced demo source videos) - [../../reference.md](../../reference.md) — API routes, `CreateVideoDto` schema, polling, constraints - [../../SKILL.md](../../SKILL.md) — main execution checklist (session setup, dialogue gate, credit estimation, logging) ## Dónde encaja - Categoría: [Marketing](https://skillsagentes.com/categorias/marketing.md) — Campañas, copy, lanzamientos y ciclos de crecimiento. - Creador: [krusemediallc](https://skillsagentes.com/creators/krusemediallc.md) — 8 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Otras skills del mismo repositorio - [Arcads External Api](https://skillsagentes.com/skills/krusemediallc/arcads-claude-code/arcads-external-api.md): Crea y consulta assets de video e imagen con IA vía la API externa de Arcads (Seedance 2.0, Sora 2, Veo 3.1, Kling, Grok Video, Nano Banana, b-roll, escenas, guiones/actores), con guía de prompting y espera hasta que cada asset esté listo. - [Nano Banana Image Ad](https://skillsagentes.com/skills/krusemediallc/arcads-claude-code/nano-banana-image-ad.md): Genera creativos de imagen para anuncios de Meta con Nano Banana 2 / Nano Banana Pro (familia Gemini Flash Image) vía la API de Arcads. Fija la familia de modelo, elimina chrome de plataforma y aplica layouts a prueba de bordes. - [Chatgpt Image Ad](https://skillsagentes.com/skills/krusemediallc/arcads-claude-code/chatgpt-image-ad.md): Genera creativos de imagen para anuncios de Meta con ChatGPT Image 2 (gpt-image-2) vía la API de Arcads. Fija el modelo, elimina chrome de plataforma automáticamente y aplica layouts y texto a prueba de bordes. - [Image Ad Clone](https://skillsagentes.com/skills/krusemediallc/arcads-claude-code/image-ad-clone.md): Convierte un anuncio de imagen existente en una plantilla de prompt reutilizable, validándola al regenerarla vía Arcads con ChatGPT Image 2 o Nano Banana. La plantilla se añade a la librería compartida de 37+ plantillas. - [Meta Ad Builder](https://skillsagentes.com/skills/krusemediallc/arcads-claude-code/meta-ad-builder.md): Publica creativos terminados como anuncios en vivo de Meta (Facebook/Instagram) vía la Meta Marketing API, más investigación y apoyo de copy. Sube imagen o video y crea un anuncio en PAUSA en un ad set existente. ## Skills relacionadas - [Marketing Council](https://skillsagentes.com/skills/coreyhaines31/marketingskills/marketing-council.md): Consejo simulado de asesores de marketing legendarios (Godin, Ogilvy, Schwartz, Dunford, Sutherland, Hormozi, Sharp y más) que aplican sus frameworks, muestran desacuerdos y sintetizan una recomendación. - [Ad Creative](https://skillsagentes.com/skills/coreyhaines31/marketingskills/ad-creative.md): Úsalo para generar, iterar o escalar creatividad publicitaria —titulares, descripciones, texto primario o variaciones completas— en cualquier plataforma de pago. - [Influencer Marketing](https://skillsagentes.com/skills/coreyhaines31/marketingskills/influencer-marketing.md): Para ejecutar partnerships de influencers, creators o embajadores: encontrar y vetar socios, estructurar tratos, redactar briefs, cumplir disclosure y medir el ROI real. - [Public Relations](https://skillsagentes.com/skills/coreyhaines31/marketingskills/public-relations.md): Para pedir ayuda con relaciones públicas, earned media, cobertura de prensa, pitching a periodistas o estrategia de medios (no pull requests). - [Revops](https://skillsagentes.com/skills/coreyhaines31/marketingskills/revops.md): Úsalo para revenue operations, gestión del ciclo de vida de leads y procesos de handoff entre marketing y sales, incluyendo scoring, routing, pipeline y CRM automation. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)