Communitygithub.com

vitozev/phone-portal-reel

Anuncio vertical corto de producto (Reels, TikTok, Shorts) donde una mano desliza un teléfono y cada producto cae de la pantalla a la escena real, sin metraje real de cámara.

¿Qué es phone-portal-reel?

Este skill automatiza la creación de anuncios de producto en formato vertical 9:16, tipo "phone portal", para plataformas como Reels, TikTok y Shorts. Utiliza una sola foto generada dividida en capas (fondo, manos y teléfono) y un modelo 3D real del producto, animado con código para que parezca que sale de la pantalla del teléfono y cae a la escena real. Es ideal para marcas sin metraje de cámara real, generando todo desde cero con imágenes de IA y animación. El proceso divide el anuncio en tres tiempos: caída del producto, reorganización tipo stop motion y logotipo final. Requiere claves de API de OpenAI y ElevenLabs, y herramientas como HyperFrames, three.js, ffmpeg y Python. El skill incluye guías detalladas para evitar errores de continuidad y scripts de verificación de sincronización y calidad de audio.

Compatible con~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/vitozev/claude-skills/tree/HEAD/skills/phone-portal-reel

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Reel de portal de teléfono

Resumen

Anuncio de producto de 9 segundos en formato 9:16, grabado en un solo plano fijo con trípode, en tres tiempos:

  1. Caída del portal (aprox. 4,3 s). Una mano sostiene un teléfono. Otra mano lo desliza, y cada deslizamiento deja caer un producto fuera de la pantalla sobre un estante debajo, cayendo al ritmo. El producto estrella cae al último, tras una pausa total en la música.
  2. Reordenación en stop motion (aprox. 2,7 s). Un corte brusco elimina las manos y el teléfono. El producto gira a lo largo de toda la línea, una imagen fija por semicorchea, manteniéndose en los cuatro tiempos.
  3. Logotipo fijo (aprox. 2 s). La marca aparece gradualmente en 6 a 8 fotogramas y se queda fija. Solo música, sin voz.

No hay metraje de cámara. Una sola foto generada se divide en capas (fondo, teléfono y mano que lo sostiene, mano que desliza) y se anima con código. El producto es un modelo 3D real, renderizado por la misma cámara dentro del teléfono y en la habitación, por lo que cruza el vidrio como un solo objeto.

El nivel: debe pasar por una grabación real. Cada fallo que tuvimos fue una rotura de continuidad que alguien vio en un solo fotograma. Mira a tamaño completo, en cada momento de contacto, en el archivo final.

Necesitas

NecesidadPara
OPENAI_API_KEYgpt-image-2 para la placa y el maestro; gpt-image-1.5 con input_fidelity: high para ediciones que deben conservar la foto
ELEVENLABS_API_KEYLa banda sonora (music_v2_5) y efectos de sonido
CLI de HyperFrames (npx hyperframes), three.js r169El motor de fotogramas y el renderizado
ffmpeg; Python 3 con numpy opencv-python-headless pillow openaiLos scripts

Los scripts leen las claves del entorno o de un archivo .env en la carpeta de trabajo o en cualquier carpeta superior. Nunca las imprimen. Informa de lo que gasta cada ejecución: dólares de OpenAI (los scripts registran una estimación) y créditos de ElevenLabs.

Si alguien puede filmar una mano real deslizando un teléfono sobre un trípode, usa ese metraje para la mano. Es la parte más difícil de falsificar.

Puertas: detente para obtener un visto bueno en cada una

  1. Brief y hoja de ritmo. La marca, de 4 a 6 productos (el héroe al último, en el color que complemente el fondo), el fondo y un tempo donde un tiempo sea un número entero de fotogramas. A 30 fps, 112,5 BPM da 16 fotogramas, 120 BPM da 15 y 90 BPM da 20. Coloca cada caída en la cuadrícula de la música, en un tiempo o medio tiempo, nunca entre medias. Para el número de caídas, consulta references/build.md, sección 1.
  2. Aspecto. La placa, el maestro (manos y teléfono), un primer renderizado del producto 3D en la cámara ajustada y la tarjeta final con 3 combinaciones de fuentes, todo en una sola hoja.
  3. Prueba de movimiento. Un deslizamiento y una caída, renderizados a calidad de entrega y revisados fotograma a fotograma. La mayoría de los fallos aparecen aquí.
  4. Construcción, luego sonido y luego el final.

Construcción

