Que fait Monologue Engageant (16:9) ?
Référence : Ali Abdaal, « How I'd Create Content in 2026 (If I Had To Start Over) » (youtu.be/A8PxRHQrLJ8, 16 min, 1080p).
Le langage de mouvement est copié de cette vidéo. Le rendu est celui du kit FringeLines v2.1 :
My Drive/FringeLines Design System files/Fringe Lines Design system v2_1/ et les tokens dans …/handoff/fringelines-tokens.css.
Ce qui fait fonctionner la référence
Mesuré sur la vidéo à 1 image toutes les 2 secondes, plus des échantillons denses autour des transitions.
- Environ 55% de plan poitrine simple. Une caméra fixe, plan américain. Cuts toutes les ~5 s (médiane) : environ 122 cuts en 16 min. Chaque cut alterne large et resserré, ce qui donne l’impression de coupes intentionnelles.
- Deux mises en page, jamais plus :
- Conférencier plein écran avec des éléments superposés : mentions tierces, cartouche colorée en haut à gauche avec une pastille d’étiquette, phrases blanches sérif en bas, puces colorées près de la tête, et une pastille sponsor/CTA en bas au centre.
- Canevas papier. L’orateur se réduit en incrustation portrait (coins arrondis, cadre blanc, côté droit, environ 400×560) pendant qu’un graphique se construit sur une page blanc cassé chaud avec un léger swoosh. Le canevas porte des phrases cinétiques, des cartes de feuille de route numérotées, des diagrammes en pastille, des pyramides et des captures d’écran ou des b-roll dans des cartes arrondies avec une légende en dessous.
- Pas de sous-titres continus. Le texte à l’écran est choisi. Une phrase à la fois, révélée mot à mot en rythme avec la parole. Chaque mot commence faible et flou, puis devient net. L’expression clé change de couleur.
- Les diagrammes se construisent pièce par pièce au fur et à mesure que chaque élément est dit. Les pastilles apparaissent avec un petit dépassement. Les couches de pyramide tombent d’en haut.
- La caméra se déplace à l’intérieur des graphiques. La feuille de route à 5 cartes revient à chaque chapitre, zoome sur la carte active et floute les autres.
- Les sorties se fondent en flou plutôt qu’elles ne coupent. Le passage plein↔PiP est un morphing rapide et progressif d’environ 0.4 s.
- Rythme : une nouvelle idée visuelle toutes les 10 à 20 s, un moment d’emphase (noir et blanc) par section, et une mention de tierce personne la première fois que chaque personne apparaît.
- Son : des whoosh doux lors des changements de mise en page et des pops légers lorsque les éléments se posent, restant bien sous la voix.
Comment cela se traduit sur FringeLines (ne pas s’écarter de cela)
| Référence | Version FringeLines |
|---|---|
| Sérif chaud avec rehauts corail | Instrument Serif pour tout le texte d’affichage. Le rehaut est une phrase italique, bleu encre #1A4F6B sur papier ou blanc sur vidéo. Orange #D4622A uniquement pour le nombre qui compte ([7 AM], la stat). |
| Sans arrondi dans les pastilles | Archivo 500–600 pour les pastilles, puces, éléments de liste, étiquettes de pile |
| Étiquettes en petites capitales | IBM Plex Mono 600, majuscules, +0.14em, ≥ 22 px : sourcils, pastilles d’étiquette, sources, méta |
| Cartouches dégradés corail/rouge | Dégradés du kit : vert (par défaut), bleu (deuxième idée), orange (avertissement ou « erreur ») |
| Cartes de feuille de route pastel | Lavis vert, bleu et orange, un badge de numéro mono et un connecteur orange en pointillés |
| Papier crème + swoosh | Papier #F7F7F5 avec un léger swoosh lavis vert |
| Ombres portées | Aucune. Surfaces plates, filets de 2 px #E3E5DF, cadre blanc sur le PiP, rayon 16–18 |
| Pastille sponsor | Pastille CTA blanche (fringelines.co / newsletter) avec un onglet orange mono « Lien dans la description » |
| Outro de chaîne | Carte de fin verte, la couverture Clip Slides : sourcil mono, règle orange, titre sérif avec une phrase italique, sous-titre Archivo, ● fringelines.co |
Les règles du kit s’appliquent toujours :
- une idée par écran ;
- un orange par écran ;
- le vert est la valeur par défaut, le bleu la comparaison ;
- chaque statistique a une
source; - rien en dessous de 22 px.
Composants
- Modèle :
pipeline/remotion/src/Monologue.tsx, la compositionMonologueà 1920×1080 / 30 ips. Il réutilise le suivi facial deShortV2.tsx. - Construction :
pipeline/build_monologue.py, qui comporte deux étapes,cutetrender. - Dossier de travail :
work/monologue/<slug>/contientclip.mp4,props.json,transcript.txt,beats.jsonetfaces.json. - Sortie :
out/monologue/<slug>.mp4, normalisé à -14 LUFS. - Exemple travaillé :
work/monologue/morning-loop-test/beats.json, un clip de 62 s de Quinn de l’épisode du 30 octobre.
1. Obtenir une prise
Un enregistrement 16:9 mono-caméra avec un bon son, une seule personne, environ 1 à 15 min. Placez-le dans inbox/monologue/<slug>/take.mp4.
Pour extraire un extrait solo d’un épisode, multiplexez la caméra avec sa piste sonore studio. Prenez les décalages à partir du XML de Descript avec build_short.xml_offsets ; voyez comment morning-loop-test a été fait :
ffmpeg -ss <t0-videoOffset> -t <dur> -i Quinn.mp4 -ss <t0-audioOffset> -t <dur> -i studio-sound-Quinn.m4a -map 0:v -map 1:a … take.mp4
2. Couper
~/.shorts-skill/bin/python pipeline/build_monologue.py cut --slug <slug> --src inbox/monologue/<slug>/take.mp4 \
[--range 12.0:95.5 --range 120:180] [--replace "gtm=>GTM" --replace "quick=>Quick"]
Ce que fait l’étape de coupe :
- Transcrit la prise avec Whisper (mis en cache dans
words-src.json). - Supprime les tics de langage, les bégaiements et les longues pauses, en utilisant le même planificateur que les courts-métrages.
- Alterne le resserrement (1.0 / 1.12, centré sur le visage) à chaque cut.
- Écrit
transcript.txt, avecmot@secondessur l’horloge coupée.
--replace ne corrige que les mots utilisés pour chronométrer les révélations ; rien n’est sous-titré automatiquement.
3. Écrire work/monologue/<slug>/beats.json
Lisez transcript.txt et planifiez les beats par rapport à celui-ci.
{"brand": "FringeLines", "beats": [
{"type": "title", "at": 0.2, "end": 2.0, "eyebrow": "FringeLines · Monologue", "text": "The *morning loop*"},
{"type": "name", "at": 2.1, "end": 5.4, "text": "Quinn", "role": "Host · Fringe Lines"},
{"type": "chips", "at": 3.0, "end": 7.4, "items": [{"text": "GTM loops", "at": 3.1}, {"text": "Coding loops", "at": 5.1, "tone": "blue"}]},
{"type": "text", "at": 7.6, "end": 11.3, "eyebrow": "What's a loop?", "text": "Loop's just a *stated goal* and then it works *autonomously*"},
{"type": "callout", "at": 11.5, "end": 16.2, "label": "The setup", "tone": "green", "text": "I use Quick Desktop with routines that execute at any time"},
{"type": "overlay", "at": 16.4, "end": 18.3, "text": "I usually run it at [7 AM]"},
{"type": "stack", "at": 22.4, "end": 36.4, "title": "My core team · 4 people", "items": [{"text": "Account executive", "at": 25.6}, "…"]},
{"type": "stat", "at": 51.2, "end": 55.1, "kicker": "My regular account team", "value": 14, "text": "people I'm interacting with on a regular basis", "source": "Quinn's own count · Fringe Lines, Oct 30 2026"},
{"type": "end", "at": 58.4, "end": 61.4, "text": "Building the *morning loop*", "sub": "The full walkthrough is in this week's episode."}
]}
Temps
- Les temps sont en secondes sur le clip coupé.
end(ouhold) ferme un beat, et sa sortie s’estompe en flou sur 0.3 s. - Le texte est révélé mot à mot en synchronisation avec la parole. Chaque mot de
textest apparié à la transcription à l’intérieur de la fenêtre du beat.- Citez le conférencier textuellement (de légères coupes sont acceptables) pour que la synchronisation fonctionne.
- Si le texte est une paraphrase, la révélation tombe par défaut sur une répartition uniforme. Forcez cela avec
"reveal": "even".
- Les temps
atdes éléments sont par défaut répartis uniformément. Définissez-les au moment où chaque élément est dit, environ 0.1 s avant le mot.
Markdown
*rehaut italique*: une phrase par écran.[nombre accentué]: orange, un par écran, nombres uniquement.
Types de beats
Conférencier plein cadre (superpositions) :
| type | champs | utilisation |
|---|---|---|
title | text, eyebrow? | Titre d’ouverture sur une image atténuée (2–3 premières s) |
name | text, role? | Mention tierce la première fois qu’une personne apparaît |
overlay | text | Une phrase parlée en blanc sérif en bas : la ligne que vous voulez retenir |
callout | text, label?, tone?, side? | Carte colorée en haut à gauche (ou à droite) avec une pastille d’étiquette mono : « Erreur #1 », « Le setup », « Règle » |
chips | items[{text, at, tone?}], side?, tone? | 2–3 tags courts apparaissant à côté de la tête : voix intérieure, noms, options |
cta | text, sub? | Pastille en bas : la newsletter, l’épisode ou l’offre. Une fois, généralement au milieu de la vidéo |
bw | (aucun) | Emphase noir et blanc sur le conférencier ; associez-le à un overlay |
media + "full": true | src, video?, from? | B-roll pleine page avec le conférencier dans le PiP |
Canevas papier (le conférencier passe en PiP) :
| type | champs | utilisation |
|---|---|---|
text | text, eyebrow?, align? | Une phrase cinétique : définitions, la thèse, la ligne « la plus importante… » |
stack | items[{text, at, tone?}] (bas→haut), title? | Pyramide ou couches : fondations → stratégie → résultat, couches d’équipe |
compare | title?, left{label, items}, right{label, items}, winner? | Comparaison A vs B : hobby vs revenu, avant vs après. Le perdant devient gris vers la fin |
roadmap | items[{text}] (≤6), active?, zoom? | Les chapitres de la vidéo. Montrez-la une fois au début, puis réutilisez-la par chapitre avec active = l’index du chapitre et zoom = quand zoomer |
steps | items[{text, at}], title? | Une liste numérotée avec des filets fins : spécialistes, outils, étapes |
stat | value, prefix?, suffix?, decimals?, kicker?, text, source | Un nombre comptant en orange ; source requise |
media | src, title?, meta?, video?, from? | Une capture d’écran ou un b-roll dans une carte arrondie avec une légende (titre + ligne méta mono). Les fichiers vont dans le dossier de travail |
end | text, eyebrow?, sub?, url?, tone? | La carte de fin verte (2–4 s) |
Les beats de canevas papier espacés de moins de 0.7 s restent dans la mise en page PiP, afin que le conférencier ne rebondisse pas.
Règles de rythme (d’après la référence)
- Commencez par un
titleet unname, tous deux dans les 5 premières secondes. - Les beats papier prennent 35 à 45% du temps d’exécution. Ne dépassez jamais ~20 s sans changement visuel, et ne restez jamais sur du papier plus de ~15 s.
- Alternez les deux mises en page. Ne faites pas deux
callouts dos à dos ; placez untextou un diagramme entre eux. - Une idée par beat. Limitez les beats
textà ≤ 14 mots et les callouts à ≤ 16. - Les éléments de diagramme atterrissent sur le mot, jamais tous en même temps. Le premier élément d’un diagramme doit atterrir dans la ~1 s suivant le début du beat ; sinon le beat commence plus tard.
- Sections :
- Montrez une
roadmapà la fin de l’intro. - Réutilisez-la à chaque début de section avec
activedéfini. - Fermez chaque section avec un
overlayde sa ligne clé, avecbwpour la plus importante.
- Montrez une
- Un
ctapar intervalle de 5 min au maximum, jamais dans les 30 premières secondes. - Terminez sur la carte
end. Elle peut dépasser le dernier mot.
Honnêteté
- Les nombres à l’écran doivent correspondre à ce qui a été dit, ou provenir d’une source nommée dans
source. - Les captures d’écran du contenu d’autrui doivent être créditées dans
meta. - Ne mettez pas de mots dans la bouche du conférencier : un beat
overlayoutextqui n’est pas une citation doit se lire comme une étiquette, pas comme un discours.
4. Rendu
~/.shorts-skill/bin/python pipeline/build_monologue.py render --slug <slug> [--sfx-db -22]
- Il suit le visage une fois (
faces.json; supprimez-le si vous recoupez). - Le temps de rendu augmente avec la longueur de la vidéo ; un test d’1 min a pris quelques minutes sur le Mac mini.
- Effets sonores : un whoosh à chaque changement de mise en page, un pop lorsqu’un élément atterrit, une montée avant le titre et les cartes de fin. Augmentez
--sfx-dbvers -18 pour plus d’énergie.
5. QA (toujours)
for t in 1.5 5 10 20 30 40 50 60; do ffmpeg -v error -y -ss $t -i out/monologue/<slug>.mp4 -frames:v 1 -vf scale=640:-1 /tmp/m_$t.png; done
Vérifiez chacun de ces points :
- Texte : aucun texte ne passe sous le PiP (la zone papier se termine à x = 1320). Les étiquettes de pile tiennent sur une ligne.
- Rehauts : pas de
*ou[isolés. Il y a au maximum un orange par écran. - Cadrage du visage : le visage est centré dans le PiP, et les resserrements ne coupent pas la tête.
- Temporisation des révélations : les révélations atterrissent sur le mot parlé. Si un beat montre des mots faibles pendant longtemps, son
atest trop tôt. - Loudness :
ffmpeg -i out.mp4 -af ebur128 -f null - 2>&1 | grep " I:"indique environ -14.
Faites un rapport à l’utilisateur :
- le temps d’exécution et la liste des beats (temps → type → texte) ;
- ce qui doit encore être vérifié : les nombres, les noms et les crédits des captures d’écran ;
- tout beat qui est retombé sur une révélation uniforme, car son texte n’était pas textuel.
Pas encore construit
- Une version 9:16 : la composition est uniquement 16:9. Pour le vertical, coupez un court-métrage avec le skill
editorial-short. - Planification automatique : écrire
beats.jsonest un jugement subjectif, donc cela se fait manuellement ou par Claude à partir detranscript.txt.