Communitygithub.com

lainshao/editor-de-video

Skill de síntesis/edición de videos cortos en formato 9:16 + 16:9 (única entrada para hacer videos). Tres submódulos: **opener** (tarjeta de título serifada amarilla de 4.5s), **animator** (revisión HTML de chyron / cutaway / listicle / spec_review, flujo de trabajo de 'tres puertas'), **subtitle** (transcripción automática con Whisper + superposición PNG con palabras clave resaltadas). Al activarse, **primero pregunta qué hacer**: ① solo subtítulos, ② solo título, ③ nueva animación / composición completa, ④ flujo completo (voz → cue → animación → composición → subtítulos). Salidas (por defecto tres tipos, en carpeta de entrega Movies): ① video completo mp4 / capa broll mov con canal alfa opcional, ② capa de título transparente 3:4 PNG, ③ línea de tiempo de capítulos txt. Palabras clave: 'cortar este video', 'editar video / montaje', 'hacer un video', 'producir completo', 'agregar efectos / animación', 'agregar subtítulos / chyron / texto emergente', 'intro / título / opener', 'componer voz y B-roll', 'nuevo episodio serie X'. También admite voz estilo Maria: capturas de artículos/noticias reales, reacciones reales e imágenes parciales, el material y el ritmo se eligen según el contenido, sin reemplazar el texto original con tarjetas Emoji. El material de stock real es delegado por este skill como director a footage-finder (tanto horizontal como vertical).

¿Qué es editor-de-video?

Este skill es el **punto de entrada único** para la producción de videos cortos en formato 9:16 (vertical, para TikTok, Reels) y 16:9 (horizontal, para YouTube). Su objetivo es componer automáticamente videos con voz en off (talking head) y capas superpuestas como títulos, B-roll, chyron y subtítulos. El skill es autosuficiente para la composición; el material de stock real o tarjetas de noticias se delegan a skills auxiliares como `footage-finder` y `news-highlight`, actuando `video-editor` como director general. El flujo de trabajo principal sigue un riguroso proceso de **tres puertas**: (1) propuesta de texto en forma de tabla de cues en Markdown, (2) revisión de especificaciones visuales (HTML), y (3) última llamada antes de la renderización. Cada puerta requiere confirmación explícita del usuario para avanzar, evitando costosas iteraciones. Además de la composición completa, el skill soporta tareas puntuales como añadir solo subtítulos (usando Whisper con resaltado de palabras clave) o generar un opener de 4.5 segundos. El skill también gestiona la selección de formato (preguntando al inicio), la generación de salidas (mp4 con o sin capa alfa) y la aplicación de reglas visuales detalladas (zonas seguras, tipografía, plantillas de animación) definidas en convenciones internas.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/lainshao/video-editor/tree/HEAD

Preguntar en tu IA favorita

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

Documentación

Video Editor · Trabajador de Video

Compone videos cortos con voz en off (talking head) en 9:16 / 16:9 + material superpuesto (títulos / B-roll cutaway / chyron / subtítulos). La composición principal es autosuficiente; el material de stock real / tarjetas de noticias son delegados por este skill como director a footage-finder / news-highlight.

Cuándo activar

El usuario dice:

  • "Corta este video", "Edita video", "Montaje" — entrada más común
  • "Haz un video", "Produce completo", "Compón voz y B-roll"
  • "Nuevo episodio [serie X]"
  • "Agrega subtítulos / chyron / texto emergente / tarjeta de título"
  • "Agrega efectos / animación / visuales"
  • "Agrega a la voz imágenes reales estilo Maria / reacciones reales / imágenes parciales" → reaction_overlay (1080×1920 vertical; primero lee recipes/reaction_overlay.md)

No activa pero relacionado (delegado a skills hermanos, video-editor como director):

  • Material de stock real / stock footage / B-roll vacío → llama a footage-finder skill
  • Tarjeta de highlight de noticias (captura de fuente real + luz amarilla) → llama a news-highlight skill
  • Solo generación de voz en off, material corto (<30s) → no activa

Delegación: Tipo de cue → qué skill

