Vídeo promocional de música
Crea un vídeo promocional vertical (por defecto 1080×1920) que se sienta como una pieza continua y premium. Un logo lo abre. Las páginas de la app, las portadas y los reproductores fluyen unos dentro de otros a través de movimientos de cámara suaves. Las canciones suenan bajo la imagen al ritmo. Una tarjeta final a juego lo cierra, haciendo que el vídeo se pueda reproducir en bucle.
Este skill empaqueta un flujo de trabajo refinado a través de muchas rondas de comentarios reales de usuarios. Las reglas en references/direction.md son esos comentarios, convertidos en principios. Léelos antes de diseñar nada: son la diferencia entre "bonito" y "esto es lo que quería".
0. Captación: pide referencias primero
Antes de planificar o construir nada, pide al usuario 3-4 referencias que deberían dar forma al resultado. Las referencias deciden el aspecto, por lo que el vídeo depende de ellas. Pregunta en un mensaje amigable, junto con la lista de verificación de activos a continuación, para que el usuario responda una sola vez.
Pregunta por:
- 3-4 referencias: vídeos (lo mejor: llevan movimiento y ritmo), reels, imágenes o enlaces a ellos. Para cada una, pregunta qué les gusta: el aspecto, el color, la tipografía, las transiciones, el ritmo, el sonido. Si el usuario ofrece solo enlaces que no puedes abrir (Instagram, Pinterest, TikTok), pide el archivo descargado o capturas de pantalla. Nunca afirmes haber visto algo que no pudiste abrir.
- Si envían menos de 3, pregunta una vez más y explica que más referencias dan un resultado más cercano. Si aún así no pueden, continúa con lo que tienes y di qué decisiones tomaste tú mismo.
- Si envían más de 4, pregunta cuáles 4 importan más, o pondera las primeras.
Lista de verificación de activos (pregunta en el mismo mensaje, y acepta "tú eliges" para cualquier cosa):
- Logo (PNG con transparencia es mejor).
- Capturas de pantalla de la app (pantalla de inicio, biblioteca, reproduciendo ahora), que muestren lo que es real.
- Canciones: los archivos de audio más las horas de inicio y fin del hook para cada una (los usuarios conocen su hook; no lo adivines a partir de la letra).
- Paquete de efectos de sonido (opcional).
- Archivos de videoclips oficiales (opcional, para clips sincronizados).
- Formato, duración objetivo, tasa de fotogramas (por defecto 1080×1920, 60 fps), y dónde se publicará.
Luego estudia las referencias adecuadamente (ver references/references-analysis.md): hojas de contacto y secuencias densas de fotogramas para el movimiento. Escribe un brief de referencia breve: paleta, roles tipográficos, ritmo (cortes por compás), tipos de transición, textura (grano, bloom, papel o ninguna), cómo interactúan el texto y las imágenes, y el carácter del sonido. Muestra el brief al usuario en unas pocas líneas con tu plan, luego construye sin esperar más aprobación a menos que algo te bloquee.
Cuando las referencias entren en conflicto con una regla de references/direction.md, sigue primero las palabras explícitas del usuario, luego las referencias, luego los valores predeterminados.
1. Verifica el entorno
Necesitas ffmpeg y Python con numpy, pillow, opencv-python-headless y scipy (crea un venv en la carpeta de trabajo). Las fuentes son fuentes del sistema; verifica que cada uno de los tres roles tipográficos se resuelva. Si falta una capacidad esencial, di exactamente cuál y detén el paso dependiente; no presentes un plan como un vídeo terminado.
2. Obtén y verifica los activos
- Portada: nunca uses recortes de capturas de pantalla como portada visible. Son demasiado suaves y los usuarios lo notan. Encuentra la obra de arte oficial en línea con
scripts/find_cover.py, que busca en Apple/iTunes (hasta 3000 píxeles) y JioSaavn y empareja cada candidato con el recorte de la captura de pantalla. Acepta solo coincidencias de aproximadamente 0.98 o superiores, y registra la procedencia (URL de origen, título, artista, puntuación de coincidencia) encovers/provenance.json. Si nada coincide (por ejemplo, mezclas generadas por Spotify o radios), redibuja una versión vectorial nítida cuando sea un diseño simple (Canciones que te gustan), o deja ese elemento fuera. - Canciones: cópialas, luego ejecuta
scripts/beat_grid.pyen cada una: tempo, ritmos fuertes, energía por medio segundo, y el salto de energía más grande (el drop). Pide al usuario las horas del hook en lugar de inferirlas de la transcripción. - Videoclip:
scripts/av_sync.pyda el desfase entre el audio del vídeo y el archivo de la canción, para que la imagen y la canción permanezcan sincronizadas en boca.scripts/shot_cuts.pyencuentra los propios cortes del vídeo, para que el recorte pueda seguir al sujeto por toma. - Efectos de sonido: caracteriza cada archivo (duración, posición del pico, brillo), asígnale un rol (toque/clic, whoosh, subida, pop, timbre, retumbo, especial), y anota el desfase del pico de cada archivo para que las señales caigan en el pico.
3. Planifica la línea de tiempo en la cuadrícula de ritmo
- Trata el tiempo de la película como tiempo de la canción mientras suena una canción (t de la película = t de la canción + desfase). Pon los cambios de escena en los ritmos fuertes, y los pops y pasos de stop-motion en ritmos u octavos.
- Arco típico, adáptalo al brief: apertura con logo → biblioteca o página de la app → carrusel de álbumes → reproduciendo ahora (barra de progreso en vivo) → momento del drop (grandes palabras cinéticas) → muro de portadas → transición a la siguiente canción con su propia animación de portada → su reproductor → sección opcional de videoclip → final de partículas hacia el logo → tarjeta final que coincida con la apertura.
- Cada cambio entre escenas debe ser un movimiento continuo: un zoom hacia un elemento que se convierte en la siguiente escena, un corte igualado (la misma imagen en el mismo lugar en ambos lados), o un vuelo a través de un área oscura. Enumera el mecanismo de cada transición en el plan.
- Reglas de texto: ninguna palabra se coloca nunca sobre la obra de arte, y ninguna palabra queda oculta detrás de un logo o portada. Las palabras se deslizan desde detrás del borde de un objeto, o surgen a través de una línea de máscara, y luego se sientan completamente visibles. Los títulos que se sientan sobre contenido desplazable pertenecen a ese contenido (coordenadas del mundo), por lo que los mosaicos nunca los cubren.
Consulta references/direction.md para el conjunto completo de reglas visuales y por qué existe cada una.
4. Construye
Empieza desde el ejemplo trabajado en assets/reference_project/: render.py (motor de imagen más una línea de tiempo completa de 58 s), audio.py (mezcla) y style.json. Ya contiene bloques de construcción probados:
- composición con pre-filtrado de desenfoque, sombras suaves y recorte;
- grano de película y bloom por fotograma;
- la clase
Textde tres roles (sans, serif itálica, mono) con entradas suavizadas, entradas stop-motion y salidas a la deriva; - revelaciones de palabras con línea de máscara y revelaciones desde detrás;
- ondas de toque con efecto de presión; una interfaz de reproductor vectorial con una barra de progreso en vivo y toque de corazón; la tarjeta final de anillo repetido;
- el sistema de partículas de diamante (ensambla una portada pieza por pieza; levántala hacia el logo);
- reproducción de videoclip con mezcla de fotogramas y recortes por toma;
- las herramientas de barrido de filtro, envolvente y señal de SFX.
Mantén el motor; reemplaza la línea de tiempo y el contenido con los del nuevo proyecto. Lee references/engine-notes.md para la arquitectura y los problemas ya resueltos.
Trabaja en este orden:
- Pruebas de texto y diseño: renderiza 10-20 fotogramas fijos a lo largo de la línea de tiempo, haz una hoja de contacto, mírala, y corrige los problemas de diseño antes de cualquier renderizado largo.
- La mezcla (
audio.py): es rápida, así que mide los niveles por segundo y alrededor de cada transición (references/audio.md). - Un renderizado completo en segundo plano (60 fps tarda unos 10 minutos para 60 s en un portátil; 120 fps unos 25). No consultes; espera el aviso de finalización.
5. Control de calidad de la exportación real
Ejecuta scripts/motion_qa.py en el MP4 final. Informa saltos de fotograma a fotograma, pasos de stop-motion, fotogramas congelados y fotogramas anormalmente oscuros. Para cada pico que no sea un paso intencional o un corte de videoclip, extrae los fotogramas consecutivos a su alrededor y míralos. Luego verifica:
- duración, fps, recuento de fotogramas y decodificación completa;
- sonoridad (−11 a −14 LUFS integrados, pico alrededor de −1 dBFS, sin distorsión);
- niveles por segundo y niveles de transición;
- ambos lados de cada transición;
- legibilidad del texto a tamaño de teléfono.
Informa honestamente: puedes medir el audio pero no puedes escucharlo. Dilo, y pide al usuario que verifique de oído.
Para correcciones pequeñas, re-renderiza solo el rango de tiempo afectado (render.py --range a,b) y empálmalo en el renderizado maestro con recortes exactos al fotograma. Re-multiplexa y re-verifica las uniones. Consulta references/qa-and-delivery.md.
6. Entrega temprano e itera
- Envía un MP4 reproducible tan pronto como una versión esté completa, incluso a medio camino de un cambio más largo. Los usuarios a menudo preguntan "¿está listo?" y quieren ver mientras continúas.
- Cada ronda: relee las palabras del usuario con atención. A menudo escriben rápido y cortan a media frase. Aplica exactamente lo que pidieron, mantén todo lo demás idéntico al fotograma, y di qué cambió. Si un mensaje está cortado, haz la parte clara y pregunta por el resto.
- Mantén versiones anteriores (
archive_vN/), y nombra los entregables con la versión y los fps.
Entregables cada ronda:
- MP4 principal (60 fps para publicar; 120 fps solo si se solicita, y explica que las plataformas sociales reproducen a 60 como máximo);
- el mismo vídeo solo con efectos de sonido, sin canciones (para publicar con música con licencia de la plataforma);
- un zip del proyecto editable: código, ajustes de estilo, portadas con procedencia, fotogramas usados del vídeo, SFX usados, los WAV de mezcla y un README con la línea de tiempo;
- una nota breve sobre qué cambió, qué se verificó y qué no, más un recordatorio de que las canciones, las portadas y los clips de vídeo tienen derechos de autor: están bien para ediciones personales, pero las plataformas pueden silenciar o reclamar publicaciones públicas.
Archivos de referencia
references/direction.md: las reglas visuales y editoriales aprendidas de los comentarios de los usuarios. Léelo antes de diseñar.references/references-analysis.md: cómo estudiar las 3-4 referencias del usuario y escribir el brief.references/audio.md: envolventes de canciones (de bajo a alto, de alto a bajo), transiciones continuas sincronizadas con el ritmo, colocación de SFX, sonoridad.references/engine-notes.md: arquitectura del motor de referencia y problemas ya resueltos.references/qa-and-delivery.md: comprobaciones, re-renderizado parcial y empalme, codificación, empaquetado.scripts/:beat_grid.py,find_cover.py,av_sync.py,shot_cuts.py,motion_qa.py(ejecuta cada uno con-hpara uso).assets/reference_project/: el ejemplo trabajado completo (promo de Spotify, "Raw Rich Rare" en las "National Treasures" de Drake).