Sigue references/build.md. Tiene cada paso, con los números que funcionaron. En orden:

  1. Genera una placa (el fondo vacío), luego un maestro: una edición de la placa que añade ambas manos y un teléfono en blanco. El maestro es el fotograma. Cada placa limpia se hace a partir de él.
  2. Corta capas del maestro y mide las esquinas de la pantalla, el borde inferior de la pantalla, la punta del dedo y la muñeca.
  3. Ajusta la cámara 3D a los bordes del estante.
  4. Construye el motor. Copia example/studio/ (la construcción de referencia: una marca de té, cinco cajas) y vuelve a medir sus constantes para tu placa. Solo contiene código: trae tus propias imágenes, fuentes, arte de etiquetas y archivos three.js. Si el producto no es un cartón (un frasco, una botella, una lata, cualquier cosa de vidrio), lee primero "Otros productos" en build.md.
  5. Haz la música primero y mide sus tiempos. Luego fija las caídas a la cuadrícula, añade efectos de sonido y mezcla.
  6. Renderiza, luego ejecuta las comprobaciones siguientes.

Reglas que rompieron la ilusión

Lo que se vioSolución
El producto aparece debajo del teléfono unos fotogramas tardeEs un solo objeto 3D a ambos lados del vidrio. Resuelve cada deslizamiento hacia atrás desde su fotograma de caída: desde el fotograma en que su punto más bajo llega al borde, cae bajo gravedad a la velocidad del desplazamiento
El producto cae detrás de la manoPor debajo del borde inferior de la pantalla, dibújalo delante del bisel y los dedos
Se queda colgado bajo el teléfono unos fotogramasLa gravedad actúa en el borde. No dejes que siga el deslizamiento de la página
El deslizamiento parece una foto que se deslizaMuévete desde la muñeca y mantén el antebrazo rígido. Resuelve el ángulo de la muñeca para que la punta del dedo se mueva con la página. No hay dos deslizamientos iguales
El fotograma parece una imagen fijaEl teléfono sostenido se mueve de 1,5 a 2 píxeles y cede bajo cada presión. La pared nunca se mueve
Una línea oscura se mueve a través del teléfonoSin divisores de página en el feed. Mantén cualquier efecto fantasma bajo
Un reloj o joya se desliza en la muñecaPide una muñeca desnuda en el maestro. Si entra uno, enmascáralo todo y elimínalo con scripts/blend-edit.py
Un corte se convierte en una disoluciónDecide cada corte, intercambio y imagen fija en todo el fotograma, nunca dentro de las muestras del obturador
La etiqueta se imprime como un peine de copiasUsa 48 subfotogramas mientras el producto cae y 10 en caso contrario, con un obturador de 0,38 fotogramas
Una edición generada movió cosas fuera de su máscaraLas ediciones enmascaradas no se respetan. Registra la edición, luego tómala solo dentro de la máscara
Un golpe suena antes de la cajaRecorta cada toma a 4 ms antes de su ataque más fuerte y alinea en ese ataque

La lista completa, con causas, está en references/lessons.md.

Comprobación antes de enviar

  • Recortes a tamaño completo del archivo final en cada momento de contacto: el primer fotograma de cada deslizamiento, el producto cruzando el borde, cada caída, el corte y el brazo saliendo del fotograma.
  • python3 scripts/sync-sheet.py final.mp4 --audio sound/stems/sfx.wav: cada golpe se sitúa en su fotograma delineado.
  • bash scripts/check-final.sh final.mp4 1080x1920: -14 LUFS ±1 y un pico verdadero en o por debajo de -1 dBTP.

Scripts

ScriptHace
scripts/openai-image.py OUT.png "prompt" [--edit IN.png --mask M.png --fidelity high]Genera o edita una imagen y registra los tokens y un costo estimado
scripts/blend-edit.py crop / blendPrepara una edición enmascarada de una región, luego registra el resultado y lo toma solo dentro de la máscara
scripts/elevenlabs.py spec.json OUTDIRGenera la banda sonora y los efectos a partir de una especificación, los almacena en caché y registra los créditos gastados
scripts/beats.py bed.mp3Encuentra el tempo del fondo musical, su cuadrícula de tiempos y su primer tiempo fuerte
scripts/sync-sheet.py VIDEO --audio sfx.wav o --cues cues.jsonMuestra los cinco fotogramas alrededor de cada golpe de sonido, en una hoja
bash scripts/check-final.sh VIDEO [WxH]Verifica tamaño, fps, duración, sonoridad y pico verdadero

Ejecuta cada uno con --help para sus opciones. example/README.md mapea la construcción de referencia.

Skills relacionados