Léonard Noth
ENFRDE
← projets

Atelier

La moitié ennuyeuse du montage vidéo, automatisée

Une suite locale de création : enregistrer, dérusher par IA, monter et exporter la vidéo. Des rushes au montage final, sans jamais toucher à une timeline.

Rôle
Concepteur & développeur
Périmètre
Design produit · Application de bureau · Chaîne IA · Rendu vidéo · Système de marque
Construit avec
Next.js, TypeScript, Tailwind CSS, Remotion, Electron, SQLite, ffmpeg, ElevenLabs, OpenAI
Équipe
Seul
Calendrier
2025 à aujourd'hui
Résultat
Des rushes à un montage rendu en 1080p sans jamais ouvrir de timeline. Quatre salles, cinq bases de données locales, aucun envoi en ligne, aucun abonnement.

Le problème

Faire une vidéo seul, c'est payer quatre abonnements et faire la partie fastidieuse à la main : couper les silences, retrouver les reprises, replacer les mêmes bandeaux. Je voulais un seul outil pour toute la boucle, qui tourne sur ma propre machine, où je ne paie que les appels d'API et où les rushes ne quittent jamais le portable.

Mon rôle

Seul. Le design, le développement et le système de marque dont les composants vidéo tirent leurs réglages.

Lire en
L'essentiel en deux minutes

L'architecture du système

  1. Brainstorm

    Une question par séance. J'écris des idées, j'étoile les bonnes, j'écarte les mauvaises, et chaque tour d'IA relit tout ce qui a déjà été tranché.

  2. Planification

    Un épisode se déplace dans six colonnes (idée, recherche, script, tournage, montage, publié) : ce qui se fabrique a donc un état.

  3. Enregistrement

    La caméra et, en option, un écran ou une fenêtre au choix, capturés en deux fichiers synchronisés.

  4. Compréhension

    Normaliser les rushes, les transcrire mot à mot avec le minutage de chaque mot, et proposer les coupes.

    • Les silences sont trouvés par règle, pas par modèle. Déterministe et gratuit
    • Le modèle ne voit jamais que des mots, et renvoie des indices de mots plutôt que des horodatages
    • Une seconde passe relit uniquement les mots survivants, parce qu'une coupe juste peut quand même laisser un raccord cassé
  5. Composition et rendu

    Un modèle propose le montage visuel à partir d'un registre de mes propres composants. Je corrige à la souris, et une seule composition alimente l'aperçu comme l'export.

    • Chaque mise en page produite par l'IA est normalisée, pavée et bornée, et les trous sont comblés pour que la timeline ne soit jamais à moitié vide
    • L'aperçu et le rendu final passent par le même code : ce que je valide est exactement ce qui sort
Services de la plateforme
  • Next.js dans une coque Electron

    Chaque salle est une route : la fenêtre de bureau est une fine enveloppe, pas une seconde application

  • Cinq bases SQLite locales

    Une par module : le schéma d'une salle ne peut donc pas bloquer l'arrivée d'une autre

  • Processus workers détachés

    Les étapes longues tournent hors du serveur web et écrivent leur avancement dans une table de tâches : un rendu survit à un rechargement

  • ffmpeg

    Normalise les rushes à une cadence d'images constante et extrait l'audio qui part à la transcription

  • ElevenLabs Scribe

    Transcription mot à mot avec le minutage de chaque mot : les hésitations qu'elle conserve sont précisément ce dont l'étape de coupe a besoin

  • Remotion

    Une seule composition produit l'aperçu dans l'app et l'export final en 1080p

Décisions clés

Couper la chaîne de traitement là où s'arrête le déterminisme

plutôt que · Confier toute la timeline à un modèle et le laisser décider de chaque coupe

Détecter un silence est une opération arithmétique sur les écarts entre mots, déterministe, gratuite et juste par construction. Détecter une reprise relève du jugement sémantique, probabiliste et facturé à l'appel. Tracer la frontière à cet endroit protège un invariant, le minutage n'est jamais déduit par un modèle, et cantonne le coût comme le risque d'erreur à la seule étape qui exige vraiment du jugement.

