Communitygithub.com

Syammon02/VideoUse

Tubería de producción para animaciones matemáticas y técnicas usando Manim Community Edition. Crea videos explicativos estilo 3Blue1Brown, visualizaciones de algoritmos, derivaciones de ecuaciones, diagramas de arquitectura e historias de datos. Úsalo cuando te soliciten: explicaciones animadas, animaciones matemáticas, visualizaciones de conceptos, recorridos de algoritmos, explicaciones técnicas, videos estilo 3Blue1Brown o cualquier animación programática con contenido geométrico/matemático.

¿Qué es VideoUse?

Este skill implementa una tubería de producción completa para crear animaciones educativas de alta calidad utilizando Manim Community Edition. Está diseñado para producir videos explicativos al estilo 3Blue1Brown, donde cada fotograma enseña y cada animación revela estructura. El usuario debe articular un arco narrativo pedagógico antes de escribir código, priorizando la geometría sobre el álgebra y la excelencia desde el primer render. El skill soporta siete modos de entrada: explicación de conceptos, derivación de ecuaciones, visualización de algoritmos, historias de datos, diagramas de arquitectura, explicadores de artículos y visualización 3D. Proporciona pautas detalladas de diseño visual (paletas de colores, velocidad de animación, escalas tipográficas) y un flujo de trabajo paso a paso que incluye planificación, codificación, renderizado (con calidad de borrador y producción), unión de clips, adición opcional de audio y revisión. También incluye pautas para la divergencia creativa cuando el usuario solicita enfoques experimentales o innovadores.

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

Preguntar en tu IA favorita

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

Documentación

Tubería de Producción de Videos con Manim

Estándar Creativo

Esto es cine educativo. Cada fotograma enseña. Cada animación revela estructura.

Antes de escribir una sola línea de código, articula el arco narrativo. ¿Qué concepto erróneo corrige esto? ¿Cuál es el "momento ajá"? ¿Qué historia visual lleva al espectador de la confusión a la comprensión? El mensaje del usuario es un punto de partida — interprétalo con ambición pedagógica.

Geometría antes que álgebra. Muestra la forma primero, la ecuación después. La memoria visual codifica más rápido que la memoria simbólica. Cuando el espectador ve el patrón geométrico antes que la fórmula, la ecuación se siente merecida.

La excelencia en el primer renderizado es innegociable. La salida debe ser visualmente clara y estéticamente coherente sin rondas de revisión. Si algo parece desordenado, mal sincronizado o como "diapositivas generadas por IA", está mal.

Capas de opacidad dirigen la atención. Nunca muestres todo a máxima luminosidad. Elementos principales a 1.0, elementos contextuales a 0.4, elementos estructurales (ejes, cuadrículas) a 0.15. El cerebro procesa la prominencia visual en capas.

Espacio para respirar. Cada animación necesita self.wait() después. El espectador necesita tiempo para asimilar lo que acaba de aparecer. Nunca apresures de una animación a la siguiente. Una pausa de 2 segundos después de una revelación clave nunca se desperdicia.

Lenguaje visual cohesivo. Todas las escenas comparten una paleta de colores, un tamaño tipográfico consistente y velocidades de animación coincidentes. Un video técnicamente correcto donde cada escena usa colores aleatorios diferentes es un fracaso estético.

Requisitos Previos

Ejecuta scripts/setup.sh para verificar todas las dependencias. Requiere: Python 3.10+, Manim Community Edition v0.20+ (pip install manim), LaTeX (texlive-full en Linux, mactex en macOS) y ffmpeg. La documentación de referencia se probó con Manim CE v0.20.1.

Modos

ModoEntradaSalidaReferencia
Explicador de conceptosTema/conceptoExplicación animada con intuición geométricareferences/scene-planning.md
Derivación de ecuacionesExpresiones matemáticasDemostración animada paso a pasoreferences/equations.md
Visualización de algoritmosDescripción del algoritmoEjecución paso a paso con estructuras de datosreferences/graphs-and-data.md
Historia de datosDatos/métricasGráficos animados, comparaciones, contadoresreferences/graphs-and-data.md
Diagrama de arquitecturaDescripción del sistemaComponentes que se construyen con conexionesreferences/mobjects.md
Explicador de artículosArtículo de investigaciónHallazgos clave y métodos animadosreferences/scene-planning.md
Visualización 3DConcepto 3DSuperficies rotativas, curvas paramétricas, geometría espacialreferences/camera-and-3d.md

Stack

Un único script de Python por proyecto. Sin navegador, sin Node.js, sin GPU requerida.

CapaHerramientaPropósito
NúcleoManim Community EditionRenderizado de escenas, motor de animación
MatemáticasLaTeX (texlive/MiKTeX)Renderizado de ecuaciones vía MathTex
Video I/OffmpegUnión de escenas, conversión de formatos, multiplexación de audio
TTSElevenLabs / Qwen3-TTS (opcional)Locución de narración

