Skill de edición de videos cortos
Manual de operaciones de edición para agentes de IA. El objetivo es crear un producto final de nivel profesional, no simplemente "visible".
Un criterio central: El 90% de la calidad del producto final se decide antes de empezar (hechos, estilo, storyboard definidos), y el 10% restante es la renderización. Por lo tanto, si la etapa previa no está aprobada, no se renderiza el video completo.
Las herramientas incluidas en este skill se encuentran en tools/ (la ruta <skill>/tools/ se refiere a esta carpeta). Software necesario: ffmpeg, python3; ocr_check.py requiere macOS y swiftc; hf_lint.py solo es necesario si se usan HyperFrames para tarjetas de texto. Consulta tools/README.md para más detalles sobre su uso.
Roles y reglas
- El "usuario" es quien decide. Cada etapa debe ser aprobada explícitamente por el usuario (citando sus palabras exactas, sin suposiciones).
- Los hechos y el guion solo provienen del usuario. Si se desea modificar o agregar algo, se presentan opciones A/B/C para que elija, sin añadir texto, eslóganes o tramas por cuenta propia.
- Si hay dudas, se pregunta. No se adivina. No se afirma nada no verificado como un hecho.
- Si los requisitos cambian a mitad del proceso, se retrocede a la etapa correspondiente y se rehace desde allí, sin hacer modificaciones ocultas en el trabajo.
- Cuando el usuario envía varios mensajes cortos seguidos, primero responde "Recibido, espera a que termines", y solo se actúa después de que haya terminado de hablar.
Ruta de inicio (primero determinar la categoría, luego leer la sección correspondiente)
Un video puede pertenecer a varias categorías a la vez; se leen todas.
| Si la tarea se parece a esto | Leer aquí |
|---|---|
| "Cine", "avance", "montaje", combinar múltiples clips en uno con carga emocional | references/escenario_montaje_avances.md + references/gramatica_edicion_y_narrativa.md, referencias/continuidad_entre_tomas.md, referencias/ritmo_audio_color.md, referencias/formato_rechazo_entrega.md |
| Principalmente una persona hablando, necesita edición y subtítulos | references/escenario_video_presentacion.md |
| El protagonista es un personaje dibujado, necesita interacción | references/escenario_animacion_personajes.md |
| Se tienen imágenes fijas/infografías para convertir en video | references/escenario_imagenes_a_video_dinamico.md |
| Técnicas de edición como PiP, pantalla dividida, montaje, congelado, cámara lenta/ rápida, Ken Burns | references/banco_tecnicas.md (con comandos ffmpeg probados, indicando si están verificados o son práctica común) |
Transiciones: ¿usarlas o no?, ¿cuál elegir?, cómo hacer xfade con ffmpeg | references/guia_transiciones.md |
| Animación de tarjetas de texto, gráficos numéricos, efectos de transición, capas de efectos, 3D/Three.js | references/graficos_movimiento_y_3d.md (sensación de gráficos en movimiento con números, recetas de transición, cómo elegir motor de animación, cuándo vale la pena usar 3D) |
| Avance año tras año, montaje de lapso de tiempo | references/escenario_montaje_lapso_tiempo.md |
| Sin ideas: ¿qué técnica de edición, animación o herramienta usar? | references/directorio_tecnicas_herramientas.md (cada elemento indica si está verificado o es práctica común) |
| Videos de proceso (cocina, ensamblaje, construcción, etc.) | Etapa preliminar 1: "Para videos de proceso, preguntar tres cosas primero" |
| Mascotas, familiares, experiencias reales | "Herramientas y prohibiciones": no generar imágenes para experiencias reales |
Resumen del flujo de trabajo
- Confirmar objetivo: Objetivo en una frase, público y propósito, plataforma y especificaciones (relación de aspecto, duración, resolución), lista de material, criterios de éxito verificables, qué no se hará.
- Guion: Para contenido creativo, primero dar tres esquemas narrativos diferentes para que el usuario elija uno. Versión final = segmentos, duración, subtítulos, dirección de sonido.
- Storyboard inicial: Tabla de tomas + storyboard. Dejar el campo de técnica vacío inicialmente. Convertir adjetivos en números ("alegre" → amplitud de rebote, tempo de acción).
- Inventario de trabajo y prueba de riesgos: Inventario de material (hoja de contacto); para cada toma, verificar la técnica contra "capacidades verificadas"; para técnicas no probadas, hacer una prueba de 5 segundos; si falla, usar una alternativa simplificada. Bloquear el paquete de estilo (etapa 2) en este punto. Aprobación = usuario bloquea el storyboard.
- Versión dinámica preliminar: Organizar el storyboard en un corte preliminar con tiempo y efectos de sonido. Confirmar ritmo y duración antes de pasar a la producción.
- Producción: Edición y postproducción.
- Autoinspección: Barrer errores antes de renderizar → Renderizar → Inspección automática → Lista de verificación de video, revisar imágenes una por una.
- Entrega y cierre.
Fase 1: Preliminar (las tres etapas requieren aprobación del usuario)
Etapa 1: Hechos y guion (preguntar una vez, guardar respuestas en metadatos de la tabla de tomas)
- Nombre, reglas de audio (por defecto: sin música, solo efectos de sonido; qué audio original conservar), relación de aspecto, duración, resolución, título.
- Primero hacer una hoja de contacto del material (
tools/storyboard.py) para revisar el contenido, no basarse solo en el nombre del archivo; para el audio, primero revisar el espectro o escucharlo. - Para contenido educativo/informativo, verificar primero: buscar cada definición en fuentes oficiales (priorizar documentación oficial, compilaciones de terceros solo como apoyo), anotar junto a la tabla de tomas "esta frase corresponde a tal fuente", marcar como "no verificado" lo que no se encuentre. Antes de eliminar cualquier parte del guion original, juzgar si esa parte previene malentendidos; si se simplifica, aclarar "esta es mi simplificación, no la redacción original". Si solo se ha leído el resumen de búsqueda, no el texto completo, decirlo claramente.
- Para videos de proceso, preguntar tres cosas primero: ① El orden del proceso; ② Qué material pertenece a qué producto final y a qué paso (no adivinar basándose en el orden de grabación); ③ Los momentos clave que deben aparecer.
- Antes de decir "no está en el material / no se puede grabar", revisar el video completo fotograma a fotograma, no solo los fotogramas de acción. Cuando el usuario envía una captura de pantalla, usar
tools/find_frame.pypara encontrar en qué material y segundo corresponde. - Criterios de selección: Cuando el material tiene comentarios verbales del camarógrafo, transcribirlos y usarlos como criterio adicional; si no, usar condiciones claras de rechazo (borroso, movido, demasiado oscuro). Al rechazar, escribir qué clip y a qué toma corresponde. Estas dos técnicas son solo auxiliares y no garantizan efectividad.
Etapa 2: Paquete de estilo (una página, mostrar primero al usuario)
- 1 a 2 videos o imágenes de referencia, más una frase que indique "qué punto imitar". Al analizar el video de referencia, mencionar las dimensiones específicas; de lo contrario, la IA podría solo fijarse en el color. Opciones: tipo de video, tipografía, color, tarjetas de texto, elementos, módulos (componentes reutilizables como entrada/salida de tarjetas, superposiciones, indicadores flotantes), material gratuito (qué material gratuito se usa, verificar licencias), dinámica, ritmo, transiciones.
- Color: fondo / texto / un color de acento (el color de acento ocupa ≤15% de la pantalla, contraste de texto ≥4.5:1); para videos con narrativa, escribir un arco de color (luminosidad objetivo para cada segmento).
- Tipografía e idioma de las tarjetas de texto: máximo dos familias.
- Vocabulario de transiciones: máximo 3 tipos en todo el video; un efecto principal por toma.
- Entregar una imagen de estilo de referencia (un fotograma clave), no solo texto.
- Selección de técnicas: Antes de empezar, investigar qué técnicas pueden mejorar la edición, sin límite de cantidad, pero cada una debe explicar "en qué toma se usa y por qué es adecuada". La lista para el usuario debe usar nombres en lenguaje común con una frase de efecto (ej. "Plano de acercamiento: acercarse lentamente al protagonista"), sin códigos en inglés. Al entregar, verificar: las técnicas usadas coinciden con esta lista.
- Técnicas comunes de empaque para videos de presentación / explicativos: máscara de color (solo fondo), fondo con muro de videos, texto grande detrás de la persona, control deslizante de antes/después, cuadro de escritura con barra de progreso, congelado con cámara lenta, etiquetas flotantes de palabras clave, pantalla en pantalla, contador numérico, cortar silencios. No prometer al usuario técnicas no probadas; primero hacer una prueba de 5 segundos.
Etapa 3: Tabla de tomas + storyboard
- Para cada toma, escribir:
action(lo que realmente sucede en pantalla),shot_size(general/medio/cerrado/muy cerrado), subtítulos, tarjetas de texto, efectos de sonido (solo tiempo relativo en segundos). Para tarjetas de texto, escribirevidence(qué en la pantalla lo respalda). - Escribir
cut_reasonpara cada punto de corte (por qué cortar aquí, por qué conectar esta toma); para match cut o cut on action, escribiranchor(qué capturar al final de la toma anterior, qué conectar al inicio de la siguiente). Eliminar los puntos de corte sin razón. - Subtítulos: 4-5 caracteres por segundo, máximo 6; no aparecer antes del inicio de la toma; la longitud del subtítulo determina la duración de la toma; cada subtítulo debe tener soporte visual; si no, pedir material al usuario.
- Organizar las tomas con una línea narrativa + cambio de planos: definir el protagonista y la estructura de inicio-desarrollo-clímax-cierre (agrupar solo acciones similares no es narrativa); cambiar deliberadamente los planos en cada segmento, usando a menudo "general → medio → cerrado" o "lejano → medio → primer plano".
- Para videos de proceso, mantener la coherencia de progreso: los bloques grandes siguen el orden real del proceso; en el mismo bloque, varios productos finales deben avanzar de forma sincronizada; los productos terminados no pueden intercalarse entre bloques en proceso; los productos finales solo aparecen en la sección final (a excepción de avances en la apertura). Para "ocultar las manos", usar recorte con
cropen primeros planos, solo en las tomas indicadas por el usuario. - Cuando el usuario dice "necesito alma / atmósfera" = necesita gradación de color: unificar un solo esquema de color en todo el video.
- El storyboard se genera con
tools/storyboard.pyextrayendo fotogramas del material o del producto final; la inspección automática solo verifica texto; la correspondencia entre tarjetas de texto y contenido visual debe ser revisada por una persona viendo las imágenes.
Antes de entregar la tabla de tomas al usuario, verificar cada punto; si falta uno, no entregar:
- ¿Se ha preguntado sobre la emoción (motivacional/cálido/suspenso)? ¿Se ha preguntado si quiere música de fondo?
- Tarjetas de texto: primero dar 3 opciones de prueba de 5 segundos (tres opciones son "mecánicas" diferentes, no la misma mecánica con diferente tipografía). Primero escribir la función de cada tarjeta de texto, luego elegir de
references/gramatica_edicion_y_narrativa.md"Menú de mecánicas de tarjetas de texto". El usuario elige una principal, y se mezclan según los segmentos; la tipografía es uniforme en todo el video. - Técnicas: Realmente se han investigado, la lista usa nombres en lenguaje común, cada una explica en qué toma se usa.
- Sonido: Usar efectos de sonido grabados reales, no sintetizados por programa. Cada efecto de sonido corresponde a una acción en pantalla. Si no está en la biblioteca, buscar en sitios gratuitos de efectos de sonido, verificar la licencia personalmente, y escribir la fuente claramente en el nombre del archivo y en un README en la carpeta de sonido. Si no se encuentra una coincidencia exacta, usar la más cercana y explicarlo.
- Revisar todo el material (incluyendo fotos), escribir claramente las condiciones de exclusión; las fechas deben verificarse según la hora de grabación, no basarse en el nombre del archivo.
- Los hechos y el guion solo provienen del usuario; las tarjetas de texto que uno proponga deben ser solo opciones, no colocarlas sin permiso.
- Entregar también la imagen de estilo de referencia (tres fotogramas clave); guardar el fotograma de portada por separado, sin incluir la duración total.
- Si las respuestas breves del usuario ("A", "vale", "da igual") tienen dos interpretaciones, confirmar primero.
- Cada punto de corte tiene
cut_reason. - Para videos con música de fondo: antes de la mezcla de audio, crear un Mapa de Sonido (capas, inicio/fin, prioridad, fuente).
- Para tarjetas de texto emocionales, preguntar primero "¿se puede sustituir con tomas?": para cada tarjeta de texto que "da una conclusión emocional al espectador" (gracioso, conmovedor, incómodo, impactante), anotar si se puede sustituir con "persona viendo → reacción" o "toma A seguida de toma B". Si es posible, escribir la toma alternativa; solo conservar la tarjeta de texto si falta material o hay prisa. Las tarjetas de texto informativas (números, años, nombres, lugares) no se ven afectadas. Este enfoque aún tiene debate académico; solo se ofrece como opción A/B, no como fórmula garantizada. Para material documental real, no se pueden editar reacciones de diferentes momentos como si fueran "reacciones en el momento" para crear emociones que no ocurrieron.
Fase 2: Producción
- Imagen: Hacer primero un borrador de baja calidad; una vez definido, renderizar en calidad final; para modificar una toma, solo rehacer esa toma. Para material HLG/HDR, convertirlo a SDR con ffmpeg; medir la luminosidad de cada toma (
signalstats) y alinearla con el objetivo del arco de color. - Imágenes reales de alta definición: Para capturas de pantalla de sitios web/apps, usar automatización del navegador a 3x de resolución; para salida 4K, configurar
devicePixelRatio. Si la resolución del material es insuficiente, informar al usuario al inicio. Al grabar un sitio de demostración propio, no abrir páginas rápidamente de forma continua, ya que las reglas de límite de tráfico propias pueden bloquear la grabación y capturar páginas de error. - Efectos: primero buscar en bibliotecas de material, luego crear manualmente: si no se encuentra, entonces crear manualmente y documentar la carencia. Efectos cinematográficos comunes: acercamiento / alejamiento revelador / cambio de enfoque, transición de giro, fuga de luz, granulado de película, viñeteado, tarjetas de texto con desenfoque suave. Para escenas médicas o cálidas, no usar movimiento, giro, inclinación brusca, o impacto de enfoque.
- Tarjetas de texto (HyperFrames o animaciones HTML similares): escribir la línea de tiempo en
window.__timelines; parafromToy posterioresfrom, usarimmediateRender:false; para elementos que llenan fotograma a fotograma, primeroset opacity 0; los subtítulos deben estar a la misma altura en todo el video; no obstruir al sujeto principal; al cambiar de toma, eliminar todos los elementos de la toma anterior. Antes de renderizar, usartools/hf_lint.pypara detectar errores. - Maquetación de tarjetas de texto en chino (para un ancho de 1920): título con peso de 900, ≥120px, espaciado entre caracteres 0.01-0.03em, máximo 14 caracteres por línea, saltos de línea manuales entre palabras, sin carácter solitario o puntuación al inicio de línea; cuerpo de texto con peso 500-700, ≥32px; medio espacio entre chino e inglés/números; altura de línea del texto dentro de máscaras ≥1.18. Duración mínima de una tarjeta de texto = número de caracteres × 0.18 segundos + 0.6 segundos. Las etiquetas superpuestas en la imagen deben usar fondo sólido con texto oscuro y negrita, colocadas en áreas vacías.
- Ritmo: En los primeros 0.3 segundos de apertura, debe haber algo en movimiento; la primera palabra debe aparecer en 1.5 segundos; la siguiente acción debe comenzar 0.1-0.3 segundos antes de que termine la anterior; que solo un elemento principal se mueva a la vez; la duración de la salida debe ser aproximadamente la mitad de la entrada.
- Después de modificar el script generado, verificar que el archivo no esté truncado al final antes de ejecutarlo.
Eliminación de fondo y máscaras
- Verificación de bordes = ampliar para ver dedos, cabello y hombros; no solo mirar la miniatura. Tratamiento de máscara: primero desenfocar aproximadamente 1.6, luego aumentar el contraste, reducir 2px, para que los bordes sean suaves sin bordes blancos.
- Las secciones con fondo eliminado no deben tener tarjetas o subtítulos quemados superpuestos junto a la persona (los subtítulos de video original presionados sobre la persona pueden ser tratados como "no persona" y volverse transparentes).
- No prometer técnicas no probadas: aún puede haber algunos píxeles de borde de color en las yemas de los dedos; decirlo claramente.
Errores comunes en la práctica (GSAP y ffmpeg)
- La duración total debe ser un número entero de fotogramas (segundos × fps = entero), de lo contrario, la inspección automática detectará una diferencia de 1 fotograma.
- El punto de sincronización del audio original debe calcularse desde el archivo de tiempo, no codificar segundos fijos (al cambiar la duración de una toma, no coincidirá con la boca).
- Cuando el sujeto principal sea negro, no usar la transición
zoomin(se ampliará a negro total); usarsmoothleftofade. Para fotos horizontales en video vertical, primero recortar a vertical para conservar la cara, sin usar fondo borroso de relleno. - GSAP puede causar que la imagen "aparezca → desaparezca → vuelva a aparecer" o que el video se congele completamente: tres errores comunes: ①
tl.set(elementos del grupo,{opacity:1},0)colocado antes detl.from(...)posterior sobrescribirá el punto de inicio oculto defrom; para ocultar, usartl.set(todos,{opacity:0},0)y luego mostrar conto/from. ② Un selector selecciona dos elementos a la vez, animando prematuramente uno de ellos; animar solo el elemento deseado, o usar id. ③ Nombres de variables de la nueva escena que coinciden con otras escenas, causando que onUpdate falle y el video se congele desde esa toma. Antes de agregar una nueva variable, usar grep en todo el archivo para verificar si ya existe; después de modificar, verificar fotograma a fotograma con renderizaciones reales, extrayendo un fotograma antes y después de cada transición. - En la gradación de color de postproducción, no usar los realces de
colorbalance(las pantallas de fondo blanco se volverán amarillentas); para viñeteado, usarvignette=angle=PI/8. Después de ajustar una página web blanca, medir el punto blanco nuevamente. - Doblaje: Hacerlo solo si el usuario lo solicita explícitamente (por defecto, solo efectos de sonido). Usar
silenceremoveen cada frase, y si es necesario,atempo(≤1.2). Luego, usar un array de Python para superponer en un wav de la misma duración según las marcas de tiempo; usarffmpeg amixcon múltiplesadelaypuede truncar la salida. Antes de mezclar, verificar que la duración del archivo de efectos de sonido coincida con la duración del video final. Si se modifican los subtítulos, regenerar la voz. - Si el usuario dice que "es demasiado ruidoso", eliminar solo el sonido que indique; antes de eliminar, listar "qué se va a quitar" para que lo sepa; para puntos emocionales como el audio original, es mejor conservar uno.
- Después de completar el video, el usuario puede insertar una toma a mitad del proceso: solo modificar la tabla de tomas (agregar toma, extender subtítulos, mover posición de efectos de sonido), luego volver a ejecutar la verificación, ensamblaje de tomas, renderizado y mezcla de audio; los puntos de inicio y fin posteriores se desplazan automáticamente. Al insertar una toma de foto, verificar primero la composición; los subtítulos no deben presionar sobre un sujeto de alta saturación.
Fase 3: Postproducción
- Gradación de color según el arco de color, con un solo sistema de look en todo el video, no un filtro por toma.
- La gradación de color cinematográfica debe hacerse por defecto: curva en S, elevar un poco los negros (mate), viñeteado, granulado de película en la última capa de todo el video. La separación de color con sombras azuladas y realces cálidos solo se aplica en looks en color; para segmentos en blanco y negro, usar un tono ligeramente frío; de lo contrario, el blanco y negro se verá amarillento como fotos antiguas.
- Los efectos de sonido deben empezar con pocos; cada sonido corresponde a una acción en pantalla. Antes de entregar, preguntarse "¿qué se perdería si elimino este sonido?". Eliminar los sonidos que no encajen en la escena. Usar
loudnormconalimiterpara evitar distorsión. alimitersiempre conlevel=disabled(la ganancia automática por defecto empuja los picos cerca de 0dB); en el mismo paso, usaratrimpara recortar a la duración del video, y agregar-shortesten la salida; de lo contrario, la pista de audio será más larga que el video y la verificación de fotogramas fallará. Al final,loudnorm=I=-16:TP=-1.5.- El sonido de tomas con cámara lenta/rápida no debe estirarse con atempo (resulta en sonidos extraños): usar la velocidad original del audio para esa toma, y tomar el video y el audio como dos entradas separadas.
- El usuario debe escuchar el audio final con auriculares; las mediciones y el reconocimiento de voz solo son auxiliares. Las frecuencias bajas (por debajo de 150Hz) no se reproducen bien en portátiles y teléfonos; los efectos de sonido deben tener energía por encima de 300Hz.
- Versión ligera ≤9MB: si no se puede reducir con
-maxrate, usar codificación x264 de dos pasos.
Eliminar voz / conservar sonido ambiental
- No usar reconocimiento de voz para encontrar segmentos y silenciarlos (a menudo la voz se marca como no verbal y se pasa por alto, y el tiempo solo es preciso al segundo); usar herramientas de separación de fuentes de audio (como demucs) para obtener una pista sin voz; una sola pasada es suficiente. Después de la separación, escanear nuevamente con reconocimiento de voz como verificación: el contenido entre paréntesis es no verbal y no cuenta como residuo; repetir la misma frase o "recuerda suscribirte" son alucinaciones del reconocimiento.
- Las herramientas de separación pueden eliminar sonidos de soplete, cuchillos, etc., como si fueran voz: en los segundos clave de efectos de sonido, agregar la pista de voz separada, pero eliminar la banda de frecuencia 250-3800Hz de la voz.
Herramientas auxiliares: encontrar puntos de corte, cortar silencios, detectar beats
Las tres han sido verificadas funcionalmente con material sintético (resultados adjuntos); al usar material real, el umbral y la efectividad deben ajustarse según el material.
- PySceneDetect:
scenedetect -i video.mp4 detect-adaptive list-scenes, lista la tabla de tiempos de las tomas. Verificación: un video de 6 segundos compuesto por tres segmentos de diferente contenido con cortes directos detectó 3 tomas, con puntos de corte en 2.0 y 4.0 segundos, coincidiendo con la realidad. Para material de animación, las "tomas" detectadas pueden no ser las deseadas. - Auto-Editor:
auto-editor video.mp4 --edit audio:threshold=5% --margin 0.15sec -o salida.mp4, corta los silencios en videos de presentación. Verificación: un video de 6 segundos con tres segmentos de 1 segundo de sonido intercalados con 1 segundo de silencio se cortó a aproximadamente 3.85 segundos. El umbral debe probarse con el material: con el mismo material sintético, un umbral del 15% tratará todo el segmento como silencio y lo cortará por completo; después de cortar, verificar subtítulos, sincronización de labios y sincronización de audio y video; la marca de tiempo de los subtítulos debe recalcularse a partir de la versión cortada. Cortar silencios no significa que se puedan eliminar las palabras redundantes; los subtítulos no deben tener menos caracteres que lo hablado. Usar la versión oficial (ej. Homebrew), no paquetes con nombres similares que sean vacíos. - librosa:
librosa.beat.beat_trackpara obtener beats y BPM. Verificación: con un ritmo sintético de 120 BPM, se midió aproximadamente 117.5 BPM y 23 beats, con un error dentro del 2%; el usuario aún debe escuchar los beats antes de la entrega. Usar solo en videos que requieran sincronización con el ritmo; para videos tranquilos, no seguir el ritmo.
Fase 4: Autoinspección antes de la entrega (cada punto debe tener evidencia para considerarse aprobado)
Primero ejecutar la inspección automática: tools/qa_video.py video_final.mp4 directorio_salida --size WxH --fps N --share version_compartida.mp4 (verifica resolución, fps, fotogramas enteros, longitud de pista de audio, distorsión, sonoridad, pantalla negra, congelamiento, fotogramas antes y después de transiciones, tamaño de la versión compartida). Los números los verifica la herramienta, pero las imágenes deben revisarse una por una. Verificar cada punto:
- Limpieza (hacer cada entrega): Extraer el primer fotograma, el fotograma central y el último fotograma de cada toma, componerlos en una sola imagen y revisarlos uno por uno. Si hay manos o sombras que entran, acciones no explicadas, tomas donde no sucede nada, sombras que parpadean después de aceleración, acortar o cambiar el segmento.
- Continuidad de puntos de corte (obligatorio para videos con múltiples tomas y carga emocional): Usar
tools/cuts_sheet.pypara extraer 2 fotogramas antes y después de cada punto de corte, y revisar uno por uno la dirección, la mirada, la fase de acción, el tipo de plano y la iluminación. Los problemas se escriben como issues con rutas de imágenes segúnreferences/formato_rechazo_entrega.md. Reparar uno mismo un máximo de 2 rondas; si aún no se aprueba, dejar que el usuario decida. - Especificaciones: resolución, fotogramas, relación de aspecto deben coincidir con lo solicitado por el usuario; el video final debe reducirse desde 4K o superior.
- Texto: Cada palabra en pantalla debe ser proporcionada por el usuario. Si hay un guion original para comparar, usar
tools/ocr_check.pypara convertir fotogramas clave del video final y el guion original a texto, comparar frase por frase; lo que no coincida, revisar el original (el error de OCR no significa que la imagen esté mal). Que el texto coincida no significa que el contenido sea correcto; verificar el contenido por separado. - Tarjetas de texto = imagen: El nombre de cada tarjeta de texto debe corresponder a lo que realmente sucede en esa toma. Al seleccionar segmentos y recortar, basarse en los fotogramas reales de ese segmento, no en la descripción escrita.
- Subtítulos: Número de caracteres por segundo correcto, no adelantados a la toma anterior, misma altura en todo el video, sin saltos de línea automáticos.
- Legibilidad: Todo el texto debe ser claro en la versión compartida (comprimida).
- Limpieza: Sin elementos residuales al cambiar de toma, sin superposiciones fantasma, sin páginas de error o datos de prueba grabados.
- Consistencia: Máximo 3 tipos de transiciones, color según el arco de color, máximo 2 familias de idiomas para tarjetas de texto.
- Ritmo: Algo en movimiento en los primeros 0.3 segundos de apertura, sin dos elementos principales moviéndose a la vez, duración suficiente de las tarjetas de texto.
- Audio: Sin distorsión, cada efecto de sonido tiene una acción correspondiente, sin efectos de sonido fuera de contexto.
- Reproducibilidad: Renderizar dos veces en el mismo momento; las capturas de pantalla deben tener el mismo hash (las animaciones programadas deben ser funciones puras del tiempo).
- Honestidad: Si hay tomas con calidad irrecuperable o elementos no verificados, decirlo directamente en la entrega.
Fase 5: Entrega y cierre
Carpeta de entrega (uno decide la ubicación; la siguiente es una estructura sugerida), una carpeta por video, primero la fecha, luego el nombre (AAAAMMDD_titulo):
producto_final/: Versión de alta calidad, versión ligera (para compartir en chats, ≤9MB), portada, archivo de subtítulos.corte_preliminar/: Versiones del proceso y material de entrada.graficos_finales/: Paquete de estilo, storyboard, tabla de tomas (un archivo legible por máquina y otro.mdpara humanos),codigo_fuente/(scripts para rehacer con README).- Los elementos de prueba (nuevas herramientas, muestras de 5 segundos) van en otra carpeta
pruebas/fecha_nombre/; solo lo que se va a entregar oficialmente va en la carpeta del proyecto. - Usar
tools/deliver.shpara combinar audio, comprimir a versión ligera, copiar y verificar md5; no sobrescribir archivos con el mismo nombre. - Después de modificar la versión final, actualizar también los gráficos finales: la duración y los puntos de inicio del storyboard y la tabla de tomas deben coincidir con el producto final; de lo contrario, se dejan documentos de la versión anterior.
Solo conservar la versión final: los productos intermedios van en .work/ del proyecto. Al limpiar, usar tools/safe_trash.sh para mover a la papelera, no eliminar directamente; primero listar los elementos para que el usuario confirme. No tocar el área de trabajo de otros.
Cinco tareas obligatorias al cierre (para cada video)
- Finalizar: Primero verificar la portada. El inicio del video debe tener un fotograma de portada (título + protagonista); guardar la imagen de portada por separado; la portada no incluye la duración total, descontarla del material de apertura. El texto de la portada se deduce de la tarjeta de texto de conclusión del video, no del nombre del archivo ni de los segmentos del proceso. Cambiar el nombre del archivo final a
<titulo>_<duracion>.mp4, la versión ligera ≤9MB. Los gráficos finales (storyboard y tabla de tomas) deben rehacerse según el producto final. Verificar md5. - Limpiar: Los storyboards antiguos reemplazados, guiones antiguos, cortes preliminares de versiones anteriores, directorios de trabajo, mover todo a la papelera con
safe_trash.sh; escribir en el README los nombres de los elementos en la papelera, para recuperarlos si es necesario. - Cerrar tarea: Marcar como cerradas todas las tareas o pendientes abiertas para este video.
- Retrospectiva: Anotar lo que el usuario cambió en cada versión (citar sus palabras exactas), la causa raíz, cómo prevenirlo la próxima vez; listar por separado los propios errores; documentar prácticas reutilizables; marcar las conclusiones no verificadas como "no verificado".
- Optimizar este skill: Si en la retrospectiva aparece "cómo prevenirlo la próxima vez" que pueda convertirse en una regla, escribirla en la sección correspondiente de este SKILL.md, no solo al final del archivo.
Herramientas y prohibiciones
- Priorizar material real (ffmpeg + animaciones HTML). Para escenas no grabadas: generación de imágenes estáticas (no generar caracteres chinos; los caracteres chinos se superponen con HTML) → otros materiales externos. Para experiencias reales (mascotas, familiares, casos de clientes), no generar imágenes.
- Antes de instalar cualquier nueva herramienta, paquete o modelo, verificar la fuente y la licencia, preguntar al usuario antes de instalar, no instalar mientras se trabaja.
- No ejecutar comandos que envíen texto libre a servicios externos (como comandos de feedback de herramientas); desactivar el informe estadístico de las herramientas por defecto.
- No escribir contenido no verificado, material privado del usuario o datos personales en muestras públicas o ejemplos.