En la fase de cues (puerta 1), cada cue se etiqueta con un tipo; los que no son nativos del skill se delegan:

Tipo de cueQuién lo haceProducto
real_footagefootage-finder skillmp4 de stock real recortado al formato + página de revisión
news_highlightnews-highlight skilltarjeta mp4 de noticias reales con luz amarilla (estilo Vox)
source_progressive_highlightEste skill animator/cutaway/scene_source_progressive_highlight.htmlResaltado progresivo de frases en capturas reales de noticias/artículos, sin redibujar la página
tenure_bulletsEste skill animator/cutaway/scene_tenure_bullets.htmlViñetas numeradas en el mismo plano: elemento actual en amarillo, anteriores atenuados
numbered_pillsEste skill animator/cutaway/scene_numbered_pills.htmlCápsulas blancas 01–04 al estilo YC con borde naranja, resumen por grupos que aparece ítem por ítem; misma elección que listicle
company_siteEste skill recipes/compose_company_site.pyGrabación de pantalla completa del sitio web real + PIP circular continuo de la persona; el sitio web tiene PIP por defecto, evitando subtítulos y áreas clave
cutout_sticker_slideinEste skill animator/cutaway/scene_sticker_slidein.htmlRecortes transparentes de personas/objetos con fuente, que se deslizan desde diferentes direcciones; sin usar tarjetas de reacción con marco blanco obsoleto
source_quote / source_screenshotEste skill busca el texto original y captura la página realCaptura de pantalla real con enlace original, párrafo correspondiente y resaltado; las citas no pueden reemplazarse con tarjetas redibujadas
real_person_reactionEste skill primero busca material del usuario / video público original, si es necesario delega a footage-finderFoto o video corto real de persona con fuente; no se reemplaza automáticamente con Emoji
opener / chyron / cutaway / listicle / spec_reviewEste skill animator/openerHTML→mov/mp4
reaction_overlay (persona aparece continuamente, material real aparece parcialmente)Este skill recipes/reaction_overlay.py + composición de video existenteComposición de imágenes estáticas superpuestas con fragmentos de persona real; cue JSON, enlaces de fuente y material reutilizable
SubtítulosEste skill subtitleSubtítulos con palabras clave resaltadas

Sugerencias de material en el guion de voz: leer antes de hacer cues

Aplica a videos completos con imágenes, cues de animación, reaction_overlay y slidecast (3:4). Cuando el usuario proporciona un guion de voz (HTML / Markdown / documento Feishu), primero lee el cuerpo del guion y la sección independiente de 'Sugerencias de material'; si solo se da audio o video, primero busca en la carpeta del mismo tema si hay un guion correspondiente. Las tareas puntuales de solo subtítulos o títulos no requieren este paso.

  • Las 'Sugerencias de material' son la intención del editor, no líneas para ser leídas; la transcripción de Whisper solo verifica lo que realmente se dijo y determina los códigos de tiempo, no puede descartar las sugerencias visuales del guion solo porque se vuelve a transcribir.
  • Cada sugerencia se lee como: 'oración ancla / imagen a mostrar / material original o enlace de fuente / alternativa'. Primero usa el ancla para encontrar la posición en la transcripción real; cuando el guion cambia palabras o reordena, realinea semánticamente, sin aplicar mecánicamente los segundos estimados del guion. Los párrafos que no se pronunciaron no se fuerzan con material.
  • En la tabla de cues de la puerta 1, agrega una columna 'Sugerencia de material en guion → Adoptar / Ajustar / Saltar'. Al adoptar, conserva el enlace original; al ajustar o saltar, escribe una razón y da una imagen alternativa. Para párrafos sin sugerencia en el guion, se pueden agregar cues según el contenido de la voz, pero deben marcarse como 'Nuevo'.
  • Cuando el enlace original está roto, los hechos han cambiado o la imagen no es adecuada para el formato actual, primero verifica antes de reemplazar; no uses capturas inexactas, páginas web falsificadas o imágenes desalineadas con la voz real solo para cumplir la lista.
  • Si ya hay un guion de voz pero no se encuentra la sección de sugerencias de material, completa la edición normalmente, sin pedir al usuario que reescriba el guion. El plan final de cues se basa en la voz real + la retroalimentación del usuario en la puerta 1.

