Communitygithub.com

tzezhang1-crypto/claude-motion-explainer-video

Boucle de révision visuelle pour vidéos animées (version HyperFrames) — exporte des brouillons, capture des images à chaque temps fort en une planche contact, vérifie point par point, corrige et recommence. Obligatoire dès qu'une animation ou son minutage est modifié, et avant de déclarer une vidéo terminée.

Qu'est-ce que claude-motion-explainer-video ?

Cette compétence (skill) implémente une boucle de révision visuelle systématique pour les vidéos animées créées avec HyperFrames. Contrairement aux vidéos, l'IA ne peut voir que des images fixes ; le skill contourne cette limitation en générant des planches contact (contact sheets) à chaque temps fort de la timeline, permettant une inspection détaillée de chaque étape. Le processus débute par `hyperframes check` qui exécute lint, runtime, débordement de boîtes, mouvement et contraste. Après un rendu brouillon `quality: draft`, le script `scripts/sheet.py` capture une image 0,3 seconde après chaque temps fort, les assemble en images 4×2 de 360 px de large, et les nomme par temps fort. L'utilisateur ouvre chaque planche avec l'outil Read et vérifie systématiquement la composition (un seul point focal, pas de collision), le texte (pas de coupure, lisibilité en largeur mobile, pas de fautes en chinois traditionnel), le rythme (pauses suffisamment longues, transitions chevauchées) et la cohérence (couleurs du thème `:root`, éléments récurrents identiques). Pour les zones suspectes, des commandes avancées permettent un examen à haute résolution (`hyperframes_still`) ou un survol par incréments (`--every 0.2`). Une fois la boucle validée visuellement, le rendu final en haute qualité est soumis à une vérification audio : analyse de forme d'onde (`video_audio_waveform`), mesure de loudness via `ffmpeg ebur128` (cible −14 LUFS ±1, true peak ≤ −1 dBFS) et évaluation humaine des voix off. Le skill est conçu pour les agents travaillant avec Claude Code, Cursor, Codex ou tout outil supportant le format SKILL.md. Il s'inspire du skill `review-loop` de whaleyxbt/claude-motion mais adapte les commandes à l'écosystème HyperFrames et au MCP `kinocut`.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/tzezhang1-crypto/claude-motion-explainer-video/tree/HEAD/skills/review-loop

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Boucle de révision (version HyperFrames)

Vous ne pouvez pas regarder de vidéo, mais vous pouvez voir des images. Ne signalez jamais une vidéo comme terminée sans avoir examiné la planche contact de la version courante de la sortie.

Adapté du skill review-loop de whaleyxbt/claude-motion (MIT, voir le fichier LICENSE dans le même dossier). Les commandes npm run … originales ont été remplacées par les outils HyperFrames du MCP kinocut, ainsi que par le script scripts/sheet.py de ce dossier. Les paragraphes marqués « (nouveau dans cette version) » ne font pas partie du contenu original.

Ci-dessous, SHEET désigne python "<dossier du skill>/scripts/sheet.py" (par exemple ~/.claude/skills/review-loop/scripts/sheet.py). Tous les chemins sont absolus.

