Introduction de podcast long format (cold open)
Le look est inspiré des introductions long format de Greg Isenberg. Ce qui la rend engageante :
- Ouvrir sur la réplique la plus forte, sans logo d'abord.
- Couper toutes les 3 à 6 secondes.
- Faire d'une coupure sur deux une coupure graphique : l'intervenant glisse vers une carte à gauche tandis qu'un graphique apparaît à droite.
- Garder les légendes courtes : 1 à 3 mots, avec des mots-clés en orange.
- Terminer sur le titre : une carte qui montre ce qui va suivre.
Le pipeline est pipeline/build_episode.py, piloté par work/<ep>/episode.json → intro. Le rendu utilise la composition Remotion IntroV2 (pipeline/remotion/src/IntroV2.tsx) ; les graphiques viennent de Graphics.tsx.
1. Extraire les clips de l'épisode (8 à 10 candidats, en garder 7 à 9)
- Lire la transcription (
work/<ep>/words-*.json, ou le.txtde Descript) et lister les répliques qui se suffisent à elles-mêmes en moins de 6 secondes. - Par ordre de préférence :
- Un chiffre choc : « payer 27 % de leurs employés pour qu'ils partent », « rétention de 900 % du chiffre d'affaires ».
- Une affirmation ou une prédiction audacieuse : « les tokens vont s'infiltrer partout ».
- Une confession ou une douleur partagée : « je suis tellement fatigué de payer des abonnements ».
- Une réaction drôle ou émotionnelle : « je ferais du token maxing ».
- Une conclusion mémorable : « on ne peut pas mettre un prix sur la superintelligence ».
- Répartir sur les sujets : environ un clip par chapitre, les deux animateurs représentés, au moins un rire.
- Ordonner le montage :
- Le clip 1 est l'accroche la plus forte, généralement un chiffre ou une affirmation.
- Alterner les intervenants et l'énergie.
- Placer la réplique la plus mémorable en dernier, juste avant le carton titre.
- Éviter :
- les répliques nécessitant du contexte (« comme je disais », « ce graphique ») ;
- les répliques de plus de ~6 secondes ;
- les répliques avec des chevauchements de voix.
- Jurons : ne les garder que si l'utilisateur est d'accord avec une introduction explicite, et le mentionner dans le rapport.
2. Configurer episode.json → intro
"title": "FRINGE LINES",
"subtitle": "30 octobre 2026",
"intro": {
"style": "v2",
"title": "Fringe Lines",
"title_seconds": 4.5,
"topics": ["The Morning Loop", "Effectifs Microsoft", "Construire vs. Acheter", "Limites des tokens", "Google vs. mode IA", "S-1 d'Anthropic", "Dépenses IA"],
"emphasis": ["27%", "partir", "900%", "rétention", "sql", "agents", "tokens", "tout", "maxing"],
"clips": [
{"say": "microsoft vient de proposer", "until": "aux employés de partir", "tag": "IA & emplois", "replace": {"27": "27%"},
"graphic_on": "27%", "graphic": {"type": "stat", "kicker": "Offre de rachat Microsoft", "value": 27, "suffix": "%", "label": "des employés se sont vu proposer une prime pour *partir*"}},
{"say": "les tokens vont s'infiltrer", "until": "comme internet", "tag": "Les tokens partout"}
]
}
say/until: les premiers et derniers mots prononcés du clip, correspondance insensible à la casse et à la ponctuation. La correspondance est la première occurrence dans l'épisode, donc rendezsaydistinctif (3 à 5 mots). Si l'autre intervenant parle par-dessus la réplique, le matcher réessaie en utilisant uniquement les mots d'un seul intervenant.pre: secondes optionnelles de pré-roll avantsay.tag: l'étiquette du sujet affichée en haut à gauche avec son numéro. Utilisez 1 à 3 mots.replace: corrections de légende, par exemple des chiffres, « séquelle » → « SQL », ou"a": ""pour masquer un mot.graphic+graphic_on: la coupure graphique apparaît environ 150 ms avant le mot parlégraphic_on.graphic_offoptionnel (un mot ultérieur) pour revenir au plein écran.- Sans
graphic_off, la coupure reste jusqu'à la fin du clip.
- Nombre de coupures graphiques : ajoutez des coupures à 3 à 5 clips. Choisissez ceux qui contiennent un chiffre, une entreprise ou un produit nommé, ou une réplique mémorable. Laissez les réactions et les rires en plein écran.
- Types de graphiques (identiques aux courts métrages éditoriaux) :
stat: un chiffre compté avec un accrocheur et un libellé ;people: une grille d'icônes ;lines: courbes de tendance schématiques ;quote: une carte encrée ;headline: une carte de type actualité avec un balayage de surbrillance ;list: lignes numérotées.- Utilisez
*mot*pour l'italique orange.
- Honnêteté : les chiffres à l'écran doivent correspondre à ce qui a été dit. Les graphiques sont schématiques, jamais des données inventées.
topics: 5 à 7 noms de chapitres courts pour le carton titre, dans l'ordre de l'épisode.emphasis: 12 à 25 mots-clés affichés en orange dans les légendes : chiffres, noms, mots chocs.title_seconds: 4 à 5 secondes. Le carton titre est « Fringe Lines » en sérif avec un dernier mot en italique orange, la date et une liste « Dans cet épisode ».
3. Vérifier le plan avant le rendu
~/.shorts-skill/bin/python pipeline/build_episode.py --ep <ep> --stage plan
- Il affiche l'étiquette, la durée et le texte de la légende de chaque clip d'introduction.
- Corrigez tout
WARN intro clip not found: ajustez les formulationssay/untilpour correspondre exactement à la transcription. - Objectif total : clips de 35 à 50 secondes plus un titre de 4,5 secondes. Supprimez ou réduisez les clips de plus de 6 secondes.
- Lisez chaque ligne de légende pour détecter les mots mal compris et ajoutez des corrections
replace.
4. Rendu
~/.shorts-skill/bin/python pipeline/build_episode.py --ep <ep> --stage graphics # clips d'intro + IntroV2 + tiers inférieurs
~/.shorts-skill/bin/python pipeline/build_episode.py --ep <ep> --stage final # joint intro + corps, chapitres, volume
- Ajoutez
--bluraux deux commandes pour la version avec arrière-plan flouté. Cela nécessite les caméras floutées dans~/.cache/fringe-lines-video/blur/(voirpipeline/bg_blur.py) et écrit<ep>-fringe-lines-blur.mp4à partir d'un cache séparé. - Le corps n'a pas besoin d'être rendu à nouveau pour les modifications de l'introduction.
- Le fichier des chapitres est régénéré, donc tous les horodatages se décalent avec la longueur de l'intro.
- Les effets sonores (whoosh, pop, long whoosh menant au titre) sont générés dans le dossier des graphiques et mixés par Remotion.
5. Assurance qualité
F=out/episode/<ep>-fringe-lines.mp4
ffmpeg -v error -y -i $F -t 50 -vf "fps=1,scale=320:-1,tile=8x7" -frames:v 1 /tmp/intro.png
Vérifiez :
- Chaque carte de coupure graphique est entièrement à l'écran, ses chiffres correspondent à ce qui est dit, et il n'y a pas de
*errant. - Les légendes affichent les mots-clés en orange, et aucune légende ne chevauche le bord inférieur de la carte de l'intervenant.
- Le carton titre liste tous les sujets dans l'ordre.
- Les durées vidéo et audio correspondent (
ffprobe -show_entries stream=codec_type,duration). - L'épisode se situe autour de −15,5 LUFS.
- Le fichier des chapitres commence par
00:00 Cold open, puis la durée de l'introduction, puis « Catching up ».
Faites un rapport à l'utilisateur :
- la liste des clips (étiquette + réplique) ;
- les clips qui ont des coupures graphiques ;
- la durée de l'introduction ;
- tout langage explicite ;
- les chiffres à vérifier.