ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

用扣子Coze搭建AI情感早安电台:全自动音频内容工作流实战

用扣子Coze搭建AI情感早安电台:全自动音频内容工作流实战 简介扣子Coze工作流实战项目源码包面向希望快速上手免代码自动化内容创作的用户通过示例工程演示情感早安电台的全自动制作流程。包内共3个文件以inscode项目配置文件、html页面和gitignore辅助文件为主体积仅6KB适合下载后在Coze平台导入查看节点编排逻辑也可作为零基础学习工作流搭建的入门参考。目前已有1040人学习下载。资源价值在于提供了可运行的源码框架用户可从中理解文案生成、时间处理、配音合成与视频剪辑等28个节点的协作方式并结合完整提示词思路快速复刻属于自己的治愈系电台自动化流程显著降低内容生产门槛。 先说说为什么做这个东西。每天早上闹钟响起来打开手机刷到的都是千篇一律的天气推送、热点新闻朋友圈里那些早安文案也总感觉跟自己的生活没啥关系。我就琢磨能不能让 AI 帮忙每天生成一段“只属于我的”情感电台音频起床就能直接听于是就有了这个项目——“情感早安电台全自动制作”。它搭建在扣子 Coze 平台上是一套完整可运行的源码级工作流能做到每天定时生成一段暖心的情感早安播报包含日期问候、天气信息、情感话题和一首 BGM 推荐全程不需要人工干预。这篇文章我会把完整的搭建思路、核心配置、可复现的参数以及我踩过的坑全部写出来希望对想做类似 AI 自动化内容产品的朋友有参考价值。1. “情感早安电台”到底是什么项目拆解与核心思路1.1 电台内容形态与核心体验一句话概括这个项目用 AI 自动生成一段 60 秒左右的情感早安音频然后自动发布到你的内容渠道。它跟普通“早安壁纸 一段文字”最大的区别是输出物是音频带有真实的声音、语气和情绪听起来更像一个专门的电台节目而不是冷冰冰的机器播报。整个音频内容做成这样一段结构开场问候语早上好 今天的日期 农历/星期信息今日天气信息根据所在城市自动获取比如温度、天气、空气质量情感主题段落励志、暖心、治愈每天换一个主题一首歌的推荐词曲目名 一句推荐理由不直接播放歌曲版权内容结尾祝福语今天要加油、照顾好自己之类我最初做的时候很贪心想让 AI 一口气生成 5 分钟的长节目后来发现体验并不好——没人早上一睁眼想听一个 AI 絮叨 5 分钟。压到 60 秒左右是最合适的刚好吃完一口早饭的时间情绪传递也集中。这个“内容长度”的取舍是第一个经验后面还会详细说。1.2 为什么用扣子 Coze而不是自己写代码可能有人会问这功能拆开来看无非就是“调用大模型生成文案 调用 TTS 合成语音 定时发布”自己写 Python 脚本也完全能做到为什么非要选扣子 Coze说实话如果只做一次两次自己写代码确实更灵活。但要做成“每天自动跑”的长期项目扣子的优势就出来了低代码编排图形化工作流把大模型调用、天气 API、图片生成、TTS 语音合成这些节点拖拽连接就行不用自己去维护一堆 Python 依赖和服务。内置定时触发Coze 的“定时任务/触发器”可以直接指定每天几点运行省去了自己写 cron、部署服务器、保证进程存活这些麻烦。多平台发布便捷它自带发布渠道配置可以直接输出到公众号、飞书、抖音等各种平台实测发布链路比我预想的稳。调试成本低工作流里每个节点都能单独调试Prompt 调优、变量调整实时生效非常适合反复试。这不是说 Coze 完美无缺后面我会专门讲它让我头疼的地方。但在“快速搭建一个自动化内容产品”这件事上Coze 确实是我试过的方案里最省心的选择。2. 核心细节解析LLM 文案、TTS 语音、封面图和定时发布2.1 文案生成把 Prompt 当成“情感编辑”整个项目里最重要的环节其实是文字稿不是语音。因为 TTS 读的是文字稿如果文字稿读出来都不像人话再好的音色也救不回来。我最初的 Prompt 写得特别简单“生成一段早安电台文案”。结果每次生成的内容风格都不一样有时候像新闻联播有时候像广告词完全没法用。后来我把 Prompt 改造成了“角色设定 结构约束 风格参考 内容变量”四段式稳定性明显提高。一个可用的 Prompt 示例长这样你是一位资深情感电台的早安主播声音温暖自然普通话标准。 请根据以下信息生成一段约60秒的早安电台口播稿读出来大约250字。 今天的日期是2025年X月X日 今天的天气是XX市晴天3-10℃空气质量良 今日情感主题温暖 要求按照以下顺序输出 1. 开场问候语可以随机变化不要固定模板 2. 天气播报自然融入不要像AI播报一样生硬 3. 情感话题正文围绕“温暖”主题展开内容具体、有感召力 4. 推荐一首歌曲并给出理由曲目名要真实存在 5. 一句简短有力的结束语 风格要求像朋友之间聊天不要有播音腔不要用“亲爱的听众朋友们”这类老套表达。 禁止出现新闻联播式开头、教科书式说教、过于矫情的网络文学腔。这个 Prompt 有几个容易被人忽略但很关键的细节第一加入“约 60 秒 / 约 250 字”的长度约束而不是让 AI 自由发挥第二明确列出顺序结构避免 AI 自由组合导致内容逻辑混乱第三给“禁止”项这是我在多次调试后发现最有效的控制手段。大模型对小样本的“不要什么”往往比对“要什么”更敏感。2.2 声音合成TTS 节点选型与参数文字稿搞定之后下一步是让 AI 把它读出来。Coze 内置的 TTS 节点支持多种声音但不同声音的朗读风格差异很大我实测的结果是知性女声适合播报类、温柔女声适合情感类而有磁性的男声反而更偏商业广告风不太适合清晨场景。最终我选的是 Coze 内置的一个温柔风格女声音色理由有三点语气里带一点“微笑感”读情感话题很自然标点符号停顿处理得好不会出现一口气读不喘气的情况对数字和温度的播报准确率较高天气信息不会读错TTS 参数上我最关注三个语速Rate、音量Volume、停顿Pause。语速我设成 0.95 到 1.0 之间比默认稍慢一点点听感更加舒缓音量保持默认参数因为这个声音的响度本身已经和常见播放器比较匹配调太大会失真。要特别提醒的是TTS 输出的音频时长不等于文案字数除以固定语速。同样 250 字的文案逗号和句号数量不同读出来的时长差异能到 10 秒以上。如果发现生成的音频时长总是偏长或偏短不要只调语速先检查 Prompt 里的标点密度。2.3 封面图与早安卡视觉包装怎么做想让音频在内容平台上获得更好的传播效果封面图和配套的早安卡几乎是必备的。我在这上面也踩了坑——一开始完全没用图片节点发布出来的内容是“纯音频 系统默认封面”点击率低得可怜。Coze 工作流里可以加一个“图片生成”节点用大模型绘制一张配图。我用的图片生成 Prompt 是一张温暖的清晨主题插画柔和的阳光透过窗户洒进房间窗台上放着一杯热咖啡和一本书整体色调以暖橘色和浅黄色为主构图简洁干净有治愈感。 不要出现文字不要出现人脸。最后一句话“不要出现文字不要出现人脸”是我加了 N 次测试才总结出来的——AI 生成图片一旦有文字基本都是乱码有人脸特别是手部动作特写时容易崩。用文字标题做早安卡的话我建议在发布端用模板合成而不是让 AI 直接画字。2.4 定时触发与多平台发布全自动闭环自动化的核心是定时触发。Coze 的“定时任务/触发器”不是简单设置一个 cron 表达式就完事关键是要对好时区。我第一次配的时候默认用了 GMT8 的 7:30结果在后台看到任务确实跑了但是内容生成时间对不上我的预期原因就是触发器的时区设置跟创建空间时用的时区不一致。另外我把流程设计成了“生成-合成-发布”三段式串行节点间用变量传递数据第 1 个节点生成文案后把文案作为 TTS 节点的输入TTS 输出音频文件后再交给发布节点。这里有一个容易踩的坑Coze 的节点输出变量名如果不提前在“变量映射”里定义好下游节点经常拿不到值而且报错信息有时候很模糊。建议脚本一拿到手第一步就是把每个节点的输出变量名统一改成一个有意义的名字比如morning_script、audio_file_url、cover_image_url。3. 实操环节从零搭建一套可运行的源码级工作流3.1 准备工作动手之前先把这些准备好注册一个扣子 Coze 账号国内版 / 国际版均可国内版在中文内容生成和平台发布上更方便创建一个“团队空间”确保有足够的免费额度。如果只是自己听免费额度完全够用如果要长期发布到多个平台建议把额度升级一下避免月中被限流。准备好要获取天气的 API key。Coze 工作流里可以直接调用外部 HTTP 节点我用的免费气象 API比如 OpenWeatherMap 或和风天气的免费版用 API key 认证注意额度限制。3.2 工作流编排步骤进入 Coze 控制台创建一个新的“智能体/工作流”按照这个顺序拖入节点步骤节点类型作用关键配置1定时触发器每天早上 7:30 自动启动时区 GMT8执行方式“每天”2代码/HTTP 节点获取当前日期和天气信息天气 API 的 URL、API key、城市参数3大模型节点生成早安口播文案模型选择、Prompt、输出变量morning_script4TTS 节点将文案合成为音频音色、语速、输出变量audio_url5图片生成节点生成早安配图Prompt、尺寸、输出变量cover_url6发布节点发布到目标平台选择公众号/飞书/抖音绑定账号搭建过程中有一条非常好的调试路径先跑通一到六步再从第一步单独调试最后再把定时触发打开。不要一上来就开定时任务否则一旦某个节点配置错了日志里全是错误排查起来非常痛苦。3.3 关键代码与配置片段虽然 Coze 是低代码平台但为了让这套工作流“可运行”有几个关键位置的代码/配置是可以直接复制的。1日期天气获取节点JavaScript 代码模式async function main({ params }) { const city params.city || 成都; const apiKey params.apiKey; // 请替换成你自己使用的天气 API 域名 const url https://api.example-weather.com/v3/weather/now?city${encodeURIComponent(city)}key${apiKey}; const resp await fetch(url); const data await resp.json(); const now data.data; const today new Date(); const dateStr ${today.getFullYear()}年${today.getMonth() 1}月${today.getDate()}日; const weekDays [日, 一, 二, 三, 四, 五, 六]; const weekStr 星期 weekDays[today.getDay()]; return { date: dateStr, week: weekStr, weather: now.text, temperature: ${now.temp}℃, guide: now.windDir now.windScale 级 }; }2大模型节点 Prompt 变量拼接如果 Prompt 里要插入天气变量不要直接写在系统提示词里而是用变量引用今天的日期是{{date_str}} {{week_str}} 今天的天气是{{city}}{{weather}}{{temperature}}{{wind_guide}} 今日情感主题{{topic}}这里的{{date_str}}等变量名必须和上游“日期天气获取节点”返回的字段名完全一致大小写也不能错否则生成内容里会出现空的占位符。3TTS 节点输出转发布格式TTS 节点输出通常是一个音频 URL发布节点要求的是一个可访问的文件地址。如果遇到跨域或者临时 URL 的问题可以用一个代码节点把音频文件转存到对象存储里代码大致如下async function main({ params }) { const audioUrl params.audioUrl; const resp await fetch(audioUrl); const buffer await resp.arrayBuffer(); // 这里将 buffer 上传到你的对象存储并返回公开访问地址 const ossUrl await uploadBuffer(buffer, morning-radio/ Date.now() .mp3); return { finalAudioUrl: ossUrl }; }这是我在实际部署中遇到的最隐蔽的问题——Coze 临时生成的音频 URL 有效期很短直接拿去发布有时候多平台同步时已经失效了。转存之后这个问题彻底解决。4. 常见问题与排查技巧实录4.1 问题一生成的音频时长忽长忽短症状有时候 45 秒有时候 1 分半内容长度差异很大。排查思路先看文案字数。如果字数在 200-280 字之间波动音频时长偏差大是正常的。再看 Prompt 里的标点密度。逗号会让 TTS 在中间停顿顿号多、句号少导致句子长读起来就会更快。解决方法在 Prompt 里明确规定“全文共 8 到 10 个句子平均每个句子 25 到 30 字”同时把 TTS 语速固定到一个值不要让它自适应。4.2 问题二不同日期的声音听起来不太对症状有时候同一个音色读出来的感觉完全不同像换了个人。排查思路TTS 服务一般会按字符数计费但有些免费层级的音色会在高峰期被路由到不同的合成节点导致音色微差。这种问题基本上无解只能在正式发布前多试几次把生成时间放在非高峰期。4.3 问题三定时任务触发了但内容没发布症状后台看到任务执行记录是成功的目标平台却啥也没有。排查思路发布节点对账号授权有时效经常是授权过期导致静默失败。打开节点日志看返回码如果有类似token expired的状态码重新绑定账号即可。4.4 问题四早安卡图片上有乱码文字症状AI 生成的配图里偶尔出现“类似文字但不是文字”的线条非常影响观感。解决方法就是我前面说的Prompt 里明确要求“不要出现文字不要出现人脸”。如果还是偶尔出问题可以在发布前用代码节点接一个图像检测检测到文字区域就重新生成一次最多重试三次。5. 个人踩坑总结与可扩展的方向这套流程我前前后后跑了快两个月下面几个经验是我认为最值得分享的。第一自动化项目里最难的是“异常自愈”。只搭一个“正常路径”的工作流是不够的。天气 API 偶尔超时、TTS 偶尔报错、发布平台偶尔抽风这些问题一旦发生整条链路就断了。建议在关键节点后面加一个“分支器”判断上游返回是否为空如果为空就换一个备用 API 或走缓存数据宁可降级也不能中断。我后期的版本里加了一个兜底逻辑如果天气 API 连续 3 次失败就自动用“晴天 / 20℃”的默认数据生成保证邮件不断更。第二内容平台对 AI 生成的音频审核逻辑各不相同。同样一段音频在 A 平台能过审在 B 平台可能被判为低质量内容。这个只能靠维护一个小的“平台侧测试账号”来试没有一劳永逸的办法。第三情感类内容最忌讳内容同质化。每天都是“早安要加油”这种空泛的话用户很快就麻木了。我在 Prompt 的“情感主题”里内置了一个随机池可以从“温暖、坚持、告别、接纳情绪”等主题中每天随机抽取一个。实测下来评论区互动率确实提升了很多人会来留言“今天的主题是什么”。这个项目目前还在持续迭代中我自己比较看好的扩展方向是把单条音频改成 3-5 分钟的“晨间短节目”加入当日新闻要点但重新用情感化表达改写一遍或者接入 RSS 源让 AI 自动选取值得播报的行业动态再往后甚至可以做成互动形式用户可以在前一天晚上给电台“留言”AI 在早上的节目里回应一条。这些方向都已经具备基础条件核心还是内容和体验的打磨。最后再分享一个小技巧如果你也打算长期跑这种自动化内容产品一定记得给每天生成的文件按日期命名并归档。我已经不止一次需要找回上周某天的早安音频结果发现文件名全是output_1698779532.mp3这种完全没法辨认的格式。我在工作流末尾加了一个“重命名节点”把文件名统一改成2025-01-20_早安电台.mp3这种格式之后整个项目才真正有了“作品集”的感觉。这也是我做完这个项目后最想提醒你的一件事——自动化不只要考虑生成还要考虑内容的管理和积累。本文还有配套的精品资源点击获取
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进