Communitygithub.com

Agents365-ai/video-podcast-maker

Pipeline minimaliste et autonome pour créer des vidéos explicatives personnelles (narration vocale sur visuels), sans dépendance à un outil spécifique. Idéal pour une production rapide « topic → vidéo 4K » avec le niveau de supervision humaine de votre choix.

Qu'est-ce que video-podcast-maker ?

Ce skill définit un pipeline en 7 étapes pour produire une vidéo narrée personnelle à partir d’un sujet, sans être lié à un outil particulier. Il orchestre la recherche, la collecte d’assets, l’écriture du script, la synthèse vocale (TTS), le montage vidéo, et le rendu 4K. La particularité est que le TTS et l’outil vidéo sont choisis librement par projet ou par session, et que trois points de contrôle (script, audio, prévisualisation) sont intégrés, pouvant être délégués à un humain ou vérifiés automatiquement. Le skill ne contient aucun script pré-intégré, aucun backend imposé, et aucun template : il gère la logique du flux de production, tandis que les outils concrets (Remotion, HyperFrames, CapCut, Azure TTS, etc.) sont résolus via des règles de priorité (projet, auto-détection, ou fallback CLI). Il est conçu pour les utilisateurs qui souhaitent une vidéo courte, personnelle, avec un minimum d’étapes, et ne doit pas être déclenché pour des podcasts audio purs ou des productions lourdes multi-formats.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Agents365-ai/video-podcast-maker/tree/HEAD/skills/video-podcast-maker-nano

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

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 :

  1. 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.
  2. 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 (ffprobe les deux). Les visuels sont coupés sur l'audio, jamais l'inverse.
  3. 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é :

  1. Les liaisons du projet l'emportent. Un AGENTS.md/CLAUDE.md renseigné 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.
  2. 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.
  3. 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é :

  1. Fourni par l'utilisateur — fichiers que l'utilisateur remet ou auxquels il pointe ; copiez dans assets/, ne les référencez jamais sur place.
  2. 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/icons pour 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) et cover.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ériel assets/). La section des sources d'assets de publish_info.md copie depuis assets/sources.md.

Style du script (indépendant de la langue)

Provenance : le video-podcast-maker/references/natural-narration.md complet 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}/.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Skills associés