Communitygithub.com

vvai-pixel-mv · 像素小人卡拍 MV

Convierte una canción (audio + letra sincronizada en SRT/LRC) en un MV animado con personajes pixelados, siguiendo una historia (serie ClaudeMV). El flujo es: escribir la historia → mostrar storyboard al usuario → revisar y aprobar → renderizar MP4 con HyperFrames.

¿Qué es vvai-pixel-mv · 像素小人卡拍 MV?

Este skill permite generar videos musicales animados con estilo pixel art a partir de una canción y su letra sincronizada (SRT o LRC). El flujo de trabajo es estrictamente secuencial: primero se escribe una línea argumental, luego se genera un storyboard visual que el usuario puede revisar y modificar tantas veces como sea necesario, y solo tras la aprobación explícita del usuario se procede al renderizado final en MP4. Soporta múltiples personajes (yo, ella, nuevo novio...), acciones dramáticas (soltar, girar, llorar, romper corazón, quitar gafas...), 7 tipos de interacción con la letra, 7 transiciones, perspectiva de ventana de escritorio, 27 escenarios pixelados con clima y efectos de golpe de ritmo. Utiliza HyperFrames para el renderizado. Está diseñado para asistentes como Claude Code, Cursor o Codex, y requiere Python 3.10+ con las librerías especificadas, ffmpeg y Node.js. La comunicación con el usuario incluye el envío de storyboards e imágenes de contacto para facilitar la revisión colaborativa.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add cecilPENG53/vvai-pixel-mv

Preguntar en tu IA favorita

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

Documentación

vvai-pixel-mv · MV de personajes pixelados con golpe de ritmo

El orden es fijo: historia → storyboard (el usuario lo ve, lo modifica, puede iterar) → confirmación del usuario → renderizado. Sin confirmación del usuario, no se renderiza el storyboard.

Hay ejemplos completos en assets/examples/: la historia de una canción y su story.json, con 7 segmentos, 3 personajes y vista de ventana de escritorio.

Preparación

  • PY: Python 3.10 o superior con librosa, faster-whisper, numpy y Pillow instalados. Ver INSTALL.md. Si el CLAUDE.md o la memoria del usuario especifican una ruta de Python, usar esa; si no, verificar que python pueda importar esos paquetes; si no, preguntar al usuario.
  • MV: PY -X utf8 <ruta_del_skill>/scripts/pixel_mv.py.
  • Requiere ffmpeg y Node. Por defecto se renderiza con npx --yes [email protected]; para cambiar el CLI, establecer la variable de entorno HF_CLI, separando los argumentos con |.

Flujo

  1. Recopilar material. Debe haber audio, letra sincronizada (SRT o LRC) y nombre de la canción.
    • Opcional: segundos de inicio/fin, perfil de color (base / neon / classic / retro), intensidad (dj / standard / soft), imágenes de personajes.
    • Preguntar también por la historia: ¿el usuario ya tiene una trama en mente? Si no, proponer una en el paso 3.
    • Si no hay archivo de letra, pedírselo al usuario; no usar transcripción para adivinarla. Si hay partes que la transcripción no puede convertir en voz, preguntar primero al usuario, no tratarlas como intro. En el episodio 1 se confundió el verso con la intro.
  2. Crear proyecto: MV new <directorio_del_proyecto> --audio <audio> --lyrics <srt/lrc> --title <nombre_canción> [--start segundos --end segundos] [--look base] [--character imagen].
    • Este paso corta el audio, mide el ritmo y los puntos culminantes de energía, y alinea la letra palabra por palabra.
    • También genera un borrador inicial story.json que solo cambia de escena por palabras clave, y una plantilla historia.md.
    • El proyecto se crea en el directorio especificado por el usuario; si el usuario tiene un directorio fijo para la serie (escrito en CLAUDE.md o en la memoria), se coloca allí.
  3. Escribir la historia. Completar historia.md siguiendo el método de contar historias: historia en una frase, personajes, motivo, actos, frase por frase. Mostrarlo al usuario para que lo confirme.
  4. Escribir story.json. Traducir la historia a story.json.
    • Campos en formato; acciones, modos de letra y transiciones disponibles en directorio de interacciones.
    • Lo más rápido es seguir el ejemplo de assets/examples/bad-girl.story.json.
    • Al terminar, ejecutar MV check <proyecto> hasta que no haya errores.
  5. Generar storyboard para el usuario.
    • Ejecutar MV board <proyecto> --frames: captura 1–3 imágenes por segmento y genera storyboard.md, que incluye resumen, personajes por segmento, acciones dramáticas, frase de la letra y su aparición, transiciones, cámara y puntos de golpe.
    • Enviar al usuario storyboard.md y las hojas de contacto de storyboard/imágenes/ usando SendUserFile.
    • Indicar al usuario qué partes se pueden modificar.
  6. Iterar hasta que esté satisfecho. El usuario propone cambios, se modifica story.json y se vuelve a ejecutar board.
    • La versión se incrementa automáticamente; la anterior se guarda en storyboard/historial/.
    • Se puede iterar varias veces, enviando cada nueva versión del storyboard al usuario.
  7. Renderizar tras confirmación.
    • Solo cuando el usuario diga explícitamente "puedes renderizar", ejecutar MV approve <proyecto> y luego MV render <proyecto> --sample 12.
    • Respuestas ambiguas ("vale", "como quieras") no cuentan como confirmación.
    • render verifica la huella de story.json; si se ha modificado después de la confirmación, se niega a renderizar.
    • Si el archivo supera los 30 MB, se genera una copia comprimida _preview.mp4 para móvil.
  8. Entrega. Revisar visualmente con un mosaico de 1 fotograma/segundo: la historia se entiende, la escena, la letra, las transiciones y el título están presentes, la duración coincide con el audio original y hay pista de audio.
    • Si el usuario quiere cambios después de la entrega, volver al paso 6: modificar story.json → nuevo storyboard → nueva confirmación → nuevo renderizado.

