Communitygithub.com

ccreator-space/video-storytelling

Diseña y construye la capa visual de un vídeo extenso con un presentador que habla a cámara, creando un mundo persistente por el que la cámara se mueve, en lugar de una secuencia de gráficos separados. Úsalo cuando te pidan editar un vídeo, añadir gráficos en movimiento, diseñar los visuales para un guion, planificar una edición o corregir una edición considerada confusa, con mucho texto, difícil de seguir o «claramente hecha por una IA». Abarca el mundo persistente, la gramática de cámara, la regla del foco, los bucles abiertos espaciales, la disciplina de ornamentos y fichas, la sincronización con la transcripción y las compuertas de verificación.

¿Qué es video-storytelling?

Esta skill transforma la edición de vídeo tradicional con gráficos animados para presentadores al construir un único mundo visual persistente en lugar de una secuencia de gráficos nuevos. Se aplica a cualquier vídeo extenso con guion, como análisis en profundidad, tutoriales o listas. La skill resuelve el problema de la «confusión por cambio de escena», donde cada nuevo gráfico obliga al espectador a reiniciar la comprensión, reemplazándolo por una gramática espacial coherente. Los cuatro principios clave son: un mundo persistente (los elementos nunca se mueven ni se borran, solo se añaden), la cámara como editor (los movimientos de cámara, no los cortes, guían la atención), la atención como foco (solo un elemento a plena luminosidad en cada momento) y los bucles abiertos espaciales (dejar elementos incompletos visibles para mantener el interés). La skill proporciona reglas precisas para la gramática de cámara (tres altitudes de trabajo), disciplinas de diseño (un solo conjunto global de fichas, sin decoraciones sin etiquetar, sin fundidos cruzados) y un contrato de construcción detallado para implementar los gráficos en HTML/SVG con generadores por sección. Apta para agentes de IA como Claude Code, Cursor o Codex, incluye reglas de verificación para evitar defectos comunes como parpadeos, etiquetas cortadas o espacios muertos.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ccreator-space/edit-flow/tree/HEAD/.agents/skills/video-storytelling

Preguntar en tu IA favorita

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

Documentación

Narrativa visual para vídeo

Cómo construir la capa visual de un vídeo extenso para que un espectador siga orientado en el minuto nueve. Se aplica a cualquier vídeo con presentador que habla a cámara y con guion: una noticia, un análisis en profundidad de un solo tema, una comparación, un tutorial, una lista.

El fallo que esto reemplaza es el pensamiento basado en escenas. Un nuevo gráfico cada pocos segundos obliga al espectador a reiniciar la comprensión cada pocos segundos, y ningún gráfico individual tiene la culpa, por lo que la retroalimentación llega como el vago «confuso» o «demasiado movimiento» en lugar de un defecto específico.

Para una hoja de práctica neutral, lee docs/STORYTELLING-WORKBOOK.md en la raíz del repositorio. El sistema de diseño reutilizable está en reference/design-system.md de esta skill; la geometría de bucle abierto trabajada está en reference/patterns/wall-of-slots/. No se requieren vídeos fuente privados.

Esto no es hyperframes-video-beats. Esa skill coloca tarjetas superpuestas sobre un presentador. Esta diseña la cosa de la que trata el vídeo.

1 · Los cuatro principios

Un mundo persistente

El vídeo vive en un espacio único y nunca se reinicia. Todo lo que el espectador ya ha visto sigue existiendo donde lo dejaron, y el material nuevo se añade en lugar de reemplazarlo. Un elemento, una vez dibujado, nunca se redibuja, mueve ni reetiqueta.

Todo lo demás en esta skill depende de eso. La cámara no tiene adónde ir si el espacio sigue cambiando, un foco no significa nada si no hay nada más en pantalla, y un bucle abierto no puede permanecer abierto en un mundo que se reinicia.

El mundo también tiene que valer la pena habitarlo, así que decide la gramática espacial antes de construir nada y mantenla durante toda la duración. En la construcción de referencia: izquierda a derecha es hacia el resultado, arriba es hacia un humano y es lo único cálido en pantalla, abajo es hacia un sistema de registro. Un espectador que aprende eso en los primeros dos minutos lee el resto del vídeo sin esfuerzo.

Rompe la gramática exactamente una vez, deliberadamente, para dar significado. El único movimiento de derecha a izquierda en diez minutos de la construcción de referencia es un ticket resuelto que vuelve a la cola con las palabras «tasa de reapertura». Aterriza sin una palabra porque la dirección había significado algo durante los tres minutos anteriores.

