简介:扣子(Coze)工作流实战项目源码包,面向希望快速上手免代码自动化内容创作的用户,通过示例工程演示情感早安电台的全自动制作流程。包内共3个文件,以inscode项目配置文件、html页面和gitignore辅助文件为主,体积仅6KB,适合下载后在Coze平台导入查看节点编排逻辑,也可作为零基础学习工作流搭建的入门参考。目前已有1040人学习下载。资源价值在于提供了可运行的源码框架,用户可从中理解文案生成、时间处理、配音合成与视频剪辑等28个节点的协作方式,并结合完整提示词思路,快速复刻属于自己的治愈系电台自动化流程,显著降低内容生产门槛。 先说说为什么做这个东西。每天早上闹钟响起来,打开手机刷到的都是千篇一律的天气推送、热点新闻,朋友圈里那些早安文案也总感觉跟自己的生活没啥关系。我就琢磨,能不能让 AI 帮忙每天生成一段“只属于我的”情感电台音频,起床就能直接听?于是就有了这个项目——“情感早安电台全自动制作”。它搭建在扣子 Coze 平台上,是一套完整可运行的源码级工作流,能做到每天定时生成一段暖心的情感早安播报,包含日期问候、天气信息、情感话题和一首 BGM 推荐,全程不需要人工干预。这篇文章我会把完整的搭建思路、核心配置、可复现的参数以及我踩过的坑全部写出来,希望对想做类似 AI 自动化内容产品的朋友有参考价值。

1. “情感早安电台”到底是什么:项目拆解与核心思路

1.1 电台内容形态与核心体验

一句话概括这个项目: 用 AI 自动生成一段 60 秒左右的情感早安音频,然后自动发布到你的内容渠道 。它跟普通“早安壁纸 + 一段文字”最大的区别是,输出物是音频,带有真实的声音、语气和情绪,听起来更像一个专门的电台节目,而不是冷冰冰的机器播报。

整个音频内容做成这样一段结构:

  1. 开场问候语(早上好 + 今天的日期 + 农历/星期信息)
  2. 今日天气信息(根据所在城市自动获取,比如温度、天气、空气质量)
  3. 情感主题段落(励志、暖心、治愈,每天换一个主题)
  4. 一首歌的推荐词(曲目名 + 一句推荐理由,不直接播放歌曲版权内容)
  5. 结尾祝福语(今天要加油、照顾好自己之类)

我最初做的时候很贪心,想让 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 准备工作

动手之前,先把这些准备好:

  1. 注册一个扣子 Coze 账号(国内版 / 国际版均可,国内版在中文内容生成和平台发布上更方便)
  2. 创建一个“团队空间”,确保有足够的免费额度。如果只是自己听,免费额度完全够用;如果要长期发布到多个平台,建议把额度升级一下,避免月中被限流。
  3. 准备好要获取天气的 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 这种格式之后,整个项目才真正有了“作品集”的感觉。这也是我做完这个项目后最想提醒你的一件事——自动化不只要考虑生成,还要考虑内容的管理和积累。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

更多推荐