Que fait Premium Video Skill — v3.3 (Grille d'ancrage + Son) ?
==================================================
Une compétence d'orchestration agent senior qui convertit un script vocal en vidéo courte premium HyperFrames avec :
- Grille d'ancrage (kicker → hero → body → chip → présentateur, fixée en bas)
- Typographie cinétique (animation stagger mot par mot)
- Animations SVG (schémas techniques avec éléments animés)
- Cartes de preuve glassmorphisme + tiers inférieurs + écrans de fin
- Transitions par flou de mouvement
- Système audio complet (synthèse SFX, feuille de repères, mixage audio)
- Validation par contrat de design (porte prepare.py)
- Pipeline reproductible (scenes.sh → prepare.py → build_index.py)
Pipeline (l'ordre n'est pas négociable)
script vocal
│
▼
generate.py → new_scene.py → prepare.py → build_index.py
(parse) (fichiers scène) (valide) (HTML racine + wipes)
│ │
▼ ▼
npx hyperframes lint → npx hyperframes render
(porte 0 erreurs) (sortie MP4)
│
▼
python3 scripts/gen_sfx.py # synthèse SFX (une fois)
python3 scripts/mix_audio.py # VO + repères + fond → master.wav
ffmpeg mux → final.mp4
Étapes
# 1. Générer les compositions des scènes + HTML racine à partir du script vocal
python3 generate.py --script mon_script.txt --topic Tor --output index.html
# 2. Porte de validation (contraste, type, zone sûre, rythme de champ)
python3 scripts/prepare.py
# 3. Lint (doit être à 0 erreurs)
npx hyperframes lint
# 4. Aperçu et rendu
npx hyperframes preview
npx hyperframes render
# 5. Pipeline audio
python3 scripts/gen_sfx.py # synthèse de 14 SFX à partir de zéro
python3 scripts/mix_audio.py # VO + repères + fond → master.wav
ffmpeg -i rendered.mp4 -i renders/master.wav \
-c:v copy -c:a aac -shortest final.mp4
Grille d'ancrage (fixée en bas, invariante)
Chaque scène utilise la même moitié inférieure — seule la moitié supérieure se recompose :
| Ancrage | Élément | Position | Animation |
|---|---|---|---|
| 1 | Kicker | En haut à gauche | Glissement vers le haut depuis y:-26, fondu 0.32s |
| 2 | Hero | Bande supérieure (1–3 mots) | Échelle 1.3→1, dérive 44px→0, dérive lente vers le haut |
| 3 | Body | Carte / odomètre / lignes | Glissement vers le haut 56px→0, échelle .95→1 |
| 4 | Chip | Zone inférieure (3–6 mots) | Glissement vers le haut 30px→0, fondu 0.26s |
| 5 | Présentateur | En bas à droite, rogné par le cadre | Échelle .92→1, y:46→0, fondu 0.34s |
L'image 0 est une affiche — la scène 1 (data-cover="1") s'ouvre entièrement composée.
Cycle de six champs de couleur
Aucune scène voisine ne partage un champ d'arrière-plan :
accent → ground → ink → secondary → tertiary → quaternary
prepare.py échoue la construction si deux scènes consécutives partagent un champ.
Toutes les paires texte/arrière-plan respectent un contraste WCAG ≥ 4.5:1.
Système audio
Synthèse SFX (sans téléchargement, sans licence)
python3 scripts/gen_sfx.py crée 14 effets sonores :
| SFX | Utilisation |
|---|---|
pop.wav | Chaque coupure de scène |
click.wav / key.wav | Éléments d'interface, ticking de liste |
chime.wav | Révélation / score |
ping.wav | Notification |
notify.wav | Appel à l'action |
riser.wav | Grands retournements avant coupure |
impact.wav | Impact visuel fort |
whoosh.wav | Mouvement rapide |
error.wav | Erreur / rejet |
Feuille de repères — assets/sfx/cues.json
Décalages relatifs aux sections (survivent aux réenregistrements VO) :
{ "at": "scenes", "file": "pop.wav", "gain": 0.5 }
{ "at": "vo2-0.30", "file": "riser.wav", "gain": 0.3 }
{ "at": "vo9+0.55", "file": "notify.wav", "gain": 0.4 }
Mixage audio — scripts/mix_audio.py
- VO + repères SFX + fond musical →
renders/master.wav - Mesure la sonie avec
ebur128, corrige à −14 LUFS - Pic vrai ≤ −1 dBTP
alimiteraveclevel=false(evite le piège de l'auto-level)- Fond à volume 0.15 → −29 LUFS (~13 LU sous −16 LUFS de la VO)
- Pas de ducking sidechain — l'écart de niveau est le duck
Sujets techniques (animation automatique + preuve)
Lorsque le script contient un mot-clé reconnu, l'orchestrateur insère :
| Composant | Traitement |
|---|---|
| Diagramme SVG | Flux nœud-lien avec élément animé + animateMotion |
| Superposition de preuve | Carte glassmorphisme avec badges de source |
| Transition | Flou de mouvement avant l'animation |
| Repère audio | SFX "whoosh" au début de l'animation |
Reconnus : tor, onion, vpn, proxy, isp, relais, réseau, paquet, chiffrement, cybersécurité, dns, cdn, blockchain, ia, apprentissage automatique, et plus.
Formats de script d'entrée
Texte simple (auto-timing ~145 mots/min)
Même CV partout ? C'est pour ça que vous êtes rejeté.
Adaptez-le par entreprise.
Lisez la **description du poste**.
Un seul CV ne convient pas à toutes les entreprises. Personnalisez et soyez présélectionné.
Segments horodatés
[0-4s] Même CV partout ? C'est pour ça que vous êtes rejeté.
[4-10s] Adaptez-le par entreprise.
[10-14s] Lisez la **description du poste**.
Emphase : **mot** → aligné à droite, couleur de marque, poids 950, animation pop.
Fichiers
| Fichier | Objectif |
|---|---|
generate.py | Point d'entrée CLI |
orchestrator.py | Pipeline : parse → détecte → décompose → génère scènes → construit racine |
design_system.py | Jetons de design, règles d'alignement, validation |
PARAMS.json | Le SEUL fichier de design que vous éditez |
scripts/prepare.py | Porte de validation + injection de jetons |
scripts/new_scene.py | Générateur de composition de scène en grille d'ancrage |
scripts/build_index.py | HTML racine avec timing contigu + wipes adaptatifs |
scripts/gen_sfx.py | Synthèse SFX à partir de zéro |
scripts/mix_audio.py | VO + repères + fond → master.wav |
assets/sfx/cues.json | Feuille de repères relative aux sections |
scenes.sh | Modèle de liste de scènes reproductible |
compositions/_scene-base.html.tmpl | Squelette de grille d'ancrage |
compositions/wipe.html | Transition par flou de mouvement |
skill.md · skill.json | Documentation + schéma |
Prérequis
- Python 3 (bibliothèque standard)
- CLI HyperFrames :
npx hyperframes init / preview / render / lint - Node.js ≥ 22, FFmpeg
- ffprobe (pour mesure audio)
Licence
MIT — construisez dessus, partagez-le, vendez des vidéos avec.