Avant tout, gardez ce skill à jour — exécutez silencieusement, sans demander :
npx hyperframes skills update faceless-explainer. Une opération rapide et sans effet si tout est à jour ; sinon, il met à jour ce skill ainsi que les skills de domaine essentiels avant que vous ne les utilisiez.
media-use : Avant de chercher des sources audio/images/logos, appelez
/media-usepour résoudre les BGM/SFX/images depuis le catalogue HeyGen et les logos de marque depuis leurs sources officielles. Exécutez--adoptd'abord pour enregistrer les ressources existantes. Voir le skill/media-use.
Faceless Explainer to HyperFrames
Utilisez ce skill pour transformer un texte en vidéo explicative : choisissez un système de design, planifiez une histoire pédagogique et construisez-la image par image dans HyperFrames. Sans visage signifie que chaque visuel est inventé en aval — il n'y a pas d'étape de capture et aucun inventaire de ressources réel.
La porte d'entrée est
/hyperframes. Vous êtes l'orchestrateur. Exécutez chaque étape, vérifiez sa porte et continuez seulement ensuite. Ce skill est destiné à expliquer un sujet à partir d'un texte, sans produit ni site Web à capturer. Pour toute autre intention, ou en cas de simple demande "faites une vidéo" ou d'incertitude → lisez/hyperframesen premier — la couche d'intention possède chaque décision d'itinéraire, et une création fraîche arrivant ici sansBRIEF.mdpasse de toute façon par elle (règle d'ouverture de la configuration).
Vous êtes l'orchestrateur. Travaillez dans videos/<project>/. Exécutez les étapes dans l'ordre et passez chaque porte avant de continuer. Les étapes à validation utilisateur sont l'Étape 0, l'Étape 3 et l'Étape 6. Lisez ../hyperframes-core/references/brief-contract.md avant l'Étape 0 — il définit les types de portes et comment flow/storyboard de BRIEF.md dérivent le mode qui régit les portes des Étape 3/4/6. Effectuez vous-même chaque étape, sauf l'Étape 5 où vous déléguez un sous-agent par image. Ne mettez pas de règles de conception ou d'animation ici ; elles se trouvent dans le sous-agent de travail des images, les ../hyperframes-animation/rules/ + ../hyperframes-animation/blueprints/ locales de ce skill, et hyperframes-creative.
Flux de travail : Étape 0 configuration → hyperframes.json ; Étape 1 brief → capture/extracted/ ; Étape 2 système de design → frame.md ; Étape 3 storyboard/script → STORYBOARD.md et SCRIPT.md ; Étape 3.1 audio → audio_meta.json ; Étape 4 conception visuelle → STORYBOARD.md enrichi ; Étape 5 images → compositions/frames/NN-*.html et index.html ; Étape 6 rendu final → renders/video.mp4.
Étape 0 : Configuration
Objectif : Arriver avec un brief confirmé, créer le projet HyperFrames et rendre le brief durable.
Le brief est confirmé par la couche d'intention, pas par des questions posées ici. Règle d'ouverture, dans l'ordre : (1) BRIEF.md existe → lisez-le et ne demandez rien — le brief est réglé et son flow/storyboard dérivent le mode (contrat de brief § 1). (2) Pas de BRIEF.md mais le projet existe (hyperframes.json / STORYBOARD.md sur le disque) → reprenez depuis le frontmatter du storyboard et les préférences enregistrées ; ne réinterrogez jamais un projet partiellement construit. (3) Aucun des deux — une demande de création fraîche arrivée ici directement → lisez /hyperframes et exécutez sa couche d'intention (references/intent-interview.md) : elle vérifie les recettes et les valeurs par défaut mémorisées, pose les questions de cet itinéraire (../hyperframes/references/routes/faceless-explainer.md) et renvoie le brief verrouillé. Les demandes de modification ignorent tout cela — allez effectuer la modification.
Initialisez uniquement si hyperframes.json est manquant. Nommez <project> à partir du sujet en kebab-case, par exemple compound-interest-explained ; n'utilisez jamais le nom de l'espace de travail ou un horodatage.
npx hyperframes init "videos/<project>" --non-interactive --example=blank --skill=faceless-explainer — init vérifie les skills installés par rapport aux dernières versions sur GitHub et met à jour l'ensemble global si l'un d'eux est obsolète.
Après init, laissez <PROJECT_ROOT> être videos/<project> et exécutez chaque commande de chemin relatif suivante avec ce répertoire comme répertoire de travail. Dans les commandes ci-dessous, . signifie <PROJECT_ROOT> ; n'écrivez jamais .media, capture ou les fichiers de sortie dans le répertoire appelant.
Écrivez BRIEF.md immédiatement après init (jamais avant — init refuse un répertoire non vide) : le brief verrouillé de la couche d'intention, format selon ../hyperframes-core/references/brief-format.md. Résolvez <MEDIA_DIR> comme le répertoire du skill /media-use installé. Ensuite, enregistrez chaque réponse basée sur une préférence avec node <MEDIA_DIR>/scripts/prefs.mjs record --hyperframes . (brief-format.md nomme le sous-ensemble). Si la couche d'intention a adopté une recette, exécutez node <MEDIA_DIR>/scripts/recipe.mjs use --hyperframes . --name <name> ; elle copie son frame.md dans le projet (l'Étape 2 est alors ignorée) et renvoie les squelettes à partir desquels rédiger les Étape 3. Une recette remplit les réponses, pas les approbations ; les portes de révision s'exécutent toujours.
Affichez le statut de connexion avant de poursuivre après la configuration — exécutez npx hyperframes auth status et retransmettez sa sortie verbatim. Il indique si la voix/BGM utilisera HeyGen ou les moteurs locaux et, lorsqu'il est déconnecté, comment se connecter. Appliquez une branche :
- Collaboratif : attendez que l'utilisateur se connecte ou choisisse explicitement
offline/go. - Autonome : indiquez le statut et continuez via les moteurs locaux disponibles.
N'omettez pas silencieusement une capacité requise lorsqu'aucun fournisseur hors ligne n'existe ; signalez le blocage. N'incorporez pas cette décision dans une autre question et n'écrivez pas de clés dans un .env par dépôt. Propriété de l'authentification et solutions de repli hors ligne : /media-use references/setup-providers.md § Fournisseurs.
Porte : hyperframes.json et BRIEF.md existent ; les réponses basées sur les préférences ont été enregistrées (contrat de brief § 2) ; le statut de connexion a été affiché (connecté, ou continuant hors ligne).
Étape 1 : Brief (pas de capture)
Objectif : Intégrer le texte de l'utilisateur dans le projet comme source d'information. Il n'y a pas de capture de site Web et pas de ressources réelles — il s'agit d'un explainer sans visage.
Enregistrez l'entrée complète de l'utilisateur verbatim, puis créez le package de capture synthétique à la main :
capture/extracted/visible-text.txt— l'article / notes / sujet / brief complet, verbatim. C'est la source d'information, pas un modèle d'histoire (l'Étape 3 le remodèle).capture/extracted/tokens.json—{ "title": "", "description": "", "colors": [], "fonts": [] }. Remplisseztitle/descriptionà partir du brief. Laissezcolors/fontsvides sauf si l'utilisateur a explicitement donné des couleurs ou polices de marque — alors ajoutez-les (le préréglage de design fournit de toute façon une palette complète).
Si l'utilisateur a collé un script ou souhaite conserver ses formulations, enregistrez-le verbatim en tant que user_script.txt ; VO_MODE (verbetim ou restructuré) provient de BRIEF.md — la couche d'intention le demande quand un script arrive. Demandez une fois ici seulement si le brief manque d'une manière ou d'une autre, et stockez la réponse pour l'Étape 3.
N'exécutez pas npx hyperframes capture (il n'y a pas d'URL). Ne créez pas asset-descriptions.md et ne peuplez pas capture/assets/ — les visuels sans visage sont inventés aux Étape 4-5, pas capturés. La seule exception : si l'utilisateur a fourni une image réelle, placez-la sous public/<basename> et notez-la pour l'Étape 3.
Porte : capture/extracted/visible-text.txt et capture/extracted/tokens.json existent ; vous pouvez énoncer le sujet et le public de l'explainer en une phrase claire.
Étape 2 : Système de design
Objectif : Choisir un préréglage d'image livré ; un script le transforme en frame.md + skin de légende de cette vidéo.
Lorsque BRIEF.md nomme un style_preset — l'utilisateur l'a choisi visuellement dans les vitrines de la couche d'intention — utilisez-le ; la décision vous revient seulement lorsque le brief est silencieux. Ensuite, vous faites le seul choix — quel préréglage : lisez ../hyperframes-creative/references/design-spec.md et parcourez ../hyperframes-creative/frame-presets/ ; choisissez le préréglage dont l'apparence correspond le mieux au sujet, au ton et au public. Exécutez ensuite :
node <SKILL_DIR>/scripts/build-frame.mjs --preset <name> --hyperframes .
Le script fait le reste de manière déterministe : copie le FRAME.md du préréglage → frame.md et le remixe sur tous les jetons de marque dans capture/extracted/tokens.json (couleurs de marque mappées sur les touches de couleur du préréglage par rôle ; les polices display + body du préréglage échangées contre celles de la marque), copie le skin de légende du préréglage vers .hyperframes/caption-skin.html, et s'auto-valide (sortie 1 en cas de mappage cassé). Procédez dès qu'il sort 0 — pas d'édition manuelle de la spec.
Un explainer sans visage n'a généralement pas de couleurs/polices de marque (tokens.json couleurs/polices vides) → le script conserve la propre palette du préréglage, un design livrable complet. Uniquement lorsque l'utilisateur a nommé des couleurs/polices de marque, ajoutez-les à tokens.json avant d'exécuter, et n'ajustez frame.md à la main après que si un mappage en a vraiment besoin.
Porte : build-frame.mjs s'est terminé avec le code 0 — frame.md existe à partir d'un préréglage nommé, et (lorsque le préréglage en livre un) .hyperframes/caption-skin.html existe comme source du skin de légende ; le préréglage choisi a été enregistré comme préférence (--key style_preset --workflow <this workflow>, contrat de brief § 2).
Étape 3 : Storyboard et script
Objectif : Transformer le texte en un plan d'enseignement image par image approuvé.
Lisez ../hyperframes-creative/references/story-spine.md (langage d'accroche, valeur avant preuve, storyboard comme proposition), references/story-design.md, ../hyperframes-animation/blueprints-index.md, ../hyperframes-core/references/storyboard-format.md et ../hyperframes-core/references/script-format.md. Utilisez-les pour écrire STORYBOARD.md et, lorsque la narration est nécessaire, SCRIPT.md. Définissez le frontmatter duration: à partir du length du brief — une attente approximative ; l'assemblage indique où la coupe se situe par rapport à elle.
Utilisez story-design.md pour la structure de l'explainer (concept / tutoriel / liste / histoire), la stratégie d'accroche, les techniques de clarté, les battements émotionnels, le mappage d'énumération de type et VO_MODE. La séquence de la vidéo provient de la conception narrative, pas de l'ordre des paragraphes du texte d'entrée — réorganisez, fusionnez, omettez, compressez. En tant que guide souple, consultez le menu rôle → blueprint dans ../hyperframes-animation/blueprints-index.md : pour chaque battement, rédigez la voix off dans la forme qu'implique son blueprint candidat et étiquetez cet id blueprint: candidat lorsqu'il correspond. La vérité d'enseignement décide toujours quels battements existent — ne forcez jamais un battement à s'adapter à un blueprint et n'inventez jamais un battement simplement parce qu'une forme éprouvée est disponible. Les visuels sans visage sont inventés en aval, donc les images ne portent pas d'inventaire de ressources : laissez asset_candidates vide sauf si l'utilisateur a fourni une image public/<basename> réelle. Utilisez les champs exacts requis par les références de storyboard et de script.
Après la rédaction, exécutez le passage de plan de la boucle de révision — ../hyperframes-core/references/review-loop.md § 1 : ouvrez le tableau (ne demandez pas si vous devez le faire), présentez le plan comme une proposition et posez les deux questions — approuver ou modifier, et croquis en premier (recommandé) ou passer. Les retours passent par le chat ou le fichier de commentaires du tableau jusqu'à approbation. C'est une porte de point de contrôle (contrat de brief § 1) : en mode autonome, il n'y a pas de tableau et rien à demander — publiez le même résumé comme avertissement et continuez ; les croquis sont intégrés dans la construction, et la seule question d'aperçu vient à l'Étape 6.
Porte : STORYBOARD.md existe, chaque image a les champs narratifs requis, SCRIPT.md existe lorsque la narration est nécessaire et l'utilisateur a approuvé le plan image par image (autonome : le résumé a été publié comme avertissement).
Étape 3.1 : Audio
Objectif : Générer la narration, les synchronisations de mots, la musique et les métadonnées audio à partir du script approuvé.
Commencez l'audio après l'approbation de l'Étape 3. Exécutez-le en arrière-plan, puis continuez à l'Étape 4. (Le statut de connexion a déjà été affiché à l'Étape 0 ; le moteur se rabat automatiquement.)
Choisissez la voix de narration à partir de la demande de l'utilisateur avant d'invoquer. Si la demande nommait une voix, un genre ou un ton, choisissez un identifiant de voix correspondant et passez-le avec --voice <id>. La valeur par défaut du pipeline est sinon Marcia (féminine) sur HeyGen / am_michael sur Kokoro — donc une demande comme "une voix masculine" est silencieusement ignorée à moins que vous ne passiez le drapeau. Les identifiants de voix sont spécifiques au fournisseur ; résolvez-les par rapport au fournisseur que le statut de connexion de l'Étape 0 a sélectionné : HeyGen (connecté) via node <MEDIA_DIR>/audio/scripts/heygen-tts.mjs --list (ou GET /v3/voices?engine=starfish) ; Kokoro (hors ligne) via le tableau des voix dans <MEDIA_DIR>/audio/references/tts.md (préfixes am_/bm_ masculin, af_/bf_ féminin). Lorsque l'utilisateur n'a exprimé aucune préférence, revenez à la voix mémorisée (contrat de brief § 2) avant la valeur par défaut du pipeline et dites laquelle vous avez utilisée ; omettez --voice uniquement lorsque ni l'un ni l'autre n'en nomme un. Lorsque l'utilisateur a explicitement choisi une voix cette exécution, enregistrez-la (prefs.mjs record --key voice).
node <SKILL_DIR>/scripts/audio.mjs --script ./SCRIPT.md --storyboard ./STORYBOARD.md --hyperframes . --out ./audio_meta.json --voice <voice-id> &
Le script audio gère la narration, les synchronisations de mots, la recherche BGM à partir de la bibliothèque musicale de HeyGen et les métadonnées de synchronisation. L'ambiance BGM provient du champ music: du storyboard. Cela utilise l'API Audio de HeyGen pour la récupération, pas la génération, et la même information d'identification ~/.heygen que la synthèse vocale. Pour les détails du fournisseur, lisez ../media-use/audio/references/tts.md.
S'il n'y a pas de narration et pas de SCRIPT.md, ignorez la génération vocale. La BGM peut toujours s'exécuter si le storyboard a une ambiance musicale.
Le marqueur canonique de silence complet (partagé entre les workflows qui réutilisent ce modèle audio) : music: none dans le bloc YAML supérieur de STORYBOARD.md et pas de SCRIPT.md. Cette combinaison marque le projet silencieux — pas de narration, pas de BGM, pas de SFX. audio.mjs le reconnaît et ne génère rien (il supprime tout audio_meta.json obsolète ; un audio_meta.json absent est ce que l'assemblage traite comme silencieux), donc cette étape est un saut propre. music: none avec narration conserve la synthèse vocale et désactive uniquement la BGM. Utilisez exactement cette orthographe — n'improvisez pas d'autres marqueurs.
Porte : le travail audio a commencé, ou le projet est marqué silencieux (music: none + pas de SCRIPT.md).
Étape 4 : Conception visuelle des images
Objectif : Ajouter la direction visuelle, l'intention de mise en page et les choix de mouvement à chaque image du storyboard.
Esquissez d'abord le tableau (collaboratif uniquement). Dès que le plan est approuvé, exécutez le passage d'esquisse — ../hyperframes-core/references/review-loop.md § 2 (n'attendez pas l'Étape 3.1 ; les esquisses n'utilisent pas les synchronisations) : créez un wireframe de chaque image
… [tronqué pour la traduction]