La cámara es la edición

Cortar a un nuevo gráfico le cuesta al espectador su orientación cada vez. Moverse por un espacio que permanece fijo no les cuesta nada. Un acercamiento entonces se lee como «mira más de cerca la parte de la cosa que ya entiendes», y el alejamiento es donde el trabajo da sus frutos, porque todo lo construido hasta ahora sigue ahí.

Trabaja en tres altitudes y muévete entre las adyacentes:

AltitudMuestraUsado para
Mundotodo el espacioorientar, culminaciones, «aquí es donde estamos»
Regiónel subgrafo en discusiónla mayor parte del tiempo de ejecución
Detalleun elementoun número, un cambio de estado, una decisión

Saltar de detalle a mundo es desorientador a menos que sea un golpe de culminación deliberado, en cuyo caso es el mejor movimiento disponible.

Reglas que cuestan una reconstrucción cada una para aprender:

  • Nombra los encuadres como ventanas exactas del mundo, no como factores de escala. Los límites de la ventana deben caer entre etiquetas. Especificar un encuadre como «escala 0,6» corta palabras por la mitad en el borde del encuadre.
  • Reutiliza la misma ventana para el mismo propósito. Si el plano de orientación es una ventana particular, usa siempre esa ventana exacta. Los encuadres casi idénticos se leen como deriva.
  • Varía la duración con la distancia recorrida, no con un ajuste preestablecido global.
  • Las transiciones de cámara y de pantalla completa se secuencian, nunca se superponen. Concurrentes, decapitan el contenido. Primero la cámara, luego la transición.
  • Una capa de cubierta se vuelve opaca antes de que la cámara se mueva debajo de ella. Si se invierte, parte del movimiento queda expuesto y se lee como un corte brusco.
  • Ninguna etiqueta a menos de 60 px del borde del encuadre. Un elemento puede sangrar y leerse como «el mundo continúa»; una palabra cortada a mitad de glifo se lee como un error. Resuélvelo mediante colocación, no mediante enmascaramiento, ya que un difuminado no puede atrapar una cuchilla que viaja a ~1800 px/s.
  • Dos movimientos secuenciales sobre el mismo sujeto se leen como un fallo. Una reencuadre que termina y LUEGO una transición que comienza es un zoom, una parada en seco y un segundo movimiento: el cliente lo llama «un fallo y una pausa». Fúndelos en UN gesto: suavizado simétrico compartido (power2.inOut), aterrizando en el mismo encuadre, de modo que el panel se lea como si empujara el metraje a un lado. Relacionado: los suavizados frontales (power3/4.out) en un movimiento de metraje visible concentran frontalmente ~90% del recorrido y se arrastran hasta detenerse; resérvalos para las entradas de elementos, donde el arrastre se lee como asentamiento. (Costó una revisión marcada por el cliente en la introducción del ejemplo trabajado).

La atención es un foco

Exactamente un elemento a pleno brillo en cada momento. Todo lo demás ya dibujado permanece tenue pero legible. No opcional. Esta es la regla que permite que un mundo se acumule hasta una docena de elementos sin sentirse nunca recargado, y es lo que hace que el alojamiento sea legible en lugar de abrumador.

La jerarquía proviene de la PROPORCIÓN entre activo y tenue, nunca de oscurecerlo todo. El primer prototipo de la construcción de referencia tenía un píxel más brillante de 101/255 y era ilegible a 960x540; la solución fue tinta más brillante, no más oscura.

EstadoLuminancia objetivo (Y, 16-235)Opacidad en la referencia
Trazo + etiqueta activos200-2351,0
Contexto, dibujado y aún relevante120-1500,56
Gastado, ya dijo lo suyo85-1050,33
Cualquier etiqueta, cualquier estadonunca por debajo de 90

La implementación es una función, llamada en cada golpe de narración con los identificadores que se están mencionando (build_s01.py, lit()):

def lit(t, active, warm=(), dur=0.5, floor=FLOOR):
    active = list(active) + [g + "-l" for g in active if g + "-l" in order]
    for gid in order:
        if gid not in opac:      # nunca dibujado: nada que iluminar
            continue
        tgt = 1.0 if gid in active else (WARM if gid in warm else floor)
        if gid not in active:
            tgt = min(tgt, MUTED.get(gid, 1.0))
        ...

