用扣子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 表达式就完事,关键是要对好时区。我第一次配的时候默认用了 GMT+8 的 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 自动启动 | 时区 GMT+8,执行方式“每天” |
| 2 | 代码/HTTP 节点 | 获取当前日期和天气信息 | 天气 API 的 URL、API key、城市参数 |
| 3 | 大模型节点 | 生成早安口播文案 | 模型选择、Prompt、输出变量 morning_script |
| 4 | TTS 节点 | 将文案合成为音频 | 音色、语速、输出变量 audio_url |
| 5 | 图片生成节点 | 生成早安配图 | Prompt、尺寸、输出变量 cover_url |
| 6 | 发布节点 | 发布到目标平台 | 选择公众号/飞书/抖音,绑定账号 |
搭建过程中有一条非常好的调试路径: 先跑通一到六步,再从第一步单独调试,最后再把定时触发打开 。不要一上来就开定时任务,否则一旦某个节点配置错了,日志里全是错误,排查起来非常痛苦。
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}} 等变量名必须和上游“日期天气获取节点”返回的字段名完全一致,大小写也不能错,否则生成内容里会出现空的占位符。
(3)TTS 节点输出转发布格式
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 这种格式之后,整个项目才真正有了“作品集”的感觉。这也是我做完这个项目后最想提醒你的一件事——自动化不只要考虑生成,还要考虑内容的管理和积累。
更多推荐


所有评论(0)