¿Qué hace App Promo Video Studio?
Crea un video promocional de app terminado y honesto a partir de capturas de emulador, y luego publícalo en YouTube, tu Página de Facebook, Instagram y TikTok. Conserva la interfaz de usuario real de la app; nunca inventes funcionalidades, números ni afirmaciones.
Este skill es agnóstico a la app. Funciona para cualquier aplicación. Todo se basa en especificaciones: una nueva app es una nueva especificación JSON más sus propias capturas de pantalla, grabaciones de demostración, CTA, líneas de divulgación y líneas de locución, sin cambios de código. La promoción de Astra Phone Directory (10 de octubre de 2026) es la referencia de trabajo en examples/; cópiala y reemplaza el contenido de la app. Para cada nueva app, confirma la promesa de marketing única, el conjunto de funcionalidades real, los datos de demostración seguros, el enlace a Play Store y las líneas de divulgación honestas antes de producir. Publica en el propio canal de YouTube de la marca, Página de Facebook, Instagram y TikTok; solo la lista de reproducción de YouTube por app difiere entre apps.
Reutiliza el skill cargado dentro de una sesión. Descubre las rutas de las herramientas en tiempo de ejecución (which ffmpeg, emulator -list-avds); no codifiques rutas de máquina y mantén las rutas dentro del repositorio como relativas.
Reglas estrictas (no violar)
- Solo datos de demostración seguros en un video público. Los registros de demostración inventados (nombres/avatares aleatorios, CNIC falsos) están bien; NUNCA el número de una persona real privada ni el del propietario. Confirma el conjunto de demostración con el usuario si la app devuelve datos de terceros en vivo.
- Muestra cada campo de datos. Cada escena de tarjeta muestra la tarjeta completa; no recortes ningún campo.
- Texto honesto. Sin funcionalidades, números, premios o reseñas inventados. Mantén la divulgación de directorio de terceros y eliminación de números en el CTA y los subtítulos.
- Sin guiones largos (—) en ninguna parte (escenas, subtítulos, títulos, descripciones, mensajes de commit). Usa "-" o divide la oración.
- Miniatura personalizada, siempre. Nunca dejes que la plataforma elija un fotograma automáticamente. Para un Reel / Short / TikTok (vertical) usa la miniatura 9:16
thumb_9x16.png; solo una subida a YouTube en horizontal usathumb_16x9.png. Un YouTube Short recorta al centro una miniatura 16:9 a una franja estrecha ~9:16, así que mantén el contenido clave en la columna central de ~405 px y verifica recortando el centro 9:16 antes de subir. - Subtítulos/títulos en urdu en URDU ROMANIZADO (latino), no en escritura urdu. La locución hablada se mantiene en urdu; los subtítulos/títulos/descripciones escritos para la versión en urdu son en urdu romanizado.
- Divulgación de IA: sé preciso, nunca automático. Lee la definición actual de cada plataforma sobre contenido generado por IA, alterado o sintético y responde con sinceridad. La locución es una voz neuronal (sintética), así que divúlgala dondequiera que las reglas de la plataforma cubran audio sintético.
- YouTube "Hecho para niños": siempre No. Estas promociones son para adultos.
- Borrador primero, publica solo con un "sí" explícito por plataforma. La publicación es hacia el exterior e irreversible; prepara todo en privado, luego espera la confirmación. Etiqueta la compilación de Play y registra cada URL de publicación + resultado después.
Flujo de trabajo (seis etapas)
Detalle completo en references/pipeline.md. Los scripts viven en scripts/, una especificación de ejemplo en examples/ (agrega tus propias capturas de pantalla primero).
- Captura (emulador). Barra de estado limpia con
scripts/set_demo_statusbar.sh; captura de pantalla conadb exec-out screencap -p(prefija los comandos de/sdcard/conMSYS_NO_PATHCONV=1). Prefiere imágenes estáticas sobrescreenrecord(es entrecortado). Limpia las búsquedas recientes para que el encuadre sea consistente; recorta cada tarjeta de resultado a la tarjeta blanca completa. - Componer escenas.
python scripts/make_scenes.py <spec.json> <assets_dir> <out_dir>->s1.png..sN.png. Gramática: gancho -> captura de pantalla de inicio -> una tarjeta por registro de demostración -> declaración de capacidad -> CTA. Consulta references/pipeline.md para las reglas de diseño. - Locución (EN + UR).
python scripts/gen_vo.py <vo_spec.json> <out_dir>. Inglésen-US-AvaNeural, urduur-PK-UzmaNeural. El script incluye la corrección de Windows SelectorEventLoop y el reintento 403. Escribe urdu natural, no una traducción literal. - Música.
FFMPEG=<ffmpeg> scripts/build_music.sh <out.wav> <segundos>: colchón de acordes continuo, normalizado con loudnorm a -16 LUFS para que sea audible debajo de la voz. Pasa unos segundos más que el total de las escenas. Verifica convolumedetect. - Ensamblaje.
python scripts/build_video.py --scenes <dir> --vo <dir> --music <wav> --out <mp4> --ffmpeg <ffmpeg>. Ajusta automáticamente la duración de cada escena a su línea de locución (para que tanto EN como UR encajen), funde escenas, mezcla la música debajo de la voz. Verifica duración, niveles y fotogramas. - Miniatura + publicación.
python scripts/make_thumbnail.py <spec.json> <assets_dir> <out_dir>luego sigue references/publishing.md para los cuatro canales (miniatura personalizada, divulgación honesta de IA, borrador primero, confirma el canal objetivo antes de subir).
Inicio rápido (desde el ejemplo)
SK=<directorio-de-skills>/app-promo-video-studio # donde esté instalado el skill
FF=$(which ffmpeg); W=<directorio_de_trabajo>
python "$SK/scripts/make_scenes.py" "$SK/examples/video_spec.example.json" "$SK/examples/assets" "$W/scenes"
python "$SK/scripts/gen_vo.py" "$SK/examples/vo_en.json" "$W/vo_en"
FFMPEG="$FF" bash "$SK/scripts/build_music.sh" "$W/music_en.wav" 33
python "$SK/scripts/build_video.py" --scenes "$W/scenes" --vo "$W/vo_en" --music "$W/music_en.wav" --out "$W/promo_en.mp4" --ffmpeg "$FF"
python "$SK/scripts/make_thumbnail.py" "$SK/examples/video_spec.example.json" "$SK/examples/assets" "$W/thumb"
Cambia al urdu ejecutando gen_vo.py con examples/vo_ur.json en vo_ur, reconstruye la música unos segundos más larga (las líneas en urdu son más largas) y ensambla contra vo_ur.
Hazlo robusto e inteligente
- Temporización automática (
build_video.py) ajusta el tamaño de cada escena a su línea de voz, por lo que las mismas escenas generan versiones EN y UR limpias sin ajustes manuales. - Basado en especificaciones (
make_scenes.py,make_thumbnail.pyleen un JSON), por lo que una nueva app es una nueva especificación más capturas de pantalla nuevas, no código nuevo. - Verifica cada etapa: captura a ojo (registro correcto, todos los campos), música con
volumedetect(~ -15 dB de media = realmente en la mezcla), render final (duración + niveles + fotogramas de gancho/tarjeta/declaración/CTA). - Fracasa honestamente: si edge-tts está bloqueado por la red, envía escenas + música + scripts con marca de tiempo y nombra la voz como la única parte bloqueada. Nunca falsifiques voz, datos ni afirmaciones.
Referencias
- references/pipeline.md - captura, escenas, VO, música, ensamblaje en detalle.
- references/publishing.md - los cuatro canales, miniatura personalizada, regla sin IA, cuentas/perfiles, lista de verificación por plataforma, puerta de borrador primero.
- references/gotchas.md - todas las trampas que costaron tiempo (música silenciosa, música enmascarada, corrección de edge-tts en Windows, modificación de ruta
/sdcard, deriva de encuadre de tarjeta, raíces de subida). - examples/ - la especificación de referencia y las líneas de locución EN/UR; las capturas de pantalla no se incluyen.