CommunityRédaction et éditiongithub.com

BingWuJ/podcast2md-skill

Convertit un lien d'épisode de podcast en une transcription complète organisée par chapitres (reconnaissance vocale locale via CapsWriter-Offline, produit un fichier chapters.md, pas un résumé).

Qu'est-ce que podcast2md-skill ?

Cette compétence est conçue pour les développeurs et les utilisateurs d'agents IA qui ont besoin de transcrire des épisodes de podcast ou des fichiers audio en texte structuré par chapitres. Elle prend en charge les liens d'épisodes de podcast compatibles yt-dlp et les URL audio directes, produit un fichier `chapters.md` complet avec les chapitres existants du programme, sans rien inventer ni résumer. La reconnaissance vocale s'exécute localement via CapsWriter-Offline (FunASR-Nano) pour garantir la confidentialité des données. Pour les fichiers audio locaux (sans lien), elle renvoie vers un flux de travail FunASR-Nano distinct. La compétence offre des paramètres de contrôle de la force, du timeout, du polissage (basic ou off) et gère les cas particuliers : audio long, sous-titres Bilibili, logs de débogage. Elle est idéale pour les flux de travail de transcription automatisés, les analyses de contenu ou la préparation de données pour le traitement en aval.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add BingWuJ/podcast2md-skill

Installed? Explore more Rédaction et édition skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Demander à votre IA préférée

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

Documentation

podcast2md — Lien d'épisode de podcast → Transcription par chapitres

Positionnement

  • Entrée : pages d'épisode de podcast ou URL audio directes supportées par yt-dlp
  • Sortie : <out-dir>\<slug>\chapters.md — transcription complète découpée selon les chapitres existants du programme ; pas de résumé, pas de contenu inventé
  • Moteur : CapsWriter-Offline local (fun_asr_nano), le script lance automatiquement le serveur/client

Exécution (utiliser la copie de déploiement, doit être dans le même répertoire que start_server.exe)

python "D:\iStall\CapsWriter-Offline\podcast2md.py" "URL_épisode"
python "D:\iStall\CapsWriter-Offline\podcast2md.py" "URL_épisode" --transcribe-timeout 10800
  • Dépôt source : D:\iStall\podcast2md\ (podcast2md.py + README.md + PODCAST2MD.md). Ne modifier le script que dans la version du dépôt, puis copier vers D:\iStall\CapsWriter-Offline\ pour le déploiement.
  • Tableau complet des paramètres, détails du pipeline, codes de sortie : lire D:\iStall\podcast2md\PODCAST2MD.md selon les besoins, ne pas tout lire par défaut.

Paramètres clés

ParamètreDéfautDescription
--out-dir<répertoire_script>\workLe résultat se trouve dans work\<slug>\chapters.md
--forcedésactivéSupprime le répertoire existant de l'épisode et relance ; les modifications manuelles seront perdues
--polishoffbasic supprime uniquement les tics de langage par des règles, pas de polissage par modèle ; pour une transcription fidèle, utiliser off
--server-timeout600sTemps d'attente pour le démarrage du serveur
--transcribe-timeout7200sTemps d'attente pour la transcription ; augmenter pour les programmes longs (ex. 10800)

Pièges (lire avant d'exécuter)

  • Audio long (>1h) : la transcription prend des dizaines de minutes : lancer en processus d'arrière-plan + surveiller les logs, ne pas attendre au premier plan et faire face à un timeout de l'outil.
  • Le serveur reste actif après la transcription (accélère les prochaines utilisations) ; l'arrêter via l'icône dans la barre des tâches.
  • Codes de sortie : 3=échec du téléchargement, 4=échec du serveur, 5=échec de la transcription, 6=le résultat existe déjà/est verrouillé, 7=échec de la division ou de la validation.
  • Logs : <out-dir>\_podcast2md_server.log et <slug>\logs\.
  • ffmpeg doit être dans le PATH, sinon la transcription du client échoue.
  • Pas de diarisation (séparation des locuteurs) ; les transcriptions multi-locuteurs nécessitent un post-traitement.

Faits vérifiés localement (vérifié le 2026-10-19, citer directement sans re-détection)

  • ffmpeg 8.1.2 est dans le PATH — condition préalable à la transcription fichier client remplie ; en cas de doute, exécuter ffmpeg -version pour vérifier, ne pas faire de suppositions
  • Pas de GPU NVIDIA dédié, la transcription utilise le CPU : un programme de 30–60 minutes prend environ 10–30 minutes, plus d'une heure prend 40–90 minutes ; FunASR-Nano a transcrit un enregistrement de 95 minutes en environ 46 minutes (environ 0.5x temps réel, incluant le chargement du modèle, voir work\full.out.log 2026-10-17)
  • Caractéristiques observées du script de référence FunASR-Nano : segmentation par 15 secondes (un segment de 60s répète "euh"), sauvegarde incrémentale par segment JSONL pour reprise après interruption, saut des segments silencieux selon un seuil d'énergie
  • Couverture des sous-titres Bilibili : les sous-titres CC officiels/UP ne sont pas universels, les sous-titres IA sont plus courants — utiliser d'abord yt-dlp --list-subs pour détecter avant de choisir la méthode, ne pas présumer de la couverture

Fichiers audio locaux / Répartition avec les scénarios voisins

  • Fichier audio local (enregistrement, mp3/wav déjà téléchargé, sans lien) : ne pas utiliser ce CLI. Utiliser FunASR-Nano : venv D:\iStall\FunASR-Nano\.venv, poids D:\iStall\model-cache\huggingface\local\Fun-ASR-Nano-2512-hf ; l'audio long doit être segmenté par parties (un segment de 60s répète "euh"), se référer à D:\iStall\FunASR-Nano\work\full_transcribe.py.
  • Vidéos avec sous-titres (ex. Bilibili) : détecter d'abord les sous-titres (yt-dlp --list-subs), s'il y a des sous-titres CC/IA, les extraire directement en texte, sans passer par la reconnaissance vocale.
  • Sous-titres vers article (supprimer les timestamps, mettre en forme) : cela relève du workflow srt-translator, pas de ce CLI.

Skills associés