Ciclo de revisión (versión HyperFrames)
No puedes ver el video, pero sí los fotogramas. Nunca reportes el video como terminado sin haber visto el contact sheet de la "versión actual".
Adaptado del skill
review-loopde whaleyxbt/claude-motion (MIT, verLICENSEen la misma carpeta). Los comandos originalesnpm run …se han reemplazado por las herramientas HyperFrames de kinocut MCP y el scriptscripts/sheet.pyde esta carpeta. Los párrafos marcados como "(nuevo en esta versión)" no forman parte del contenido original.
El siguiente SHEET se refiere a python "<carpeta_de_este_skill>/scripts/sheet.py" (por ejemplo, ~/.claude/skills/review-loop/scripts/sheet.py). Todas las rutas deben ser absolutas.
Ciclo
- Primero, verificación automática (nuevo en esta versión): Ejecuta
hyperframes checken la carpeta del proyecto. Realiza linting, verificación de tiempo de ejecución, desbordamiento de diseño, animación y contraste (oficialmente,validate/inspectestán obsoletos; usacheck). Corrige cualquier error antes de continuar. Para más detalles, consulta el skill oficialhyperframes-cli.- Las revelaciones con máscara durante la entrada generarán inevitablemente un
container_overflow; es intencional, añadedata-layout-allow-overflowal contenedor de la máscara. Pero si después de asentarse sigue apareciendotext_box_overflow, el contenedor es demasiado bajo y cortará el texto (especialmente con caracteres chinos y superíndices); hay que aumentar la altura del contenedor.
- Las revelaciones con máscara durante la entrada generarán inevitablemente un
- Borrador:
hyperframes_render, con parámetroquality: "draft",output_pathestablecido como<proyecto>/out/draft.mp4. - Contact sheet:
SHEET --video <proyecto>/out/draft.mp4 --timeline <proyecto>/timeline.js --out <proyecto>/out/sheetsToma una captura 0.3 segundos después de cada tiempo (cuando la animación ya se ha estabilizado), las organiza en una cuadrícula de 4×2 comoout/sheets/beats-N.png, etiquetando cada cuadro con el nombre del tiempo y su tiempo correspondiente. Cada cuadro tiene 360 px de ancho por defecto, que es el ancho real en dispositivos móviles. - Usa Read para abrir cada hoja y revisa punto por punto contra la lista de verificación a continuación.
- Amplía las áreas sospechosas:
- Escanea una transición:
SHEET --video … --from 3 --to 5 --every 0.2 --name scrub - Observa un momento específico:
SHEET --video … --at 3.7,3.75,3.8 --name exact - Ve un solo fotograma a resolución completa:
hyperframes_still, rellenaframecon el número de fotograma (segundos × fps) - Si no quieres volver a renderizar el video, también puedes usar
hyperframes_snapshotconatpara capturar directamente desde la composición, y luego combinar conSHEET --images … --labels ….
- Escanea una transición:
- Después de corregir, vuelve al paso 0. Solo detente cuando una ronda completa no muestre ningún problema.
- Versión final:
hyperframes_renderconquality: "high"para generar el video final, luego repite el paso 2 con ese video y realiza la verificación de audio (ver más abajo).
Lista de verificación
Composición
- Cada cuadro tiene solo un punto focal. Si dos elementos compiten por atención, uno debe esperar.
- No hay colisiones o superposiciones no intencionadas, especialmente durante las transiciones, cuando los elementos que salen y entran comparten el mismo espacio.
- Zona segura: el contenido importante no debe estar a menos de aproximadamente 60 px del borde.
- El primer cuadro es una imagen real, no negro (será la miniatura en plataformas sociales).
Texto
- No está cortado por máscaras, contenedores ni bordes del encuadre (a menos que sea intencional).
- Al reducirse al ancho de un teléfono (el tamaño de los cuadros del sheet), los mensajes clave siguen siendo legibles.
- Cuando debe leerse, el texto no se está moviendo.
- (Nuevo en esta versión) Chino: sin errores ortográficos; todo en caracteres tradicionales, sin mezclar con simplificados; signos de puntuación en ancho completo; sin caracteres faltantes en la fuente (que aparecen como cuadrados o fuentes notablemente diferentes).
Ritmo
- Cada estado que debe leerse permanece el tiempo suficiente (ver sección 4 de
motion-design). Si en los cuadros intermedios el texto aún se está moviendo, la pausa es demasiado corta. - Las escenas se superponen al transicionar, no cortan a un cuadro en blanco.
- Las salidas son más rápidas que las entradas.
Consistencia
- Solo se usan colores de la paleta
:root; el color de énfasis marca exactamente el foco de ese cuadro. - Un mismo elemento se ve igual en todas las escenas donde aparece.
Audio (solo cuando hay sonido)
- Forma de onda:
video_audio_waveformverifica que los picos de audio coincidan con los tiempos enTL. - Sonoridad (nuevo en esta versión, reemplaza el antiguo
npm run wave):ffmpeg -hide_banner -nostats -i <video_final> -af ebur128=peak=true -f null -Revisa el resumen final paraIntegrated loudnessyTrue peak. El objetivo es −14 LUFS ±1, true peak ≤ −1 dBFS. - El acento y la emoción de la narración en chino deben ser evaluados por el usuario con el oído, no con una puntuación (nuevo en esta versión).
Reporte
Al finalizar, debes indicar claramente: qué se revisó, qué se corrigió y en qué hoja se pueden ver los resultados. No reclames haber corregido algo sin haber vuelto a renderizar y haberlo visto con tus propios ojos.