Al escribir un nuevo guion de voz, el formato complementario está en la sección 'Sugerencias de material de voz' del skill html-report.

Páginas reales e imágenes dinámicas: reglas de edición predeterminadas

  • Cuando se menciona una empresa/producto específico, muestra su sitio web oficial o interfaz de producto real. Conserva la identidad del sitio, el nombre de la empresa y los visuales reales que lo autentican; prioriza grabar desplazamiento de página, posicionamiento del mouse, demo del producto o acercamiento parcial. La grabación del sitio web usa recipes/capture_company_site.js, la composición usa recipes/compose_company_site.py; no te limites a pegar el logotipo ni uses tarjetas web falsificadas. Solo si el sitio web oficial no es accesible, usa capturas oficiales verificables y explica el motivo en la tabla de cues.
  • La información que puede avanzar con la voz, se presenta ítem por ítem de forma dinámica. Por ejemplo, '1, 2, 3, 4' se revelan uno por uno en el orden que se mencionan, resaltando el actual y dejando una vista completa final; una lista completa de 11 ítems puede agruparse/entrar en pantalla dividida, pero al final debe mostrar los 11 ítems completos. No muestres los cuatro ítems como una página estática desde el principio, ni uses flotaciones sin información para reemplazar la presentación secuencial.
  • El material estático a pantalla completa puede superponer un PIP dinámico de la persona; los sitios web de empresas reales muestran PIP por defecto, incluso si el sitio web se desplaza. El sitio web usa recipes/compose_company_site.py: grabación de pantalla completa de la página real, video continuo de la persona recortado en ventana circular. El video B-roll de stock no tiene PIP por defecto. Cada cue primero marca el área de subtítulos y el visual clave más importante, luego elige entre cuatro posiciones seguras: superior izquierda, superior derecha, centro izquierda, centro derecha; cuando hay múltiples posiciones seguras en cues adyacentes, se rotan, sin fijar todas las páginas de empresa en la misma esquina. Dentro del mismo cue, la posición es fija, no salta. Si no hay posición segura, reduce el tamaño o cambia el recorte de la página web; si aún no hay solución, registra la excepción y cancela. El material estático sigue recipes/compose_static_pip.py. Ver sección 9 de CONVENTIONS.md.
  • Las listas ordenadas primero ofrecen dos tipos de imágenes reales para elegir. Para un mismo grupo de 3-5 ítems, scene_numbered_pills.html hace cápsulas numeradas a pantalla completa, scene_listicle.html hace una lista numerada con círculo amarillo en el mismo plano que la persona; en la puerta 2, se muestran en paralelo con el mismo texto. Para resúmenes de categorías/direcciones, prioriza cápsulas numeradas; para explicar cada ítem consecutivamente, prioriza listicle; las viñetas superiores estilo Hunger son una tercera opción más ligera en el mismo plano. Tras la aprobación, cada ítem aparece según el tiempo de la voz real, sin mostrar la vista completa al principio.
  • Los recortes cortos y el material gráfico adecuado para entrar pueden deslizarse desde los cuatro lados. Los recortes de personas/objetos reales, memes, fotos, capturas parciales pueden deslizarse desde arriba, izquierda, abajo, derecha, rotando o usando una semilla fija para seleccionar al azar; primero verifica que la trayectoria no atraviese subtítulos, rostros, texto original o datos clave. Para grabaciones de pantalla completa de sitios web y videos de publicaciones originales que deben identificarse directamente, se decide según el contenido si es adecuado deslizarlos, sin forzar transiciones para agregar dinamismo. La entrada dura aproximadamente 0.25-0.35 segundos, y después de colocarse, deja suficiente tiempo para leer; dentro del mismo plano, no se mueve aleatoriamente repetidamente. Los recortes usan animator/cutaway/scene_sticker_slidein.html, sin activar las tarjetas de reacción Emoji con marco blanco obsoleto.
  • Umbral de ritmo visual: la imagen de persona continua en voz explicativa no supera los 8 segundos por defecto. Se mide desde la salida del visual auxiliar efectivo anterior hasta la entrada del siguiente; si supera los 8 segundos, debe marcarse en la tabla de cues y explicar por qué el espacio en blanco. En los primeros 5 segundos, da el título o la primera evidencia. Esta es la línea de verificación de edición de esta cuenta, no una frecuencia fija medida en videos de Mariah; no insertes Emoji o tarjetas de texto repetido de la voz para llenar segundos. Los visuales auxiliares efectivos deben ser páginas fuente, operaciones de producto, imágenes reales, gráficos, listas ítem por ítem o nuevos estados visuales con información; los subtítulos comunes, títulos permanentes y cambios de boca simples no cuentan. Para más detalles y preguntas frecuentes, ver CONVENTIONS.md.

