Remix de anuncio viral
Convierte una estructura de anuncio probada en un anuncio para la app del usuario. El modelo IA proporciona personas y escenarios; todo lo que se muestra en una pantalla de teléfono proviene de la grabación real de la app; la edición mantiene cada línea hablada en el rostro que la dice.
$S = scripts/ en el directorio de esta skill. Necesita ffmpeg, Python 3 con numpy pillow opencv-python-headless, y para comprobaciones de voz mlx-whisper (Apple Silicon) o openai-whisper. Graba el metraje de la app con un grabador de pantalla como la skill app-demo-recorder (compilación release, cuenta real, estado sin anuncios).
Lee references/lessons.md una vez antes de la primera edición. Enumera los fallos que este flujo de trabajo está diseñado para evitar.
0. Acordar el objetivo (un mensaje)
Público objetivo (quien realmente se queda en la app, no quien deseas que la use), canal (Meta / YouTube Shorts / TikTok), la única función a mostrar y un presupuesto de créditos. Los públicos mayores quieren un ritmo más lento, texto más grande, un par en pantalla y un beneficio concreto (dinero, tiempo). No inicies la generación de pago sin un presupuesto.
1. Encontrar una referencia que ya funcione
python3 $S/find_reference_ads.py search --country KR --objective app_install --period 180 --order like
python3 $S/find_reference_ads.py search --country KR --keyword 앱테크 --lang ko
python3 $S/find_reference_ads.py download <id> <id> --out refs
Elige anuncios de 4 a 30 segundos (los modelos de recreación aceptan ese rango) cuya estructura se ajuste a la función: descubrimiento → prueba → resultado → CTA. Los "me gusta" están inflados por el gasto; compara dentro de una misma búsqueda, no entre búsquedas. Los videos de referencia tienen marca de agua y pertenecen a sus anunciantes: úsalos solo como fuente estructural de un trabajo de recreación.
2. Elegir la persona (ficha de personaje)
El modelo de recreación necesita un rostro que copiar. Si el usuario no tiene fotos de talento, genera una ficha de personaje por persona antes de gastar cualquier crédito de video, y obtén la aprobación del usuario.
- Quién: un par del espectador objetivo (misma edad, región, trabajo, ropa), común en lugar de guap@ de modelo, que coincida con el rol de la referencia (presentador, cliente, vecino).
- Ficha: una imagen horizontal (aproximadamente 1600x900), fotorrealista, la misma persona y atuendo en tres vistas: primer plano frontal de cabeza y hombros, medio cuerpo, cuerpo entero; fondo neutro claro, luz diurna suave. Manos relajadas y completamente visibles, cinco dedos cada una. Sin texto, logotipos, marcas de agua ni teléfono en la mano.
- Esqueleto del prompt: "Ficha de personaje fotorrealista de UNA <profesión> <género> fictici@, <detalles de rostro/cabello>, vistiendo . Tres vistas lado a lado sobre un fondo claro: primer plano frontal, medio cuerpo, cuerpo entero. Textura de piel natural, luz diurna suave. Sin texto, sin logotipos, sin accesorios."
Herramientas, de más barata a más cara:
# Generación de imagen con Codex CLI (incluida en un plan de ChatGPT, sin créditos de video)
codex exec --skip-git-repo-check --sandbox workspace-write -C cast \
"Usa tu herramienta de generación de imágenes para crear UNA imagen: <esqueleto del prompt>. Guárdala como ./cast_<nombre>.png e imprime su ruta."
- Higgsfield (u otra API de imagen) a través de las herramientas del agente:
generate_imagecon el mismo prompt, o su flujo de trabajo de ficha de personaje para una ficha multivista. Cuesta créditos; cotiza primero. - Cualquier modelo de imagen por el que el usuario ya pague.
Abre la imagen y comprueba: un rostro coherente en todas las vistas, manos naturales, sin texto, sin parecido a una persona real o famosa. Una persona ficticia debe ser revelada como generada por IA cuando la plataforma o la ley lo exijan. Guarda la ficha junto al briefing: el trabajo de recreación la recibe como imagen del reparto.
3. Generar la versión
Prepara: el video de referencia, la ficha del personaje del paso 2, el icono de la app y 1 o 2 capturas de pantalla reales de la app.
Redacta el briefing para que la salida de la IA sea fácil de reparar:
- Mantén los tiempos y el ritmo de la referencia; cambia el reparto, el escenario y el producto. Escribe las líneas habladas textualmente, cortas, en el idioma de destino. Evita frases testimoniales ("Lo probé y obtuve…") a menos que sean ciertas; prefiere demostración ("Vamos a calcular…").
- Pide sin subtítulos ni texto en pantalla (salen distorsionados) y sin primeros planos de manos escribiendo en un teléfono (las manos se ven mal y los dedos cruzan la pantalla, que no se puede reemplazar).
- Las pantallas de teléfono se reemplazarán, así que pide que el teléfono se mantenga quieto y de frente a la cámara.
- Cotiza el coste primero; redacta en la resolución más baja; una salida a la vez.
4. Analizar la salida de la IA antes de tocarla
python3 $S/analyze_source.py ai.mp4 work/ana # planos, líneas de voz, hoja de contactos work/ana/shots.jpg
python3 $S/analyze_source.py ai.mp4 work/ana --no-speech --rms 17.2-17.6 # punto de corte de audio exacto cerca de una línea
Mira shots.jpg. Clasifica cada plano: conservar (personas, lugares), reemplazar pantalla (un teléfono de frente a la cámara), descartar (manos escribiendo, rostros distorsionados, acción ilegible). Anota dónde se dice cada línea y en qué plano. Los inicios de línea del reconocedor suelen adelantarse 0.3–0.7 s: confírmalo con --rms antes de cortar el audio.
5. Poner la app real en cada teléfono
python3 $S/screen_replace.py auto ai.mp4 3.33 6.50 app.mp4 work/shotB.mp4 --work work/B --app-start 2.4
python3 $S/screen_replace.py auto ai.mp4 17.46 21.25 app.mp4 work/shotE.mp4 --work work/E --app-start 10.6 --blank 0,1740,1080,2020
auto extrae el plano (deteniéndose en cualquier corte dentro del rango), encuentra el fotograma clave y las esquinas de la pantalla, las ajusta al bisel, rastrea el teléfono en todo el plano (seguimiento planar, ambas direcciones, a través de rotaciones), compone con brillo ajustado y un poco de destello, y escribe work/X/key_preview.png (cuadrilátero + cuadrícula de píxeles) y work/X/qa.png (original vs. composición).
Abre siempre ambas imágenes. Si el cuadrilátero está desviado, lee las esquinas de la cuadrícula y vuelve a ejecutar con --key K --quad "x,y x,y x,y x,y" (TS TD BD BI, borde interior de la pantalla). Usa INICIO/FIN del rango seguro del análisis. Haz coincidir el clip de la app con la línea: muestra la pantalla de entrada mientras la persona pregunta, el resultado mientras reacciona. Oculta la interfaz de usuario obsoleta o privada con --blank (coordenadas de píxeles de la app).
6. Construir el momento del resultado y el texto
python3 $S/pop_highlight.py result_clip.mp4 x0,y0,x1,y1 work/pop.mp4 --blank 0,975,720,1145 # número clave aparece, brilla, destella
python3 $S/captions.py captions.json work/caps # gancho, subtítulos de líneas, tarjeta final como PNGs
Reglas de texto: un gancho en el primer fotograma (una pregunta que el espectador se hace), un subtítulo por línea hablada, máximo dos líneas, grandes, con alto contraste, fuera del 20% inferior y del borde derecho, nunca sobre la interfaz de la app que el espectador debe leer. Mantén el texto al mínimo que el usuario acepte; los avisos legalmente requeridos se quedan pero pequeños. Tarjeta final = icono de la app + nombre (+ CTA si el usuario lo quiere).
7. Ensamblar con la sincronía intacta
Escribe un JSON de línea de tiempo (formato en scripts/assemble.py --help) y ejecuta:
python3 $S/assemble.py timeline.json out.mp4
- El audio es el propio audio de la fuente, cortado en segmentos; cada plano con un rostro hablando usa los mismos tiempos de fuente para video y audio. Sobre pantallas de app, planos generales y la tarjeta final, una línea puede sonar como voz en off.
- Elimina el silencio muerto (silencios antes de las líneas, entre planos) en lugar de acelerar todo.
- Un plano de una persona debe moverse desde su primer fotograma: nunca congeles un rostro para llenar tiempo; para alargar una reacción, ralentiza la parte silenciosa con interpolación de fotogramas (
minterpolate) y proporciona un poco más de fuente de la necesaria. - Las transiciones usan fotogramas reales más allá del punto de corte; las pantallas de app pueden cortar directamente.
- Los totales de video y audio deben coincidir (la herramienta se niega en caso contrario).
8. Verificar como un espectador exigente
python3 $S/verify.py out.mp4 --forbid ai.mp4:10.79-17.29 --person 0-3.2 --person 5.2-8.8 --sheet work/sheet.jpg
Luego mira la ficha, lee la transcripción contra tus subtítulos y míralo una vez. Fallos típicos: un fotograma límite del siguiente plano, un rostro que se congela durante 4 fotogramas, una línea que suena sobre el rostro equivocado, interfaz falsa en el borde de una pantalla reemplazada, texto que cubre la app, el gancho que se queda en pantalla sobre la interfaz de la app. Corrige y vuelve a verificar antes de mostrar al usuario.
9. Entregar
Una carpeta: mp4 final, la salida cruda de la IA, las composiciones, el JSON de línea de tiempo, README con la tabla de línea de tiempo, créditos gastados y riesgos abiertos (revelación de persona IA, redacción testimonial, nombre de marca mal pronunciado). Cuando se quiera una revisión independiente, entrega a un revisor con contexto nuevo la hoja de fotogramas, la transcripción y la línea de tiempo, y dile qué estructura conservar: a un revisor al que solo se le diga "hazlo compatible y más rápido" eliminará a las personas y el metraje de la app.