Créations AgroPerforma · Fábrica Blindada
Pipeline d'édition de contenus verticaux (Reels/Ads) construit sur HyperFrames
(npx hyperframes …). Chaque création devient un projet avec une recette en JSON
(creative.base.json) que template.html transforme en composition.
Règles détaillées du client, décisions et historique des retours :
references/regras-do-cliente.md. À lire avant d'éditer — elles priment sur tout autre modèle ici.
Flux obligatoire (3 approbations)
- Découpage → aperçu 1080p léger (
cut.py --preview) + nom suggéré (code + surnom, ex.AP-08 · Tout dépend de vous). L'utilisateur approuve. - Ébauche → images clés des mouvements/sous-titres (
hyperframes snapshot), pas la vidéo entière. Pour un changement de dynamique (zoom), envoyer un aperçurender -q draft. - Exécution → recadrage en 4K (
cut.pysans--preview) +render4k.sh(4K 24 ips) +barscan.sh(bordure noire).
Une vidéo à la fois, de bout en bout. Whisper large‑v3 + ffmpeg 4K + rendu en parallèle surchauffent et redémarrent le MacBook.
Environnement
- Le SSD du client est en exFAT (pas de liens →
hyperframes initéchoue). Travaillez sur un volume APFS monté dans/Volumes/AGROPERFORMA-HF(scripts/montar.sh). Les scripts supposent ce chemin :projets/<code>/,projets/_kit/(= ce dossierscripts/+assets/),_scratch/(temporaires,faces.swift,shift.swift). source scripts/env.shdans chaque commande : TMPDIR, historique et caches d'HyperFrames restent sur le volume, jamais sur le disque du Mac.- Le volume se démonte au redémarrage de l'application — remonter avant chaque étape ; tâches longues avec
nohup caffeinate -i. - Police : Helvetica Now Display Bold (sous licence — pas dans le dépôt ; copiez-la dans
projets/_kit/fonts/).
Étape 1 — Découpage
| Étape | Outil |
|---|---|
| Canal de la voix (micros différents sur L et R ; prendre le plus fort, vérifier qui parle quand la direction apparaît) | prep_lote.sh (niveaux + transcription) |
| Phrases du brut, transcrites une par une (les longues pauses de Whisper sont inexactes) | phrasemap.py <wav> |
| Pauses > 0,2 s supprimées, 0,07 s de respiration | plan.py <wav> a:b … --gap 0.2 --pad 0.07 |
| Bafouillages ("de, du", "un, une", "cli… clique") : RMS 20 ms + fusionner les candidats et transcrire le résultat ; isoler la syllabe confirme | fine.sh, chunk.sh |
Coupe continue alignée sur l'image (un seul <video> → le LUT ne "hache" jamais), canal choisi des deux côtés, fondu 0,5 s + 0,7 s vers le noir | cut.py [--preview] [--no-fade] [--multi] |
Commence au début réel de la parole ; se termine ~0,5 s après le dernier mot avec fondu (sauf si la personne détourne le regard à la fin → --no-fade).
Étape 2 — Recette (creative.base.json)
{
"theme": "green", // green = AgroPerforma (#62AE46) · blue = Fábrica Blindada (#1f4cd7/#0c1f51)
"adjust": {"highlights": -0.25, "shadows": -0.15}, // ou "exposure": 0.15
"trackMode": "shot", // centre le visage 1× par segment de zoom
"cam": [{"start": 0, "end": 6.78, "s": 1.12, "to": 1.04, "cx": 0.5}],
"captions": [["texte statique", 1.12, 2.48]],
"motions": [{"start": 5.45, "end": 6.78, "top": 900,
"items": [{"text": "Tout dépend de vous ?", "at": 5.45, "kind": "secondary", "check": true, "ring": 5.8}],
"arrow": 6.2}]
}
analyze.sh <projet>→ visage par image (Apple Vision) + transcription du montage ;caps.pygénère les sous-titres automatiques (groupes de 2–4 mots, corrige "Et/Et puis/Heu", fusionne les orphelins).mkcfg.py <projet>→ complète le zoom/le suivi et génèreindex.htmlviabuild.py.- Sous-titre statique au milieu de l'image, disparaît lorsqu'une animation est à l'écran.
- Types : court (CTA ~10–15 s) uniquement animations · moyen sous-titre + animations sur mots-clés ·
-GRANDEuniquement sous-titre + animation de CTA final. - Zoom calme : ~5 segments sur 40 s, ≥ 6 s entre les changements, uniquement lors d'un changement de raisonnement ; alterne zoom avant/arrière. Visage centré par segment, cadrage limité image par image à la marge du zoom (n'affiche jamais de bordure).
Étape 3 — Exécution
python3 scripts/cut.py "<brut>.MP4" media/cut.mp4 L <a:b> … # 4K
python3 scripts/mkcfg.py projets/<code>
HF_DEST="<dossier EDICAO>" scripts/render4k.sh <code> <Nom>_v1_4K
scripts/barscan.sh "<dossier EDICAO>/<Nom>_v1_4K.mp4" # 0 images avec bordure noire
Enregistrez tout dans le PROJETO.md du projet (brut, canal, texte, ce qui a été retiré, versions) et dans projets/CATALOGO.md. Versions numérotées, jamais écrasées.
Exemples
examples/ contient des recettes réelles (creative.*.json), PROJETO.*.md, le générateur de variations d'accroche (ap08_variants.py — même corps, trois phrases d'ouverture) et des files de rendu (fila_*.sh).