Paso Cero · Formato + Entrada (★ video-editor es la única entrada para todo el proyecto)

video-editor es el director — el usuario entra aquí para hacer videos, sin necesidad de ir primero a footage-finder / news-highlight / data-viz. Al activarse, lo primero es preguntar el formato usando AskUserQuestion:

Este video es vertical u horizontal?

  1. 9:16 vertical (Douyin / Xiaohongshu / Video Accounts / Reels) → 1080×1920
  2. 16:9 horizontal (YouTube / Bilibili) → 1920×1080
  3. 3:4 tutorial práctico (grabación de pantalla / "cómo uso IA para X") → 1080×1440 · usa submódulo slidecast/

El formato sigue el tipo de contenido: tutoriales prácticos / demostraciones de pantalla por defecto son 3:4 (slidecast); otros como opiniones / vlogs / cultura general son 9:16. No fuerces una voz normal en el formato de ventana de grabación de 3:4, ni hagas tutoriales prácticos en 9:16.

Atajo de decisión: si el usuario ya dijo el formato ("haz un 16:9" / "súbelo a YouTube" / "súbelo a Bilibili"), no preguntes, decide directamente.

El formato determina el flujo descendente:

9:1616:9
Lienzo del submódulo1080×19201920×1080
Imagen vacía realfootage-finder --verticalfootage-finder (horizontal por defecto)
Tarjeta de noticiasnews-highlight (versión vertical)news-highlight (Root por defecto 1920×1080)
Gráfico de datosdata-viz (1080×1920)data-viz (1920×1080)
composerecipes/compose_dual.sh.templaterecipes/compose_16x9.sh.template
Zona seguraCONVENTIONS sección 3CONVENTIONS sección 1, línea 16:9

Estos skills auxiliares ya soportan horizontal; video-editor es responsable de delegar + composición final, el usuario solo habla con video-editor. 16:9 también tiene una capacidad adicional de person-pip (voz limpia de rostro → sin contenido, rostro a pantalla completa; con contenido, se reduce a una ventana pequeña en la esquina inferior derecha, ver sección 9 de CONVENTIONS + plantilla compose_16x9).

Una vez determinado el formato, continúa con la ruta de forma de producto final.


Paso 1 · Pregunta de Ruta (★ Ejecutar inmediatamente después de la activación)

No asumas que el usuario quiere el flujo completo. Primero pregunta una vez con AskUserQuestion. Dividir según 'cómo será el producto final' (forma final), no según 'qué quieres hacer' (acción) — el usuario tiene en mente el producto final, no el proceso.

¿Cómo quieres que sea el producto final esta vez?

  1. Un video completo con subtítulos: ya tienes el video, solo agregar subtítulos → submódulo subtitle/ (sin tres puertas)
  2. Una tarjeta de título / intro: capa superpuesta alfa transparente de 4.5s → submódulo opener/ (sin tres puertas)
  3. Un video completo con efectos: agregar chyron / cutaway / animaciones de lista → submódulo animator/ (con tres puertas)
  4. Hacer un video completo desde cero: voz → título → efectos → subtítulos, todo incluido → opener → animator → subtitle en serie
  5. Video tutorial práctico con voz (3:4): voz → diapositiva de ventana de grabación case-step + subtítulos, tú superpones grabación/rostro → submódulo slidecast/ (con tres puertas)

