每日新闻播报技能 是做什么的?
该技能让代理能够获取实时新闻,将其组织成对话式播客脚本,并生成朗读脚本的音频文件。
工作流程指令
当用户要求获取最新新闻并制作成播客时,请严格按以下步骤操作:
第 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。 - 网络访问:所有网络调用均由依赖技能完成,而非本技能的指令。news-aggregator 从公开新闻源获取数据;tts 技能仅在使用 noiz 后端时才会联系
noiz.ai。 - 写入的文件:
podcast_script.md、line_*.wav(逐句临时音频)、list.txt(ffmpeg 拼接列表)、podcast_output.wav(最终输出)。所有文件都写入当前工作目录。 - 无持久状态:本技能不写入配置文件、不存储凭据、不修改其他技能。