Tubería

PLANIFICAR --> CODIFICAR --> RENDERIZAR --> UNIR --> AUDIO (opcional) --> REVISAR
  1. PLANIFICAR — Escribe plan.md con el arco narrativo, lista de escenas, elementos visuales, paleta de colores, guión de locución
  2. CODIFICAR — Escribe script.py con una clase por escena, cada una renderizable de forma independiente
  3. RENDERIZAR — manim -ql script.py Escena1 Escena2 ... para borrador, -qh para producción
  4. UNIR — Concat de ffmpeg de los clips de escena en final.mp4
  5. AUDIO (opcional) — Agrega locución y/o música de fondo vía ffmpeg. Consulta references/rendering.md
  6. REVISAR — Renderiza vistas previas estáticas, verifica contra el plan, ajusta

Estructura del Proyecto

nombre-proyecto/
  plan.md                # Arco narrativo, desglose de escenas
  script.py              # Todas las escenas en un archivo
  concat.txt             # Lista de escenas de ffmpeg
  final.mp4              # Salida unida
  media/                 # Generado automáticamente por Manim
    videos/script/480p15/

Dirección Creativa

Paletas de Colores

PaletaFondoPrincipalSecundarioAcentoCaso de uso
Clásica 3B1B#1C1C1C#58C4DD (AZUL)#83C167 (VERDE)#FFFF00 (AMARILLO)Matemáticas/CS general
Académica cálida#2D2B55#FF6B6B#FFD93D#6BCB77Accesible
Tecnológica neón#0A0A0A#00F5FF#FF00FF#39FF14Sistemas, arquitectura
Monocromática#1A1A2E#EAEAEA#888888#FFFFFFMinimalista

Velocidad de Animación

Contextorun_timeself.wait() después
Aparición de título/intro1.5s1.0s
Revelación de ecuación clave2.0s2.0s
Transformación/morfismo1.5s1.5s
Etiqueta de apoyo0.8s0.5s
Limpieza con FadeOut0.5s0.3s
Revelación "momento ajá"2.5s3.0s

Escala Tipográfica

RolTamaño de fuenteUso
Título48Títulos de escena, texto de apertura
Encabezado36Encabezados de sección dentro de una escena
Cuerpo30Texto explicativo
Etiqueta24Anotaciones, etiquetas de ejes
Subtítulo20Subtítulos, letra pequeña

Fuentes

Usa fuentes monoespaciadas para todo el texto. El renderizador Pango de Manim produce kerning roto con fuentes proporcionales en todos los tamaños. Consulta references/visual-design.md para recomendaciones completas.

MONO = "Menlo"  # definir una vez al inicio del archivo

Text("Series de Fourier", font_size=48, font=MONO, weight=BOLD)  # títulos
Text("n=1: sin(x)", font_size=20, font=MONO)                    # etiquetas
MathTex(r"\nabla L")                                              # matemáticas (usa LaTeX)

Mínimo font_size=18 para legibilidad.

Variación por Escena

Nunca uses configuración idéntica para todas las escenas. Para cada escena:

  • Diferente color dominante de la paleta
  • Diferente diseño — no centres todo siempre
  • Diferente entrada de animación — varía entre Write, FadeIn, GrowFromCenter, Create
  • Diferente peso visual — algunas escenas densas, otras dispersas

Flujo de Trabajo

Paso 1: Planificar (plan.md)

Antes de cualquier código, escribe plan.md. Consulta references/scene-planning.md para la plantilla completa.

Paso 2: Codificar (script.py)

Una clase por escena. Cada escena es renderizable de forma independiente.

from manim import *

BG = "#1C1C1C"
PRINCIPAL = "#58C4DD"
SECUNDARIO = "#83C167"
ACENTO = "#FFFF00"
MONO = "Menlo"

class Escena1_Introduccion(Scene):
    def construct(self):
        self.camera.background_color = BG
        titulo = Text("¿Por qué funciona esto?", font_size=48, color=PRINCIPAL, weight=BOLD, font=MONO)
        self.add_subcaption("¿Por qué funciona esto?", duration=2)
        self.play(Write(titulo), run_time=1.5)
        self.wait(1.0)
        self.play(FadeOut(titulo), run_time=0.5)

Patrones clave:

  • Subtítulos en cada animación: self.add_subcaption("texto", duration=N) o subcaption="texto" en self.play()
  • Constantes de color compartidas al inicio del archivo para consistencia entre escenas
  • self.camera.background_color establecido en cada escena
  • Salidas limpias — FadeOut de todos los mobjects al final de la escena: self.play(FadeOut(Group(*self.mobjects)))