Norma de numeración de opciones: los prefijos de opciones de AskUserQuestion solo usan números puros 1 / 2 / 3 / 4, prohibidos caracteres con círculo / katakana como ①②③④, ㋐㋑㋒㋓ — las fuentes de los usuarios a menudo no los soportan, renderizando como caracteres rotos.

Atajos de decisión (casos que se pueden ir directamente sin preguntar):

Texto del usuarioIr directamente a
"Ayúdame a poner subtítulos / agregar subtítulos / quemar subtítulos"1 · subtitle/
"Haz una intro / tarjeta de título / opener"2 · opener/
"Nuevo episodio de la serie X" / "Haz un video" / "Produce completo"4 · flujo completo
El contexto ya está haciendo un video completo, quiere agregar chyron / cutaway3 · animator/
"Tutorial práctico / demostración de pantalla / cómo uso IA para X" / serie de 100 casos prácticos de IA5 · slidecast/ (3:4)
"Como Mariah, agrega a la voz vertical imágenes reales, reacciones reales y fotos", y el usuario ya dio el video original3 · reaction_overlay; primero confirma que el video fuente es 1080×1920, lee recipes/reaction_overlay.md

Principio clave: 1 y 2 son operaciones puntuales, sin tres puertas; 3 y 4 deben pasar por las tres puertas.

★ Flujo de trabajo de tres puertas (obligatorio para opciones 3 y 4, no se permite saltar)

⚠ Las opciones de ruta no son un permiso de renderizado — que el usuario elija 3 o 4 solo significa 'quiere seguir el proceso de animator'. Una vez dentro de animator, debe pasar por las tres puertas, cada puerta se DETIENE y espera confirmación explícita del usuario antes de avanzar al siguiente paso. Incluso si el usuario ya te ha dicho el título / número de cues / texto, no significa que te permita saltarte las puertas.

Puerta 1 · Plan de texto   ─►   Dar tabla de cues en markdown en el chat
                              DETENER · Esperar respuesta explícita del usuario como "OK / cambiar X / eliminar Y / bloquear"
                              ❌ No escribir ningún HTML de cue
                              ❌ No empezar a renderizar
                                   │
Puerta 2 · Spec Review    ─►   Escribir el HTML de cada cue
                              ★ Primero ejecutar node recipes/lint_layout.js --all <directorio-de-cues>
                                (Zona segura / tamaño mínimo de fuente / ancho de texto / centrado, si FALLA reparar antes de continuar)
                              Luego generar _review/spec_review.html
                              DETENER · Decir al usuario "Abre file:///<proyecto>/_review/spec_review.html para ver, dame tu opinión y vuelve a mí"
                              ❌ No renderizar ProRes mov
                              ❌ No componer video completo
                                   │
Puerta 3 · Última llamada antes de renderizar ─►  AskUserQuestion: resumen + decisiones + elegir una de tres formas de salida
                              DETENER · Esperar que el usuario elija
                              ❌ No asumir la forma de salida
                                   │
Render + compose + subtítulos

Antes de que el usuario diga "bloqueado / confirmado / empezar / renderizar / OK" u otras expresiones afirmativas explícitas, todavía estás en la puerta anterior.

❌ Contraejemplos (no hacer esto)

Comportamiento incorrectoPérdida
El usuario elige 4 + da el título → tú extraes la voz + transcribes + escribes HTML + renderizasSaltas la puerta 1, el punto de control más barato para "cambiar 1-2 líneas", ahorrando 5-10 min + 10k tokens
El usuario dice "Quiero esto" → tú piensas "ya que lo quiere, renderiza directamente"Saltas la puerta 2, el error visual/tamaño de fuente en HTML cuesta 5 veces más al renderizar (30s de render × número de fallos)
El usuario en la puerta 2 dice "cue 3 cambiar X" → después de cambiar, renderizas directamenteSaltas la puerta 3, no dejas que el usuario elija la forma de salida (composición original / pista B-roll transparente / ambos), pudiendo renderizar 500MB de ProRes de más
El usuario no dice algo afirmativo → tú asumes que quiere avanzar y avanzasEl usuario revisa incompleto, el render sale desviado y hay que rehacer todo el ciclo

