Montage vidéo : du rush à la vidéo publiable
La personne tourne, dépose ses fichiers, et récupère une vidéo coupée serrée.
Ce que ce skill ne fait pas lui-même : le moteur de coupe et de rendu est celui de video-use
(skill public, à installer à côté), les animations sont rendues par HyperFrames. Refaire ici ce
qu'un de ces outils fait déjà, c'est deux versions à entretenir.
Installation (une fois par machine)
Ce skill tourne sur un Mac à puce Apple (M1 ou plus récent), macOS 14 ou plus. Tout reste sur la machine : aucune vidéo n'est envoyée en ligne. À vérifier dans l'ordre, et à installer ce qui manque :
- Le skill lui-même : ce dossier
montage-videoposé dans~/.claude/skills/. - ffmpeg et ffprobe :
brew install ffmpeg(Homebrew : https://brew.sh). - uv, qui pose les environnements Python à part :
brew install uv. - Node.js 18 ou plus récent (avec
npx) :brew install node. HyperFrames, qui rend les illustrations, se télécharge tout seul au premier rendu (npx [email protected]), avec son navigateur de rendu. - Le skill video-use (moteur de coupe et de rendu), à cette version précise, celle avec laquelle
ce skill a été essayé :
Ailleurs que dansgit clone https://github.com/browser-use/video-use ~/.claude/skills/video-use git -C ~/.claude/skills/video-use checkout 87f00c6~/.claude/skills/video-use: donner son dossier parVIDEO_USE_DIR. Ce skill n'utilise que sonhelpers/render.py, qui n'a besoin que de ffmpeg : pas de clé ElevenLabs. - CrisperWhisper, le transcripteur qui entend les « euh » :
python3 scripts/derush.py installer(2,2 Go, hors du skill, refuse sous 5 Go libres ; voir l'étape 0 du dérushage). - Le modèle de vision qui classe la bibliothèque de B-rolls : rien à faire, il se télécharge au
premier
brolls.py indexer(mlx-vlm, par uv). - Final Cut Pro, seulement pour le bouton « Ouvrir dans Final Cut Pro » du lecteur.
- Playwright et son navigateur WebKit, qui cherchent les B-rolls gratuits sur Pexels et Pixabay,
sans clé ni compte :
npm install -g playwrightpuisnpx playwright install webkit. Sans eux, l'agent cherche avec son propre navigateur (voir « B-rolls »).
On vérifie l'installation sur une vraie vidéo courte (une minute suffit) : derush.py analyser,
puis monter, puis verifier. Une installation n'est faite que quand ces trois commandes ont tourné.
Où vont les fichiers
Tout ce qui sert au montage d'une vidéo va sur le Bureau, dans un dossier à son nom :
~/Desktop/Fichiers de montage <nom de la vidéo> (à supprimer à la fin) ; dans ce nom, une
apostrophe s'écrit ’ (typographique), jamais ' : le moteur de coupe ne lit pas un dossier qui en
contient une droite, le skill s'arrête et le dit (transcriptions, listes
de coupes, plans, versions, projet du lecteur de corrections, projet Final Cut). On le crée au premier
geste, on ne demande pas où le mettre. Les rushs d'origine ne sont jamais déplacés ni modifiés.
L'export final va aussi sur le Bureau, à côté, sous un nom lisible (« <nom de la vidéo> monté.mp4 »).
Rien ne s'efface tout seul : c'est la personne qui supprime le dossier de travail quand la vidéo lui
convient. Tant qu'il est là, on peut reprendre une correction ou rouvrir le projet Final Cut, qui
pointe sur ses fichiers. À la fin du montage, on lui dit où sont les deux : l'export final, et le
dossier de travail qu'elle pourra mettre à la Corbeille quand elle n'aura plus de correction à faire.
Un dossier du Bureau synchronisé par iCloud peut refuser mv : le copier (cp -Rc), puis mettre
l'original à la Corbeille.
Où en est le skill (dire la vérité à celui qui l'invoque)
| Brique | État au 11/11/2026 |
|---|---|
| 1. Dérushage : silences, hésitations, reprises, consignes dites | En service, hésitations entendues par CrisperWhisper 2.0 rapide depuis le 11/11/2026, essayé sur quatre rushs réels |
| 2. B-rolls de la bibliothèque : classement local, choix, incrustation, contrôle | En service, essayé sur une bibliothèque d'essai de 12 plans |
| 3. B-rolls gratuits Pexels et Pixabay, sans clé ni compte | En service depuis le 11/11/2026 : recherche par Playwright ou par le navigateur de l'agent (computer use), essayé sur un montage réel (trois plans posés) |
| 4. Animations à la charte : 38 de graphistes (la façon par défaut depuis le 11/11/2026) et 24 maison, leur catalogue | En service en 16:9, essayé sur un montage réel (trois animations de graphistes) ; le format vertical n'est pas essayé |
| 5. Lecteur de corrections (commentaires à l'image près, un point par commentaire sur la barre, commentaire rattaché à une animation, plages, dessin, versions, comparaison) | En service, essayé de bout en bout sur une vidéo réelle (3 corrections, une V3) ; étude dans references/lecteur-facon-frame-io.md |
| 6. Bruitages : souffle à l'entrée d'une animation, clic par coche, swoosh par plan | En service depuis le 11/11/2026, posés seuls à l'incrustation, essayé sur un montage réel (huit bruitages) |
| 6 bis. Musique selon l'émotion | À construire (pas de bibliothèque de musiques) |
| 7. Clips verticaux, sous-titres, mise en ligne | Pas dans ce skill |
| 8. Mémoire des corrections | Manuel : une règle datée en bas de ce fichier après chaque retour |
| 9. Export Final Cut Pro (bouton du lecteur, pistes séparées) | En service : projet fabriqué et conforme au format de Final Cut ; bruitages sur leur piste ; sans étalonnage ni musique. Premiere et DaVinci : à construire |
Une demande qui touche une brique « à construire » se dit telle quelle dans la livraison : on livre ce qui marche, on nomme ce qui manque. On n'annonce pas « vidéo montée » pour une vidéo seulement dérushée.
Les réglages de la machine (à la première utilisation)
Rien de propre à une personne n'est écrit dans ce skill : il sert à plusieurs. Le dossier de B-rolls,
le cache et la charte des illustrations vivent dans un fichier de réglages de la
machine, ~/.config/montage-video/reglages.json, hors du skill.
python3 scripts/brolls.py reglage # montre où on en est
À la première demande de B-rolls, si « bibliotheque » vaut « aucune », demander une fois à la
personne : « As-tu un dossier de B-rolls à toi ? Donne-moi son emplacement. » Puis
brolls.py reglage --bibliotheque <dossier>. Elle n'en a pas : on continue avec les banques seules,
sans insister. Même logique pour la charte : sans réglage, les illustrations sortent dans le style par
défaut, et on lui montre le catalogue pour qu'elle choisisse le sien.
Le dérushage, pas à pas
scripts/derush.py porte les trois gestes. Tout tourne sur le Mac, rien n'est envoyé en ligne.
0. Une fois par machine : installer le transcripteur. Les hésitations sont entendues par
CrisperWhisper 2.0 dans sa version rapide (turbo), un Whisper réentraîné pour écrire les « euh ».
Il vit hors du skill, dans ~/.local/share/montage-video/crisper (ou $MONTAGE_VIDEO_DONNEES) :
python3 scripts/derush.py installer # 2,2 Go, refuse sous 5 Go libres
Sans lui, analyser s'arrête et le dit : il ne retombe jamais en silence sur une autre méthode.
1. Analyser.
python3 scripts/derush.py analyser <video> --edit-dir <dossier de travail>/edit
Le script transcrit mot à mot par CrisperWhisper, repère les silences au son, et écrit
edit/derush/<nom>.json (les données) et edit/derush/<nom>.md (le texte mot pour mot, phrase par
phrase, horodaté). Le dossier de travail est celui de la vidéo sur le Bureau (voir « Où vont les
fichiers »).
Pourquoi CrisperWhisper : un transcripteur ordinaire rend un texte propre, donc sans les « euh », et
on ne coupe pas ce qu'on ne voit pas. Mesuré le 11/11/2026 sur quatre rushs réels (296 s de son,
11 hésitations vérifiées au son) : CrisperWhisper rapide en trouve 10, l'ancienne méthode (Whisper
amorcé par une phrase pleine d'hésitations, gardée en --moteur amorce) 5 ; aucun mot réel perdu
d'un côté comme de l'autre ; environ 4 fois plus lent (152 s contre 35 s). On coupe seulement
l'intervalle entre le mot réel d'avant et le mot réel d'après : une hésitation inventée ne coupe rien.
Le modèle rapide date parfois mal le mot qui suit un « euh » (durée nulle, posé au milieu de
l'hésitation) : sur un rush d'essai, deux « que », et 0,2 s de « euh » restée au rendu.
crisper.py le redate au son (voix tenue jusqu'à un creux, recherche bornée à 0,4 s et au mot
suivant) et écrit chaque correction dans corrige_au_son de la transcription.
2. Lire le texte et décider des reprises. C'est le travail de l'agent, pas d'un script : lire
<nom>.md en entier et écrire un fichier retirer.json, une liste de {"debut", "fin", "raison"}.
On y met :
- la reprise : une phrase recommencée. On garde la dernière version complète, on retire les précédentes, du début de la première tentative jusqu'au début de la bonne ;
- la consigne dite à voix haute : « je reprends », « coupe ça », « on la refait ». On retire la consigne et ce qu'elle désigne ;
- la phrase abandonnée en cours de route, le faux départ, l'aparté hors sujet (« attends », un bruit, quelqu'un qui entre).
Les bornes se posent sur les horodatages du texte, avec 0,1 s de marge avant le premier mot gardé. Dans le doute sur une reprise (deux versions qui disent deux choses différentes), on garde les deux et on le signale : couper une idée est plus grave que laisser une redite.
Les « voix sans mot » listées en tête du texte ne sont pas coupées d'office : c'est un son parlé
qu'aucun mot ne couvre. Souvent une hésitation que le transcripteur a ratée, parfois un rire, un mot mal
entendu, ou un « euh » dit exprès (un rush d'essai en contenait un : « c'était un euh assez
long »). L'agent regarde le contexte et l'ajoute à retirer.json seulement si c'est du déchet.
3. Monter.
python3 scripts/derush.py monter edit/derush/<nom>.json --retirer retirer.json -o <sortie>.mp4
Le script écrit la liste de coupes au format de video-use et la fait rendre par son moteur
(extraits, fondu son de 30 ms à chaque coupe, collage sans réencodage). --apercu rend en 720p,
plus vite, pour une première lecture. Il s'arrête si la durée rendue s'écarte de la durée attendue.
4. Vérifier, puis seulement livrer.
python3 scripts/derush.py verifier <sortie>.mp4
Le rendu est retranscrit par le même transcripteur. On livre quand hesitations_restantes vaut 0, qu'il
n'y a plus de silence de plus de 0,6 s, et que le texte rendu se lit d'une traite, sans phrase
amputée ni mot coupé. Une phrase amputée se corrige dans retirer.json, pas en élargissant les
marges pour tout le monde. On regarde aussi deux ou trois coupes à l'image
(video-use, helpers/timeline_view.py) : un saut de cadre trop visible appellera un zoom à la
brique 3, en attendant on le dit.
Les B-rolls, pas à pas
Un B-roll est un plan qui montre ce que la personne dit pendant qu'on continue de l'entendre.
scripts/brolls.py porte les gestes ; le rendu reste celui de video-use.
1. Classer la bibliothèque, une fois.
python3 scripts/brolls.py indexer
Chaque plan est décrit sur la machine par un petit modèle de vision (trois images du plan, deux phrases), le thème est le nom du sous-dossier. Compter 3 secondes par plan ; seuls les fichiers nouveaux ou changés sont refaits, donc on relance sans crainte avant chaque montage. Un fichier de plus de 40 s est découpé en plans de 20 s. Les images fixes comptent aussi. La bibliothèque n'est jamais modifiée : l'index est rangé avec les réglages.
Le modèle de vision décrit bien le sujet, mal le détail : il lui arrive de compter « trois horloges » parce qu'il voit trois images du même plan. La description sert à trouver, pas à décider : on regarde la planche du contrôle avant de livrer.
2. Lire la vidéo dérushée, phrase par phrase.
python3 scripts/brolls.py phrases <video dérushée>
3. Choisir : c'est le travail de l'agent, pas d'un script. Lire la bibliothèque entière
(brolls.py lister) quand elle tient en quelques dizaines de plans ; au-delà,
brolls.py chercher "<mots>" avec des mots de ce qu'on veut VOIR (« clavier », « horloge »,
« caméra »), pas la phrase dite : « je laisse tourner 45 minutes » ne contient aucun mot d'une
horloge, c'est à l'agent de faire le pont entre l'idée et l'image.
L'ordre : la bibliothèque de la personne d'abord (ses images lui ressemblent, personne d'autre ne les a), une banque gratuite seulement quand rien n'y colle :
Les banques gratuites se prennent sans clé ni compte, de deux façons. L'agent choisit :
| Option | Quand la prendre | Commande |
|---|---|---|
| Playwright (par défaut) | Toujours en premier : rapide, sans écran, le même résultat chez Claude comme chez ChatGPT | brolls.py banque "<mots>" |
| Computer use (le navigateur de l'agent : Claude in Chrome, computer use, l'agent de ChatGPT) | Playwright manque sur la machine ou ne rend rien qui colle ; ou le plan demande un vrai coup d'œil (une ambiance, un geste précis) | l'agent cherche et choisit à l'image, puis brolls.py banque --prendre <adresse de la page> |
python3 scripts/brolls.py banque "typing laptop" -n 3 # mots en ANGLAIS, deux ou trois, concrets
python3 scripts/brolls.py banque "film camera" -n 2 --chaque # au moins un plan de chaque site
python3 scripts/brolls.py banque --prendre "https://pixabay.com/videos/keyboard-hands-writing-computer-1046/"
Playwright. Le script ouvre la page de recherche de Pexels, puis de Pixabay, dans le navigateur
WebKit de Playwright, sans fenêtre, muet, profil jetable fermé à la sortie. Un simple programme reçoit
un refus des deux sites, et le Chromium de Playwright reste bloqué sur leur page de vérification :
WebKit passe (mesuré le 11/11/2026). S'il manque : npm install -g playwright puis
npx playwright install webkit ; sans ça, la commande le dit et renvoie vers l'autre option.
Computer use. L'agent ouvre pexels.com ou pixabay.com dans son navigateur, cherche avec les mêmes
mots en anglais, regarde les vignettes et ouvre la meilleure. Il laisse de côté les rangées
« Sponsored » ou iStock : elles sont payantes. Il donne ensuite à --prendre l'adresse de la page de
la vidéo (elle finit par un numéro) : une page Pexels se télécharge directement, une page Pixabay est
lue par Playwright. Sans Playwright sur la machine, sur Pixabay : cliquer « Free download », puis
--prendre <fichier téléchargé> --page <adresse de la page>. --prendre accepte aussi le lien du
fichier lui-même (videos.pexels.com, cdn.pixabay.com). Tout autre site est refusé : sa licence n'est pas connue.
Dans les deux cas, Pexels passe d'abord et Pixabay ensuite. Les plans vont dans le cache avec leur fiche (page
d'origine, auteur, licence, date, trouve_par : playwright ou agent) et sont décrits comme ceux de la bibliothèque. Les deux licences,
relues le 11/11/2026, permettent l'usage commercial sans mention et la modification ; elles
interdisent de montrer une personne reconnaissable sous un mauvais jour, de laisser croire qu'elle
recommande le produit, et les marques visibles pour vendre. Un plan de banque avec un visage en gros
plan ne se pose donc pas sur une phrase négative (« ceux qui échouent », « l'arnaque »). Chaque plan
pris se regarde à l'image (la planche .jpg à côté du fichier) avant d'être posé : on ne monte pas
un plan qu'on n'a pas vu.
Ce qui fait un bon choix :
- Le plan montre l'idée, pas le mot. « Ça m'a pris une minute » : une horloge, pas le chiffre 1.
- Pas partout. Un B-roll toutes les deux ou trois phrases, sur ce qui se voit. Une vidéo couverte à plus de 60 % ne montre plus qui parle : le script refuse.
- Jamais sur l'accroche. Les deux premières secondes restent sur la personne.
- De 1,2 à 8 secondes, calé sur la phrase : on entre sur le premier mot de l'idée, on sort à la fin de la phrase. Deux plans qui se suivent se collent (même instant) ; entre deux plans, soit rien, soit au moins une seconde de visage, sinon c'est un flash.
- Sur une coupe. Un plan posé à cheval sur une coupe du dérushage cache le saut d'image : c'est le meilleur endroit quand on a le choix.
- Net, stable, bien cadré. Dans les rushs d'une personne, écarter le plan flou, celui qui tremble,
celui où quelqu'un regarde l'objectif par erreur.
departchoisit le meilleur moment du fichier.
4. Écrire le plan (brolls.json, dans le dossier de travail) :
{"incrustations": [
{"debut": 6.85, "fin": 8.55, "fichier": "/chemin/plan.mp4", "depart": 1.0,
"origine": "bibliotheque", "phrase": "mes rushs, ils sont bruts", "raison": "des caméras de tournage"}
],
"illustrations": [
{"debut": 14.4, "fin": 18.0, "modele": "phrase", "titre": "Le résultat en *45 minutes*"}
]}
Les temps sont ceux de la vidéo DÉRUSHÉE. origine vaut bibliotheque, pexels ou pixabay.
5. Incruster, en une seule passe avec le dérushage.
python3 scripts/brolls.py incruster --edl edit/edl-<nom>.json --plan brolls.json -o <sortie>.mp4
--edl est la liste de coupes écrite par derush.py monter : coupes, B-rolls et illustrations sont
rendus ensemble, la vidéo n'est encodée qu'une fois. Sans --edl, le plan porte "video": "<fichier>"
et la vidéo déjà montée est reprise telle quelle. Le plan est recadré plein écran, muet ; la voix
continue dessous. Le script refuse un plan qui enfreint les règles ci-dessus et dit laquelle.
6. Contrôler, puis regarder.
python3 scripts/brolls.py controler <sortie>.mp4 --plan brolls.json --edl edit/edl-<nom>.json
Il prouve que chaque plan est à l'écran au milieu de sa plage et absent juste avant, que le son est
là, et il écrit une planche (trois images par plan, trois par illustration). Regarder la planche :
le contrôle dit que le plan est posé, pas qu'il est bon. Puis derush.py verifier sur la sortie : le
texte ne doit pas avoir bougé.
Les animations de graphistes (la façon par défaut)
Trente-huit animations dessinées par des graphistes de LottieFiles (Lottie Simple License, relue le
11/11/2026 : usage commercial et modification permis, mention non obligatoire, interdit d'en faire une
collection concurrente), recolorées seules à la charte de la personne, ses textes dans ses polices. On
les prend d'abord ; les modèles maison ci-dessous servent quand aucun geste de graphiste ne convient.
La fiche de chacune (auteur, lien d'origine) est dans assets/illustrations/graphistes.json ; le
fichier de l'animation n'est pas dans le skill, il se prend chez LottieFiles à la première utilisation
et reste au cache de la machine (~/.cache/montage-video/graphistes).
python3 scripts/illustrations.py graphistes # toutes, par geste
python3 scripts/illustrations.py graphistes --geste liste # celles d'un geste
Dans le plan, une animation de graphiste est le modèle graphiste et son nom :
| Geste | Noms | Quand | Champs |
|---|---|---|---|
qui | bandeau-1, -2 | présenter qui parle | titre (le nom), sous_titre (le métier, \n pour une deuxième ligne) |
liste | coche-1, -2, -10, -11 | une énumération : une coche se pose sur chaque point | titre, points (|, cinq au plus), instants (secondes depuis le début de l'animation, une par point : caler chaque coche sur le mot dit), cote |
lieu | repere-1, -3, -8 | une adresse, un lieu | titre, sous_titre, cote |
chiffre | graphique-1, -4, -8, -9 | un nombre dit : il grimpe jusqu'à sa valeur | titre (« 12 400 € »), sous_titre, cote |
partie | partie-1, -2, -6 | une nouvelle partie, plein écran | titre, sous_titre (« Partie 2 ») |
citation | bulle-6 à -8 | la phrase d'un client ou d'un auteur | titre (la phrase), sous_titre (qui), cote |
action | appel-1, -3, -4, -6 à -8 | inviter à cliquer, réserver, s'abonner | titre (le bouton, court), sous_titre, cote |
icone | icone-1 à -14 (sauf 5) | un point clé, une alerte, un rendez-vous | titre, sous_titre, cote |
{"debut": 9.4, "fin": 15.0, "modele": "graphiste", "animation": "coche-1", "titre": "Soins *ayurvédiques*",
"points": "Femmes enceintes|Post-partum|Bébé", "instants": [2.82, 3.76, 4.78]}
Les animations du geste partie couvrent tout l'écran : elles seules, avec chapitre, ecriture et
message, peuvent se poser sur un B-roll. Toutes les règles d'une bonne illustration (plus bas) valent ici.
Les bruitages
Posés seuls par brolls.py incruster, sous la voix : un souffle quand une animation entre, un clic sur
chaque coche d'une liste de graphiste, un swoosh au début de chaque plan d'illustration. Trois sons de
Mixkit (licence relue le 11/11/2026 : usage commercial permis, sans mention ni compte), pris à la première
utilisation et gardés au cache (~/.cache/montage-video/bruitages), tous ramenés au même niveau, de 11 à
13 dB sous une voix normale : on les entend, ils ne couvrent rien. Dans le projet Final Cut, ils ont leur
piste. Le plan les règle : "bruitages": false pour n'en mettre aucun (une vidéo grave, un témoignage
intime), "bruitages": {"entree": "2364"} pour changer un son par un autre numéro Mixkit
(scripts/bruitages.py sons montre ceux en service).
Les illustrations maison
Vingt-quatre modèles à fond transparent, posés sur la personne qui parle, à sa charte
(scripts/illustrations.py, composition HyperFrames dans assets/illustrations/). Les six de base :
| Modèle | Quand | Champs |
|---|---|---|
titre | présenter qui parle, nommer le sujet qui commence | titre, sous_titre, cote |
phrase | la phrase à retenir, au moment où elle est dite | titre (un mot entre *étoiles* prend l'accent) |
liste | une énumération, les points arrivent un par un | titre, points (séparés par |, cinq au plus), cote |
chiffre | le nombre qu'on vient d'entendre | titre (le nombre), sous_titre (sa légende), cote |
etapes | un parcours, une méthode, un avant et un après | titre, points (quatre au plus) |
chapitre | le passage à une nouvelle partie, plein écran | titre, sous_titre (« PARTIE 2 ») |
Sept gestes relevés dans les vidéos face caméra des créateurs :
| Modèle | Quand | Champs |
|---|---|---|
ecriture | la phrase clé, sur fond noir, écrite mot à mot au rythme de la voix | titre (les mots entre *étoiles* sont surlignés) ; les instants viennent seuls des mots horodatés (brolls.py phrases) |
intertitre | le titre d'une partie, en bas, sans cacher la personne | titre (*étoiles* pour surligner) |
fiche | une petite carte claire en coin, ses lignes arrivent une à une | titre, points (video:Les rushs met un petit dessin devant), sous_titre (la définition, s'il n'y a pas de points), cote |
partage | l'image se pousse, un panneau prend la moitié de l'écran (40 s au plus) | contenu : dossier, coches, grille, mosaique ou icones ; titre, points, choisis (grille), images (mosaïque), cote |
message | un message reçu, surligné passage après passage, plein écran | points (les paragraphes, *étoiles* pour les passages), sous_titre (d'où il vient) |
image | un document ou une photo en carte dans un coin | image (le fichier), sous_titre, cote |
cadre | un filet fin autour de l'image, pour marquer un passage | aucun |
Onze classiques des vidéos parlées :
| Modèle | Quand | Champs |
|---|---|---|
compteur | un chiffre qu'on veut faire sentir : il grimpe jusqu'à sa valeur | titre (« 12 400 € »), sous_titre, cote |
barres | un écart, une évolution | titre, points (Janvier=1 200|*Mars=9 800, l'étoile marque la barre qui compte ; cinq au plus) |
anneau | une part | titre (« 70 % »), sous_titre, cote |
comparaison | avant et après, sans et avec | titre, points (deux colonnes : Avant : ligne ; ligne|Après : ligne ; ligne) |
citation | la phrase d'un client ou d'un auteur | titre (la phrase), sous_titre (qui), note (étoiles, 0 à 5) |
notification | une vente, un message, un rendez-vous qui arrive | points (euro:Paiement reçu : 490 €, trois au plus) |
discussion | un échange de messages | points (lui: ...|moi: ..., cinq au plus), cote |
annotation | entourer un détail de l'image et le nommer | titre (le mot), position (« 62,40 » : pour cent de la largeur, de la hauteur), taille |
abonnement | rappeler de s'abonner | titre (la chaîne), sous_titre, points (les deux libellés du bouton, « S'abonner|Abonné » par défaut) |
progression | dire où on en est, à chaque changement de partie | points (les parties, huit au plus), choisis (le rang de la partie en cours) |
mot | un seul mot, très grand, sur le mot fort | titre |
Les dessins disponibles devant un point : coche, croix, video, texte, image, dossier, personne, horloge, message, lettre, musique, idee, etoile, coeur, euro, reglage, fleche, cloche, telephone, panier. D'où
vient chaque geste : references/animations-relevees.md (à lire avant d'en retoucher
un ; on reproduit un geste, jamais un fichier). Un texte, un chiffre ou un nom qui n'est pas dans la
vidéo ne s'invente pas : une citation, une notification ou un compteur reprennent ce que la personne
a dit ou fourni.
Elles se déclarent dans le même plan que les B-rolls (clé illustrations) et se rendent toutes seules
à l'incrustation, à la taille de la vidéo. Compter 15 à 20 secondes de calcul par illustration.
Ce qui fait une bonne illustration : elle reprend les mots de la personne, raccourcis, jamais une
phrase qu'elle n'a pas dite ; elle reste de 2 à 12 secondes, le temps de la lire deux fois ; elle
arrive quand l'idée est dite, pas avant ; elle ne se pose pas sur un B-roll (le script refuse, sauf
pour les trois modèles plein écran : chapitre, ecriture, message). Une par idée forte : trois illustrations dans une vidéo d'une minute, c'est déjà beaucoup.
Sur une liste, caler debut sur l'annonce (« il y a trois choses ») et fin après le dernier point.
La charte se règle une fois par personne, pas par vidéo :
python3 scripts/illustrations.py style # la charte en cours
python3 scripts/illustrations.py style --accent "#19C37D" --police-titre "Unbounded"
python3 scripts/illustrations.py style --fichier reglage.json # le bloc recopié du catalogue
python3 scripts/illustrations.py catalogue -o <dossier>/catalogue.html
Ouvrir le catalogue quand la personne le demande (« montre-moi le catalogue des animations ») : le fabriquer hors de tout montage, puis l'ouvrir dans son navigateur.
python3 scripts/illustrations.py catalogue -o ~/.config/montage-video/catalogue/catalogue.html
open ~/.config/montage-video/catalogue/catalogue.html
Puis lui dire en deux phrases quoi faire : changer les couleurs, les polices et l'arrondi en haut de la
page, et quand le résultat lui plaît, cliquer « Copier le réglage » en bas de page et le coller ici. On
le pose alors avec style --fichier (le bloc collé, écrit dans un fichier) : il vaut pour toutes ses
vidéos.
Le catalogue est une page à ouvrir dans un navigateur : les animations de graphistes par geste, puis les modèles maison, joués en boucle, les couleurs,
les polices et l'arrondi à changer en direct, et le réglage à recopier. C'est ce qu'on montre à la
personne qui demande « à quoi ça ressemble » ou « je veux mes couleurs ». Les polices proposées sont
celles embarquées dans assets/illustrations/fonts (le rendu ne dépend pas du réseau) ; pour une police
de marque, déposer son .woff2 dans ce dossier, la déclarer dans index.html et l'ajouter à la liste
de illustrations.py.
Le catalogue ne montre qu'une animation par rendu : deux animations qu'on ne distingue pas une
fois à la charte (même forme, même mouvement) n'y restent pas ensemble. Une animation qu'on y ajoute
passe ce tri. Les modèles maison chiffre et partage en mosaique restent posables, le catalogue
les montre par compteur et par la grille de partage.
Le catalogue s'ouvre section par section : chaque geste et chaque groupe maison a sa flèche, toutes les sections sont repliées au chargement, et une section repliée ne charge ni ne joue aucune animation (la page de l'animation est déchargée à la fermeture). Une section qu'on ajoute au catalogue suit la même règle.
Le lecteur de corrections
Une première version n'est jamais la bonne. Plutôt que d'écrire « à 1 minute 12, enlève le plan »,
la personne regarde le montage dans son navigateur, met en pause là où quelque chose ne va pas, et
écrit. scripts/lecteur.py porte les gestes ; l'idée vient de Frame.io
(references/lecteur-facon-frame-io.md, à lire avant de le modifier).
1. Ouvrir la version.
python3 scripts/lecteur.py ouvrir <montage>.mp4 --projet <dossier de travail>/corrections \
--titre "<nom de la vidéo>" --edl edit/edl-<nom>.json
Le script ajoute la vidéo comme version suivante du projet (V1, V2...), lance le lecteur sur la
machine et affiche son adresse : on l'ouvre dans son navigateur (open <adresse>) et on la lui donne,
avec en deux phrases ce qu'elle peut faire (mettre en pause et écrire, puis dire « j'ai fini mes
commentaires sur mon montage » quand elle a tout noté). Il tourne tant qu'on ne l'arrête pas,
donc on le lance en tâche de fond et on garde son numéro de programme. --edl (la liste de coupes,
celle de l'incrustation si la version a des plans et des animations) sert à retrouver l'instant d'un
commentaire dans le rush, à repérer sous la barre chaque animation et chaque plan, et à fabriquer le
projet Final Cut. Pour relancer le lecteur sans changer l'adresse déjà donnée : --meme-adresse.
Ce que la personne peut faire : commenter l'image à l'arrêt, ou une plage (touches I et O), dessiner
sur l'image, répondre, marquer terminé, comparer deux versions côte à côte, valider la version. Chaque
commentaire pose un point au-dessus de la barre de lecture (vert une fois terminé) : un clic y mène,
les touches virgule et point passent de l'un à l'autre. Sous la barre, les animations et les plans du
montage sont repérés ; un commentaire écrit pendant une animation s'y rattache (case décochable), et
corrections le dit (« porte sur l'animation ... »). Les raccourcis sont écrits sous le lecteur.
Ouvrir dans Final Cut Pro. Le bouton du lecteur (visible si Final Cut est installé et si la version
a sa liste de coupes) fabrique le projet de la version affichée et l'ouvre : rushs d'origine coupés aux
mêmes endroits sur la piste principale, plans d'illustration et animations chacun sur sa piste, tous
déplaçables, et les corrections à faire en repères à cocher. Aucun sous-titre. Rien n'est aplati, les médias ne sont pas copiés. Chaque temps tombe sur une
image entière de la séquence, l'offset d'un élément accroché se compte dans le temps de sa coupe
(son start compris) : sinon Final Cut avertit « pas une limite des modifications du cadre » (rush à
25 images par seconde dans une séquence à 24). Le projet entre dans la bibliothèque ouverte ; si
Final Cut n'en a aucune (lu dans ses fichiers ouverts, sans lui envoyer de commande), il range le
projet dans une bibliothèque « Montages » du dossier Vidéos, qu'il crée. À la main : python3 scripts/final_cut.py exporter edit/edl-<nom>.json -o <projet>.fcpxml --ouvrir. Ce que Final Cut ne reçoit pas : l'étalonnage et le niveau sonore du rendu,
et l'image poussée sous un écran partagé (un repère dit où la pousser).
2. Lire les corrections, quand elle dit qu'elle a fini.
python3 scripts/lecteur.py corrections <dossier>/corrections
Chaque ligne donne l'identifiant, l'instant dans le montage, le texte, et l'instant dans le rush.
« Avec dessin » : tirer l'image de cet instant et la regarder avant d'agir, le dessin est dans
corrections.json (points de 0 à 1, largeur puis hauteur). Une correction qu'on ne comprend pas se
demande, on ne la devine pas.
3. Corriger, rendre la version suivante, la rouvrir (étape 1 avec le nouveau fichier), puis dire ce qui a été fait, correction par correction :
python3 scripts/lecteur.py traiter <dossier>/corrections <id> --note "Le bandeau sort à 24,6 s."
La personne retrouve la note sous son commentaire et vérifie avec la comparaison. Un retour qui vaudra pour les prochaines vidéos (« jamais de B-roll sur ma première phrase ») devient une règle datée en bas de ce fichier : c'est la mémoire des corrections.
4. Arrêter le lecteur par son numéro de programme quand la version est validée. Il n'écoute que
sur la machine, derrière une adresse tirée au hasard à chaque lancement ; rien ne part en ligne. Pour
un essai sans le son : ajouter ?muet=1 à l'adresse.
L'adresse est un secret : qui l'a peut écrire dans le projet et ouvrir Final Cut. Elle ne s'écrit
donc dans aucun dossier sauvegardé, synchronisé ou partagé : ne jamais rediriger la sortie du lecteur
vers un fichier du dossier de travail (la mettre dans ~/.config/montage-video/adresses/, où
--meme-adresse garde déjà son jeton, hors du projet). Une adresse partie par erreur se change en
supprimant le fichier du jeton et en relançant le lecteur.
Régler selon le type de vidéo
Le type se déduit de la durée, du cadre et du contenu ; on ne le demande que s'il est ambigu.
| Type | Signes | Dérushage |
|---|---|---|
| Vidéo YouTube longue | 16:9, 5 à 30 min, une personne face caméra | Réglages par défaut |
| Short, reel | 9:16 ou moins de 90 s | Plus serré : --pause-max 0.3 --marge-apres 0.06 |
| Formation | Long, écran partagé ou face caméra, ton posé | Plus souple : --pause-max 0.7, on garde les respirations |
| Interview | Deux voix | Ne pas couper les silences entre question et réponse sous 0,6 s ; passer par montage-interview si c'est une interview MTS |
Un tournage en plusieurs fichiers : analyser chaque fichier, lire tous les textes avant de décider (une reprise peut être dans le fichier suivant), monter fichier par fichier puis coller.
Ce qu'on rend à la personne
L'export final sur son Bureau, et en mots simples : où sont l'export final et le dossier de travail
(« Fichiers de montage ... (à supprimer à la fin) », à mettre à la Corbeille quand tout lui va), la
durée avant et après, le nombre d'hésitations et de reprises retirées, les B-rolls posés (d'où ils
viennent : sa bibliothèque ou une banque), les illustrations, ce qui a été laissé exprès, ce qui reste
à faire à la main. Avant de livrer, la vidéo finale se regarde de bout en bout (images tirées à
intervalle régulier, et helpers/timeline_view.py de video-use autour des coupes), pas seulement sa
transcription. Quand la personne veut corriger, on lui ouvre le lecteur de corrections plutôt que de lui demander des minutages.
La barre de qualité (elle vaut pour toutes les briques)
Cinq critères : simple, élégant, personnel, cohérent, utile. Pas de montage « sapin de Noël » : une animation qui n'apporte rien à ce qui est dit ne se pose pas. Et léger : un montage qui prend deux heures de calcul ne sert pas, on mesure le temps de chaque brique avant de l'ajouter.
Fait à connaître sur les hésitations
CrisperWhisper 2.0 : son code est sous licence MIT, mais ses poids et ce qu'ils produisent sont sous licence non commerciale de nyra health (relu le 11/11/2026 sur la fiche du modèle) ; un usage commercial demande une licence de l'éditeur. C'est la version rapide (turbo) qui est utilisée. Les « E » dits comme un nom (« sur le E ») sont parfois écrits [UH] à la relecture du rendu : à regarder avant de compter un reste.
Règles datées (une ligne par retour de la personne, la plus récente en bas)
- Rien encore. Chaque retour qui vaudra pour les prochaines vidéos s'écrit ici, daté.