Community寫作與編輯github.com

BingWuJ/podcast2md-skill

把播客單集連結轉成按章節整理的完整文字稿(本機 CapsWriter-Offline 語音辨識,產出 chapters.md,非摘要)。

podcast2md-skill 是什麼?

podcast2md 是一個專為開發者與 AI 代理設計的技能,能將播客單集連結(支援 yt-dlp 的格式)自動轉換為按章節整理的完整文字稿。它使用本機 CapsWriter-Offline(FunASR-Nano 引擎)進行語音辨識,無需依賴雲端服務,確保隱私與離線可用性。輸出為 `<out-dir>/<slug>/chapters.md`,忠實呈現原始內容,不做摘要或創作。支援 Windows PowerShell 執行,提供自訂逾時、強制重新處理、基本潤色(僅移除贅詞)等參數。注意:長音訊(>1 小時)轉錄需較長時間(約 0.5 倍即時速度,CPU 環境),建議背景執行並輪詢日誌。對於本地音訊檔案或 B 站等有字幕的影片,另有分工路徑,不經由此 CLI。

相容平台~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 — 播客單集連結 → 章節文字稿

定位

  • 輸入: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。

相關技能