Créer des vidéos explicatives
Créez un produit pédagogique traçable, pas seulement un MP4. L'Agent doit piloter la machine à états exécutable, appeler les outils requis, inspecter leurs preuves et s'arrêter aux bloquages non résolus.
Commencer avec le projet exécutable
Utilisez le CLI installé explainer-video-skill. Depuis un répertoire Skill copié, utilisez node <skill-dir>/scripts/explainer-video.mjs à la place. Lancez doctor --json avant de promettre un rendu.
Le projet JavaScript et les commandes média nécessitent Node.js 22+. Les commandes Python du cycle de vie (install, update, verify, rollback, uninstall, extension listing) ne nécessitent pas Node.js.
Créez un projet seulement après avoir défini la question exacte, le public, la langue, la plateforme et le rapport hauteur/largeur :
explainer-video-skill new <project-dir> --title "Titre" --topic "Question précise à expliquer" --template spatial-chamber --preset general-mechanism --json
explainer-video-skill status --json <project-dir>
explainer-video-skill next --json <project-dir>
Pour chaque étape, répétez cette boucle :
- Lancez
status --jsonetnext --json. - Lisez les entrées requises et le gate listés.
- Effectuez l'action réelle de recherche, écriture, génération, rendu ou revue.
- Écrivez le fichier de preuve demandé ; n'inventez pas le succès.
- Lancez
validate <current-stage> <project-dir> --json. - Continuez seulement lorsque la validation fait avancer le projet.
Les étapes sont discovery -> brief -> evidence -> mechanism_map -> narration_and_cues -> real_audio_timing -> scene_spec -> runnable_renderer -> render -> automated_qc -> human_listen -> publishing_package -> human_release_decision.
Contrat de contenu
Lisez content-and-script-contract.md lorsque vous définissez la promesse, les preuves, le mécanisme, la narration ou la carte de cues.
- Expliquez
entrée -> changements d'état interne -> sortie, y compris pourquoi chaque étape suit. - Incluez un exemple travaillé et une chaîne pertinente de limite, coût, contrôle ou échec.
- Considérez la durée, le nombre de scènes et le nombre de mots comme des alarmes de profondeur, jamais des cibles de remplissage.
- Gardez le sujet public pas plus large que le mécanisme réellement enseigné.
- Pour une série, la première phrase connecte la sortie précédente à ce sujet exact ; la dernière phrase annonce la question suivante exacte. Pour une vidéo autonome, ouvrez avec la question exacte et fermez avec la conclusion réutilisable.
- Stockez une seule chaîne parlée canonique. Les sous-titres et la TTS doivent être identiques caractère par caractère après normalisation.
- Supprimez
\_, les underscores de snake_case, la syntaxe Markdown et autres caractères qu'un moteur TTS pourrait prononcer littéralement. Gardez l'orthographe technique dans une étiquette à l'écran séparée. - Liez la narration, le titre visible, l'étiquette du mécanisme, le focus, l'action et le handoff de chaque cue à la même affirmation locale.
Utilisez des preuves primaires pour les faits du mécanisme. Conservez la source, le type de source, la date de vérification, la simplification et l'expression visuelle prévue dans le tableau de preuves. Les sources communautaires peuvent révéler des confusions ou des cas limites mais n'établissent pas le mécanisme par elles-mêmes.
Sélectionner dans la collection de templates visuels
Lisez visual-template-collection.md avant de choisir ou modifier un template. Inspectez les manifests exécutables avec :
explainer-video-skill templates list --json
explainer-video-skill templates inspect paper-theatre --json
explainer-video-skill templates inspect spatial-chamber --json
explainer-video-skill templates inspect ink-explainer --json
paper-theatre: identité d'objet, traitement physique, preuves, tri, comparaison et transformation éditoriale.spatial-chamber: systèmes, routes, couches, pipelines, files d'attente, transfert et changements d'état spatial à fort impact.ink-explainer: dérivation, formules, relations causales, annotations denses, comparaisons et correction.
Choisissez par structure de connaissance, pas par décoration. Un projet peut combiner des primitives, mais une grammaire doit rester dominante. Ne copiez pas une vieille scène et n'échangez pas le texte. N'utilisez pas de lignes de balayage plein écran, de balayages de longueur de narration, de particules sans signification, ou de cartes répétées en guise de mouvement de substitution.
Le rendu généré est un échafaudage exécutable générique, pas une direction visuelle finie. Avant la publication, remplacez-le ou étendez-le avec des visuels thématiques spécifiques : primitives SVG/DOM spécifiques au sujet, relations spatiales, langage de caméra et mouvement sémantique dérivé du mécanisme réel. Ne présentez jamais la scène de démarrage comme une vidéo finie haute fidélité simplement parce qu'elle rend avec succès.
Utilisez DingTalk JinBuTi/DingTalk Sans pour les rôles d'affichage lorsqu'ils sont sous licence locale et installés, et Noto Sans SC ou un fallback CJK testé pour les sous-titres. N'emballez jamais de fichiers de police binaires ou de plugins GSAP commerciaux sans droits de redistribution. Chaque plugin premium doit avoir son fallback déclaré par son template.
Narration, timing et rendu
Lisez engineering-pipeline.md avant l'implémentation.
explainer-video-skill narration prepare <project-dir> --json
# Produisez la narration avec le fournisseur sélectionné seulement après avoir obtenu l'autorisation de coût/identifiants nécessaire.
explainer-video-skill narration import-timing <project-dir> --timing <measured-timing.json> --json
explainer-video-skill build <project-dir> --json
explainer-video-skill render <project-dir> --json
explainer-video-skill cover <project-dir> --json
explainer-video-skill mux <project-dir> --audio <narration.wav> --json
Le timing de narration réel mesuré est la seule horloge d'animation finale. Utilisez des timelines pauses déterministes, des assets locaux, des viewBox fixes et des ancres de cues explicites. N'utilisez jamais d'aléatoire runtime, d'assets distants, de minuteries wall-clock ou de timings estimés dans un rendu de publication.
Lorsque vous modifiez le rendu ou la chaîne d'outils média dans ce dépôt, lancez npm run smoke:render pour qu'un rendu réel dans un navigateur, une capture de couverture, un mux audio, une inspection ffprobe et un audit média exercent le chemin d'intégration.
Générez une couverture dédiée, pas une image aléatoire. La couverture doit indiquer le sujet exact et rester lisible dans un aperçu de téléphone. Les étiquettes série/saison/épisode sont des règles prédéfinies, pas un branding du package central.
QC et frontière de publication
Lisez release-qc-and-publishing.md avant de déclarer un candidat terminé.
explainer-video-skill audit <project-dir> --json
explainer-video-skill package <project-dir> --json
Les vérifications automatisées doivent inclure le décodage complet, les spécifications média, les diagnostics de noir/gel/silence, les images représentatives, les images d'avertissement, l'inspection de débordement/mise en page, l'aperçu de couverture et les hachages des artefacts. L'automatisation ne peut écrire que release_candidate_pending_human_listen.
Effectuez trois passes humaines sur le candidat haché exact : visuel en sourdine, audio seul et visionnage normal. Enregistrez les discordances de titre/narration/sous-titre/focus, les coupures, le texte illisible, la prononciation accidentelle de symboles, la dérive temporelle, les mouvements morts, la composition répétée, les transitions sales et les défauts de mixage avec des timestamps.
Seulement après qu'un réviseur nommé a écouté l'intégralité du candidat haché, l'Agent peut exécuter :
explainer-video-skill release record-human-decision <project-dir> --decision passed --actor "<reviewer>" --complete-listen --listened-sha256 "<sha256>" --json
Ne déduisez jamais passed d'un rendu, d'un succès du fournisseur, de tests verts ou de la présence de fichiers.
Extensions, presets et portabilité
Lisez extension-api.md avant d'ajouter un profil visuel, vocal, de recherche, QC ou de publication. Les extensions sont déclaratives, listées par permissions, verrouillées par hachage et ne peuvent pas exécuter de hooks arbitraires. general-mechanism est neutre de domaine ; le comportement spécifique au sujet appartient à un preset explicite comme l'exemple inclus ai-principle-series.
Lisez install-and-portability.md pour npm, Codex, autres hôtes d'Agent, migration, mise à jour, rollback et règles de licence des assets.
Conditions d'arrêt
Arrêtez-vous et signalez le bloqueur exact lorsque les faits ne sont pas vérifiés, la promesse du sujet est plus large que l'explication, la narration canonique n'est pas fixée, le timing audio réel manque, le titre/carte/narration/focus divergent, le texte dépasse ou déborde, le template sélectionné n'exprime pas le mécanisme, le décodage média échoue, les assets sous licence ne sont pas résolus, ou la revue humaine est incomplète.