Tres detalles en eso son fundamentales:

  • Una etiqueta siempre hereda el estado de su elemento (la incorporación del sufijo -l). Un elemento iluminado con una etiqueta ilegible debajo es exactamente el defecto que se está corrigiendo.
  • Un accesorio que está terminado se retira a opacidad 0, a través de un tope MUTED, no a 0,3. Silenciar a 0,3 deja confeti inexplicable en pantalla durante el resto de la sección. Regla del generador: emite el mute() antes de cualquier lit() que comience más tarde, o el silencio se sobrescribe cuando se completa su interpolación.
  • Los eventos de opacidad deben emitirse en orden de la línea de tiempo o el rastreador ve estado obsoleto y calcula el objetivo incorrecto. Mantén una guardia seq() que lance una excepción en la emisión fuera de orden.
  • Una autoridad de opacidad por elemento por ventana. Dos interpolaciones simultáneamente activas que impulsan la opacidad del mismo elemento a valores diferentes se renderizan sin problemas en una sección independiente, pero estroboscópicas a ~10 Hz en el montaje maestro, donde la interpolación ganadora alterna por fotograma. La construcción de referencia envió este defecto en cada muelle. Cuando un barrido como lit() se superpone a un brillo o silencio explícito, la interpolación que comienza más tarde es el único controlador y el barrido omite esos identificadores (lit(..., skip=(...))). Verifícalo: escanea los renderizados montados en busca de picos de luminancia de ida y vuelta de un fotograma en cada ventana de transición (qa/v4/flicker/qa-flicker.mjs en la construcción de referencia).

Los bucles abiertos son espaciales

Nunca digas «volveremos a esto.» Deja algo visiblemente incompleto en el mundo y regresa a ello. Una promesa que el espectador puede ver es una promesa que pueden sentir pendiente.

El mecanismo es idéntico cualquiera que sea la forma:

  1. Plántalo en el gancho, en el espacio, en la línea que hace la promesa.
  2. Vuelve a mostrarlo en cada límite. Cualquier traspaso de sección es un límite. El volver a mostrar cuesta unos dos segundos y es el mecanismo de retención; saltarlo es cómo una culminación termina no dando frutos.
  3. Avanzalo visiblemente. El espectador debe ver reducirse la incompletitud.
  4. Cierra en la imagen con la que abriste.

Elige la forma del guion:

Forma del guionEl mundoQué está incompleto
N elementos paralelosN enchufes en un ejeranuras vacías (ver reference/patterns/wall-of-slots/)
Un proceso, en profundidadla tubería completa, dispuestaun enlace roto o faltante
Niveles o capasuna pila que se construye hacia arribala parte superior de la pila es un fantasma
Comparacióndos columnas en un eje compartidouna columna vacía, o una tarjeta de puntuación sin llenar
Noticias o anunciouna línea de tiempo, o un mapa del paisajeel lado derecho, el futuro, está en blanco
Tutorial o construcción guiadala arquitectura terminada, fantasmacada nodo aún no construido

Entregar un elemento a su ranura es un movimiento de cámara en vivo, ~1,4 s, nunca un corte a una imagen pre-hecha del estado lleno. El espectador ve la cosa que acaba de aprender convertirse en la ficha. Si el vídeo tiene un número o contador, gíralo dentro de ese mismo movimiento, como un odómetro, con el mismo inicio, duración y suavizado para ambos números, o se fusionan en una banda a medio camino.

El contador necesita un nombre, no solo un número. Un número en la esquina le dice al espectador dónde están en la secuencia, pero no qué es el elemento actual; nueve minutos después, «03» no transmite nada. Empareja el número con una etiqueta de 1-2 palabras que nombre el elemento actual (SOPORTE, VOZ IA), en la misma química de placa, moviéndose como una sola fijación rígida con el número, intercambiando dentro del mismo giro de odómetro. La revisión del cliente de la construcción de referencia pidió exactamente esto: los visuales eran buenos y el espectador aún perdía el rastro de qué caso de uso estaba en pantalla.

2 · Disciplina

Si no recibe una palabra, no se dibuja

Cada forma es un elemento etiquetado, un conector entre elementos etiquetados, el sujeto viajero o el fondo ambiental. Nada más.

Esto provino de una revisión de prueba silenciada que obtuvo una comprensión de 7/10 y nombró la causa: el diagrama estaba limpio, las decoraciones no. Una docena de formas no etiquetadas dibujadas con el mismo grosor y paleta que las significativas, por lo que un espectador por primera vez no puede distinguir la señal de la textura y dedica atención real a decodificar cosas que nunca pretendieron ser decodificadas. Eso es «demasiado movimiento» reubicado de palabras a formas.

