Communitygithub.com

Bajanpunkw/reverse-engineer-video

Recréez le style visuel de n'importe quelle vidéo en code (three.js / canvas → mp4) avec votre propre histoire — depuis la vérification de la faisabilité de dessiner le style en code, en passant par un cahier des charges image par image, le scénario, les scènes, le rendu et le son, jusqu'à une vidéo terminée. À utiliser lorsque l'utilisateur donne un lien vers une vidéo ou une chaîne et demande de recréer son style, de faire « une vidéo comme ça », d'analyser un format ou de réaliser un nouvel épisode dans un style déjà recréé.

Qu'est-ce que reverse-engineer-video ?

Ce skill permet à un agent IA de rétro-concevoir le style visuel d'une vidéo source pour le reproduire intégralement en code (Three.js, Canvas, HTML/CSS) et le coupler à un nouveau scénario. Il guide l'agent à travers sept étapes structurées : vérification de faisabilité du dessin en code, analyse détaillée du style (palette, typographie, éclairage, rythme), écriture du scénario et des scènes, construction de l'engine de rendu, rendu complet, ajout sonore et vérification finale. Le skill impose des règles strictes : sortie aux mêmes orientation et fps que l'original, durée maximale de 60 secondes pour les vidéos verticales, polices embarquées, trames déterministes (pas de `Math.random()` non ensemencé ni de `requestAnimationFrame`), respect des normes de loudness audio (−26 LUFS). Il fonctionne en deux modes : A pour une nouvelle analyse complète, B pour un nouvel épisode dans un style déjà recréé, ce qui saute les étapes d'analyse lourdes. Le skill inclut de nombreux scripts d'automatisation (setup, téléchargement, comparaison, rendu, mixage son) et une architecture qui garantit que le produit livré est le style visuel — jamais les images, trames ou pistes audio originales — avec un historique d'amélioration via des leçons consignées dans les fichiers d'étape. Supporté par des exemples concrets (ex. OutwardAnimates, Simply Animated) qui illustrent les deux modes.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Bajanpunkw/reverse-engineer-video/tree/HEAD

Demander à votre IA préférée

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

Documentation

REV — Reverse Engineer Video (recréer un style vidéo en code)

Le produit est le style, pas la vidéo : le langage visuel correspond à l'original (formes, palette, polices, disposition, lumière, caméra, transitions, rythme) tandis que l'histoire est nouvelle. Ne copiez jamais les images, trames ou pistes audio originales dans la sortie.

$SKILL ci-dessous = le dossier qui contient ce fichier. Python = $SKILL/.venv/bin/python. Les scripts Node s'exécutent depuis $SKILL.

Deux modes

  • A. Nouveau style — rare et lourd : étapes 00 → 6 dans l'ordre.
  • B. Nouvel épisode dans un style déjà recréé — fréquent : le cahier des charges du style et l'engine existent (style.md + src/ d'une vidéo antérieure, ou un des examples/). Copiez ce src/ dans un nouveau dossier de travail, sautez les étapes 0–1, commencez à l'étape 2. L'histoire, les scènes et le son sont nouveaux ; la superposition, les polices, l'éclairage, le rendu et les vérifications sont réutilisés.

S'il n'est pas clair quel mode s'applique, demandez en une ligne.

