NarratiFluent · funnels 1 à 3 · révision du 12 septembre 2026

Process création d'ads

Tout se fait par lot. On rédige tous les scripts du mois d'un coup, on produit toutes les bandes son d'un coup, on monte tout d'un coup — chaque étape ci-dessous s'applique à l'ensemble des ads du batch, jamais à une seule. Le trajet complet d'une publicité, du brief au Drive. Les losanges orange sont les points où rien n'avance sans la validation d'Adrien. Les traits rouges sont des pannes déjà survenues —

Format
0
1
2
3
4
5
6
7
8
9

Le cahier des pannes

Chaque entrée est arrivée pour de vrai. La colonne de droite dit ce qui empêche mécaniquement qu'elle revienne — parce qu'une bonne intention ne tient pas, et qu'un garde-fou dans le code tient.

montage · monter_video.py

Trois formats venus de trois montages différents

Le 9:16 était bon, le 1:1 et le 16:9 décalés. Les durées concordaient, donc aucune mesure ne le signalait — seule l'image trahissait le mélange.

Le garde-fou

Un verrou par publicité, portant le numéro du processus, posé au début de chaque montage et retiré à la sortie. S'il est encore vivant, le second montage est refusé.

Et le verrou ne se verrouille pas lui-même : les trois formats se montent dans le même processus, et le verrou du 9:16 refusait le 1:1. Le garde-fou ne livrait qu'un format sur trois.

bande son · monter_video.py

Une publicité montée sans sa musique

La musique avait été écrite dans le casting à 18h17, la maquette datait de 17h54, le montage de 20h29 a donc été fabriqué sur une bande son sans musique. Rien ne l'a signalé.

Le garde-fou

_casting_plus_recent() compare les dates de casting.json et de la maquette au début de chaque montage, et refuse de démarrer si la source est plus récente que son rendu.

Le message dit quoi relancer, pas seulement que c'est cassé.

voix · ElevenLabs

Le timbre change au milieu d'une publicité

Deux générations successives du même clone ne partagent ni le niveau, ni le fond sonore, ni l'intonation. Sur une seule publicité, l'écart de sonie entre répliques atteignait douze LUFS et l'écart de fond vingt et un décibels.

Le garde-fou

Un tour de parole part en une seule génération, découpée après coup sur les horodatages de mots. Les tranches se recollent au sample près.

Aucun correctif ne rattrape une jointure : fondus, souffle de salle, appariement de sonie, fondu enchaîné — tous essayés, tous insuffisants. La seule façon de ne pas l'entendre est de ne pas en créer.

voix · generer_voix.py

Une réplique escamotée, et un plan calé à côté

Le cache des horodatages de mots était indexé sur le nom du fichier. Une bande son refaite gardait l'ancien minutage : le découpage dérivait silencieusement et la dernière réplique sortait vide.

Le garde-fou

Le cache est indexé sur une empreinte du contenusha1 des octets du fichier — et non sur son nom. Un fichier qui change invalide son minutage tout seul.

montage · FFmpeg

Le punch-in qui dérive hors du visage

Le cadre grossissait pendant que le rognage restait figé, et le visage glissait vers le bas à droite. Vu deux fois par Adrien avant d'être compris.

Le garde-fou

Dans cette version de FFmpeg, les coordonnées de crop ne sont évaluées qu'une seule fois, à la première image. Sur une image fixe il faut zoompan, qui réévalue z, x et y à chaque image.

Et le contrôle se fait à la mesure : la position du visage dans le cadre, avant et après, pas à l'œil.

montage · FFmpeg

Deux secondes d'image figée à la fin

Le rendu se prolongeait après la dernière syllabe — sur un plan d'avatar, cela donne le visage figé, bouche entrouverte.

Le garde-fou

-shortest ne borne pas un graphe alimenté par -loop 1 : l'image des chevrons entre en boucle infinie. La borne est explicite.

Et le nombre d'images se fixe, il ne se déduit pas d'une durée : demander « 76,463 s » laissait l'encodeur arrondir différemment selon le format — 2295 images en 9:16, 2293 en 1:1. Deux images d'écart suffisent à ce que la bouche passe d'ouverte à fermée sur un arrêt sur image.

habillage · monter_video.py

La carte de fin qui déborde en 1:1 et en 16:9

Le bouton sortait de l'écran, le texte était plus large que lui, les chevrons tombaient dessus et le sous-titre passait par-dessus le tout. Uniquement dans les formats dérivés.

Le garde-fou

