Community라이팅 & 에디팅github.com

BingWuJ/podcast2md-skill

播客单集链接을 章节별 완전 텍스트로 변환하는 로컬 음성 인식 스킬입니다. (CapsWriter-Offline 기반, 요약 아님).

podcast2md-skill란 무엇인가요?

이 스킬은 사용자가 제공한 팟캐스트 에피소드 URL이나 오디오 직접 링크를 기반으로, 각 챕터별로 정리된 완전한 텍스트 스크립트(`chapters.md`)를 생성합니다. 로컬에서 실행되는 CapsWriter-Offline(내부적으로 FunASR-Nano 사용)을 음성 인식 엔진으로 활용하여 데이터 유출 없이 안전하게 처리하며, 요약이나 추가 내용 없이 원본 발화를 최대한 충실히 전사합니다. 주로 팟캐스트 에피소드 전체를 긴 글 형태로 읽고 싶거나, 특정 챕터 내용을 검색해야 할 때 유용합니다. 로컬 오디오 파일(링크 없는)의 전사는 동일한 FunASR-Nano 엔진이지만 별도 스크립트 경로를 따르므로, 이 CLI는 반드시 yt-dlp가 지원하는 URL에 대해서만 사용합니다. 사용 전에 ffmpeg가 PATH에 등록되어 있어야 하며, 긴 오디오(1시간 이상)는 전사에 수십 분이 소요될 수 있으므로 백그라운드 실행을 권장합니다. 또한 이미 자막이 존재하는 동영상(예: Bilibili)의 경우 음성 인식 대신 자막을 직접 가져오는 우회 전략을 취할 수 있습니다.

지원 대상~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에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

podcast2md — 播客单集链接 → 章节文字稿

定位

  • 输入:yt-dlp 支持的播客单集页面或音频直链
  • 输出:<out-dir>\<slug>\chapters.md——完整转录稿按节目已有章节切分;非摘要、不发明内容
  • 引擎:本机 CapsWriter-Offline(fun_asr_nano),脚本自动拉起 server/client

运行(用部署副本,必须与 start_server.exe 同目录)

python "D:\iStall\CapsWriter-Offline\podcast2md.py" "单集URL"
python "D:\iStall\CapsWriter-Offline\podcast2md.py" "单集URL" --transcribe-timeout 10800
  • 源仓库:D:\iStall\podcast2md\(podcast2md.py + README.md + PODCAST2MD.md)。改脚本只改仓库版,改完复制到 D:\iStall\CapsWriter-Offline\ 部署。
  • 完整参数表、流水线细节、退出码:按需读 D:\iStall\podcast2md\PODCAST2MD.md,不要默认整读。

关键参数

参数默认说明
--out-dir<脚本目录>\work成品在 work\<slug>\chapters.md
--force关删除已有单集目录重跑;会丢手动修改
--polishoffbasic 只是规则去语气词,非模型润色;要忠实原稿用 off
--server-timeout600sserver 拉起等待
--transcribe-timeout7200s转录等待;长节目调大(如 10800)

坑(先读再跑)

  • 长音频(>1h)转录几十分钟起步:后台进程跑 + 轮询日志,别前台等干撞工具超时。
  • server 转录完保持常驻(复用加速下次);停止走托盘退出。
  • 退出码:3=下载失败,4=server 失败,5=转录失败,6=成品已存在/占用,7=切分或校验失败。
  • 日志:<out-dir>\_podcast2md_server.log 和 <slug>\logs\。
  • ffmpeg 必须在 PATH,否则 client 转录必失败。
  • 说话人分离不做;多说话人稿需后处理。

本机实测事实(2026-10-19 验证,直接引用不必重新探测)

  • ffmpeg 8.1.2 已在 PATH——client 文件转录的前提已满足;不确定时先 ffmpeg -version 实测再说,不要写成推断
  • 本机无独立 NVIDIA GPU,转录走 CPU:30–60 分钟的节目约 10–30 分钟出稿,1 小时以上 40–90 分钟;FunASR-Nano 实测 95 分钟录音纯转写约 46 分钟(约 0.5 倍实时速度,含模型加载,见 work\full.out.log 2026-10-17)
  • FunASR-Nano 参考脚本实测特性:15 秒分段(60s 整段会重复"嗯")、JSONL 逐段落盘断点续跑、静音段按能量阈值跳过
  • B 站字幕覆盖:官方/UP 主 CC 字幕并非全覆盖,AI 字幕更常见——先 yt-dlp --list-subs 探测再定路线,不要凭假设断言覆盖率

本地音频 / 相邻场景分工

  • 本地音频文件(录音、已下载的 mp3/wav,无链接):不走本 CLI。用 FunASR-Nano:venv D:\iStall\FunASR-Nano\.venv,权重 D:\iStall\model-cache\huggingface\local\Fun-ASR-Nano-2512-hf;长音频必须分段逐段识别(60s 整段会重复"嗯"),参考 D:\iStall\FunASR-Nano\work\full_transcribe.py。
  • B站等有字幕的视频:先探测字幕(yt-dlp --list-subs),有 CC/AI 字幕就直接拉字幕成文,不必跑语音转写。
  • 字幕转文章(去时间轴、成文):那是 srt-translator 工作流,不是本 CLI。

관련 스킬