Paso 3: Renderizar

manim -ql script.py Escena1_Introduccion Escena2_ConceptoCentral  # borrador
manim -qh script.py Escena1_Introduccion Escena2_ConceptoCentral  # producción

Paso 4: Unir

cat > concat.txt << 'EOF'
file 'media/videos/script/480p15/Escena1_Introduccion.mp4'
file 'media/videos/script/480p15/Escena2_ConceptoCentral.mp4'
EOF
ffmpeg -y -f concat -safe 0 -i concat.txt -c copy final.mp4

Paso 5: Revisar

manim -ql --format=png -s script.py Escena2_ConceptoCentral  # vista previa estática

Notas Críticas de Implementación

Cadenas Raw para LaTeX

# INCORRECTO: MathTex("\frac{1}{2}")
# CORRECTO:
MathTex(r"\frac{1}{2}")

buff >= 0.5 para Texto en Bordes

label.to_edge(DOWN, buff=0.5)  # nunca < 0.5

FadeOut Antes de Reemplazar Texto

self.play(ReplacementTransform(nota1, nota2))  # no Write(nota2) encima

Nunca Animes Mobjects No Añadidos

self.play(Create(circulo))  # primero debe añadirse
self.play(circulo.animate.set_color(RED))  # luego animar

Objetivos de Rendimiento

CalidadResoluciónFPSVelocidad
-ql (borrador)854x480155-15s/escena
-qm (media)1280x7203015-60s/escena
-qh (producción)1920x10806030-120s/escena

Itera siempre en -ql. Renderiza solo en -qh para la salida final.

Referencias

ArchivoContenido
references/animations.mdAnimaciones principales, funciones de velocidad, composición, sintaxis .animate, patrones de sincronización
references/mobjects.mdTexto, formas, VGroup/Group, posicionamiento, estilizado, mobjects personalizados
references/visual-design.md12 principios de diseño, capas de opacidad, plantillas de diseño, paletas de colores
references/equations.mdLaTeX en Manim, TransformMatchingTex, patrones de derivación
references/graphs-and-data.mdEjes, trazado, BarChart, datos animados, visualización de algoritmos
references/camera-and-3d.mdMovingCameraScene, ThreeDScene, superficies 3D, control de cámara
references/scene-planning.mdArcos narrativos, plantillas de diseño, transiciones de escenas, plantilla de planificación
references/rendering.mdReferencia de CLI, preajustes de calidad, ffmpeg, flujo de trabajo de locución, exportación a GIF
references/troubleshooting.mdErrores de LaTeX, errores de animación, errores comunes, depuración
references/animation-design-thinking.mdCuándo animar vs. mostrar estático, descomposición, ritmo, sincronización de narración
references/updaters-and-trackers.mdValueTracker, add_updater, always_redraw, updaters basados en tiempo, patrones
references/paper-explainer.mdConvertir artículos de investigación en animaciones — flujo de trabajo, plantillas, patrones de dominio
references/decorations.mdSurroundingRectangle, Brace, flechas, DashedLine, Angle, ciclo de vida de anotaciones
references/production-quality.mdListas de verificación previas al código, previas al renderizado y posteriores al renderizado, diseño espacial, color, tempo

Divergencia Creativa (usar solo cuando el usuario solicite una salida experimental/creativa/única)

Si el usuario pide enfoques explicativos creativos, experimentales o no convencionales, selecciona una estrategia y raciocínala ANTES de diseñar la animación.

  • SCAMPER — cuando el usuario quiera una perspectiva fresca sobre una explicación estándar
  • Inversión de Supuestos — cuando el usuario quiera desafiar cómo se enseña algo típicamente

Transformación SCAMPER

Toma una visualización matemática/técnica estándar y transfórmala:

  • Sustituir: reemplaza la metáfora visual estándar (recta numérica → camino sinuoso, matriz → cuadrícula de ciudad)
  • Combinar: fusiona dos enfoques de explicación (algebraico + geométrico simultáneamente)
  • Invertir: deriva hacia atrás — empieza desde el resultado y deconstruye hasta los axiomas
  • Modificar: exagera un parámetro para mostrar por qué importa (10x la tasa de aprendizaje, 1000x el tamaño de la muestra)
  • Eliminar: elimina toda notación — explica puramente a través de animación y relaciones espaciales

Inversión de Supuestos

  1. Enumera lo que es "estándar" sobre cómo se visualiza este tema (de izquierda a derecha, 2D, pasos discretos, notación formal)
  2. Elige el supuesto más fundamental
  3. Inviértelo (derivación de derecha a izquierda, incrustación 3D de un concepto 2D, morfismo continuo en lugar de pasos, cero notación)
  4. Explora lo que la inversión revela que el enfoque estándar oculta

Skills relacionados