
简介面向自媒体创作者与AI技术爱好者这份docx文档完整记录了使用cozecoze.cn与GPT搭建自动化图文生成项目的全过程核心场景是批量生产《历史上的今天》类内容。文档从项目背景、想法拆解到实现步骤逐步展开覆盖信源获取、Python爬虫编写、工作流筛选、大模型内容拓展、排版导出等关键环节并附有可运行的爬虫与代码模块示例适合希望用AI提升内容生产效率、具备基础编程认知的读者。资源包仅1个文件类型为docx大小约2.18MB内容以文字说明与代码片段为主。已有2883人学习浏览说明该实战路径具有一定参考价值。通过学习读者可以掌握coze工作流与GPT节点配合的基本方法理解如何将固定模板类内容自动化、批量化并迁移到其他历史、资讯或科普类自媒体系列中。1. 用 Coze GPT 做《历史上的今天》图文这个项目到底值不值得做每天早上在历史账号上发一条“历史上的今天”看着是复制粘贴实际要查日期、核对年份、写一段有可读性的文案、找一张不别扭的配图最后还要按平台尺寸排版。我刚开始做的时候一条内容折腾四十分钟是常态。后来我把 coze.cn 的工作流和 GPT 模型节点串在一起做了一个自动生成《历史上的今天》图文的自媒体项目。Coze 负责把定时触发、数据抓取、文案生成、绘图串成一条流水线GPT 负责把干巴巴的事件记录变成能直接发的短文案。这个方案适合日更运营、历史类博主也适合刚接触 Coze 工作流搭建的人拿来练手。先说结论这个方向值得做核心价值不在“省一次查资料”而在“每天稳定产出一条结构完整的图文草稿”。你只需要在发布前看一眼改掉模型犯的史实错误就能发出去。后面我会把我实际搭过的节点顺序、参数和踩过的坑完整写出来照着搭两个小时能跑通第一版。2. 先拆原理Coze 工作流、GPT 模型节点和图文生成的完整链路在搭工作流之前先把概念理顺。Coze.cn 是一个 AI Agent 开发平台它的核心单元叫“工作流”。工作流不是把一段 Python 脚本包一层界面而是把多个功能节点用连线串起来节点之间传一个 JSON 对象。GPT 在这个项目里不是“对话机器人”而是工作流里的一个模型节点给它一段输入它吐一段输出再交给下一个节点。理解这一点后面所有配置就不会乱。为什么不用一个 Python 脚本直接搞定我早期试过。脚本要处理 HTTP 请求、JSON 解析、图片生成 API、文件保存任何一个环节改需求都要动代码如果接口返回结构变了脚本直接崩。Coze 工作流的好处是每个节点独立数据源坏了就换数据源、模型不合适就换模型连线不用动。这是把“代码逻辑”变成“可视化流水线”的核心价值。2.1 Coze.cn 在这个项目里扮演什么角色工作流编排不是写死脚本Coze 工作流里常用的节点类型有开始节点、定时触发节点、大模型节点、代码节点、HTTP 节点、插件节点、知识库节点。做《历史上的今天》图文主要用到六种开始节点定义输入参数比如日期、平台类型、成片风格。定时触发节点每天自动跑不需要手动点运行。HTTP 节点去外部接口拉当天的历史事件数据。代码节点解析接口返回的 JSON把事件列表清洗成模型能用的文本。大模型节点跑 GPT生成文案和图片描述。插件节点调用图片生成能力最后输出文件。这六种节点串起来就是一条“coze 工作流搭建”的典型样例。我一般会把“定时触发”放在开头这样每天 5 点半它自动跑不用我盯。真正让我决定用 Coze 而不是纯脚本的时刻是有一次数据接口突然改版返回字段从text变成了description我只改了 HTTP 节点后面那个代码节点的映射逻辑其余节点全都原样保留。这种维护成本写脚本做不到。2.2 GPT 模型节点在链路里做什么不是聊天是“生成函数”GPT 在这个项目里被调用了不止一次每次承担不同的“生成函数”角色。我把它拆成三个动作把英文或机翻的事件原文改写成 100 字以内的中文短文案把短文案再压缩成标题控制在 20 字以内根据事件内容生成一张配图的图片描述词英文、不超过 80 词。这三个动作可以合成一个大模型节点但我建议拆成两个或三个节点。拆开之后单个节点输出长度可控、出错容易定位。比如图片描述词节点如果偶尔抽风不会影响标题节点已经生成的结果。下面是我在“文案生成节点”里反复打磨过的提示词模板直接抄就能用你是自媒体历史频道的编辑。下面是一段“历史上的今天”事件原文请改写成适合发布的短文案。 要求 1. 先用 20 字以内写一个标题 2. 再用 80120 字写正文语言口语化不要堆年份 3. 最后用 50 个英文单词以内写一句图片描述词描述画面主体、光线、年代感不要出现任何文字。 只输出 JSON不要输出 Markdown 代码块格式如下 {title: 标题, content: 正文, image_prompt: 英文图片描述} 事件原文 {{events_text}}这段提示词看起来简单真正的关键是“只输出 JSON”这六个字。如果少了这句话GPT 经常会把整段回答包在 json 代码块里下游解析节点直接报错。另外{{events_text}}是 Coze 工作流的变量占位符实际使用时会替换成代码节点传过来的事件列表。2.3 《历史上的今天》图文链路从日历数据到成片的四个环节一条完整图文可以拆成四个环节数据获取、文案生成、图片生成、排版输出。每个环节的输入输出如下环节输入输出承担节点数据获取当天日期事件列表 JSON定时触发 HTTP 节点文案生成事件列表标题、正文大模型节点GPT图片生成图片描述词图片文件 URL图片生成插件排版输出标题、正文、图片Markdown 文档或成品图代码节点 文件节点四个环节必须解耦不然任何一个环节失败都要整个重跑。我的做法是每个节点都做容错处理——HTTP 节点超时了就走知识库里的备用事件GPT 节点返回空就直接用事件原文前 80 个字当正文图片生成失败就沿用昨天的图。这样工作流永远不会因为一个环节的失败而整条中断最多是当天的成片质量差一点。这个链路本质上就是“多 AI 协作”GPT 管文本绘图插件管图片Coze 工作流管调度和拼装。比起手动跑脚本它能让你把每一次生成过程都留在运行日志里哪个节点慢、哪个节点报错一眼就能看到。3. 从零搭建图文生成工作流数据源、提示词与首个可用版本原理清楚了开始动手。这一章是照抄就能跑通的路径我会按照“先准备数据源再写解析代码再配提示词最后串节点”的顺序讲。第一次搭不要追求功能多先把一条最短路跑通。3.1 准备数据源日期接口与知识库的两种接法“历史上的今天”的数据源有两种常见接法。第一种是 HTTP 接口很多公开的“On This Day”服务路径格式一般是/date/{month}/{day}返回一个 JSON里面包含当年今天发生的事件列表。在 Coze 的 HTTP 节点里填好 URL方法选 GET查询参数用开始节点传进来的month和day即可。第二种是知识库把一份历史事件 CSV 上传到 Coze 知识库字段至少包含month、day、year、event四列。然后工作流里加一个“知识库检索节点”输入当天的月日让它把匹配的事件文本抽出来。这种方式适合做中文垂直内容因为公开接口的数据大多是英文后续翻译会损失信息。我一般两种都接先用 HTTP 接口试跑跑通了再把值得保留的素材加固到知识库里做成自己的事件池。第一次搭建议先用 HTTP 接口因为配置最简单。注意 HTTP 节点要设置超时时间一般给 10 秒如果接口连接失败工作流会直接抛错所以在 HTTP 节点后面一定要接一个“失败处理”代码节点或者用 Coze 的条件节点做分支。3.2 写第一个可跑的 Python 代码节点解析日期与事件列表HTTP 节点拿到的是整段响应体需要清洗成 GPT 更好理解的文本。Coze 的代码节点运行 Python入口函数一般是这样import json def main(event: dict) - dict: today event.get(today, ) parts today.split(-) month int(parts[1]) day int(parts[2]) raw event.get(http_response, {}) data json.loads(raw) events data.get(data, {}).get(Events, [])[:5] items [e.get(text, ) for e in events if e.get(text)] return { month: month, day: day, events: items, count: len(items) }这段代码的作用是从开始节点拿到标准日期拆出月和日把 HTTP 节点返回的 JSON 解析成 Python 对象从data.Events里取前 5 条事件文本最后把清洗后的列表返回给下游。注意event是上游节点传进来的参数字典http_response是 HTTP 节点的输出字段名不同的工作流版本字段名可能叫body或response第一次跑可以先把 HTTP 节点的原始输出打印到日志里确认。count这个字段很有用。我把count暴露出来下游大模型节点就可以在提示词里写“如果没有事件直接输出一句‘今天暂无可靠历史事件’”。这样即使接口当天没有返回数据工作流也不会白跑一趟。3.3 设计 GPT 提示词模板一句话新闻体与图片描述分离数据清洗完之后进入 GPT 模型节点。我在 2.2 里给过完整提示词模板这里重点讲两个容易出问题的设计。第一个设计是“标题、正文、图片描述三合一”。很多人第一次搭喜欢让 GPT 分两次输出先写文案再生成图片描述这样要跑两遍模型费时间费 token。三合一的好处是GPT 在生成正文时已经看过事件原文再生成图片描述时上下文是连贯的不会出现“文案讲的是 19 世纪图片描述却写成现代城市”的割裂感。第二个设计是“图片描述必须用英文”。Coze 里的图片生成插件比如接入 DALL·E 能力的节点对英文提示词的理解能力通常比中文稳定。这不是玄学而是模型训练数据的偏差。之前做中文章节测试中文描述的出图错误率大约会高一倍经常把“蒸汽机”画成“洗衣机”。用英文描述之后虽然偶尔还会翻车但整体出图质量明显提升。3.4 组装工作流把代码节点、模型节点和图片节点串起来所有准备工作做完在工作台里新建工作流按下面顺序连线开始节点添加today字段类型选字符串默认值格式2025-06-15。定时触发节点绑定开始节点配置每天执行时间。HTTP 节点请求事件接口把today的月日拆进 URL。代码节点粘贴 3.2 的解析代码。大模型节点选择 GPT 模型提示词引用events列表。图片生成节点输入字段绑定模型节点输出的image_prompt。输出节点把标题、正文、图片 URL 打包输出。节点与节点之间通过字段名映射传递参数。比如大模型节点输出的 JSON 是{title: xxx, content: yyy, image_prompt: zzz}那么在图片生成节点里输入字段就写{{llm_output.image_prompt}}。不同模型节点的输出字段名可能不同我习惯把大模型节点重命名为gpt_writer这样引用的变量名就是{{gpt_writer.content}}一眼能看懂。连线完成之后先手动运行一次。不要直接挂定时任务手动运行能看到每一节点的输入输出方便定位问题。第一版跑通的标准是输出节点里有标题、有正文、有一张图片 URL。4. 调参和打磨让生成内容从“能跑”到“能发”工作流跑通只是第一步。真实运营场景里内容要经得起发布。这一章讲我实际调过并且验证过的参数按“模型参数、图片参数、调度参数、多 AI 协作”四块展开。4.1 温度与 Top P该硬的时候硬该发散的时候发散GPT 节点面板里有temperature和top_p两个关键参数。很多人看到“温度”两个字就只想到“随机性”但在这个项目里它的影响非常具体节点temperaturemax_tokens说明标题生成节点0.780允许一定变化避免每天标题句式雷同正文生成节点0.8500保持口语化同时留点发挥空间图片描述节点0.3200严格按事件内容来不鼓励自由发挥我踩过的坑是一开始把三个节点全都设成 0.9结果连续三天图片描述都偏向“未来科幻风”跟历史内容完全不搭。后来把图片描述节点降到 0.3出图风格才稳下来。道理很简单文本内容可以有一些文采上的随机性但图片描述一旦太发散配图就跟文案对不上。top_p我一般不动保持默认值 1。什么时候要动如果你发现模型反复输出同一句话比如每篇正文结尾都是“这段历史告诉我们”就把top_p降到 0.9结合温度一起调。注意温度和 top_p 不要同时调激进要么固定 top_p 逐步加温度要么固定温度逐步减 top_p否则输出质量会像过山车根本没有规律可循。4.2 图片尺寸与排版参数不同自媒体平台的适配经验Coze 的图片生成节点通常会提供几个尺寸档位常见的有 1024x1024、1024x1792、1792x1024。不要盲目选 1:1要根据发布平台决定平台推荐比例尺寸示例原因小红书封面3:41248x1664信息流里显示面积最大公众号封面2.35:1 或 1:11792x1024 / 1024x1024首图会被裁剪微博16:91792x1024横图更吃版面朋友圈长图9:161024x1792适合一图流这里有个重要提醒生成图片时在图片描述词里明确加上“画面里不要出现任何文字”。AI 绘图模型对中文文字渲染能力很差生成出来经常是错别字和乱码。如果发布需要标题压在图上我通常用排版工具后期加文字而不是让模型直接画字。排版输出常见做法是让工作流把标题、正文、图片 URL 拼成一个 Markdown 文档再转成 Word 存到素材库。Coze 社区里也有人专门做了“markdown 转 word 工作流”的模板核心就是加一个文档转换插件。我自己的流程是输出 Markdown 原稿发布时再复制到对应平台排版。因为不同平台的标点规范不一样直接自动转 Word 反而会让引号变成英文的。4.3 定时触发与批量生成用调度器代替手动点运行定时触发节点支持 cron 表达式也支持简单的“每天几点”配置。我建议用 cron 表达式可控性更强。30 5 * * *这串 cron 表示每天凌晨 5 点 30 分执行一次。注意 Coze.cn 在国内默认是东八区时间所以不用额外做时区转换。为什么选 5 点半因为这正好赶上 7 点到 8 点的通勤浏览高峰运行完还有时间让我做人工抽检再手动发出去。如果你要一次生成未来一周的草稿就不要用定时触发而是把开始节点的today字段改成数组然后在工作流里加一个循环节点。循环节点会遍历日期数组每次迭代跑一次完整链路把结果存成一条草稿。我实测过一口气跑 7 天最合适再多容易出现模型生成文案的套路化重复。4.4 多 AI 协作让摘要模型和精修模型各干一摊很多新手以为用了 GPT 就用不上别的模型了其实这个项目最适合的形态是“多模型分工”。我在正式用的版本里文本生成用的是 GPT同时挂了一个国产轻量模型做最终校验。校验节点不重新生成文案只做两件事检查标题超过 20 个字就截断检查正文里有没有重复的空行。这样等于用一次很便宜的调用兜住了主模型的低级错误。“多 AI 协作”听起来高级本质上就是给每个模型划定边界。主模型负责创造校验模型负责挑错图片模型负责视觉各干一摊。Coze 工作流里每个模型节点都是独立配置的你完全可以在 GPT 节点后面接一个条件判断节点如果文本质量不足再调另一个模型重写一次。这个分支逻辑用 Coze 的条件节点就能实现不需要重新写代码。5. 避坑指南Coze 工作流里最容易翻车的 5 个地方搭建和调参的过程里我踩过不少坑。这一章挑 5 个最典型的按“现象、原因、解决”写清楚。新手照着排查能少走好多弯路。5.1 现象历史事件张冠李戴数据源把“今天”算错了刚开始运行的时候出现过 6 月 15 日的工作流拉出来却是一堆 6 月 14 日的事件。原因是定时触发节点传下来的日期不是标准北京时间而是服务器时间。服务器跑在 UTC前端显示的是北京时间但传给工作流的原始值没有转时区。解决在开始节点后加一个代码节点强制取北京时间from datetime import datetime, timezone, timedelta def main(event: dict) - dict: now datetime.now(timezone(timedelta(hours8))) today now.strftime(%Y-%m-%d) return {today: today}这个代码节点会自动覆盖上游传进来的today字段保证后续环节拿到的都是东八区当天。加完之后再也没有出现过日期错位。注意调试时手动运行也会触发这段代码所以你不会看到错误日期——只有真跑定时任务时才会暴露因此建议第一次挂定时后连续盯三天运行日志。5.2 现象GPT 输出乱码或 Markdown 符号没转义模型输出的正文里时不时出现奇怪的加粗符号和代码块标记。原因有两个一是提示词里没写“只输出 JSON不要 Markdown 代码块”二是模型节点输出长度限制不够它把 JSON 截断到一半导致解析失败。解决提示词加了“只输出 JSON”之后再在代码节点里做一层兜底import json def clean_llm_output(raw: str) - dict: raw raw.strip() raw raw.removeprefix(json).removeprefix() raw raw.removesuffix().strip() try: return json.loads(raw) except Exception: return { title: 历史上的今天, content: raw[:80], image_prompt: }这段代码的逻辑是先把模型输出里的代码块标记去掉再尝试反序列化 JSON如果解析失败就把原文前 80 个字当正文返回保证下游永远有内容可用。加了这个兜底之后模型的偶然输出异常不会再让整条工作流中断。5.3 现象图片生成提示词被截断配图跟文案对不上图片描述节点设置max_tokens为 200理论上够 50 个英文单词。但实际体验是模型经常在输出 JSON 时先写了 title 和 content留给image_prompt的 token 不够导致生成的图片描述被截断绘图节点拿到一段不完整的英文画出来的图跟事件毫不相关。解决把图片描述节点独立拆分出来单独成一个模型节点max_tokens设置为 150提示词里明确“只输出 50 词以内的英文图片描述不要包含标题和正文”。这样即使描述被截断也只有那一个节点受影响标题和正文已经在上一个节点生成完毕不会全盘重来。5.4 现象工作流跑完但文件没上传素材库是空的工作流显示成功输出节点里也有图片 URL但打开素材库发现什么都没有。原因是图片生成节点返回的 URL 只是临时的域名带过期时间戳我没有把它转存到 Coze 的文件节点所以工作流结束 URL 就失效了。解决在图片生成节点后面接一个“文件上传节点”把临时 URL 作为文件地址传进去目标选择知识库或素材库文件命名规则用日期加序号例如2025-06-15_hist_01.png。这个节点的作用相当于“后悔药”就算当天忘记下载素材库里也已经留了一份副本。文件上传节点失败的常见原因是 URL 带了防护验证头如果遇到这种情况需要改用代码节点自己下载再传我们项目里遇到过一次后来直接绕过了出问题的插件。5.5 现象定时触发偶尔漏跑日志里找不到报错工作流不是每天都能跑成功偶尔某天日志显示“已触发”但节点列表里没有任何执行记录。排查发现问题出在定时触发节点同时绑定了太多工作流或者模型节点的免费并发资源不够触发器把任务放进队列后超时释放了。解决在大模型节点面板把“超时时间”调到 60 秒开启“失败自动重试 1 次”。另外不要把多个工作流共用一个定时触发最好一个工作流单独配置触发器。如果某天发现漏跑手动点一次运行就行不要反复重试触发器否则可能会把后面几天的配额都挤掉。6. 进阶玩法把单篇图文升级成半自动内容管线单篇图文跑通之后可以往“素材积累”和“质量抽检”两个方向升级。6.1 用文件上传和知识库做历史事件素材沉淀每次工作流跑完不要让数据只躺在运行日志里。接一个文件上传节点把当天的事件原文、GPT 生成的标题、正文、图片 URL 打包成一个 JSON 文件传到 Coze 知识库。文件名按日期命名比如20250615.json。做一个月之后知识库里就有 30 份结构化素材可以拿来复盘哪些标题点击率高哪些图片风格符合账号调性。更重要的是知识库里的数据能反过来作为备用数据源在公开接口不稳定时顶上。6.2 验证生成质量人工抽检四步法自动化流程再顺畅发布前也得人工抽检。我给自己定了四步清单步骤检查项不合格时的处理1日期与星期是否匹配直接废弃不修改2事件年份和人物是否大致正确查询百科修正后发布3文案是否有明显褒贬倾向改写中性描述4图片是否与事件年代一致重新生成图片这套清单看起来简单但真能拦住大多数翻车。我刚开始跑这个工作流时连续三天没检查结果把一条 19 世纪的事件配了一张明显是 21 世纪建筑风格的图直接翻车。后来每次跑完先看图片再读正文再对年份最后确认日期形成习惯之后没有出过硬伤。最后的习惯是把抽检结果记录在当天的日志里。哪怕只是写一个“通过”或者“图片重绘”也能在月底复盘时看出模型哪些地方容易犯错。比如我一个月后发现图片描述节点在“机械设备”类事件上出图偏差率最高于是在图片描述提示词里单独加了一句“保留当时机械结构的原始质感”效果立竿见影。这个项目做到现在已经成了我每天早晨的固定节奏工作流自动跑我抽检五分钟然后发布。省下的不是时间而是每天查资料、想文案、找配图那些重复劳动。如果你也在做日更内容库希望这个方案能帮你把发布前的准备时间压缩到十分钟以内。希望帮到你。本文还有配套的精品资源点击获取