CommunityEscrita e Ediçãogithub.com

BingWuJ/podcast2md-skill

Converte links de episódios de podcast em transcrições completas organizadas por capítulos (reconhecimento de fala local com CapsWriter-Offline, gera chapters.md, não é resumo).

O que é podcast2md-skill?

Esta skill transforma um link de episódio de podcast (ou áudio direto suportado pelo yt-dlp) em um arquivo `chapters.md` com a transcrição completa do episódio, dividida exatamente pelos capítulos existentes no programa. É ideal para desenvolvedores e usuários que precisam de uma transcrição fiel e pronta para edição ou análise, sem resumos ou conteúdo inventado. A skill utiliza o reconhecimento de fala local CapsWriter-Offline (FunASR-Nano), que roda inteiramente na máquina do usuário, sem depender de serviços externos ou GPU (roda em CPU). O fluxo automatiza o download do áudio, a ativação do servidor de reconhecimento, a transcrição e a organização do resultado em capítulos. Importante: para arquivos de áudio locais (sem link), a skill indica uso do FunASR-Nano diretamente, e para vídeos com legendas (ex.: Bilibili), recomenda primeiro verificar legendas disponíveis com `yt-dlp --list-subs` antes de transcrever. A skill foi projetada para Windows, com scripts PowerShell e dependências como ffmpeg no PATH.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add BingWuJ/podcast2md-skill

Installed? Explore more Escrita e Edição skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

podcast2md — Link de episódio de podcast → Transcrição por capítulo

Posicionamento

  • Entrada: Página de episódio de podcast ou link de áudio direto suportado pelo yt-dlp
  • Saída: <out-dir>\<slug>\chapters.md — Transcrição completa dividida pelos capítulos existentes no programa; não é resumo, não inventa conteúdo
  • Motor: CapsWriter-Offline local (fun_asr_nano), script inicia automaticamente o servidor/cliente

Execução (usar a cópia de implantação, deve estar no mesmo diretório que start_server.exe)

python "D:\iStall\CapsWriter-Offline\podcast2md.py" "URL_do_episodio"
python "D:\iStall\CapsWriter-Offline\podcast2md.py" "URL_do_episodio" --transcribe-timeout 10800
  • Repositório fonte: D:\iStall\podcast2md\ (podcast2md.py + README.md + PODCAST2MD.md). Altere os scripts apenas na versão do repositório, depois copie para D:\iStall\CapsWriter-Offline\ para implantação.
  • Tabela completa de parâmetros, detalhes do pipeline, códigos de saída: leia D:\iStall\podcast2md\PODCAST2MD.md conforme necessário, não leia tudo por padrão.

Parâmetros principais

ParâmetroPadrãoDescrição
--out-dir<diretório_do_script>\workSaída em work\<slug>\chapters.md
--forceDesligadoRemove diretório do episódio existente e executa novamente; pode perder edições manuais
--polishoffbasic apenas remove muletas por regras, sem refinamento por modelo; use off para transcrição fiel
--server-timeout600sTempo de espera para iniciar o servidor
--transcribe-timeout7200sTempo de espera para transcrição; aumente para episódios longos (ex.: 10800)

Armadilhas (leia antes de executar)

  • Áudio longo (>1h) leva dezenas de minutos para transcrever: execute em processo em segundo plano + monitore logs, não espere no terminal e colida com timeout da ferramenta.
  • O servidor permanece residente após a transcrição (reutilização acelera a próxima); pare-o pelo menu de bandeja.
  • Códigos de saída: 3 = falha no download, 4 = falha no servidor, 5 = falha na transcrição, 6 = saída já existe/ocupada, 7 = falha na divisão ou verificação.
  • Logs: <out-dir>\_podcast2md_server.log e <slug>\logs\.
  • ffmpeg deve estar no PATH, caso contrário a transcrição do cliente falhará.
  • Não faz diarização de falantes; transcrições com múltiplos falantes precisam de pós-processamento.

Fatos verificados na máquina local (verificado em 2026-10-19, cite diretamente sem redescobrir)

  • ffmpeg 8.1.2 está no PATH — pré-requisito para transcrição de arquivos pelo cliente já satisfeito; se não tiver certeza, teste com ffmpeg -version antes, não escreva suposições
  • A máquina não possui GPU NVIDIA dedicada, transcrição via CPU: episódios de 30-60 minutos levam cerca de 10-30 minutos, mais de 1 hora leva 40-90 minutos; FunASR-Nano testado com gravação de 95 minutos levou ~46 minutos para transcrição pura (cerca de 0.5x a velocidade real, incluindo carregamento do modelo, veja work\full.out.log 2026-10-17)
  • Características do script de referência FunASR-Nano testadas: segmentação de 15 segundos (segmentos inteiros de 60s repetem "hum"), gravação por segmentos em JSONL com retomada, segmentos de silêncio ignorados por limiar de energia
  • Cobertura de legendas no Bilibili: legendas CC oficiais/do UP não são universais, legendas AI são mais comuns — primeiro use yt-dlp --list-subs para detectar antes de decidir a rota, não assuma cobertura

Áudio local / Divisão de cenários próximos

  • Arquivos de áudio locais (gravações, mp3/wav já baixados, sem link): não use este CLI. Use FunASR-Nano: venv D:\iStall\FunASR-Nano\.venv, pesos D:\iStall\model-cache\huggingface\local\Fun-ASR-Nano-2512-hf; áudio longo deve ser segmentado e reconhecido parte por parte (segmentos inteiros de 60s repetem "hum"), veja D:\iStall\FunASR-Nano\work\full_transcribe.py.
  • Vídeos com legendas (ex.: Bilibili): primeiro detecte legendas (yt-dlp --list-subs), se houver legendas CC/AI, baixe diretamente como texto, não execute transcrição.
  • Converter legendas em artigo (remover timestamps, formar texto): esse é o fluxo do srt-translator, não deste CLI.

Habilidades Relacionadas