Visuels (Storyboard)
C'est une tâche, pas une étape d'un flux. Elle s'exécute quand l'utilisateur la demande ; après une modification du montage, on peut y revenir plus tard.
Prérequis uniquement : le journal et les sous-titres existent (les calques sont placés selon la plage de sous-titres, les temps sont calculés à partir du journal).
Nécessite edit-list.json, transcript.json, subtitles.json
Produit visuals.json + modules/<numéro-nom>/index.html
Une fois terminé, on s'arrête, sans diriger l'utilisateur vers la prochaine étape.
Lire et exécuter d'abord le Contrat de phase du workflow métier. Les règles strictes pour l'écriture des modules sont dans le Contrat de module, les règles de décision dans Jugement visuel.
0. Prêt
Exécuter d'abord la « Vérification de préparation » de Vérification des mises à jour — vérifier que les skills sont à jour et que le Runtime est compatible ; la racine du plugin est également localisée ici (dans les commandes de ce document, <racine-plugin> est remplacé par ce chemin littéral). Continuer seulement si « Prêt » ; si « Nouvelle session nécessaire » ou « Stop », exécuter les instructions correspondantes (y compris l'interdiction « Interdiction de fabriquer une interface de remplacement »), le Skill métier n'intègre pas sa propre logique d'environnement.
Si le résultat de la préparation est runtime.kind=desktop-managed, réutiliser directement le CLI stable installé de l'application de bureau et le même service launchd/windows-task ; ne pas analyser le chemin d'Electron, installer des dépendances supplémentaires ou lancer un second Runtime.
Commandes
node "<racine-plugin>/scripts/ensure-running.cjs" --json
node "<racine-plugin>/scripts/videocut-cli.cjs" visual get <projet> --json
node "<racine-plugin>/scripts/videocut-cli.cjs" visual frame <projet> --cues sub-0004,sub-0005 --count 12 --out <dossier> --json
node "<racine-plugin>/scripts/videocut-cli.cjs" visual add <projet> --module modules/01-xx/index.html --cues sub-0004,sub-0005 [--zoom x,y,w,h] [--id vis-0001] --json
node "<racine-plugin>/scripts/videocut-cli.cjs" visual remove <projet> --id vis-0001 --json
ensure-running doit d'abord prouver que le port canonique 5190 appartient au service géré de la plateforme actuelle ; en cas d'échec, transmettre l'erreur et s'arrêter, sans revenir au premier plan ni choisir un port.
Le calque est lié à la plage de sous-titres (--cues), le produit les convertit en ID de mots — un calque ne peut jamais être lié à des mots que personne ne prononce, si le montage change, le calque se déplace tout seul. Ne pas stocker de secondes.
Quatre étapes, sans saut
① Texte → Tâche Lire subtitles.json, segmenter sémantiquement, répondre pour chaque segment :
Tutoriel/Démonstration/Preuve, ou Concept/Logique/Transition ?
② Extraire des images visual frame extrait 8 à 12 images, regarder vraiment avec les yeux.
En pratique, 2 segments sur 12 ont contredit la prédiction textuelle par les images — cette étape n'est pas une formalité
③ Mesurer la fenêtre Différence de pixels entre images adjacentes pour identifier les moments de défilement/commutation/action.
de mouvement Le calque ne couvre que la fenêtre stable, se retire avant que l'action ne commence
④ Faire et placer Écrire le module → visual add → vérifier calque par calque dans l'aperçu
Règles de jugement pour ②
L'image correspond exactement à ce qu'il dit → Annoter : entourer, entourer le mot qu'il dit où il le dit. Les vraies preuves ne doivent pas être masquées
Image faiblement liée/vide → Animation plein écran : fond blanc, à partir de la bibliothèque de styles
L'image est suffisamment claire par elle-même → Ne pas toucher. C'est la réponse correcte la plus courante (en pratique, 4 segments sur 13 restent sans calque)
Le résultat de ③ est numérique, pas une impression
Coordonnées du cercle Calculées par statistiques de pixels (scanner les lignes de texte en niveaux de gris), interdiction d'estimation visuelle — l'estimation visuelle a déjà eu une erreur de 50 px
Moments d'interaction Différence de pixels image par image pour trouver les sauts brusques (en pratique, un saut de 4 à 335), le cercle doit disparaître 0,2 s avant le début de l'action
Fenêtre stable Il y a souvent du défilement au début (il cherche le contenu), le calque commence à la plage de sous-titres où l'image est stable
Zoom, réfléchir avant d'utiliser
Par défaut, pas de zoom. Un enregistrement d'écran 960×720 devient flou en zoomant, l'utilisateur le verra immédiatement
Quand le zoom est inévitable ≤1,6×, zone de 62,5% au carré centrée — la composition complète prime sur la lisibilité des petits caractères
Caractères trop petits Utiliser un cercle pour guider le regard suffit ; si vraiment besoin de lire, la réponse est de réenregistrer en haute résolution, pas de zoomer
Cycle de révision
Le répertoire des modules est nommé par numéro (01-daily-report, 05-anim-task-split), la piste temporelle affiche le nom du répertoire, l'utilisateur signale le numéro et vous modifiez ce calque-là, sans toucher aux autres.
Deux règles strictes pour la modification des calques, chacune correspondant à un incident réel :
En modifiant un calque, vérifier le module Après avoir réduit/allongé un calque, les instants relatifs codés en dur dans le module ne changent pas —
l'instant d'apparition du cercle peut tomber après la fin du calque et ne jamais s'afficher
Validation par pixels Capturer l'image et regarder, ne pas inspecter les propriétés DOM. Un iframe avec « visibilité inversée correcte »
était physiquement hors de l'image — propriétés parfaites, écran vide
Ce qu'il ne faut pas faire
- Ne pas sauter l'extraction d'images et la fenêtre de mouvement pour aller directement à la création (chaque type d'erreur a été commis une fois : masquer une vraie preuve, cercle flottant pendant un défilement)
- Ne pas ajouter quelque chose à chaque segment — remplir n'est pas un objectif, ne rien ajouter est une réponse courante
- Ne pas stocker de secondes, ne pas estimer les coordonnées visuellement, ne pas ajouter d'ombre sur un fond blanc
- Sans contenu réel, ne pas utiliser d'images de substitution
- Le style est choisi depuis le registre, ne pas en inventer
- Les icônes de marque utilisent les glyphes officiels, interdiction de les dessiner à la main (le X a été dessiné avec deux lignes croisées, l'utilisateur l'a repéré). Si l'index local ne les contient pas, prendre le glyphe officiel monochrome depuis simple-icons (le style noir et blanc correspond parfaitement), enregistrer le SVG original dans le répertoire du module pour référence ; dans une même vidéo, une même marque ne doit avoir qu'un seul aspect.