✅ Ejemplo correcto

"Entrando en animator. Primero transcribiré + daré la tabla de plan de cues en markdown para que la veas. Esta es la puerta 1 — no escribo HTML ni renderizo, espero tu OK / cambio / eliminación."

Al final de cada puerta, usa una frase similar para decirle explícitamente al usuario "Ahora estamos en la puerta X, espero tu OK" — no avances en silencio.

Para más detalles del proceso + lista de productos específicos de cada puerta + línea base de número de cues, ver animator/README.md.


Entradas de submódulos

SubmóduloQué haceDocumento de entrada
opener/Tarjeta de título serifada amarilla de 4.5s, capa superpuesta alfa transparenteopener/README.md
animator/chyron / cutaway / listicle / spec_review, flujo de tres puertasanimator/README.md
subtitle/Transcripción Whisper → superposición PNG con palabras clave resaltadas → quemar subtítulos. 9:16 usa add_subtitles.py; 16:9 videos largos deben usar make_events_16x9.py + burn_chunked_16x9.py (quemar en una sola cadena se colgará, ver README)subtitle/README.md
slidecast/Video tutorial práctico con voz (3:4): voz → diapositiva de ventana de grabación case-step cortada por código de tiempo + subtítulos → mp4 de vista previa + capa transparente movslidecast/README.md
reaction_overlayVoz de persona como base, prioriza capturas de fuente real y reacciones reales; material y permanencia según contenido, no frecuencia fija de Emojirecipes/reaction_overlay.md

