Video Podcast Maker Nano
Pipeline en 7 étapes pour usage personnel : recherche ∥ matériel → script → TTS → point de contrôle audio → vidéo → point de contrôle prévisualisation → rendu 4K ∥ kit de publication. Pas de scripts pré-intégrés, pas de backends imposés, pas de templates. Le skill possède la logique et s'exécute de manière autonome par défaut ; le backend TTS et l'outil vidéo sont choisis par vidéo (voir Sélection des outils par vidéo).
Ce qui le rend fonctionnel quel que soit le choix d'outil — les trois invariants :
- Les points de contrôle ne sont jamais ignorés — mais qui vérifie est une politique. Trois points de contrôle existent : script (après l'étape 2), audio (après l'étape 3), prévisualisation (avant le rendu). Le vérificateur par défaut est l'agent lui-même (auto-vérification, définie par point de contrôle) ; un fichier AGENTS.md/CLAUDE.md du projet peut promouvoir n'importe quel point de contrôle en étape humaine — voir Politique de supervision.
- L'audio est l'horloge maîtresse. La durée de la vidéo finale doit correspondre à l'audio de narration à ±0,5s près (
ffprobeles deux). Les visuels sont coupés sur l'audio, jamais l'inverse. - Une modification du script invalide tout ce qui suit. Modifier le script → relancer le point de contrôle du script, puis TTS → point de contrôle audio → visuels → point de contrôle prévisualisation → rendu. Ne jamais corriger manuellement les timings.
Politique de supervision
Le mode par défaut est autonome : le pipeline s'exécute de bout en bout, l'agent effectuant l'auto-vérification de chaque point de contrôle. Un fichier AGENTS.md/CLAUDE.md du projet peut remplacer par point de contrôle avec une ligne chacun :
Checkpoint 1 (script): human— s'arrêter après l'étape 2 jusqu'à ce que l'utilisateur approuve le script. Utile car une modification tardive du script coûte une ré-exécution complète.Checkpoint 2 (audio): human— l'utilisateur écoute l'intégralité de l'audio avant les visuels. Utile lorsque les erreurs de lecture TTS sont coûteuses à détecter plus tard.Checkpoint 3 (preview): human— l'utilisateur révise le brouillon avant le rendu. Utile pour les chaînes sensibles au style.
Les points de contrôle non mentionnés restent vérifiés par l'agent. Les fichiers de politique du projet commencent à partir de AGENTS.template.md (à côté de ce SKILL.md) : copiez-le dans la racine du projet vidéo en tant que AGENTS.md (plus une copie CLAUDE.md pour Claude Code) et renseignez les liaisons d'outils. Le skill ne télécharge ni ne publie quoi que ce soit — le kit de publication est des fichiers sur disque ; la publication est toujours une action humaine hors de ce pipeline.
Sélection des outils (par vidéo)
Décidez du backend TTS et de l'outil vidéo une fois, avant l'étape 3, dans cet ordre de priorité :
- Les liaisons du projet l'emportent. Un
AGENTS.md/CLAUDE.mdrenseigné dans le projet de travail (voir Politique de supervision) EST la spécification permanente de l'utilisateur — utilisez-le, sans scanner, sans seconde hypothèse. Si l'utilisateur nomme un outil en session, cela remplace le fichier. Si le fichier de politique est manquant ou contient encore des placeholders de template (/absolute/path/to/...), résolvez les liaisons via les règles 2–3, puis écrivez les valeurs résolues dans le fichier de politique du projet pour que la prochaine exécution démarre liée. - Détection automatique des skills installés. Scannez les skills disponibles de la session pour tout ce qui peut faire le travail — vidéo : skills encapsulant un outil de création (Remotion, HyperFrames, CapCut, ...) ; TTS : tout skill encapsulant un moteur TTS. Exclure les skills de pipeline de bout en bout (par ex. d'autres variantes de video-podcast-maker, si installées) : ce sont des pipelines comme celui-ci, pas des backends — les invoquer ici imbriquerait les flux de travail et doublerait les points de contrôle. Une correspondance → utilisez-la ; plusieurs → choisissez la meilleure correspondance pour la langue et les besoins de sortie du projet. Enregistrez le choix dans
research.md; mentionnez-le dans le résumé final. Ne bloquez jamais en attendant une confirmation d'outil. - Rien trouvé. Revenir aux CLI simples que l'utilisateur possède déjà (ffmpeg + n'importe quelle CLI TTS) et le dire — n'installez jamais un nouvel outil sans demande. Si une CLI TTS ne peut pas émettre de timing de sous-titres, déduisez les repères en divisant le script uniformément sur la durée audio et signalez l'approximation au point de contrôle 2. Si un outil spécifié par l'utilisateur est manquant ou ne peut pas répondre au seuil de capacité, dites-le et passez à la règle 2 au lieu d'improviser.
Seuil de capacité (s'applique aux règles 1–3) : le choix TTS doit produire l'audio de narration plus le timing des sous-titres ; le choix vidéo doit exporter un fichier vidéo de brouillon (pour la vérification du point de contrôle 3) et en 4K. L'aperçu en direct est un bonus, jamais un substitut à l'exportation du brouillon. Les tâches auxiliaires n'ont pas besoin de sélection : la recherche utilise la recherche web intégrée, les images/la couverture utilisent l'exportation d'images de l'outil vidéo ou tout outil d'image, les vérifications de durée utilisent ffprobe. Si ffmpeg/ffprobe sont absents, signalez-le et arrêtez-vous — l'invariant ±0,5s est non négociable et n'est pas ignoré pour maintenir une exécution en vie.
Structure de travail
Tous les artefacts d'une vidéo se trouvent dans videos/{nom}/ ({nom} = anglais minuscules, séparés par des traits d'union). Les noms de fichiers pour l'audio/le timing s'adaptent au backend choisi ; l'ensemble est ce qui compte :
videos/{nom}/
├── research.md # Étape 1 — faits + sources
├── podcast.txt # Étape 2 — script de narration
├── podcast_audio.wav # Étape 3 — audio de narration (nom selon backend)
├── podcast_audio.srt # Étape 3 — timing des sous-titres (ou l'équivalent du backend)
├── assets/ # Étape 1 — images/BGM + sources.md (source + licence par asset)
├── video-project/ # Étape 5 — ce que produit l'outil vidéo
├── final_4k.mp4 # Étape 7 — rendu 3840×2160
├── cover.png # Étape 7 — couverture vidéo
└── publish_info.md # Étape 7 — titre / description / tags / chapitres
Flux de travail
Vérification du point d'entrée (avant l'étape 1). Recherchez videos/{nom}/ à la racine du projet (ou le répertoire nommé par l'utilisateur). S'il contient déjà des artefacts d'une session antérieure, il s'agit d'une itération — reprenez à l'étape la plus ancienne concernée (voir Itérer), ne ré-exécutez pas l'étape 1. Ne commencez à l'étape 1 que lorsqu'aucun artefact n'existe.
Étape 1 — Recherche ∥ collecte de matériel
Deux sorties parallèles à partir d'un seul passage d'investigation (les faits et les assets proviennent des mêmes sources) :
Recherche → research.md. Enquêtez sur le sujet (recherche web, documents, indications de l'utilisateur). Distillez dans research.md : faits, chiffres et leurs sources. Chaque chiffre que le script revendiquera doit être retraçable ici — un chiffre précis sans source est fabriqué ; supprimez-le ou attribuez-le.
Matériel → assets/. Collectez tout ce que les visuels et la couverture consommeront dans videos/{nom}/assets/ : images/illustrations/captures d'écran par section, logos de marque, BGM. Deux sources, par ordre de priorité :
- Fourni par l'utilisateur — fichiers que l'utilisateur remet ou auxquels il pointe ; copiez dans
assets/, ne les référencez jamais sur place. - Auto-collecte — matériel officiel d'abord (bannière produit, fiche spécification, capture d'écran), sinon ensembles gratuits/sous licence (unDraw SVG, Pixabay/Pexels, OpenMoji / Microsoft Fluent Emoji / Google Noto Emoji,
@lobehub/iconspour les logos de marque).
Enregistrez l'URL source + licence de chaque asset dans assets/sources.md au moment de la collecte (les ensembles nécessitant une attribution doivent être crédités dans la description vidéo à l'étape 7). Aucun asset approprié n'existe pour une section ? Ne fabriquez pas de capture d'écran — passez à une disposition texte uniquement pour cette section (ou une illustration libre de droits générique), enregistrez la décision dans assets/sources.md et passez à autre chose ; demander à l'utilisateur est facultatif en mode humain. Les assets manquants peuvent être ajoutés à tout moment avant l'étape 5.
Étape 2 — Script → podcast.txt, puis Point de contrôle 1
Texte parlé uniquement, pas de markdown. Divisez le script en segments avec des marqueurs [SECTION:xxx|display-label] (noms anglais minuscules, ex. [SECTION:hero|intro]) — un segment par section vidéo. Cette convention de marqueurs est le contrat portable entre le script, le découpage TTS et la disposition visuelle ; tout outil TTS/vidéo peut la consommer. Les marqueurs sont des métadonnées structurelles : jamais parlés, jamais affichés comme texte de sous-titre — TTS et sous-titres consomment uniquement le texte entre les marqueurs.
Règles de style (indépendantes de la langue) : voir Style du script.
Point de contrôle 1 — auto-révision du script (obligatoire). Vérifiez le script par rapport à chaque règle de style du script, puis rapprochez ses sections de assets/ : listez les sections sans asset correspondant, collectez ou passez selon la règle d'absence d'asset ci-dessus, et notez ce qui reste sans. En mode humain (politique du projet), arrêtez-vous plutôt et remettez le script — n'exécutez PAS le TTS tant que l'utilisateur n'a pas explicitement approuvé. L'audio, les timings et les entrées visuelles dérivent tous du script ; une modification tardive du script coûte une ré-exécution complète.
Étape 3 — TTS
Exécutez le backend TTS choisi (Azure, Edge, fish, minimax, ... — ce que la session a sélectionné). Produisez :
- audio de narration (WAV/MP3)
- timing des sous-titres (SRT ou équivalent, texte des repères = script textuel)
Hygiène de prononciation avant synthèse, dans n'importe quelle langue de narration : les lectures des marques/termes qui ne peuvent pas être dérivées mécaniquement (Qwen lu comme son nom de marque chinois, MoE épelé lettre par lettre) entrent dans une liste d'alias/phonèmes selon le mécanisme du backend — jamais dans le texte du script (cela fuirait dans les sous-titres).
Étape 4 — Vérification audio — Point de contrôle 2
Auto-vérification de l'agent (mode autonome) : ffprobe la durée audio par rapport à une estimation approximative du script (rythme de parole par langue ; utilisez-le uniquement pour détecter les erreurs grossières comme un fichier silencieux ou tronqué) ; vérifiez que chaque jeton de marque/terme dans le script a une entrée d'alias/phonème (une vérification de couverture — la prononciation réelle est exactement ce à quoi sert le point de contrôle 2 en mode humain) ; recherchez les segments silencieux ou coupés (silencedetect/volumedetect) qui suggèrent des échecs de synthèse. Corrigez les lacunes de la liste d'alias et re-synthétisez si trouvé. En mode humain, l'utilisateur écoute l'intégralité de l'audio à la place ; les erreurs de lecture → corrigez la liste d'alias (pas le script), re-synthétisez, revérifiez.
Étape 5 — Créer la vidéo
Coupez les visuels avec l'outil choisi (Remotion, HyperFrames, CapCut, ...) sur l'audio de narration, en utilisant assets/ comme pool de matériel. Les marqueurs de section de podcast.txt pilotent la disposition ; les repères de sous-titres pilotent les entrées de texte. Gardez les fichiers de brouillon dans videos/{nom}/.
Étape 6 — Vérification de la prévisualisation — Point de contrôle 3
Auto-vérification de l'agent (mode autonome) : inspectez l'exportation du brouillon (un fichier vidéo consultable — le seuil de capacité en garantit un) : extrayez une image par section (ffmpeg -ss <temps-milieu-section> -i draft.mp4 -frames:v 1) et examinez chacune pour détecter les débordements de mise en page, les sous-titres manquants, les références d'assets cassées ; vérifiez que la durée du brouillon correspond à l'audio de narration à ±0,5s près. Corrigez et revérifiez après chaque modification. En mode humain, l'utilisateur révise le brouillon en personne (aperçu en direct si l'outil en a un, sinon l'exportation du brouillon) ; ne rendez que sur confirmation explicite (« render »), et chaque série de modifications nécessite une nouvelle confirmation.
Étape 7 — Rendu 4K ∥ kit de publication
Exécutez en parallèle (le rendu est la tâche longue bloquante ; le kit de publication n'en dépend pas) :
- Rendu à 3840×2160 →
final_4k.mp4. Vérifiez la durée par rapport à l'audio de narration à ±0,5s près avant de le déclarer terminé. - Kit de publication →
publish_info.md(titre / description / tags / horodatages des chapitres — chaque chapitre commence au temps SRT du premier repère de sa section) etcover.png(générée à partir de l'image fixe de l'outil vidéo si disponible, sinon tout outil d'image ; peut réutiliser le matérielassets/). La section des sources d'assets depublish_info.mdcopie depuisassets/sources.md.
Style du script (indépendant de la langue)
Provenance : le
video-podcast-maker/references/natural-narration.mdcomplet du skill (anti-style IA) +script-polish.md(édition approfondie) sont les sources canoniques ; ceci est la distillation indépendante de la langue. Éditez les règles là d'abord, puis reflétez ici — ne bifurquez pas de règle et ne la faites pas dériver.
La langue de narration est celle du script de l'utilisateur — ce pipeline utilise par défaut le chinois mais les règles ci-dessous s'appliquent dans le registre parlé de n'importe quelle langue. Ces règles sont appliquées au point de contrôle 1 ; lisez chaque segment à voix haute — si vous butez, divisez la phrase.
- Prose parlée quotidienne, pas prose écrite. Une idée par phrase, sujet en premier, pas de propositions imbriquées, pas de — ou · comme connecteurs. Variez la longueur des phrases ; une légère première personne est acceptable.
- Remplacement des connecteurs. Remplacez les connecteurs livresques (furthermore / however / therefore / in summary) par l'équivalent quotidien, ou supprimez. Supprimez les ouvreurs énumératifs (firstly / secondly / lastly) et passez simplement au point suivant.
- Liste à supprimer. Supprimez les remplissages formulaires : les mots à la mode d'entreprise, « il est à noter », « comme tout le monde le sait », « révolutionnaire », « qui change la donne », « sans couture », « attendons de voir » — et leurs équivalents dans la langue de narration.
- Indices structurels. Les coquilles verbe-nom (« effectuer une optimisation ») → action concrète + résultat (« réduire l'approbation de trois étapes à une »). « Pas X mais Y » → énoncer Y. Le parallélisme à trois parties (« à la fois A et B et C ») → ne garder que l'élément le plus informatif ; deux valent mieux que trois. Les intensificateurs vagues (« significativement ») → un chiffre ou une conséquence perceptible. L'attribution vague (« les experts disent ») → source nommée + date, sinon supprimez la phrase. Les fins de slogan (« l'avenir est radieux ») → terminez sur un fait concret, un chiffre ou une action suivante.
- Les chiffres sont des chiffres arabes (
86.1,1.5G,9B) — les sous-titres sont le script textuel, donc écrivez ce qui doit APPARAÎTRE à l'écran. N'écrivez jamais la forme parlée TTS dans le script pour corriger une erreur de lecture ; utilisez la couche d'alias/phonèmes du backend. - Les chiffres doivent être traçables jusqu'à
research.md— un chiffre précis sans source est fabriqué ; supprimez-le ou attribuez-le.
Itérer
- Script modifié → relancez le point de contrôle 1 (humain en mode humain), puis à partir de l'étape 3 (TTS) jusqu'aux points de contrôle 2 et 3 jusqu'au rendu. Ne modifiez jamais manuellement les timings.
- Audio re-synthétisé (même script, voix/rythme différent) → relancez le point de contrôle 2 ; les visuels peuvent rester si les timings n'ont pas changé ; relancez le point de contrôle 3 avant le rendu.
- Visuels uniquement → éditez et relancez le point de contrôle 3.
- Réutilisez le même répertoire
videos/{nom}/.