Communitygithub.com

Monologue Engageant (16:9)

Créez une vidéo FringeLines « monologue engageant » au format 16:9 à partir d’une prise unique filmée en plan poitrine : jump cuts avec resserrements, l’orateur se réduit en incrustation portrait tandis que du texte sérif cinétique, des diagrammes (pyramide, comparatif, feuille de route, étapes, statistique) et des cartes b-roll se construisent sur un canevas papier, le tout synchronisé mot à mot avec la parole. Idéal pour les vidéos YouTube explicatives, les commentaires solo, la transformation de newsletter en vidéo et les formats « une idée bien racontée ».

Qu'est-ce que Monologue Engageant (16:9) ?

Ce skill crée des vidéos de type « monologue engageant » au format 16:9, inspirées du langage visuel de la référence Ali Abdaal et utilisant le kit de design FringeLines v2.1. Il transforme une séquence filmée d’une seule personne (plan poitrine fixe) en un contenu dynamique, en alternant deux mises en page : le conférencier en plein écran avec des superpositions (cartouches, chips, mentions) et un canevas papier où l’orateur passe en incrustation portrait (PiP) pendant que des éléments graphiques (textes cinétiques, diagrammes, cartes) se construisent progressivement. Le texte apparaît mot à mot en synchronisation avec la parole, chaque mot s’affichant d’abord flou puis net. Le pipeline est conçu pour les créateurs de contenu solo, les vidéos explicatives et les formats newsletter-vidéo. Il nécessite de fournir une vidéo brute, de la découper (suppression des tics de langage, jump cuts alternés), puis de rédiger un fichier de « beats » (structuration des séquences visuelles) avant de lancer le rendu final via un pipeline Python basé sur Remotion. Le système prend en charge les diagrammes de type pyramide, comparatif, feuille de route, étapes numérotées et statistiques, ainsi que les cartes d’appel, les pastilles, les mentions et une carte de fin verte. La sortie est un fichier MP4 normalisé à -14 LUFS.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/qdevery/fringe-lines-video/tree/main/.agents/skills/engaging-monologue

Demander à votre IA préférée

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

Documentation

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 :
    1. 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.
    2. 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érenceVersion FringeLines
Sérif chaud avec rehauts corailInstrument 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 pastillesArchivo 500–600 pour les pastilles, puces, éléments de liste, étiquettes de pile
Étiquettes en petites capitalesIBM Plex Mono 600, majuscules, +0.14em, ≥ 22 px : sourcils, pastilles d’étiquette, sources, méta
Cartouches dégradés corail/rougeDégradés du kit : vert (par défaut), bleu (deuxième idée), orange (avertissement ou « erreur »)
Cartes de feuille de route pastelLavis vert, bleu et orange, un badge de numéro mono et un connecteur orange en pointillés
Papier crème + swooshPapier #F7F7F5 avec un léger swoosh lavis vert
Ombres portéesAucune. Surfaces plates, filets de 2 px #E3E5DF, cadre blanc sur le PiP, rayon 16–18
Pastille sponsorPastille CTA blanche (fringelines.co / newsletter) avec un onglet orange mono « Lien dans la description »
Outro de chaîneCarte 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 composition Monologue à 1920×1080 / 30 ips. Il réutilise le suivi facial de ShortV2.tsx.
  • Construction : pipeline/build_monologue.py, qui comporte deux étapes, cut et render.
  • Dossier de travail : work/monologue/<slug>/ contient clip.mp4, props.json, transcript.txt, beats.json et faces.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 :

  1. Transcrit la prise avec Whisper (mis en cache dans words-src.json).
  2. Supprime les tics de langage, les bégaiements et les longues pauses, en utilisant le même planificateur que les courts-métrages.
  3. Alterne le resserrement (1.0 / 1.12, centré sur le visage) à chaque cut.
  4. Écrit transcript.txt, avec mot@secondes sur 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 (ou hold) 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 text est 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 at des é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) :

typechampsutilisation
titletext, eyebrow?Titre d’ouverture sur une image atténuée (2–3 premières s)
nametext, role?Mention tierce la première fois qu’une personne apparaît
overlaytextUne phrase parlée en blanc sérif en bas : la ligne que vous voulez retenir
callouttext, label?, tone?, side?Carte colorée en haut à gauche (ou à droite) avec une pastille d’étiquette mono : « Erreur #1 », « Le setup », « Règle »
chipsitems[{text, at, tone?}], side?, tone?2–3 tags courts apparaissant à côté de la tête : voix intérieure, noms, options
ctatext, 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": truesrc, video?, from?B-roll pleine page avec le conférencier dans le PiP

Canevas papier (le conférencier passe en PiP) :

typechampsutilisation
texttext, eyebrow?, align?Une phrase cinétique : définitions, la thèse, la ligne « la plus importante… »
stackitems[{text, at, tone?}] (bas→haut), title?Pyramide ou couches : fondations → stratégie → résultat, couches d’équipe
comparetitle?, 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
roadmapitems[{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
stepsitems[{text, at}], title?Une liste numérotée avec des filets fins : spécialistes, outils, étapes
statvalue, prefix?, suffix?, decimals?, kicker?, text, sourceUn nombre comptant en orange ; source requise
mediasrc, 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
endtext, 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 title et un name, 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 un text ou 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 active défini.
    • Fermez chaque section avec un overlay de sa ligne clé, avec bw pour la plus importante.
  • Un cta par 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 overlay ou text qui 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-db vers -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 at est 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.json est un jugement subjectif, donc cela se fait manuellement ou par Claude à partir de transcript.txt.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

Skills associés