Community写作与编辑github.com

BingWuJ/podcast2md-skill

把播客单集链接转成按章节整理的完整文字稿(本机 CapsWriter-Offline 语音识别,产出 chapters.md,非摘要)。用户给出播客/音频链接要求转录、转文字稿、整理成文,或问"那个播客转文字的 CLI 叫什么"时使用。本地音频文件(无链接)转写走 FunASR-Nano,见文内参考。

podcast2md-skill 是什么?

podcast2md-skill is a Claude Code agent skill that 把播客单集链接转成按章节整理的完整文字稿(本机 CapsWriter-Offline 语音识别,产出 chapters.md,非摘要)。用户给出播客/音频链接要求转录、转文字稿、整理成文,或问"那个播客转文字的 CLI 叫什么"时使用。本地音频文件(无链接)转写走 FunASR-Nano,见文内参考。.

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add BingWuJ/podcast2md-skill

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

podcast2md — Podcast Episode Link → Chapter Transcript

Purpose

  • Input: A podcast episode page or direct audio URL supported by yt-dlp
  • Output: <out-dir>\<slug>\chapters.md — a full transcription split by the show's existing chapters; no summary, no fabricated content
  • Engine: Local CapsWriter-Offline (fun_asr_nano), script automatically launches server/client

Running (use the deployed copy, must be in the same directory as start_server.exe)

python "D:\iStall\CapsWriter-Offline\podcast2md.py" "episode-URL"
python "D:\iStall\CapsWriter-Offline\podcast2md.py" "episode-URL" --transcribe-timeout 10800
  • Source repo: D:\iStall\podcast2md\ (podcast2md.py + README.md + PODCAST2MD.md). Edit only the repo version, then copy it to D:\iStall\CapsWriter-Offline\ for deployment.
  • Full parameter table, pipeline details, and exit codes: read D:\iStall\podcast2md\PODCAST2MD.md as needed; do not read the whole thing by default.

Key Parameters

ParameterDefaultDescription
--out-dir<script-dir>\workOutput in work\<slug>\chapters.md
--forceoffDelete existing episode directory and re-run; discards manual edits
--polishoffbasic only removes filler words via rules, not model-based polishing; use off for faithful original
--server-timeout600sWait time for server startup
--transcribe-timeout7200sTranscription wait; increase for long episodes (e.g., 10800)

Gotchas (read before running)

  • Long audio (>1h) takes tens of minutes to transcribe: run as a background process + poll logs, don't wait in the foreground and hit tool timeouts.
  • Server stays resident after transcription (reuse for faster next run); exit via tray menu.
  • Exit codes: 3=download failed, 4=server failed, 5=transcription failed, 6=output already exists/locked, 7=split or validation failed.
  • Logs: <out-dir>\_podcast2md_server.log and <slug>\logs\.
  • ffmpeg must be in PATH, otherwise client transcription will fail.
  • Speaker diarization is not performed; multi-speaker transcripts require post-processing.

Local Verified Facts (verified 2026-10-19, cite directly without re-probing)

  • ffmpeg 8.1.2 is in PATH — prerequisite for client file transcription is met; if unsure, run ffmpeg -version to check, don't infer
  • No dedicated NVIDIA GPU; transcription runs on CPU: a 30–60 minute show takes about 10–30 minutes, 1+ hour takes 40–90 minutes; FunASR-Nano tested: a 95-minute recording pure transcription approximately 46 minutes (about 0.5x real-time, including model loading, see work\full.out.log 2026-10-17)
  • FunASR-Nano reference script tested characteristics: 15-second segments (60-second segments repeat "um"), JSONL incremental disk writing for crash recovery, silence segments skipped by energy threshold
  • Bilibili subtitle coverage: Official/UP CC subtitles are not universal, AI subtitles are more common — first probe with yt-dlp --list-subs then decide the route, don't assume coverage

Local Audio / Adjacent Scenario Division

  • Local audio files (recordings, downloaded mp3/wav, no link): Do not use this CLI. Use FunASR-Nano: venv D:\iStall\FunASR-Nano\.venv, weights D:\iStall\model-cache\huggingface\local\Fun-ASR-Nano-2512-hf; long audio must be split into segments for recognition (60-second segments repeat "um"), see D:\iStall\FunASR-Nano\work\full_transcribe.py.
  • Bilibili and other video with subtitles: First probe for subtitles (yt-dlp --list-subs); if CC/AI subtitles exist, pull them directly to form the text, no need to run speech recognition.
  • Subtitle to article (remove timestamps, create prose): That is the srt-translator workflow, not this CLI.

相关技能