J'avais dessiné aux proportions du vertical puis multiplié. Un 9:16 fait 1920 de haut, un 1:1 et un 16:9 n'en font que 1080 : toute mesure verticale fixe déborde.

La largeur d'un bouton est une fraction de la largeur du cadre et la taille de police se cherche pour y tenir ; les positions verticales sont des fractions de la hauteur ; le texte se dimensionne sur le petit côté.

habillage · monter_video.py

Le bouton derrière l'appel à l'action

La carte écrivait « VOIR LA PRÉSENTATION » ; l'incrustation de fin écrivait la même phrase en blanc et en gros, exactement par-dessus le bouton.

Le garde-fou

monter() regarde le type du dernier plan : si c'est une carte, il supprime l'appel à l'action incrusté et fait taire le sous-titre sur sa durée. Déduit, donc jamais oublié d'une publicité à l'autre.

habillage · chevron

La double flèche invisible

L'orange de la charte sur le pull beige clair de l'avatar : rien ne se voyait, dans les trois formats.

Le garde-fou

Le chevron porte un halo sombre, comme les sous-titres portent un contour. Un élément d'habillage doit tenir sur n'importe quelle image, pas seulement sur celle qui a servi à le dessiner.

Et le carton d'archive prend le chevron blanc : l'orange de la charte y casserait le noir et blanc.

formats · chaine_cadrage()

Le personnage minuscule au milieu d'un flou

Le montage cessait de recadrer au-delà d'un tiers de surface perdue et posait l'image sur un fond flouté d'elle-même. « Pour les formats B-Rolls, il ne doit jamais y avoir ce flou de merde. »

Le garde-fou

Le seuil ne s'applique plus aux publicités du compte : chaque format recadre pour remplir l'écran. Une exception, et une seule : le 16:9 d'une UGC filmée au smartphone, qui garde son cadre vertical sur du noir franc.

plans de coupe · casting

Un visage étranger qui trahit la scène

Un podcasteur, une sculptrice, une femme de face dans un plan de réunion. Dans une preuve client, ce visage devient le témoin dans la tête du spectateur — sans lui ressembler.

Le garde-fou

Détection de visage sur chaque plan de banque avant montage, alerte au-dessus de 5 % du cadre. Les plans concernés se remplacent par des mains, des objets, des lieux vides.

Le seul visage identifiable autorisé dans une preuve client est le portrait du témoin lui-même.

génération · Veo

Un hippocampe, l'animal, nageant dans un cerveau

La description disait « one elongated seahorse shaped structure ». Le modèle a dessiné l'animal. L'interdit « no seahorse » ajouté ensuite n'a rien changé : le mot suffit.

Le garde-fou

Une description destinée à un modèle d'image ne contient ni métaphore ni mot à double sens. La structure se décrit par sa géométrie réelle et n'est pas nommée : « un repli incurvé en C, sans tête, sans queue et sans membres ».

Et les interdits se posent par famille de plan : « no human face, no body, no hands » était utile sur un cerveau et tuait les deux seuls plans montrant des gens, rendus en neurones.

sous-titres

« Euh » écrit à l'écran

Sur un tournage improvisé, la transcription porte les tics, les reprises et les amorces avalées. Un sous-titre qui écrit « euh » donne l'air d'un rush oublié au montage.

Le garde-fou

Nettoyage sur la liste de mots minutée, sans toucher aux horodatages des mots gardés. La ponctuation qui appartenait au tic part avec lui — mais seulement quand elle était portée par un mot outil, sinon elle sépare deux propositions et reste.

Et une bribe ne se termine jamais sur un mot qui appelle le suivant : « avec de » puis « la grammaire » fait buter l'œil.

livraison · Drive

Deux fois le même fichier dans un dossier

Relivrer une publicité corrigée laissait deux Ads 118 9x16.mp4 côte à côte, et rien ne disait lequel était le bon.

Le garde-fou

Le dépôt cherche d'abord un homonyme et réécrit son contenu au lieu d'en créer un second. Le lien de partage et l'historique du fichier sont conservés.

fichiers · la seule règle

Un fichier supprimé sans demander

La seule autorisation qu'Adrien exige avant d'agir. Enfreinte deux fois dans la même session, chaque fois en se disant que « ce fichier est à moi, il est temporaire ».

Le garde-fou

Écrire par-dessus, renommer, ou laisser en place. Jamais rm sans avoir demandé et obtenu un oui. Les fichiers vraiment jetables s'écrivent d'emblée hors du dépôt, dans le dossier temporaire de la session.