公司动态

用Coze搭建“听故事学中药”工作流:知识库到语音合成全复盘

📅 2026/9/1 13:27:35
用Coze搭建“听故事学中药”工作流:知识库到语音合成全复盘
简介一套面向中医药科普短视频创作的Coze工作流模板适合内容创作者、知识博主及对中药科普感兴趣的小团队使用。它把“听故事学中药”的角色设定、场景构思、叙事节奏与口语化表达封装成可复用的流程用户只需在Coze平台导入配置即可生成以唐代村落、城镇手工业等古代生活场景为背景融入湿热肿痛、头颈僵硬、咳嗽痰多等常见健康冲突的科普故事脚本降低短视频选题与文案门槛。包体共2个文件以yml与yaml为主分别对应工作流配置定义与清单声明整体压缩包仅36KB轻量易部署。目前已有251人学习/下载。通过这套模板用户能直接获取结构化角色提示、分场景叙事逻辑和可调整的科普内容框架上手后只需替换具体中药知识点即可批量产出兼具历史感与趣味性的短视频素材快速建立差异化内容。 前几天朋友问我怎么让家里的孩子记住中药名字和药性我当时脱口而出别让他们背让他们听故事。于是我在扣子coze上搭了一条“听故事学中药”工作流输入一个药名它就能生成一个关于这味药的童话式短故事再通过语音合成读出来孩子躺着也能听。今天这篇是我把这个工作流从0到1跑通后的完整复盘从知识库结构、故事提示词到语音合成和调试记录都有想复刻的可以直接照着抄。1. 中药知识不等于好内容先想清楚让谁听1.1 孩子听不进药典但能记住故事中药科普最劝退人的地方是它天然带着“教材味”补血活血、调经止痛、润肠通便……这些词每句话都对但你不会想听第二遍。尤其是给小朋友讲你刚说完“性味归经”他已经开始研究桌边的玩具了。故事则是另一种记忆方式。同样讲当归如果让它变成一个采药人天黑前必须赶回山里药铺路上遇到一个失血过多的樵夫帮他把气血补上、把肠道淤堵疏通樵夫问救命恩人叫什么她只留下一句“当归”。孩子听完会脱口而出当归是补血的又是让人“该回来”的药。三个知识点就藏在情节里不用背。这其实是内容创作的老逻辑专业内容要走下神坛先得变成“能让人感同身受的经验”。中药恰好特别适合故事化因为很多药名本身就有典故和传说不缺素材缺的只是一个把干货翻译成故事的自动化流程。我选择从这个角度切入做coze工作流目标用户也很清晰8到12岁孩子的家长以及想轻松了解中药又不想啃药典的成年人。1.2 为什么选coze而不是自己写代码我早期确实用Python直接调过大模型API能实现但每一次改流程都想掀桌。比如我想在生成故事前插入一次知识库检索代码里要把检索结果注入提示词再改一次输出格式测试的时候还得自己造数据。换成coze后这套东西变成了可视化节点知识库检索是一个节点大模型是一个节点语音合成是一个节点我只需要把线连起来。改流程不用重新部署加一个节点只需要拖一下。对“内容型项目”来说这种开发速度太重要了。当然dify和n8n我也简单试过它们不是不能做但coze对中文用户更友好插件市场里有现成的语音合成、搜索引擎等能力而且能一键发布成智能体分享出去。这个项目虽然核心只有一条工作流但后续要接飞书、要加图片生成都会越来越依赖平台生态所以我最终选了coze。我并不是说coze吊打所有平台而是这个场景下它最省事省事意味着你能把精力留在内容本身。1.3 整条工作流跑起来后长这样先说最终链路免得后面章节你找不到方向。用户输入一个药名或者干脆不输入让它随机抽一味药工作流先去知识库检索对应药方检索结果和“故事创作提示词”一起交给大模型大模型生成600字左右的童话故事随后语音合成节点把它变成音频最后同时输出音频和文字稿。到这里一个“听故事学中药”的完整体验就成立了。有几个容易被忽略的中间步骤我后面都会展开知识库不是随便丢文档要拆成结构化的一行一味药故事提示词必须把“不能编药性”写死并且配合知识库引用强度语音合成前还要把标题符号清理干净不然TTS会把括号和“【”都读出来。这些坑我都在调试环节踩过占用的时间比搭节点多一倍。2. 建一个不会让AI“胡编”的中药知识库2.1 整篇文档丢进去就废了要拆成一药一行coze知识库支持文档和表格两种上传方式很多人图省事把中药百科整篇丢进去结果模型检索回来经常是“半篇文章无关段落”生成的故事一会儿讲当归一会儿讲黄芪。原因很简单文档分段粒度不可控模型拿到的是碎片不是事实。我的做法是建一张CSV表格每一味药单独一行每一行都是一个完整的药材档案。这样检索出去的颗粒度正好生成故事时能看到的材料也足够聚焦。表格听起来简单但真正要做的是“字段设计”。如果只是把说明书搬进表里模型还是会写得干巴巴。我的字段至少得包含三类信息事实类药名、别名、性味、归经、功效、主治、素材类药名典故、故事素材、转化类通俗说法、适合儿童故事化程度。第一类保证准确第二类保证有趣第三类保证安全。2.2 字段怎么定才能让模型既准确又有料我列一个自己正在用的示例表结构以当归为例字段内容药名当归别名干归、秦归、云归性味甘、辛温归经肝、心、脾经功效补血活血调经止痛润肠通便主治血虚萎黄、月经不调、痛经、肠燥便秘药名典故“当归不归娇妻改嫁”等民间故事古人认为此药能使气血各有所归故事素材采药人当归遇到失血樵夫用甘温之力帮他恢复体力最后留下一句“当归”通俗说法把亏空的气血当燃料加回去同时把肠道淤堵的路疏通注意这里的“功效”和“主治”要经过权威资料核对。我只把它当故事创作的事实底座不会在回复里写“适合什么人群”或任何与剂量相关的描述。知识库建好后我建议在导入coze之前做一次人工审校把容易误读的词汇统一替换成大白话。否则模型在故事里可能写出“当归可以治疗痛经”这种话语气太像医嘱很容易误导人。2.3 导入coze的格式与检索测试CSV导出的细节字段名不要带空格和特殊符号比如“药名”就写“药名”别写“药 名”。上传到coze知识库后官方默认会自动分段但表格数据我希望的是整行命中所以要找到“分段设置”选“按行”或“不自动分段”。如果你忽略这一步模型可能只抽到表格里的一列故事里只有“当归 甘辛温”几个词完全没法用。上传完不要急着写工作流先在知识库页面做检索测试搜“当归”看返回的是一条完整记录还是被切开的一段再搜“补血”看能不能找到当归这一行。这一步能排除大量后续问题。我前期一半的调试时间都花在“知识库根本没检索对”上后来养成习惯每个新药材入库后先检索再进工作流。3. 故事生成节点的提示词让AI“戴着镣铐跳舞”3.1 我的核心提示词模板知识库负责“正确”提示词负责“好听”。我在大模型节点里用的是这一版已经跑了十几味药稳定度很高你是一位中药文化故事作家。你会收到知识库检索结果内容是某味药材的档案。 请写一个适合8~12岁孩子听的3分钟童话故事全文控制在600字左右。 硬性要求 1. 以药材为拟人化主角名字用该药材的名字 2. 必须使用检索结果中的性味、功效、主治可以改编成情节但严禁虚构或夸大药效 3. 故事要有悬念开头、一个困难、一个解决、一句点题收尾 4. 用孩子能懂的生活化类比解释药理作用 5. 只输出“【故事标题】”和正文不要输出创作说明。这套提示词里最重要的不是“写得好”而是“别跑偏”。我把“必须使用检索结果”放在最前面并且在coze节点里开启知识库引用把引用字段手动限制为“药名、功效、主治、故事素材”四个。这样模型看到的材料范围被收紧即使它想自由发挥也巧妇难为无米之炊。输出格式的约束也很关键因为下一步语音合成需要干净文本。3.2 温度、知识库引用和负面约束很多朋友做故事类内容喜欢把温度调到很高觉得模型会更有想象力。我的实测结果是温度高确实脑洞大但也会把药效改得离谱。印象最深的一次生成“黄连”时模型写“黄连被太阳晒得金光闪闪人们吃了它就能变成金子”这已经完全脱离知识库了。后来我把温度降到0.6到0.7同时在提示词后面追加一句负面约束“不得出现金色、宝石、魔法特效等与药材本身无关的夸张设定”。低温确实会让故事稍微收敛但它换来的是准确这个取舍非常值。知识库引用的强度也有讲究。coze的大模型节点可以设置“引用知识库强度”我一般设为中等偏上。太低模型会无视知识库自由创作太高它会把检索结果整段粘贴进故事读起来像药方。调到中间后它既会参考事实又愿意用自己的语言改写是最舒服的状态。3.3 当归故事从模板到成品的实际效果用这套配置跑出来的当归故事我先念一段给你感受“当归姑娘住在云雾山的药铺。一天傍晚一个面色苍白的樵夫敲门说自己采药时摔伤流了很多血头晕得厉害。当归姑娘从药柜里取出晒干的根茎煮水让他喝下又塞给他一把蜂蜜核桃说——你气血亏虚我先帮你把血补起来再把你肠道里的淤堵通开两件事缺一不可。樵夫喝完脸上慢慢有了血色问她姑娘你叫什么名字当归姑娘笑着说该回家的时候记得想起我我叫当归。”这段故事没有华丽词藻但“补血”“疏通”“当归与回家”三个点全部落在情节里。我拿给孩子试听他记住了“当归是补血的是让人回家的药”。比直接读药典强太多。所以故事生成节点不在“文学性”而在“把知识点翻译成人话”这也是整个工作流最值得打磨的地方。4. “听”的关键不是TTS是文本预处理4.1 多音色方案里怎么选coze里的语音合成选项不少豆包语音、火山引擎TTS、各种第三方插件。我最终用的是豆包语音。理由只有一个中文叙事感强音色更像“讲故事的人”而不是播新闻的。有的插件音色确实高级但读完一整段故事像在念广告片旁白有的插件支持情感标记但要在节点里传一长串SSML试错成本太高。选择方法其实很粗暴用同一段故事切换几个音色听一遍选那个让你想闭上眼睛继续听的。工作流里语音合成节点通常只需要两个输入文字文本、音色参数。刚开始我为了省事直接选了默认音色结果出来一股“机器人语音助手”味。后来换了“温柔女声”语速调到0.9音量保持1.0故事感立刻出来了。如果你面向的受众偏成年可以换个成熟一点的男声给孩子听我还是推荐柔和、靠近“幼儿园老师”的音色。4.2 标题符号被朗读的坑和清理方法这是我翻车最多次的地方。第一版工作流输出的音频TTS把“【故事标题】”和正文里的括号、编号全部读了出来比如“括号故事标题括号当归一、当归姑娘住在……”——听得人头皮发麻。问题出在大模型输出的文本带了格式符号而语音合成节点原封不动读了。解决办法有两个一是在提示词里要求模型“标题与正文之间只用换行分隔不要使用任何括号和编号”二是在合成之前加一个代码节点用正则把“【】”、中英文括号、多余换行符全部清掉。我两个都做了音频才干净。顺带一提如果故事里出现了数字比如“三分钟后”TTS通常会正常读成“三分钟”但如果出现“3分钟”这种半角数字部分引擎会读成“三分钟”或“三分”。为了稳定我会在代码节点里把半角数字统一转成中文数字或者干脆在提示词里规定全文使用中文数字。这一条对中文叙事类音频尤其重要。4.3 长文本分段合成与参数调节一次生成600字中文故事语音合成通常没问题但如果你把故事加长到900字或者加入了标题和结尾就很容易触发单次合成长度上限。我的处理方式是分段在代码节点里按句号把故事切成几段每段不超过300字分别调用语音合成再用音频拼接节点拼成完整文件。切分的时候要注意断句位置别把“当归”这种词拦腰切断。参数方面语速0.9、音量1.0是我的基线。调音量不要图“响亮”孩子戴耳机听炸耳朵的效果很糟糕。如果平台支持停顿标签可以在故事高潮前加一个短停顿能做出“卖关子”的效果。但SSML标签在可视化节点里传参容易格式错乱我建议第一步先不用等整条流程稳定后再往细调。5. 工作流调试实录三个坑让我改了三版5.1 节点变量类型不对故事变成一坨arraycoze工作流是可视化连线但连线不是万能的。第一次搭的时候知识库检索节点直接连到了大模型节点我以为会传一段文本结果提示词里出现了一坨“object Object”、“array”。原因是检索节点的输出是结构化的记录列表不是字符串。我的解决办法是在两个节点之间加一个代码节点用Python把检索结果逐行拼接成干净的文本再传给大模型本文还有配套的精品资源点击获取