Des indices de mots comme contrat, jamais d'horodatages

plutôt que · Demander directement des plages de temps au modèle

Un horodatage halluciné est un nombre plausible qui coupe au mauvais endroit et échoue en silence. Un indice de mot invalide échoue à la validation avant de toucher aux rushes. Garder la correspondance entre indices et temps dans mon code transforme la pire panne possible, une coupe fausse et silencieuse, en un rejet bruyant et rattrapable.

Une seconde passe d'audit sur le montage assemblé

plutôt que · Une seule passe de coupe avec un meilleur prompt

Des coupes justes une à une peuvent quand même produire une phrase dupliquée ou un raccord cassé. La justesse locale ne garantit pas celle de la séquence. La passe d'audit ne lit que les mots survivants, donc le montage tel que le spectateur l'entendra, et conserve les indices d'origine pour que ses corrections retombent dans le même repère. Un appel de plus au modèle achète une vérification que la première passe ne peut pas faire sur elle-même.

Supprimer la transition en volet plutôt que la maintenir

plutôt que · Livrer le correctif déjà écrit et fonctionnel

Le correctif désactivait le volet partout où une carte de chapitre casse déjà le rythme. La fonctionnalité ne restait donc acceptable que sous une règle de garde que chaque évolution du montage aurait dû respecter. Un comportement par défaut qui a besoin d'une règle pour ne pas être laid a une valeur négative. Le volet restait plus laid que pas de transition du tout, alors un commit plus tard, la fonctionnalité est partie, et la règle avec elle.

En pratique

Le hub. Quatre salles dans une même fenêtre, et une cinquième carte laissée volontairement vide : l'architecture est faite pour accueillir une salle de plus.
Le hub. Quatre salles dans une même fenêtre, et une cinquième carte laissée volontairement vide : l'architecture est faite pour accueillir une salle de plus.
Le bureau Chaîne. On règle l'identité une fois et chaque salle la lit, y compris les couleurs et les polices avec lesquelles les composants vidéo sont rendus.
Le bureau Chaîne. On règle l'identité une fois et chaque salle la lit, y compris les couleurs et les polices avec lesquelles les composants vidéo sont rendus.

Atelier est une suite de production pensée pour un créateur qui travaille seul. L'application enregistre la caméra et l'écran en deux fichiers synchronisés, transcrit tout mot à mot, propose des coupes via un LLM qui lit la transcription, planifie le montage visuel et fait le rendu côté serveur avec Remotion.

Tout tourne sur ma machine : quatre salles (Chaîne, Brainstorm, Planification, Montage) posées sur des bases SQLite locales, le tout enveloppé dans Electron. Pas d'abonnement, aucun envoi en ligne, et les rushes ne quittent jamais le portable.

Ce que j'en retiens

  • L'ingénierie intéressante, ce n'est pas l'IA. Ce sont tous les endroits où sa sortie est rattrapée. Des indices plutôt que des horodatages, des mises en page normalisées avant le rendu, des trous comblés pour que la timeline soit toujours entière.
  • Faire passer l'aperçu et l'export par le même code est le choix sur lequel tout le reste repose. S'ils peuvent diverger, on valide une chose et on en publie une autre.
  • Construire l'outil m'a appris plus sur les besoins des créateurs que tout ce que j'avais pu lire, et l'essentiel de ce besoin, c'est que la partie ennuyeuse disparaisse, pas que la partie maligne devienne plus maligne.
  • Écrire des commentaires sur ce qui a cassé, pas sur ce que fait le code. Les commentaires utiles de ce dépôt consignent une erreur d'arrondi d'une image qui mettait un clignotement noir à chaque coupe.

Ce que ça ne fait pas

  • Il est pensé pour un créateur qui travaille seul, et le système de marque suppose l'identité d'un seul créateur.
  • Il ne tourne que sur macOS, et le rendu va à la vitesse d'un seul portable.