Blog Audio 音频旁白
把博客文章转换为多语言音频旁白、完整朗读或双人播客。
文档披露了所需环境变量、外部 Gemini TTS 数据流、FFmpeg 转换和缺少 API key 时的回退;脚本也不打印 key,并使用独立虚拟环境。扣分原因是生成前没有明确的用户确认或费用确认,文章文本会发送给 Google,缺少敏感内容/隐私处理说明,指定输出路径时 FFmpeg 使用 -y 可能覆盖已有文件,且依赖来源与运行时网络信任边界未在本技能内完整说明。
命令、参数、声音校验、空输入校验、文件不存在错误、API 错误、限流和文本过长处理均有说明或实现,关键路径逻辑基本一致。扣分原因是本次仅静态审阅,未验证 Gemini SDK 响应结构、MP3/WAV 转换或 venv 安装;技能目录所需 requirements 文件未提供,自动环境初始化可能因依赖或网络失败,且失败反馈和重试策略仍较粗略。
目标用户、触发短语、summary/full/dialogue 模式、输入形式和主要输出均较清楚,并声明支持多语言。扣分原因是没有明确非适用场景、语义触发边界或敏感内容限制;中文仅由“80+ languages”和自动检测声明覆盖,缺少中文示例或验证;核心功能完全依赖 Google Gemini TTS,面向中国大陆用户的网络可达性未说明。
具备 frontmatter、MIT 许可、版本号、参数提示、快速参考、前置条件、分步流程、嵌入示例、声音参考、错误表和按需加载说明,文档层次较好。扣分原因是缺少该技能专属 changelog、维护责任和明确更新路径,依赖清单未随所给技能材料提供;setup 描述为“配置”但实现主要是检查、引导和 dry-run,能力边界不完全一致。
技能明确产出 narration 文件、时长、声音、费用估算和 HTML embed,并覆盖摘要、全文和双人对话,输出格式对博客发布具有直接使用价值。扣分原因是静态材料没有代表性成功产物或可核验的该技能专项测试;费用、时长和多语言质量均为估算或声明,实际输出可能需要人工审听、检查路径和审阅文本。
源文件包含完整脚本、参数校验、成本估算逻辑、错误分支、CI 和仓库级测试/维护信号,具备一定可审计性。扣分原因是所给测试主要覆盖仓库其他脚本,未显示 blog-audio 的真实执行测试、Gemini API mock、音频有效性验证或第三方结果;“30 voices”“80+ languages”和模型价格等关键声明主要是作者材料。
- 生成会把文章内容发送到 Google Gemini;处理未公开、个人或敏感内容前应取得同意并确认数据政策。
- 核心服务依赖 Google Gemini API,未提供中国大陆网络可达性或替代 TTS 路径。
- 指定已有输出文件时可能被覆盖;API 调用可能产生费用,dry-run 估算不应视为账单保证。
- 所给材料未包含 blog-audio 的 requirements.lock/requirements.txt 或专项执行测试,安装与运行可复现性仍需另行核验。
这个 Skill 能做什么,适合哪些场景?
Blog Audio 是 claude-blog 中用于博客音频化的子技能,调用 Google Gemini TTS 生成旁白。它支持摘要、全文朗读和双人对话三种模式,提供 30 种声音和 80 多种语言,并可输出 MP3 及 HTML5 音频嵌入代码。该技能既可通过 /blog audio 独立调用,也可由 blog-write 内部调用。它适合希望为博客增加音频版本的创作者,但需要 Python、网络连接和 GOOGLE_AI_API_KEY。
读取博客文件,提取标题、正文和大致字数;根据摘要、全文或对话模式准备适合朗读的文本;调用 Google Gemini TTS,并通过 scripts/run.py 管理 Python 环境;支持单人声音或对话模式下的两种声音;使用 FFmpeg 将 WAV 转换为 MP3,缺少 FFmpeg 时回退到 WAV;输出音频文件路径、时长、声音信息、预计成本和 HTML5 嵌入代码。
- 个人博客作者想为新文章提供 1 到 2 分钟的摘要音频。
- 内容团队希望把完整博客文章转换成 5 到 15 分钟的朗读版本。
- 营销团队想把文章改编成 3 到 8 分钟的双人播客式对话。
- 多语言内容运营者需要用 80 多种语言制作文章音频。
- 使用 blog-write 的团队希望在 API 密钥可用时自动附加音频版本,而在密钥缺失时不中断写作流程。
这个 Skill 有哪些优点和局限?
- 支持摘要、全文朗读和双人对话三种模式。
- 提供 30 种声音和 80 多种语言。
- 可生成 MP3,并提供可直接使用的 HTML5、MDX 和 WordPress 嵌入示例。
- API 密钥缺失时,内部调用会静默跳过,不阻塞 blog-write。
- 必须配置 Google Gemini TTS API 密钥,并依赖网络访问。
- Python 3.11+ 是运行要求;缺少 FFmpeg 时不能转换为 MP3,只能回退到 WAV。
- 超过 32k tokens 的文本需要拆分处理。
- 源材料没有给出固定 API 价格或该子技能的独立测试结果。
如何安装这个 Skill?
该技能没有单独安装步骤;它随 AgriciDaniel/claude-blog 集合安装。使用 Claude Code 先运行:/plugin marketplace add AgriciDaniel/claude-blog;然后运行:/plugin install claude-blog@agricidaniel-claude-blog。安装后重启 Claude Code。README 未提供仅安装 skills/blog-audio 的独立流程。
如何使用这个 Skill?
在 Claude Code 中使用 /blog audio setup 检查配置,使用 /blog audio voices 查看声音,或运行 /blog audio generate <file> 生成音频。可指定 --mode summary、--mode full 或 --mode dialogue,以及 --voice <name>。生成前设置 GOOGLE_AI_API_KEY;例如:export GOOGLE_AI_API_KEY=your-key。
这个 Skill 与同类方案有什么区别?
与直接使用 Claude 或 ChatGPT 生成一次性文本相比,该技能增加了 Gemini TTS、声音选择、双人对话和音频嵌入输出,但需要额外配置 Google API 密钥及本地运行环境。