Presupuesto: ~20 palabras en pantalla por sección. Sin oraciones. Las etiquetas son de 1-2 palabras, debajo de su elemento. La sección de referencia 1 tiene 21 palabras en 84 segundos.

Corolario: un visual anti-patrón nunca superpone la recomendación. Lleva el mundo al casi negro primero, o coloca el contraejemplo donde no esté el buen diagrama.

Dale al espectador una cosa a seguir

Lleva la historia en un solo sujeto viajero cuyo estado cambia visiblemente: un chip con filas de datos y una barra de puntuación, un documento, una solicitud. Las filas se llenan, una barra se mueve, un borde cambia de color. Un espectador debe poder seguir una sección completa mirando ese único objeto, y nunca debe teletransportarse; se mueve a lo largo de conectores dibujados a una velocidad constante.

Un conjunto global de fichas

Detalle completo en reference/design-system.md.

FichaValores
Trazo1.5 / 2.5 / 4 / 7, y nada más
Tipo22 / 30 / 42 / 60 / 84
Radio10 / 22 / 40, siempre superelipse(2)

Cinco colores, cinco significados fijos, cero decoración. Cálido significa que un humano está involucrado y nada más es nunca cálido. Nunca blanco puro para el tipo; halata sobre oscuro.

El fallo que esto previene, de la revisión artesanal de la primera construcción: «cada decisión se tomó local y correctamente; ninguna decisión se tomó globalmente.» 18 grosor de trazo y 9 tamaños de tipo, la mayoría de ellos separados por 0,2, individualmente invisibles y colectivamente fatales. El ojo recibe ruido en lugar de jerarquía. Verifícalo con un linter de fichas que haga fallar la construcción.

Movimiento

Entradas en cubic-bezier(0.16,1,0.3,1), salidas más rápidas que las entradas, duración varía con la masa, por lo que un nodo de 290 px y una etiqueta de 40 px no desaceleran idénticamente, y back.out exactamente una vez por sección, en el golpe que lo merece.

Nunca un fundido cruzado, jamás. Las capas de sangrado completo entran y salen mediante recorte en un fondo ya opaco. En cualquier instancia un píxel es gráfico o metraje.

3 · Contrato de construcción

  • Un generador por sección. scripts/build_<id>.py escribe solo compositions/<id>.html. Edita el generador, nunca el HTML generado. Las raíces de sección index-*.html se mantienen a mano, por lo que los cambios de encuadre van allí.
  • Los módulos compartidos permanecen compartidos. Cualquier cosa que defina geometría compartida es importada por cada sección. Si las secciones son construidas por agentes paralelos, prohibe que toquen los módulos compartidos; la geometría divergente rompe silenciosamente cada traspaso.
  • Espacio de nombres para las definiciones SVG antes del ensamblaje. Cada sección define su propio gEdge, shadow, edgeFade. En un DOM ensamblado, url(#id) resuelve a la primera coincidencia en el orden del documento, por lo que una vez que una composición anterior se desmonta, cada gráfico posterior pinta nada. Coste en la construcción de referencia: 35 segundos de pantalla vacía con todas las compuertas verdes. Solo mirar el renderizado ensamblado lo detectó.
  • Temporiza todo al inicio de las palabras a partir de una transcripción a nivel de palabra, entrando 0,15-0,25s antes de la palabra ancla. Nunca dividas una sección uniformemente en golpes.
  • Audita los espacios. Cualquier tramo de más de ~1,5 s sin que ocurra nada es una pantalla muerta; haz que el generador los imprima.
  • Deja aire en el corte. El recorte agresivo de pausas produce espacios casi nulos en los límites de las oraciones que el cliente escucha como «tartamudeos» y cortes bruscos. Calibra contra la norma del hablante: marca los espacios en los límites de las oraciones que son ~10 veces más ajustados que su mediana (el hablante de referencia tenía 470 ms; las uniones marcadas estaban en 20-40 ms), y repara insertando 4-8 fotogramas de aire, las palabras nunca se tocan. El aire es una rebanada donante del tono real de la sala de la pista con fundidos de 10 ms, nunca anullsrc: el silencio digital contra un piso de -50 dBFS es una caída audible. El vídeo mantiene el fotograma; entre oraciones, una cabeza parlante está casi quieta y 4-8 fotogramas de retención son invisibles. Los cambios de solo inserción desplazan la transcripción de forma determinista, por lo que no se necesita una retranscripción. Los bordes de una inserción deben respetar la envolvente del habla: unir tono donante contra la cola de una palabra en 1 ms am

…

[truncado para traducción]

Skills relacionados