Court editorial (Fringe Lines)
Le style est calqué sur les shorts de Greg Isenberg. Tenez chaque court à ces règles :
- Ne restez jamais sur un plan visage pendant plus de ~6 s.
- Un changement graphique ou de mise en page se produit toutes les 3–5 s.
- Les sous-titres apparaissent mot par mot, avec quelques mots-clés en italique orange.
- Les graphiques suivent ce qui est dit, donc un graphique tombe sur le mot qu'il illustre.
0. Prérequis (par machine)
pipeline/setup.shinstalle le venv~/.shorts-skillet les modules Remotion node_modules dans~/.cache/fringe-lines-video.- Les transcriptions de l'épisode doivent exister :
work/<ep>/words-quinn.jsonetwords-doom.json(provenant depipeline/transcribe_verbatim.py). - Source Remotion :
pipeline/remotion/src/ShortV2.tsx(mise en page) etGraphics.tsx(types de graphiques).
1. Choisir le moment (30–50 s)
- Parcourez les fichiers de mots pour trouver une prise autonome qui a :
- une phrase d'accroche forte (affirmation, chiffre ou confession) ;
- une idée ;
- une chute ou un punchline vers la fin.
- Bon indicateurs :
- des chiffres concrets (pourcentages, montants en dollars, effectifs) ;
- des noms d'entreprises ou de produits ;
- un avis contradictoire ;
- une expérience personnelle (« J'ai laissé Codex… »).
- Évitez les extraits qui dépendent du contexte précédent (« comme je disais », « cette chose »).
- Plusieurs
--rangepeuvent être assemblés. Coupez en fin de phrase et vérifiez que la jointure ne répète pas de mots.
2. Le couper
Ajoutez une ligne à work/<ep>/shorts.sh et exécutez-la :
b --name short-NN --range START:END [--range ...] --replace "27=>27%" --replace "claude=>Claude"
build_short.pyfait ce qui suit :- supprime les remplissages, bégaiements et longues pauses ;
- choisit la caméra active ;
- écrit
work/<ep>/short-NN/clip.mp4etprops.json; - rend le court simple v1.
--replacecorrige le texte des sous-titres. Un côté droit vide masque ce mot.- Toujours corriger : les chiffres ("27"→"27%"), les noms de produits (Claude, Codex, Descript, GTM, SQL) et les erreurs de Whisper.
- Pour obtenir les timings de sortie exacts pour écrire le cahier des charges, imprimez-les :
python3 -c "import json;p=json.load(open('work/<ep>/short-NN/props.json'));print(' '.join(f\"{w['text']}@{w['startMs']/1000:.1f}\" for w in p['words']))"
3. Écrire le cahier des charges stylistique : work/<ep>/short-NN/style.json
{
"hook": {"text": "Microsoft veut que *27%* de son personnel démissionne", "end": 2.8},
"outro": {"text": "Grandir *sans* augmenter *l'effectif*", "hold": 2.0},
"emphasis": ["microsoft", "27%", "leave"],
"scenes": [
{"at": 0.0, "mode": "full"},
{"at": 3.0, "mode": "graphic", "graphic": {"type": "stat", "kicker": "Offre de rachat Microsoft", "value": 27, "suffix": "%", "label": "des employés se sont vu offrir un paiement pour *partir*"}},
{"at": 6.2, "mode": "card"}
]
}
Les temps sont en secondes dans l'extrait coupé, tirés des timings de mots à l'étape 2.
Règles pour rester cohérent :
- Structure :
- La scène 0 est toujours
full, avec unehookde 4 à 8 mots qui se termine à ~2,5–3 s. - Énoncez l'affirmation ; ne résumez pas l'extrait.
- La scène 0 est toujours
- Rythme :
- Alternez les modes comme
full→graphic→card→graphic→card… avec 3 à 6 graphiques dans un court de 40 s. - Utilisez à nouveau
fullpour une réaction percutante ou un rire dans la seconde moitié.
- Alternez les modes comme
- Timing :
- Commencez chaque graphique 0,1–0,3 s avant le mot qu'il illustre et maintenez-le 2,5–5 s.
- Deux graphiques peuvent se suivre directement, par exemple une carte à 20 $ puis une carte à 100 $.
- Emphase : choisissez 10 à 18 mots-clés : chiffres, noms et les mots du punchline. La correspondance est en minuscules, en ignorant la ponctuation.
- Accents : dans tout champ de texte,
*mot*rend en italique orange. Utilisez-en un ou deux par chaîne. - Outro : une carte de fin de 2 s avec une courte ligne qui réaffirme le message clé, ou une question pour le spectateur.
- Honnêteté :
- Les chiffres à l'écran doivent correspondre à ce qui a été dit dans l'émission.
- Les graphiques sont schématiques : utilisez des
linesavec des formes, jamais d'axes ou de valeurs inventés. - Tempérez avec « environ » ou « ~ » lorsque l'intervenant le fait.
Types de graphiques (Graphics.tsx) :
| type | champs | utilisation |
|---|---|---|
stat | kicker, prefix, value (nombre, compte à rebours), decimals, suffix, label | un chiffre titre |
people | kicker, value (chaîne), label, filled (0–1) | effectif / part de personnes |
lines | kicker, series: [{label, shape: up|flat|down}], caption | tendance vs tendance |
quote | text, by? | le punchline, dit à l'écran |
headline | source, title, highlight | actualités, annonces, un « verdict » |
list | title, items[] | étapes, produits, ce qui a mal tourné |
Si un nouveau type de graphique est nécessaire, ajoutez-le à Graphics.tsx et à son type union. Conservez le style carte : carte blanche ou encre, rayon de 36px, une entrée ressort, et une animation qui s'exécute sur son cadre local f.
4. Rendu
~/.shorts-skill/bin/python pipeline/style_short.py --ep <ep> --name short-NN --spec work/<ep>/short-NN/style.json
- La piste du visage (
pipeline/face_track.py, YuNet) est calculée une fois et mise en cache dansshort-NN/faces.json. Elle maintient le PiP rond et la carte centrés sur le visage ; supprimez le fichier si l'extrait est recoupé. - Les effets sonores sont synthétisés : un whoosh à chaque changement de scène et un pop lorsqu'un graphique atterrit. Ils sont mixés à
--sfx-db -20. - Loudness : −14 LUFS.
- Sortie :
out/shorts/<ep>-short-NN-v2.mp4.
5. QA (toujours, avant de faire un rapport)
Extrayez des images et regardez-les :
for t in 1.5 5 10 15 20 25 30 35 40; do ffmpeg -v error -y -ss $t -i out/shorts/<ep>-short-NN-v2.mp4 -frames:v 1 -vf scale=270:-1 /tmp/q_$t.png; done
Vérifiez chacun de ces points :
- Accroche : lisible et ne couvrant pas le visage.
- Graphiques : ils ne chevauchent pas le bloc de sous-titres, qui se trouve à y≈1340–1600. Aucun texte ne déborde d'une carte. Les longues valeurs de statistiques comme "+$500K" se réduisent automatiquement.
- PiP : le visage est centré dans le cercle.
- Sous-titres : pas de
*errant ; les mots-clés s'affichent en orange. - Loudness :
ffmpeg -i out.mp4 -af ebur128 -f null - 2>&1 | grep " I:"donne environ −14.
Faites un rapport à l'utilisateur :
- Le sujet du court et sa durée.
- Les éventuels chiffres à vérifier.
- Le cas échéant, le langage explicite restant.