Communitygithub.com

tauseefau/podcast-video

將一個主題轉變為由兩位虛擬主持人對話的 Podcast 影片,使用本機 VoiceStudio 語音與 HyperFrames 技術,輸出 1080p MP4 格式。在開始製作前,會先透過問答了解使用者的需求。

podcast-video 是什麼?

這項技能讓 AI 代理能根據使用者提供的簡單描述,自動產出一個完整的「雙人對話式 Podcast 影片」,輸出解析度為 1920x1080 的 MP4 檔案。其工作流程包含嚴謹的步驟:首先透過多輪問答(靈感來自 Matt Pocock 的「grilling」技能)來確定主題、目標觀眾、影片長度、主持人風格等關鍵決策,避免後續重工。接著,它會自動執行研究、撰寫自然語音腳本,並透過本機的 VoiceStudio 伺服器生成自訂語音(可支援使用者自己的複製語音)。最後,它利用 HyperFrames 框架將語音、圖片(來自 CC 授權資源,如 Wikimedia Commons)、圖示(來自 Lucide 圖示庫)和音效(如過場音效)組合成視覺豐富的影片,包含主題切換、標題卡、發言者標籤和動態語音條等效果。此技能支援 Claude Code、Cursor 等具備檔案系統和命令執行能力的 AI 代理平台,並適用於 macOS、Linux 和 Windows(透過 WSL)。它將原本需要大量手動工作的多媒體製作流程自動化,特別適合內容創作者、行銷人員或任何需要快速產出專業風格對話影片的使用者。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/tauseefau/podcast-video-skill/tree/HEAD

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Podcast 影片

製作一個 1920x1080 解析度的影片,內容為兩位主持人針對一個主題進行對話。每個主題都會有專屬的背景照片、標題卡、圖示以及帶有動態語音條的發言者標籤。主題切換時會出現全螢幕的擦除過場效果和「嗖」聲,圖示會伴隨「啵」聲彈出,最後一個場景則包含訂閱按鈕和工作人員名單。影片開場可以選擇使用使用者自己的複製語音。

在修改任何合成設定前,請先閱讀 /hyperframes。底下的腳本都位於此技能的 scripts/ 資料夾中。請在影片專案資料夾中執行它們。

0. 先進行訪談

在完成此步驟之前,不要進行任何研究、寫作或產出。重新渲染影片非常耗時,所以請在開始前就敲定所有決策。這個方法來自 Matt Pocock 的 grilling 技能。

決策形成一個樹狀結構:有些問題必須等到其他問題確定後才能詢問。請以回合的方式進行:

  1. 一次詢問所有你已經具備先決條件且能回答的問題,不要問任何依賴於你尚未聽到的答案的問題。那個問題會留到後面的回合。
  2. 為每個問題編號,並提供你建議的答案,措辭要讓使用者回答「是」即表示接受。
  3. 等待答案,然後釐清這些答案解鎖了哪些問題,再繼續下一回合。某個答案也可能讓原本計劃的問題變得無意義:那就直接跳過。

每個問題的格式如下:

❓ **Q1** - **<標題>**: <問題內容>

➡️ <你建議的答案>

事實是你的工作,決策是他們的工作。 永遠不要問那些你自己就能查到的事情:例如 VoiceStudio 是否正在運行、有哪些語音設定檔(GET /profiles)、資料夾裡有什麼、研究結果是什麼。永遠不要替他們做決定。請用純文字提問,這樣他們可以用自己的話回答。

需要涵蓋的決策,大致依此順序:

回合決策事項
1主題和具體切入點。觀眾是誰,他們已經知道什麼。希望觀眾看完後做什麼。目標長度。
2兩位主持人:他們是誰以及他們的關係,例如專家和客戶。語氣。節目名稱。是否以使用者自己的語音開場。
3如果以他們的語音開場:使用哪個語音設定檔,以及確切的開場白。為設計好的主持人設定口音和語調特徵。
4研究之後:要使用哪些發現,以及任何希望不要提及的主張。主題列表及其順序。
5視覺與聽覺風格:照片的類型,每個主題的圖示,對擦除效果、嗖聲和啵聲的任何修改。影片將發布在哪個平台。

如果請求中已經回答了某些問題,請直接跳過。如果他們說「直接開始吧」或「你決定就好」,就停止提問,採用你建議的答案,並列出它們。問題數量沒有限制,但不要為了問而問:每個問題都必須能改變影片的結果。

