Couper un take à partir de ses preuves
Vous coupez un ENREGISTREMENT réalisé par quelqu'un (un vosso take : recording.webm +
cursor.json + meta.json + doc.json), vous n'en enregistrez pas un. L'enregistrement à
partir d'un script relève du skill product-video ; les programmes sont vos-create/vos-remix.
La boucle est : voir → narrer → décider par exception → vérifier → publier → (l'humain regarde) → recouper. Chaque étape nomme le verbe qui l'exécute. Le document est doc.json ; le contrat pour ses champs et unités est https://vos.so/llms-full.txt. Rien ici ne réenregistre jamais un take humain : un coupage ne peut pas réparer la séquence, et si la séquence ne peut pas porter la demande, vous le dites dans la note et vous arrêtez.
Configuration
npm i -D @vosjs/cli # fetch, digest, plan, frames, render, push, pull
Identifiants, dans cet ordre, jamais affichés : VOS_API_KEY, puis la première ligne de ~/.config/vos/credentials, puis vos login (une connexion via navigateur qui génère une clé pour cette machine). Les clés créent un travail PRIVÉ uniquement et ne peuvent jamais publier. Un Chromium est nécessaire pour digest, frames et render.
0. Règles de base qui remplacent tout ce qui suit
- Ne lisez jamais la vidéo. Vos yeux sont
vos digest:digest.json, puissheet.png, puis un recadrage uniquement là où vous devez décider. Un take de 90s compte ~35 moments et ~25-40k tokens image si vous lisez chaque image ; la feuille plus les recadrages décisifs représente ~10k. L'événement done imprime l'estimation. - Éditez par exception. Les planificateurs (zoom, vitesse, inclinaison) ont déjà répondu
OÙ se trouve chaque clic, session de saisie, défilement et temps mort.
plandans le digest contient leurs étendues etproposednomme celles qui se trouvent sous chaque moment. Conservez, fusionnez, supprimez ou retemporalisez ces étendues ; ajoutez seulement ce qu'un planificateur ne peut pas savoir (quel clic isolé mérite un temps fort, une légende, une accélération ennuyeuse mais non inactive). Chaque étendue que vous touchez porte"source": "manual". Une proposition que vous SUPPRIMEZ va dansrejected([{id, lane, in, out}], la piste et son étendue source) afin qu'aucun nouveau plan, et qu'aucun réenregistrement issu deplan --reuse, ne propose ce temps fort à nouveau ; le studio l'écrit lui-même lorsqu'un humain supprime une étendue automatique. - Pointez avec un calque, pas la caméra. Lorsque le coupage pointe vers un composant (un bouton, une carte, un bloc de code) et que le zoom agrandirait les pixels, redessinez-le sous forme de calque html dans
doc.json(overlays[]aveckind: "html": le balisage, le CSS dans le propre type du produit, la boîte de design en px 1080p) placé à côté de son sujet, jamais dessus. Vous avez les vrais composants du produit dans le dépôt ; utilisez-les. Le balisage est du XML bien formé etvos validateindique ce qui ne s'afficherait pas ; une animation CSS s'exécute sur l'horloge murale et est refusée au profit deanimetmotion. - Les unités du doc, copiées, jamais converties. Le
focusd'un moment est lecx/cyd'une étendue de zoom ; sonrectest ce que le zoom doit contenir. Les étenduessourcesont en secondes de séquence (zoom/vitesse/inclinaison/segments) ; les étenduesoutputsont en secondes rendues (overlays/audio). Les valeurs de pixels où que ce soient sont l'erreur n°1. - Les modifications humaines sont sacrées.
doc.manualdans le digest compte les étendues qu'un humain a décidées ; un push qui touche un nœud que l'humain a modifié depuis votre base renvoie 409sprotected_conflict. Conservez leurs valeurs sauf si la demande nomme exactement ce nœud. - Trois rounds seul, puis un humain. Round = éditer → valider → images → juger. Si cela ne fonctionne pas en trois, poussez le meilleur round et dites pourquoi.
- La demande décide ; les recettes du dossier viennent ensuite ; ces valeurs par défaut en dernier. Une ligne de recette contredite par les membres récents est qualifiée de périmée dans votre note, et n'est pas respectée.
1. Voir
vos fetch <vosId> --media # un take hébergé que vous n'avez pas enregistré (doc + séquence chez vous)
vos pull <take> --media # un répertoire take déjà lié à vos.so
vos folder pull <slug> --media # les takes d'un projet, recettes incluses
vos plan <take> --style <seed doc.json|vosId> # dans une série : le style du seed, par les données
vos digest <take> [--transcript whisper.json] [--style <seed>]
Lisez, dans cet ordre :
digest.json→take(durée, page, présence curseur/micro),moments(id, type, fenêtres source/output, focus, rect, activité, proposé, dit),plan,doc.manual. Un take avechasCursor: false(un take d'enregistreur de navigateur) ne liste que le début/fin/scènes : rythmez paractivité, zoomez uniquement là où la demande nomme un endroit, et dites dans la note que le take n'avait pas de piste de curseur.sheet.png→ les recadrages dans l'ordre chronologique, les ids gravés. C'est le film en un coup d'œil.m<nn>.crop.pngpour les moments que la demande ou la recette rend décisifs ;m<nn>.full.pnguniquement pour le contexte (quelle page, quelle section).
Lire un recadrage : ce qui est au point (un contrôle, un champ, un contenu) ; ce qu'il dit (le libellé, la valeur tapée) ; la conséquence du clic est-elle visible dans l'image du moment suivant ou dans un moment scene juste après ? Un scene est un saut de différence d'image (une navigation, un dialogue) ; regardez son image complète pour le nommer.
Deux choses que les recadrages disent et que la liste des clics ne dit pas : un groupe de clics dont le rect représente la majeure partie de l'image est un GLISSEMENT (visée, défilement, déplacement d'une chose), pas une cible ; et un intervalle "inactif" dont l'activité reste au-dessus de ~0,1 correspond à la VIDÉO EN LECTURE, pas à l'inactivité. Ni l'un ni l'autre ne souhaitent la proposition du planificateur.
Si un dossier est impliqué, lisez TOUS les .md qu'il contient (les siens et les hérités) avant de décider quoi que ce soit.
2. Narrer
Écrivez 3 à 6 temps forts dans vos notes de travail, chacun avec les ids de ses moments, ce qu'il MONTRE (à partir des recadrages) et à quoi il SERT (d'après la recette, le titre de la page, said, ou la demande). Exemple :
B1 m01-m04 la galerie : parcourir, choisir un programme (ouvrir large, un zoom carton)
B2 m05-m06 Remix ouvre le studio (la scène est la récompense)
B3 m07-m12 boutons : cinq glissements de curseur sur le panneau de remix (un zoom tenu, 2× au milieu)
B4 m13-m14 le résultat se joue (relâcher, stabiliser)
Aucune demande accompagnait le take ? Inférez-en une à partir de l'enregistrement (ce qu'il montre, où il serait affiché, combien de temps il devrait durer) et ÉNONCEZ-LA dans la note de version, afin que l'humain corrige la demande avant le coupage lorsqu'elle est erronée.
Si la demande nomme un temps fort ("rendre la partie export plus nerveuse"), mappez-le d'abord aux ids des moments et ne touchez à rien en dehors d'eux.
3. Décider, par exception
Par temps fort, selon plan et la recette :
- Zoom. Conservez l'étendue du planificateur lorsqu'elle cadre le temps fort ; fusionnez les propositions adjacentes en une seule étendue tenue lorsqu'elles correspondent à un seul temps fort (un zoom par temps fort, jamais par clic) ; supprimez une proposition sur un clic qui n'est pas un temps fort ; ajoutez une étendue sur un clic isolé que le planificateur a sauté lorsque le recadrage montre qu'il est le moment. Niveau à partir du rect : un petit contrôle veut 1,8-2,2, un panneau 1,4-1,6 ; lorsque la cible occupe la majeure partie de la largeur de l'image, la règle de cadrage décide du niveau, obéissez-y.
cx/cy= lefocusdu moment. Les ids que vous créez :u1,u2… Dans un enregistrement d'éditeur, zoomez sur la PISTE où une étendue apparaît, jamais sur le canevas qui est glissé. Relâchez un zoom AVANT un clic qui permet de naviguer, afin que l'échange de page se joue en grand écran. - Vitesse. Conservez les propositions sur la saisie/l'inactivité/le défilement ; ajoutez
2×-3×sur un segment dont l'activitéest faible et dont aucun temps fort n'a besoin, ou sous des groupes de glissement ; jamais sur le payoff d'un temps fort, jamais pendant la lecture. - Inclinaison. Uniquement si le style de caméra en a une (
tiltStyle/la personnalité du style) et qu'un temps fort mérite une ponctuation. Une pose par ~5s, ±5..18°. - Coupe. Début et fin : coupez jusqu'à la première et la dernière chose qui compte (
segments), en laissant ~0,5s de stabilisation à la fin. Les écrans de chargement sont supprimés. - Texte. Une légende par temps fort qui a quelque chose à dire, à une cadence (une toutes les 5-10s, 2,5-4s chacune, jamais deux à la fois), dans les mots du produit et l'intention de la vidéo ; en bas tiers
y ≈ 0,82; secondes de SORTIE ; jamais au-dessus du contrôle cliqué (validate prévient). Donnez-lui uneboxlorsque le fond en dessous est clair (la timeline d'un éditeur l'est), et jugez chaque légende à son propre instant. Une seule légende par film est trop peu pour un film qui explique un flux ; zéro est juste uniquement lorsque la recette ou la demande dit pas de texte. - Style. Dans une série,
vos plan --style <seed>AVANT de couper : il copie lezoomStyle/zoomParams/speedParams/tiltStyle/frame/cursor/cam/exportdu seed et re-planifie les étendues automatiques en dessous. Ne répétez jamais ces nombres dans une recette ; le doc du seed est leur maison.
Écrivez le patch comme des MODIFICATIONS à doc.json, jamais une réécriture. Conservez chaque champ que vous ne comprenez pas.
4. Vérifier
vos validate <take> # propre ; LISEZ les avertissements de cadrage, corrigez-les
vos digest <take> --no-frames # après le retiming : nouveaux temps OUTPUT, mêmes images
vos frames <take> --at-moments --at-zooms --times 0,25%,50%,75%,100%
vos frames <take> --times <chaque début de légende + 1> # chaque légende sur son propre fond
vos render <take> check.webm --range a..b --draft # le temps fort qui a le plus changé
Jugez les arrêts sur image par rapport à la boucle de qualité dans https://vos.so/llms-full.txt
et le barème du dossier : flou, chrome, curseur, lisibilité du texte, première et dernière image en tant qu'affiches ; l'image clé dans les 3s ; la fin stabilisée ; ≤1 changement de plan plein écran par ~5s (ffmpeg -vf "select='gt(scene,0.12)'" les compte). Un arrêt sur image moment-<id> et son <id>.crop.png partagent un id : "ce qui était là" à côté de "ce que le coupage montre".
5. Publier
vos push <take> --label "<quoi, impératif, ≤60 caractères>" --note "<la demande pour laquelle vous avez coupé ; les temps forts avec les secondes source ; ce que vous avez supprimé et ajouté>" [--folder <slug>]
La base provient de vos.json. 409 stale_base → vos pull, réappliquez par-dessus, republiez. 409 protected_conflict → conservez les valeurs de l'humain sauf si la demande nommait ce nœud (--override <id> seulement dans ce cas). Un 400 imprime le champ et sa limite. Ensuite GET /api/vos/<id>, suivez contentUrls.thumbnail, et REGARDEZ-LE avant de signaler comme terminé.
6. Recouper (l'humain a regardé)
vos pull imprime le résumé du diff de ce qu'ils ont changé ("zoom z3 : niveau 2,2→1,6 ; overlay c1 supprimé"). C'est le retour, dans les propres mots des données : recoupez ce que leurs MOTS ont demandé et rien que leurs MAINS ont déjà corrigé. Comptez les rounds. "Parfait" est leur mot et la seule sortie d'un seed.
7. Mémoriser (uniquement après que l'humain a approuvé un seed)
Archivez-le et rédigez les règles ; les nombres restent dans le doc du seed.
vos folder create "<série>" --desc "<à quoi cela sert, ≤200 caractères>"
vos folder move <vosId> --to <slug>
vos recipe push CUT.md --folder <slug> # s'applique : takes, seed: <le vos id>
vos recipe push BRAND.md --folder <slug> # s'applique : any, seed: none
Une recette est nommée en MAJUSCULES, comme CLAUDE.md : c'est le fichier que la collection lit avant de couper quoi que ce soit. Ce que vous archivez est stocké avec sa racine en majuscule de toute façon, donc le terminal et l'archive sont d'accord.
CUT.md dit ce qu'un nombre ne peut pas : le vocabulaire des temps forts, ce qui obtient une légende et ce qui ne l'obtient jamais, les durées de tenue, la convention de titre/fin, la plage de longueur, ce qu'il faut ignorer, et les décisions que l'humain a corrigées DANS le seed (lues à partir du diff). BRAND.md : typographie, palette, fond, musique, la voix de tout texte. Membres ultérieurs : tirez le dossier, digérez, planifiez --style à partir du seed, coupez selon CUT.md, publiez --folder ; une correction qui se répète entre deux membres (ou une que l'humain énonce pour tous) est ajoutée sous ## Notes de l'agent, datée, et la règle ci-dessus est réécrite pour correspondre (vos recipe push <file> --asset <id> remplace sur place ; le corps précédent est conservé). Ne réécrivez jamais les lignes du propriétaire en silence.