每日新聞播客技能
此技能讓代理能夠擷取即時新聞、將其組織成對話式播客腳本,並生成朗讀腳本的音檔。
工作流程說明
當使用者要求取得最新新聞並製成播客時,請嚴格遵循以下步驟:
步驟 1:確保必要技能已存在
確認 news-aggregator-skill 和 tts 存在於工作區(位於 skills/ 或 .cursor/skills/ 目錄下)。如果缺少任一技能,請告知使用者缺少哪些技能,並要求他們手動安裝後再繼續。請勿嘗試自動安裝技能。
步驟 2:擷取最新新聞
從 news-aggregator-skill 技能目錄(例如 skills/news-aggregator-skill/scripts/fetch_news.py)中找到 fetch_news.py。如有需要,可閱讀其 SKILL.md 以了解使用方法。
執行腳本以擷取即時新聞。您可以根據使用者要求指定來源(例如 hackernews、github、all)或關鍵字。
範例命令:
python3 skills/news-aggregator-skill/scripts/fetch_news.py --source all --limit 10 --deep
步驟 3:草擬播客腳本(內部步驟)
閱讀擷取的新聞資料,並將資訊重寫為 Markdown 播客腳本。 關鍵:優先採用雙主持人(兩人)對話格式(例如主持人 A 和主持人 B),並以動態的問答風格呈現。 腳本應具備以下特點:
- 雙主持人對話式但簡潔: 撰寫兩位主持人之間引人入勝的來回對話。主持人 A 應提出有洞察力、高價值的問題來引導對話,而主持人 B 則應提供資訊豐富且簡潔的答案。感覺要像一場聰明、節奏快速的問答對話。
- 避免冗言贅字: 不要包含不必要的冗詞或過長的過渡句。保持言簡意賅,同時保留所有關鍵資訊與事實。
- 清楚標示發言者: 每行或每段開頭標註發言者名稱(例如
主持人 A:或主持人 B:)。 - 朗讀文字清晰: 避免在朗讀文字中出現複雜的 URL、原始 Markdown 連結或無法發音的字元。
將此腳本儲存為本機檔案,名為 podcast_script.md。
podcast_script.md 內容範例:
**主持人 A:** 歡迎收聽今日新聞摘要。今天我們有幾則令人振奮的科技消息。首先,[公司名稱] 發布了一項重大更新。這項新發布對一般使用者而言,核心影響是什麼?
**主持人 B:** 重點在於……[插入簡潔答案與新聞項目 1 摘要]。這完全改變了我們處理 [主題] 的方式。
**主持人 A:** 這真是太棒了。但考慮到最近發生的資料外洩事件,這種新方法是否會引發安全疑慮?
**主持人 B:** 沒錯。專家指出……[插入分析或背景資訊]。
**主持人 A:** 接下來轉到開源世界,今天 GitHub 上有哪些開發者應該關注的趨勢?
**主持人 B:** 一個值得注意的專案是……[插入新聞項目 2 的簡潔摘要]。
**主持人 A:** 很棒的見解。這就是今天的快速更新。感謝收聽!
步驟 4:逐句生成播客音檔
為避免一次性將整個腳本傳送給 API,您必須逐句生成音檔,然後再進行合併。
使用本機 tts 技能中的 tts.py(skills/tts/scripts/tts.py)。請閱讀 tts 技能的 SKILL.md 以了解完整用法和後端選項。
1. 為每句台詞生成音檔:
對於腳本中的每一句對話,執行 speak 命令。為對應的主持人使用適當的語音或參考音檔。如果使用者提供了兩位角色的參考音檔,請透過 --ref-audio 標誌使用(需要 noiz 後端和 NOIZ_API_KEY)。如果沒有 API 金鑰,則可以使用訪客模式語音(請參閱 tts SKILL.md 以取得語音清單)。
python3 skills/tts/scripts/tts.py -t "歡迎收聽今日新聞摘要……" --ref-audio host_A.wav -o line_01.wav
python3 skills/tts/scripts/tts.py -t "重點在於……" --ref-audio host_B.wav -o line_02.wav
2. 合併音檔:
建立一個文字檔案(例如 list.txt),依序列出所有已生成的音檔:
file 'line_01.wav'
file 'line_02.wav'
然後使用 ffmpeg 將它們合併成一個播客音檔:
ffmpeg -f concat -safe 0 -i list.txt -c copy podcast_output.wav
步驟 5:呈現最終結果
在完整音檔生成並合併後,將結果呈現給使用者。您必須同時提供以下內容:
- 將完整草擬的 Markdown 播客腳本輸出到聊天中,讓使用者可以閱讀。
- 提供最終
podcast_output.wav檔案的路徑,讓他們可以收聽音檔。 - 簡要總結播客中包含的頭條新聞。
安全性與資料揭露
此技能僅包含指令 — 本身不包含任何可執行程式碼。執行時,它會協調兩個依賴技能的腳本:
- 執行的腳本:
news-aggregator-skill/scripts/fetch_news.py(從公開來源擷取新聞)和tts/scripts/tts.py(生成語音音檔)。執行此技能前,兩者都必須存在於本機;請檢閱它們的程式碼和 SKILL.md 以了解其網路行為和憑證需求。 - 憑證:此技能本身不要求任何 API 金鑰或環境變數。
tts依賴項可能需要NOIZ_API_KEY才能使用語音複製功能(noiz 後端);若無此金鑰,訪客模式語音可直接使用。詳情請參閱 tts 技能的 SKILL.md。 - 網路存取:所有網路呼叫均由依賴技能執行,而非此技能的指令。新聞聚合技能會從公開新聞來源擷取資料;tts 技能僅在使用 noiz 後端時聯絡
noiz.ai。 - 寫入的檔案:
podcast_script.md、line_*.wav(逐句暫存音檔)、list.txt(ffmpeg 合併清單)、podcast_output.wav(最終輸出)。所有檔案均寫入目前工作目錄。 - 無持久狀態:此技能不會寫入組態檔案、儲存憑證或修改其他技能。