最後,用幾句話回放你的計畫:主題、觀眾、長度、主持人、開場、主題列表以及呼籲行動。在他們確認之前,不要開始步驟 1。 如果後續某個環節重新開啟了一個已決定的問題,例如研究結果動搖了原先的切入點,請暫停並再次提問。

1. 檢查設定

  • curl -s "$VOICESTUDIO_URL/profiles" 應能正常回應。預設 URL:http://localhost:3000。 如果伺服器有 API 金鑰,則必須設定 VOICESTUDIO_API_KEY。切勿將金鑰寫入專案檔案中。
  • ffmpeg 和 node 指令需可在 PATH 環境變數中找到,且 HyperFrames 技能必須已安裝。

如果缺少任何項目,請暫停並引導使用者參閱此技能的 README 檔案。

2. 建立專案

執行 npx hyperframes init <dir>,然後將 templates/script.example.json 複製到 <dir>/script.json。

3. 研究並編寫 script.json

首先研究主題。每個統計數據都必須有真實來源:將其放入該場景的 source 欄位中,不要憑空捏造數字。撰寫自然的對話稿,速度約為每分鐘 150 字。

欄位意義
show節目名稱,顯示在每個場景上
chips最後一個場景上的工作人員名單標籤
voices每個發言者一個條目。包含 name、role、color,以及 profile_id 或 instruct 與 seed
scenes依出現順序排列。包含 kicker、title、icon、可選的 sub 和 source。最後一個是片尾
lines依序排列的口白回合:包含 who、scene、text。同一個場景的口白必須連續排列

icon 是適合該主題的 Lucide 圖示名稱,例如 phone-call。

若要使用使用者自己的複製語音開場,請新增一個語音條目,其 profile_id 來自 VoiceStudio(從 GET /profiles 取得),為它建立一個專屬的第一個場景,並在口白結尾加上交接語句,例如「讓我們開始吧!」。只有獲得語音所有者的許可才能複製其語音。

在產生語音之前,將腳本顯示給使用者看。

4. 產生語音

執行 python3 <skill>/scripts/make_voice.py

這會寫入 assets/audio/ 和 assets/lines.json。音訊會被快取,因此編輯腳本後只會產生變更的部分。如果使用者重新複製語音,請刪除 assets/audio/ 中對應的音訊檔案以便重新產生,並先確認設定檔的 ref_audio_path 已變更:未儲存的複製會保留舊的語音。

在渲染影片之前,請讓使用者先聽聽看產生的音訊。

5. 新增圖片、圖示和音效

圖片: 每個場景需要 assets/img/<scene-id>.jpg,橫向,寬度至少 1920 像素,且與前一個場景使用不同的照片,讓每個主題切換都可見。僅使用使用者可以發布的圖片,例如來自 Wikimedia Commons 的 CC 授權照片。將每張圖片的來源記錄在 assets/img/credits.json 中,格式為 {"<scene-id>": {"artist": "...", "license": "...", "page": "..."}}。最後一個場景會顯示藝術家的名稱。

圖示:

npm pack [email protected] --silent && tar xzf lucide-static-0.460.0.tgz
mkdir -p assets/icons && cp package/LICENSE assets/icons/LICENSE
cp package/icons/<icon-name>.svg assets/icons/   # 為每個場景圖示執行一次
rm -rf package lucide-static-0.460.0.tgz

音效: 執行以下指令,並複製每個指令輸出的檔案路徑:

npx hyperframes media-use resolve --type sfx --intent "short whoosh transition" --project .
npx hyperframes media-use resolve --type sfx --intent "quick pop badge" --project .
mkdir -p assets/sfx
cp <whoosh 檔案路徑> assets/sfx/whoosh.mp3
cp <pop 檔案路徑> assets/sfx/pop.mp3

任何使用 CC BY 授權的音效,請透過 chips 欄位在最後一個場景上標明出處。

6. 建置與檢查

執行 python3 <skill>/scripts/build.py,然後執行 npx hyperframes check。修正所有錯誤。接著執行 npx hyperframes snapshot --at <秒數>,在渲染前檢查場景切換時的畫面。擦除效果會以全螢幕方式出現在 build.py 所輸出的場景開始時間點。

7. 渲染

執行 npx hyperframes render。MP4 檔案會輸出到 renders/ 資料夾中。每分鐘影片預計需要數分鐘的渲染時間。

檢查產出的檔案,然後告訴使用者你測量的結果:執行 npx hyperframes audio <video> --json 可以顯示音訊是否存在以及音量是否在範圍內。你可以測量聲音,但無法聽到它,所以請使用者自行聆聽確認。

相關技能