Reglas clave

  • La historia antes que los efectos. Cada frase debe tener al menos una acción dramática o una interacción con la letra; las acciones dramáticas deben ocurrir en el tiempo de la palabra clave; las transiciones deben tener una razón argumental. Ver método de contar historias.
  • Cambio de escena: sin requisitos de historia, por defecto "escritorio principal + inserción de imágenes", ver reglas de storyboard. Con historia, seguir los actos; para segmentos de reflexión o recapitulación, usar la vista de ventana de escritorio.
  • Personajes:
    • Por defecto, el muñeco Claude representa "yo".
    • Otros personajes se declaran con cast (girl, rival, friend, ghost).
    • Si el usuario proporciona una imagen, ejecutar MV character <proyecto> <imagen> para convertirla en un personaje de 16×16 píxeles.
  • Golpe de ritmo:
    • El personaje aterriza exactamente en cada golpe, aplastándose al caer y generando ondas de agua bajo sus pies.
    • Cada golpe tiene un impacto de cámara y destello de color; en los golpes fuertes, separación RGB.
    • Los destellos de pantalla completa solo se colocan en transiciones y drops, como máximo 3 veces por segundo.
  • Paquete de reacción de sobresalto: como máximo 2 veces en todo el video, solo en verdaderos giros argumentales.
  • Texto de la letra:
    • Solo aparece en la imagen renderizada y en los archivos del proyecto; en las respuestas del chat y en el storyboard solo se escriben los números de frase.
    • Los derechos de autor de la canción son responsabilidad del usuario; recordárselo antes de publicar.

Resumen de comandos

ComandoFunción
newCrear proyecto: analyze + align + draft + story
storyGenerar plantilla historia.md (--force para reconstruir)
checkVerificar que los nombres, tiempos y ventanas de story.json sean reconocidos por el motor
board [--frames]Generar storyboard (versión N), guardar en historial
approveRegistrar la versión confirmada por el usuario; luego render la autoriza
render [--sample 12] [--name nombre_archivo]Renderizar; --force salta la confirmación, solo usar si el usuario lo dice explícitamente
syncSolo sincronizar story.json → assets/story.js (para depuración; board y render sincronizan automáticamente)
upgradeActualizar proyecto antiguo al motor de plantillas actual, dejando copia de seguridad .before-upgrade
characterConvertir imagen de personaje → personaje pixelado
analyze / align / draftPasos individuales de new; ejecutar por separado para repetir

Personalización más allá de la plantilla

El motor de plantillas v2 ya cubre lo siguiente, ver directorio de interacciones:

  • 27 escenarios, 16 acciones básicas;
  • 23 acciones dramáticas;
  • 7 modos de letra, 6 entradas, 9 salidas;
  • 7 transiciones;
  • Ventana de escritorio.

Si aún falta, agregar en el archivo assets/engine.js del proyecto, sin modificar la plantilla de este skill. Consultar técnicas del episodio 1. Para incorporar una nueva secuencia a la plantilla, primero confirmar con el usuario. Al hacerlo, modificar estos sitios:

  • La plantilla engine.js;
  • Las listas BEAT_NAMES y demás en pixel_mv.py, así como los nombres en chino ZH_* para el storyboard;
  • interactions.md.

Biblioteca de escenarios

  • Los datos están en assets/scene-library/scenes.json.
  • Para añadir un escenario, modificar dos lugares: registrar la palabra clave y las interacciones en scenes.json, y escribir el método de dibujo en SCENES de la plantilla engine.js.

Skills relacionados