Boucle

  1. Passez d'abord la vérification automatique (nouveau dans cette version) : exécutez hyperframes check dans le dossier du projet. Il exécute en une seule passe lint, runtime, débordement de boîtes, mouvement et contraste (les commandes validate/inspect officielles sont dépréciées au profit de check). Corrigez d'abord les erreurs, puis continuez. Voir le skill officiel hyperframes-cli pour les détails.
    • Le dévoilement de masque (mask reveal) en entrée génère toujours une erreur container_overflow ; c'est intentionnel, ajoutez data-layout-allow-overflow au conteneur du masque. Mais si après stabilisation l'erreur text_box_overflow persiste, le conteneur est trop bas et coupe le texte (surtout pour le chinois et les exposants) : augmentez sa hauteur.
  2. Brouillon : hyperframes_render avec les paramètres quality: "draft" et output_path défini sur <projet>/out/draft.mp4.
  3. Planche contact : SHEET --video <projet>/out/draft.mp4 --timeline <projet>/timeline.js --out <projet>/out/sheets Capture une image 0,3 seconde après chaque temps fort (l'animation est stabilisée), les assemble en images 4×2 dans out/sheets/beats-N.png, chaque image étant légendée avec le nom du temps fort et le temps. Chaque image fait 360 px de large par défaut, soit la largeur réelle sur une vidéo mobile.
  4. Ouvrez chaque planche avec l'outil Read et vérifiez point par point la liste de contrôle ci-dessous.
  5. Agrandissez les zones suspectes :
    • Balayage d'une transition : SHEET --video … --from 3 --to 5 --every 0.2 --name scrub
    • Vue à un instant précis : SHEET --video … --at 3.7,3.75,3.8 --name exact
    • Vue plein écran d'une image : hyperframes_still, frame = numéro d'image (secondes × fps)
    • Si vous ne voulez pas ré-exporter la vidéo, utilisez hyperframes_snapshot avec at pour capturer directement depuis la composition, puis assemblez avec SHEET --images … --labels ….
  6. Après corrections, retournez à l'étape 0. Ne vous arrêtez que si un cycle complet ne révèle aucun problème.
  7. Version finale : hyperframes_render avec quality: "high" pour produire la vidéo finale, puis exécutez à nouveau l'étape 2 sur cette version, puis effectuez les vérifications audio (voir ci-dessous).

Liste de contrôle

Composition

  • Chaque image a un seul point focal. Si deux éléments se disputent l'attention, l'un deux doit attendre.
  • Pas de collision ou chevauchement non intentionnel, en particulier pendant les transitions où les éléments entrants et sortants partagent le même espace.
  • Zone de sécurité : le contenu important ne doit pas être à moins d'environ 60 px des bords.
  • La première image est une vraie image, pas du noir (ce sera la vignette sur les réseaux sociaux).

Texte

  • Pas coupé par un masque, un conteneur ou le bord de l'image (sauf intentionnel).
  • Réduit à la largeur d'un téléphone (la cellule de la planche), le message clé reste lisible.
  • Le texte ne bouge pas lorsqu'il doit être lu.
  • (nouveau dans cette version) Chinois : pas de fautes d'orthographe ; tout en caractères traditionnels, pas de caractères simplifiés ; ponctuation pleine chasse ; pas de caractères manquants (carrés ou polices visiblement différentes).

Rythme

  • Chaque état à lire est visible assez longtemps (voir section 4 de motion-design). Si dans les cellules du milieu de la pause le texte bouge encore, la pause est trop courte.
  • Les scènes se chevauchent, pas de coupure vers un écran vide.
  • La sortie est plus rapide que l'entrée.

Cohérence

  • Utilisez uniquement les couleurs de la palette :root ; la couleur d'accentuation marque le point important de cette image.
  • Un même élément a la même apparence dans toutes les scènes où il apparaît.

Audio (uniquement si la vidéo a du son)

  • Forme d'onde : video_audio_waveform vérifie que les pics sonores tombent sur les temps forts de la timeline TL.
  • Loudness (nouveau dans cette version, remplace l'original npm run wave) : ffmpeg -hide_banner -nostats -i <vidéo finale> -af ebur128=peak=true -f null - Consultez le résumé final pour Integrated loudness et True peak. Cible : −14 LUFS ±1, true peak ≤ −1 dBFS.
  • Pour les voix off en chinois, l'accent et l'émotion doivent être évalués à l'oreille par l'utilisateur, pas par un score (nouveau dans cette version).

Rapport

En fin de tâche, indiquez clairement : ce qui a été vérifié, ce qui a été corrigé, et sur quelle planche les résultats sont visibles. Ne déclarez pas une correction comme effectuée sans avoir ré-exporté et personnellement inspecté le résultat.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Skills associés