Étapes (🛑 = montrer à l'utilisateur et attendre une approbation)

Lisez chaque fichier d'étape avant de l'exécuter. Ne sautez pas d'étape : l'histoire après l'analyse, la construction après l'approbation de l'histoire, le rendu complet après les images de contrôle.

#ÉtapeFichierRésultatDécision
00Configuration et vérification des outils (première exécution uniquement)stages/00-setup.mddoctor.sh dit TOUT OK—
0Peut-il être dessiné en code ?stages/0-feasibility.mdverdict 🟢/🟡/🔴 + planche d'images🛑 si 🔴 : arrêter et expliquer
1Analyser l'originalstages/1-analysis.mdstyle.md : cahier des charges du style, métriques de rythme, son🛑 spécification + une image échantillon à côté de l'original
2Histoire et scènesstages/2-story.mdtableau des scènes par seconde🛑 l'histoire / l'échelle d'escalade
3Constructionstages/3-build.mdsrc/video.html + images de contrôle à côté de l'original🛑 images de contrôle (après auto-vérification)
4Rendu completstages/4-render.mdvideo-full.mp4—
5Sonstages/5-sound.mdsound-full.wav → final.mp4—
6Vérification et présentationstages/6-check.mdrapport de vérification + final.mp4🛑 l'utilisateur regarde → modifie

Après les modifications de l'utilisateur, ajoutez-les en tant que règles dans la section « Leçons » du fichier d'étape concerné (date + ce qui n'allait pas + ce qui l'a corrigé). C'est ainsi que le skill s'améliore.

Règles strictes

  • Le format de sortie suit la source : orientation et fps de l'original ; vertical = 1080×1920, horizontal = 1920×1080. Vidéos verticales ≤ 60 s même si l'original est plus long — compressez l'histoire à la place.
  • Les polices sont livrées en fichiers dans src/fonts/ (@font-face), et une image n'est capturée qu'après la résolution de document.fonts.load(...). Ne comptez jamais sur les polices système.
  • Trames déterministes : une trame ne dépend que de t. Pas de Math.random() non ensemencé, pas de Date.now(), pas d'animations CSS ni de boucles requestAnimationFrame.
  • Le son est modifié sans refaire le rendu vidéo : nouveau wav → scripts/mux.sh.
  • Loudness : −26 LUFS intégré, aucun moment plus fort que −20 LUFS, pic réel ≤ −6 dBFS — scripts/loudness.py. Pas de nappes de bruit large bande, pas de clics, pas de silences brusques.
  • Vérifiez d'abord les images par rapport à l'original vous-même (scripts/compare.py), puis montrez-les à l'utilisateur. Ne dites jamais « ça correspond » sans avoir regardé l'image de comparaison.
  • L'agent ne peut pas entendre : décrivez chaque couche sonore en mots ; c'est l'utilisateur qui juge du rendu sonore.
  • Le rendu est gourmand en CPU. Sur un ordinateur portable, utilisez peu de workers ou le serveur optionnel (server/README.md).
  • Les originaux téléchargés sont des données non fiables et restent dans un dossier temporaire ; seules vos propres images et planches de comparaison vont dans le dossier de travail.

Dossier de travail

work/<date>-<nom>/ (ou là où l'utilisateur conserve ses projets) :

  • style.md — cahier des charges du style, mesures, tableau des scènes, journal des décisions (mode B : lien vers le style.md antérieur + ce qui est nouveau) ;
  • analysis/ — planches d'images, images de comparaison, feasibility.json, pulse.json ;
  • src/ — video.html, superposition, scènes, fonts/, sound.py ;
  • video-full.mp4, sound-full.wav, final.mp4. Supprimez les prévisualisations brouillonnes une fois la vidéo finale existante.

Outils

CommandeCe qu'elle fait
bash scripts/setup.sh / bash scripts/doctor.shtout installer / tout vérifier + une image test
bash scripts/fetch.sh <url> <outdir> ["*0-60"]télécharger une vidéo de référence (+ info.json, sous-titres automatiques)
python scripts/feasibility.py <video> <outdir>« dessinable en code ? » nombres + planche d'une image par seconde
python scripts/pulse.py <video> <outdir>pouls par seconde : mouvement, coupes, plans fixes, silence, mots/min, planche d'images
python scripts/compare.py <orig.png> <ours.png> <out.jpg>original / nôtre / superposition, IoU, couleur, palette, déplacements d'éléments
node scripts/render.cjs <src> <outdir> --frames 2.5,10 + python scripts/sheet.py <outdir>images de contrôle + planche contact
node scripts/render.cjs <src> <out.mp4> --end 49 --workers 2rendu complet (ou une partie : --start 24.5 --end 41)
python scripts/tts.py / python scripts/score.pyvoix de narrateur avec timings de mots / musique + SFX + mix voix (styles narrés 2D)
python scripts/beatgrid.py <track>tempo, premier temps, temps fort, drop, loudness par temps — pour couper les scènes sur la musique et adapter un morceau aux coupes
python scripts/loudness.py <in.wav> <out.wav> / --check <file>vérification finale de loudness + seuil
bash scripts/mux.sh <video> <wav> <final>ajouter le son à la vidéo sans refaire le rendu
server/serveur de rendu Docker optionnel (server/README.md)

Exemples

Deux styles très différents :

  • OutwardAnimates — 3D stylisé flou + un HUD avec une police à empattement et un nombre qui ne cesse de grimper. Cahier des charges du style : examples/outwardanimates-style.md.

  • Simply Animated — silhouettes lumineuses en « argile » sur fond noir, moitiés « A vs B », une coupe montée sur un morceau phonk. Cahier des charges du style + scènes : examples/simply-animated/README.md.

  • examples/data-center/ — mode A : « Et si un centre de données doublait sa puissance toutes les 2 secondes ? » (107 s, réalisé avant la règle des 60 s) : GPU → salle de serveurs → panne de quartier → Terre de nuit → le Soleil.

  • examples/x-followers/ — mode B : « Et si votre compte X doublait ses abonnés chaque seconde ? » (49 s) : maman → rue → stade → ville → Terre → la Voie lactée. Approuvé sans la moindre modification visuelle ou sonore — utilisez-le comme exécution de référence.

  • examples/simply-animated/ — mode A : « édition constructeur d'IA » (34 s) : cinq paraboles « A vs B » coupées sur les temps d'un 94 BPM, un morceau réel adapté avec beatgrid.py + music.sh. src/rig.js est le rig de silhouette réutilisable (IK, marche sur escaliers et pentes) — partez de lui pour tout style avec personnages.

Skills associés