Normas compartidas

  • Normas de entrega: 做内容/_运营文档/视频成片流水线-模板.md — un video = dos carpetas con el mismo nombre (trabajo / entrega) + en la puerta 3, por defecto tres productos (video completo / capa de título 3:4 / línea de tiempo) en ~/Movies/<serie>/<código-video>/. El flujo completo sigue este documento.
  • Receta de productos de entrega: recipes/deliverables.md (cómo renderizar la capa de título transparente · cómo generar la línea de tiempo desde el plan de cues · nombre de la carpeta de entrega)
  • Puerta de entrega P0: Para videos completos 9:16, después de la puerta 1, ejecuta python3 recipes/preflight.py plan <proyecto>/preflight.json; antes de cada entrega, ejecuta python3 recipes/preflight.py final <proyecto>/preflight.json, revisa fotogramas, presets de subtítulos, espacios visuales >8s y superposición de PIP/Logo/firma. Formato en recipes/preflight.example.json y recipes/deliverables.md.
  • Normas visuales: CONVENTIONS.md (zona segura, paleta Hana, temporización de chyron, jerarquía de tamaños de fuente, reglas de clímax) — leer antes de escribir cualquier HTML de submódulo.
  • Lint de diseño (★ obligatorio en puerta 2): node recipes/lint_layout.js <cue.html> — después de renderizar con Puppeteer, verifica zona segura / tamaño mínimo de fuente 22px / ancho de texto ≤920 / centrado / número de tamaños de fuente, los tres preajustes 9:16·16:9·3:4 se detectan automáticamente, los cues de animación se evalúan en estado final. Si FALLA, reparar antes de mostrar spec review al usuario. Los elementos decorativos que deliberadamente cruzan los límites añaden data-lint-ignore.
  • Autodiagnóstico de entorno: bash recipes/doctor.sh — para máquinas nuevas / errores de renderizado, ejecuta primero (ffmpeg / whisper / Chrome / puppeteer-core / avconvert / fuentes, 11 ítems)
  • Receta de doble salida ffmpeg: recipes/compose_dual.sh.template (mp4 + alpha mov opcional)
  • Errores conocidos: recipes/PITFALLS.md (broll_reel parpadeante / HyperFrames webm sin alpha / escape # en ffmpeg / capa alfa grisácea / ruta china TCC, etc., 23 reglas)
  • Índice de ejemplos históricos: recipes/examples.md (11 paradigmas de cues de tus videos reales)

Estrategia de doble salida

ArchivoPropósitoCuándo se generaEspecificaciones
<nombre>_completo.mp4Vista previa / publicación / revisiónEn cada iteraciónH.264 yuv420p · CRF 20 · con audio + capas superpuestas
<nombre>_capa-broll.movCapa superpuesta para software de edición (Premiere / AE / FCP)Solo cuando el usuario dice explícitamente "versión final / capa de edición / capa ProRes / solo B-Roll"ProRes 4444 yuva444p10le · transparente · sin audio

Durante las iteraciones, por defecto solo se genera el video completo mp4. La capa broll tarda ~30s en renderizar + ~500MB en escribir en disco, no se necesita para revisión durante iteraciones.

⚠ La capa broll siempre es una pista completa sincronizada. Cuando el usuario dice "Solo B-Roll", se refiere a esta pista completa, nunca darle N cues en fragmentos mov separados para que él mismo edite.

Para cues no superpuestos, la pista alfa completa debe componerse mediante concat: gap transparente + cue + gap transparente + cue, el gap se calcula según la duración/número de fotogramas del cue real con ffprobe. No superpongas tarjetas semitransparentes una por una sobre un lienzo transparente [email protected]; esto hará que las tarjetas de color crema se vuelvan gris oscuro al final cuando se superpongan a la voz. Ver regla 23 de recipes/PITFALLS.md y recipes/compose_dual.sh.template.

Antes de entregar la capa broll, debes hacer QA con fondo real: superpone el <nombre>_capa-broll.mov final sobre la voz original, extrae 4-8 fotogramas clave/hoja de contactos, revisa color, alfa, superposición de rostro y sincronización. spec_review.html solo puede revisar HTML/animación, no puede reemplazar la verificación final de composición ffmpeg.

Matriz de decisión de títulos (cuando el usuario dice "agregar título / agregar intro / palabra clave", cómo elegir)

El usuario dicePor defecto =Parámetros clave
"Agregar título" / "title card" / "intro" / "opener"opener/yellow.html (título grande serifado amarillo + subtítulo itálico blanco)Alpha transparente · inicio del video en 0s · top-third (padding-top 280px) · 4.5s · ProRes 4444 mov
"Enfatizar una palabra en el momento X" / "texto emergente"animator/chyron/chyron.htmlCápsula amarilla · top 16% (y≈307 centro) · 1-2s pop
"Lista 1, 2, 3" / "Tres / cuatro puntos clave"animator/cutaway/scene_listicle.htmlLista numerada que se revela línea por línea · tarjeta top 280px
"Tarjeta de datos a pantalla completa / gráfico comparativo" / "cambiar a datos X"animator/cutaway/scene_blank.htmlCutaway a pantalla completa con fondo blanco · caption top 280px · mp4 opaco

Principios clave:

  • "Título" del video = intro en 0s, por defecto. Incluso si la voz solo menciona la frase en el segundo 22, el título sigue saliendo en el segundo 0. Mantén el formato de la cuenta: título principal amarillo + subtítulo blanco; el título principal de una sola línea también conserva la capa blanca, a menos que el usuario especifique una versión monocromática. Las escenas de título personalizadas en la puerta 2 deben compararse con opener/yellow.html para verificar colores y jerarquía.
  • Título de intro = alpha transparente superpuesto sobre talking head. No es una toma independiente de fondo dorado sólido.
  • Cutaway de tarjeta de datos = pantalla completa opaca, cubre el talking head; otras capas superpuestas (título / chyron) son transparentes por defecto.

Skills complementarios

  • hyperframes / hyperframes-cli — CLI de HyperFrames (renderiza HTML → mov/mp4), dependencia de renderizado del submódulo de animación

No está en el alcance de este skill (delegado)

  • Captura de material de stock real (Pexels / Pixabay) → footage-finder skill
  • Tarjeta de highlight de noticias → news-highlight skill
  • Generación de texto / voz TTS → función TTS del skill hyperframes
  • Revisión de cumplimiento de contenido → content-audit skill

Skills relacionados