name: cut-story description: Cette compétence est utilisée lorsque l'utilisateur demande de décider de quoi parle réellement la vidéo avant toute coupe mécanique – « construis l'histoire », « qu'est-ce qui reste », « quels sujets garder », « réduis à 6 minutes », « trouve l'accroche », « structure ça », « découpe ça en N minutes », « trouve l'accroche », « réorganise les sujets ». C'est la passe de sélection du CONTENU qui écrit le bloc « story » dans project.json ; elle s'exécute après la transcription et avant la coupe brute. argument-hint: [project-slug] [target-minutes] arguments: [project, target]
cut-story
Décidez ce qu'est la vidéo vraiment. La coupe mécanique ne fait que resserrer ce qui a été dit dans l'ordre où cela a été dit ; cette passe décide quels blocs de sujets survivent, dans quel ordre, et où se trouve l'accroche. C'est la seule étape qui peut transformer une divagation de 25 minutes en une vidéo de 6 minutes, et c'est l'étape qui détermine le plus si quelqu'un regarde.
Arguments : $project est le slug du projet, $target une durée cible optionnelle en minutes. Le texte complet de la demande se trouve dans $ARGUMENTS. Si aucun slug n'est fourni, utilisez le projet nommé dans PIPELINE_STATE du crochet de session et indiquez lequel vous avez choisi.
Les noms des verbes ci-dessous suivent le contrat de construction. Si python engine/ve.py --help est en désaccord, la CLI prévaut – utilisez ses noms et mentionnez l'incohérence.
Préconditions
projects/$project/project.jsonexiste avecstageàtranscribedou plus tard.transcript.pathest résolu ettranscript.word_countest défini.- Si
stageest encore àintake, arrêtez-vous et exécutez d'abord la compétence de transcription.
N'exécutez jamais cette passe deux fois en silence. Si story.blocks existe déjà, affichez d'abord les décisions actuelles et demandez s'il faut réviser ou remplacer.
Étape 1 – obtenir un transcript lisible
Le JSON au niveau des mots est une prose illisible. Aplatissez-le d'abord :
python engine/ve.py transcript flatten $project --numbered
Cela émet les mots comme un texte courant avec un marqueur d'index de mot tous les 25 mots. Les indices de mots sont les ancres que le bloc story stocke – ne stockez jamais de secondes, ne stockez jamais de timecodes.
Étape 2 – envoyer un transcript-analyst lorsque le transcript est long
Si word_count > 2500 (environ 15 minutes de discours en allemand), envoyez l'agent transcript-analyst au lieu de lire le transcript en ligne.
Pourquoi : un transcript de 5 000 mots consomme le contexte dont vous avez besoin pour le reste de la session, et l'analyste renvoie environ 40 lignes. Le lire vous-même vous biaise aussi – après avoir lu chaque phrase, tout semble important. Un contexte frais coupe plus sévèrement, ce qui est correct.
Donnez à l'agent : le chemin du transcript aplati, la durée cible, la plateforme de output.platform, et toute orientation que l'utilisateur a donnée dans $ARGUMENTS. Il renvoie des blocs candidats avec décisions et justifications. La décision finale vous appartient toujours – examinez ses suppressions, et annulez toute suppression que l'utilisateur a explicitement demandé de conserver.
En dessous de 2500 mots, lisez le transcript vous-même.
Étape 3 – nommer la vidéo en une phrase
Avant toute décision de bloc, écrivez une phrase en allemand qui dit ce que le spectateur croit à la fin qu'il ne croyait pas au début. Montrez-la à l'utilisateur.
Si cette phrase ne peut pas être écrite, le matériau ne contient pas encore de vidéo. Dites-le clairement et arrêtez-vous – recommandez un enregistrement de rattrapage plutôt que d'assembler quelque chose d'informe. C'est un résultat réel, et le livrer honnêtement est plus utile qu'un joli rien de 6 minutes.
Chaque décision ultérieure répond à cette phrase.
Étape 4 – découper le transcript en blocs
Un bloc est une unité de sens qui survit à un déplacement : de 30 secondes à 3 minutes, une idée. Les blocs sont des plages de mots contiguës qui tuilent le transcript sans lacunes ni chevauchements.
Ne coupez pas les blocs aux pauses. Coupez-les là où le sujet change – les propres jalons de l'orateur sont fiables en allemand : also, jetzt zum Thema, das andere ist, kurz noch, um nochmal zurückzukommen, was viele nicht wissen.
Étape 5 – décider, avec un biais vers la suppression
Attente par défaut : supprimez 40 à 60 % des mots enregistrés. Si plus de 70 % du matériau survit, aucune décision n'a été prise – revenez en arrière et appliquez les tests de suppression plus sévèrement.
Tests de suppression, appliqués dans l'ordre :
- Le test de la croyance. Supprimez le bloc. Ce que le spectateur croit à la fin change-t-il ? Si non, supprimez-le. C'est le test principal ; les autres ne sont que des raccourcis.
- Le test du deuxième exemple. Deux exemples du même point : gardez le plus concret, supprimez l'autre. Les orateurs se répètent pour réfléchir, pas pour enseigner.
- Le test de l'orphelin. La mise en place d'une conclusion qui a été supprimée devient du bruit. Supprimez-la, et revérifiez après chaque autre suppression – les orphelins apparaissent en cascade.
- Le test de l'échauffement. Les 60 à 90 premières secondes de presque tout enregistrement sont un éclaircissement de gorge. Supprimez-les par défaut et dites à l'utilisateur que vous l'avez fait. Cette seule règle améliore plus de vidéos que toutes les suppressions de mots de remplissage combinées.
- Le test du récapitulatif. Les résumés oraux de ce qui vient d'être dit (« also nochmal kurz zusammengefasst ») sont une béquille de parole, pas une structure. Supprimez sauf si la vidéo est vraiment didactique et longue.
Signaux à conserver, du plus fort au plus faible : un nombre, un nom, une date, une erreur spécifique que l'orateur admet, un exemple concret travaillé. La spécificité est le signal de conservation le plus fort qui soit. Un cadrage abstrait est bon marché et peut être réenregistré en dix secondes ; une anecdote spécifique ne le peut pas.
Utilisez "decision": "maybe" pour les blocs dont le sort dépend de la durée finale. Maintenez maybe sous 20 % des blocs – au-delà, c'est de l'indécision, pas de la nuance, et l'utilisateur doit faire le travail qu'on vous a demandé de faire.
Si $target est défini, vérifiez sa plausibilité : additionnez les comptes de mots des blocs conservés et divisez par le débit mesuré de l'orateur (word_count / durée source en minutes). Rapportez l'estimation avant d'écrire quoi que ce soit. Le discours en plan tête parlante en allemand tourne autour de 130-160 mots par minute.
Étape 6 – trouver l'accroche
L'accroche n'est presque jamais au début de l'enregistrement. Les gens arrivent à leur vrai point tardivement, après s'être échauffés et avoir arrêté de performer.
Cherchez d'abord dans le dernier tiers. Cherchez : une affirmation qui semble fausse jusqu'à ce qu'elle soit expliquée, un nombre plus grand ou plus petit que prévu, un échec admis, un enjeu (« das hat mich zwei Wochen gekostet »). Choisissez 15 à 25 secondes – une ou deux phrases, pas un paragraphe.
Écrivez-la comme story.hook avec un word_range et une note en allemand expliquant pourquoi elle a été déplacée. Déplacer l'accroche vers l'avant est le seul réordonnancement qui est presque toujours correct.
Étape 7 – ordonner, et ne réordonner que lorsque vous pouvez nommer la raison
Il y a exactement deux raisons légitimes de réordonner :
- L'accroche va au début.
- Un bloc répond à une question qu'un bloc ultérieur pose, donc il doit le précéder.
Tout le reste conserve l'ordre d'enregistrement. Réordonner du matériel parlé brise les références arrière, et vous n'entendrez pas la rupture avant le rendu – moment où trois étapes ont déjà été exécutées.
Vérification d'intégrité des références, obligatoire pour chaque bloc déplacé. Relisez les deux premières phrases du bloc déplacé pour détecter les références arrière. En allemand, elles se brisent silencieusement : also, deswegen, deshalb, dadurch, dabei, wie gesagt, das, dieser/diese/dieses, außerdem, trotzdem, andererseits, wie eben erwähnt. Si un bloc déplacé commence par l'un d'eux, soit commencez le bloc une phrase plus tard, soit marquez-le maybe et dites à l'utilisateur qu'il a besoin d'une phrase de liaison. Ne le déplacez pas en espérant.
Étape 8 – écrire le bloc story
Écrivez story.blocks[] et story.hook dans projects/$project/project.json exactement comme le schéma dans docs/edl-schema.md le définit : id, word_range (semi-ouvert, en indices de mots), label (allemand), decision (keep|drop|maybe), order (ordre de sortie, peut différer de l'ordre d'enregistrement), rationale.
Règles non négociables :
- Rien n'est supprimé. Un bloc supprimé reste dans le tableau avec
"decision": "drop". Chaque décision doit être réversible en basculant un champ. L'utilisateur sera en désaccord avec certaines de vos suppressions et doit pouvoir les annuler sans réexécuter la passe. rationaleest une proposition en allemand et dit POURQUOI, pas QUOI. « trägt das kernargument » est utile ; « spricht über Frame-Snapping » est un libellé, pas une raison.orderest dense sur les blocs conservés en commençant à 0. Les blocs supprimés obtiennent leur index d'ordre d'enregistrement ; ils sont inertes mais ne doivent pas entrer en conflit.- Réglez
stagesur"story". Ne touchez pas àsegments[]– c'est le territoire de cut-rough.
Ensuite, montrez à l'utilisateur un tableau compact : ordre, libellé, décision, minutes estimées. Ce tableau est le livrable, pas le JSON.
Étape 9 – passer la main
Dites explicitement que la coupe mécanique va maintenant s'exécuter à l'intérieur des blocs conservés uniquement, ce qui est à la fois correct et moins coûteux – la détection des mots de remplissage et des reprises sur du matériel qui va être supprimé est un travail gaspillé. Proposez ensuite la compétence cut-rough.
Modes de défaillance
| Symptôme | Cause | Correctif |
|---|---|---|
| Tout semble essentiel | Lecture du transcript en ligne alors qu'il était long | Envoyez transcript-analyst ; un contexte frais coupe plus sévèrement |
| 85 % du matériau conservé | Aucune décision éditoriale n'a été prise | Réappliquez le test de la croyance à chaque bloc |
| La vidéo saute étrangement après réordonnancement | Référence arrière brisée | Exécutez la vérification de l'étape 7 sur chaque bloc déplacé |
Lacunes ou chevauchements de word_range | Blocs non tuilés | Les blocs doivent être contigus et semi-ouverts |
| L'utilisateur rejette la plupart des suppressions | Mauvaise phrase à l'étape 3 | Réécrivez la thèse en une phrase avec l'utilisateur, puis recommencez |