简介:这套Coze智能体工作流面向公众号运营者、自媒体人与AI应用学习者,将“获取原文—AI提炼观点—仿写改写—生成爆款文案—转换公众号格式—配图—发布草稿箱”整合为一条自动化流水线,解决内容生产耗时长、仿写效率低的问题,尤其适合需要高频输出日常推文的个人与团队。资源包共3个文件,包括inscode运行入口、html页面与gitignore配置,包体仅7KB,结构轻量,便于直接导入Coze平台查看节点编排与运行逻辑;html部分可用于前端展示或参数调试,inscode则承担工作流运行环境入口。目前已有105人学习。源码中可以看到工作流节点之间的数据流转方式,理解如何用智能体完成文章采集、观点抽取、文案改写和公众号草稿生成;对于想尝试AI批量创作、降低重复劳动的新手来说,这是一份便于快速上手的实操示例,能帮助在1分钟左右走通从文章仿写到发布草稿箱的完整链路,显著提升内容生产效率。 做内容运营第五个月,我不得不承认一件事:爆文不是“写”出来的,是“拆”出来的。同一个选题,拆过别人怎么起标题、怎么铺开头、怎么安排案例密度和情绪转折,再动笔就会顺畅非常多。这个认知直接催生了我手上的项目:用Coze搭建一个仿写爆文的智能体,配套一套可运行的源码,把“拆解爆文—提取风格—重构生成—查重质检”这条链路全部自动化。
这个项目解决的问题其实很具体:一个人或小团队要稳定产出大量文章,纯靠人肉读十篇爆文找感觉,效率太低;让大模型完全自由发挥,又容易写出“正确但没人看”的平庸内容。把仿写流程交给智能体,再由源码处理精细的校验和批量调度,至少帮我节省了70%的选题和初稿时间。如果你也在做公众号、小红书脚本、知乎回答这类内容生产,或者正在研究如何让智能体稳定输出特定风格,这篇拆解适合你。
1. 这个项目到底要解决什么:让“仿写”从手艺活变成流水线
1.1 爆文能被仿写的四个底层规律
我做第一版方案时,花了整整两天去分析几十篇“看得上眼”的文章,最后发现它们的共同点非常集中:标题基本都在制造信息落差,要么给结论,要么给反常识;开头两段一定会抛出一个具体场景或一个扎心问题,绝不铺垫背景;正文每300字左右换一个小标题或换一个案例,段落间距特别碎;结尾处一定会把前面的论点收拢成一个可执行建议,方便读者截图转发。
这些点单独拿出来都不神秘,但组合在一起,就是用户愿意点开、愿意读完的原因。既然规律能归纳,就一定能写成结构化指令,交给模型去执行。这正是我做仿写智能体的基础逻辑:不是让模型“模仿某篇文章的文风”这种玄学要求,而是让它按固定维度去拆解目标文章,再把拆解结果作为生成时的硬约束。
1.2 为什么用Coze而不是纯脚本
一开始我确实想全部用Python脚本做,写爬虫抓文章,再调大模型接口生成。后来发现两个问题:一是内容生产的环节会频繁调整,每次改提示词都要改代码、重启服务,维护成本高;二是生成结果需要人工确认和批量管理,纯命令行界面不够直观。
Coze的工作流画布刚好补上这些短板。把爆文拆解、风格提取、初稿生成、结果回填做成节点,可视化地拖拽编排,改提示词不用碰代码,发布成一个API后,又能被我本地源码调用。所以最终方案是“Coze工作流负责智能环节,Python源码负责数据跑批和质检”的混搭结构。这个选择不是图新鲜,而是让每一步改动都落在最顺手的地方。
2. 可运行源码的模块拆解:从爆文库到成稿,数据怎么流动
2.1 源码目录与模块职责
整套源码的结构我压得很扁,核心就四个文件,方便复制到任何一台机器上跑:
coze_writer/ ├── article_source.py # 爆文数据模型与清洗逻辑 ├── style_extractor.py # 调Coze工作流提取写作配方 ├── generator.py # 生成初稿并写入本地/飞书文档 └── quality_check.py # 三重去重与事实一致性粗检我最不推荐一上来就拆几十个模块。仿写爆文这种项目,数据量不大、逻辑不复杂,代码越简单越容易排查问题。等验证流程跑通,再逐步把采集、生成、发布拆成独立服务也不迟。
2.2 爆文的采集与清洗
第一步是准备一个“爆文库”。我不建议直接爬全网,最省事的方式是把自己账号后台的数据导出,筛选阅读量明显高于平均线的那一批;如果没有存量文章,就手动收藏20到50篇对标账号的内容,存成一个JSON或Excel文件就行。
清洗这一步非常关键。原样塞给模型的内容会带大量噪声:多余的空行、开头结尾的引导语、平台表情符号,都可能干扰风格判断。我一般做这么几件事:
- 去掉首尾与正文无关的文案,例如“关注我领取资料”“欢迎转发”
- 统一全角半角标点,避免后续统计重复率时误判
- 删除明显不完整的段落,比如“接上文”“未完待续”这类残留
- 记录每篇文章的标题、字数、发布时间、阅读量,作为后续筛选依据
2.3 生成、校验、回写的链路
清洗后的爆文不能直接全部塞给模型。我设计的流程是:先从爆文库中随机选5到10篇作为参考样本,批量提取风格配方;然后带着配方和本次写作主题,调用工作流生成初稿;最后把初稿与参考样本做相似度计算,低于阈值才回写保存。
这条链路的好处是每次写作都有“锚点”,模型不会漫无边际地自由发挥;同时又有随机性,批量生成时不会总卡在同一个表达套路。源码里我用三个函数把这几个环节串起来,流程本身不复杂,复杂的是后面几个模块的细节。
3. 仿写的灵魂:把一篇爆文压缩成“写作配方”
3.1 风格抽取提示词与输出格式
“仿写”二字很容易被误解成让大模型背诵原文再改写。我的做法完全相反:先让模型把爆文拆成几个结构化的特征字段,生成时再根据这些特征重建文章。这个提取结果,我称之为“写作配方”。
在Coze工作流里,我建了一个专门用于拆解的节点,提示词大致长这样:
请从以下文章中提取写作配方,按JSON格式返回,不要输出任何解释。 字段要求: - title_pattern:标题的构成方式,使用“类型+冲突点+结论”的形式描述 - hook:开头如何引入主题,用了故事、数据还是提问 - paragraph_rhythm:段落长短和节奏规律,例如“多数段落不超过50字” - case_density:每多少字出现一个案例或数据点 - emotion_curve:全文情绪的变化路径,例如“好奇-共鸣-紧迫-行动” - ending_style:结尾的处理方式,例如“清单体总结+行动指令”输出结果类似这样:
{ "title_pattern": "数字+反常识结论", "hook": "用一个失败项目的复盘场景引入", "paragraph_rhythm": "短段为主,平均每段35字", "case_density": "每150字一个具体案例", "emotion_curve": "焦虑-共鸣-希望-行动", "ending_style": "总结三条建议并引导关注" }拿到这个结构化的配方之后,后续生成节点才有的放矢。
3.2 生成提示词里必须有“锚点”
不少人会直接把提取出的JSON拼进提示词,但我在实际使用中发现,光给配方还不够,模型生成的初稿仍然会跑偏。问题出在“配方”是抽象描述,模型对“短段为主”的理解可能和你不一样。
解决方法是每一次生成,除了配方,还要额外塞两个锚点:一是参考样本的第一段原文,让模型感受具体的开头语气;二是本次写作的核心结论,避免文章发散去论证无关话题。加上这两个锚点之后,生成的稿件在“骨架”上基本不会偏,剩下需要人工调整的只是细节表达。
3.3 仿写不是搬运:重写约束的设计
项目从第一天起,我就给自己定了一条硬规矩:相似的段落结构可以借,但具体的句子、案例、数据和表达方式必须重构。生成提示词里我会明确要求“不摘抄原文任何连续10个字的短语”“用自己的话重述所有观点”“案例替换为同领域可验证的真实案例”。等三重校验跑完,再去处理完全无法通过的文章人工重写。
这不是为了道德正确才加的限制。平台原创检测越来越严,搬运式的内容就算被推荐,权重也低,号很容易被限流。只有真正做了结构和表达重构的内容,才在流量上可持续。
4. 防翻车:三重去重校验与Coze工作流编排
4.1 词面、句间、语义三层校验
智能体生成初稿的速度很快,快到你根本无法逐个检查所有相似度。我在质量检查模块里设置了三个维度的校验,形成一个漏斗:
- 词面重复:统计n-gram重合度,主要抓“照搬原文”的硬伤
- 句间相似度:把初稿拆成句子,与参考样本逐句计算相似度,抓“换了个词但句式没变”的软伤
- 语义近似:用向量化接口算整体语义距离,抓“表达完全不同但意思完全相同”的深层重复
任何一层超标,文档就会被标记为“疑似重复”,自动进入待人工处理池。这里注意,第三层语义校验不需要做得特别重,我用的是通用向量模型,偶尔有误差,但用来拦截明显撞车的稿件已经够了。
4.2 核心校验代码示例(可直接运行)
下面这段代码是质量检查模块的精简版,Python 3.9以上可以直接运行,依赖只有requests和difflib:
import hashlib import requests from difflib import SequenceMatcher def ngram_similarity(text_a, text_b, n=3): grams_a = set(ngrams(text_a, n)) grams_b = set(ngrams(text_b, n)) if not grams_a or not grams_b: return 0.0 return len(grams_a & grams_b) / min(len(grams_a), len(grams_b)) def ngrams(text, n): text = "".join(text.split()) return [text[i:i+n] for i in range(max(0, len(text)-n+1))] def sent_similarity(text_a, text_b): from itertools import product sents_a = [s for s in text_a.replace("。", ".\n").split("\n") if s.strip()] sents_b = [s for s in text_b.replace("。", ".\n").split("\n") if s.strip()] best = 0.0 for a in sents_a: for b in sents_b: score = SequenceMatcher(None, a, b).ratio() best = max(best, score) return best def semantic_similarity(text_a, text_b, api_url, api_key): resp = requests.post( f"{api_url}/embeddings", headers={"Authorization": f"Bearer {api_key}"}, json={"model": "text-embedding", "input": [text_a, text_b]} ).json() vec_a = resp["data"][0]["embedding"] vec_b = resp["data"][1]["embedding"] return cosine_similarity(vec_a, vec_b) def cosine_similarity(vec_a, vec_b): dot = sum(x*y for x, y in zip(vec_a, vec_b)) norm_a = sum(x*x for x in vec_a) ** 0.5 norm_b = sum(y*y for y in vec_b) ** 0.5 return dot / (norm_a * norm_b + 1e-9) def is_suspicious(candidate, source): if ngram_similarity(candidate, source) > 0.35: return "词面重复超标" if sent_similarity(candidate, source) > 0.78: return "句间相似度过高" if semantic_similarity(candidate, source, "https://your-api.example.com", "your-key") > 0.88: return "语义重复超标" return None阈值是我跑了上百篇结果后定下来的:词面0.35、句间0.78、语义0.88。不同领域可以微调,但建议一次只动一个参数,观察两三批结果再改,不要一下子全调低去追求完美,那样只会让大量初稿被误杀。
4.3 工作流节点如何衔接本地校验结果
Coze工作流里,我保留了“爆文拆解—写作配方生成—初稿生成”三个节点,生成结果通过Webhook发到本地服务,再由上面的质量检查代码处理。检查通过的文章自动同步到飞书多维表格,疑似重复的进入一个“待人工判断”的视图,我每天只花半小时处理这些异常即可。
这个混搭模式有一个好处:工作流里不用堆砌那些复杂的判断逻辑,所有条件分支全部由本地代码控制,写起来比在画布上拖十几个判断节点直观得多,排查问题时还能直接加日志。
5. 踩坑实录:仿写效果不稳定时我查了哪些地方
5.1 爆文库的脏数据比模型温度更伤效果
第一次跑通全流程时,生成结果忽好忽坏,尤其有一批稿子读起来前言不搭后语。我排查了提示词、模型参数、采样温度,最后才发现问题出在爆文库本身——里面混进了几篇阅读量不高但被误标记为“爆文”的内容,还有一篇HTML标签没清理干净的文章。模型把那段乱码当成了一种“风格”,自然就输出了一些莫名其妙的格式。
从那以后,我在爆文库入库前加了一道严格校验:阅读量低于账号均值的文章不进库,正文长度低于1000字的不进库,包含明显标签符号的不进库。数据干净了,仿写质量立刻上了一个台阶。
5.2 风格抽取模型与生成模型不一致
还有一次我把拆解节点用的模型从标准版换成了更大参数的版本,但生成节点还是旧模型。结果非常诡异:拆解出的配方非常细致,可生成的文章完全没体现这些细节。对比之后发现,是生成模型在理解“段落节奏”“情绪曲线”这类抽象指令时能力偏弱,导致配方生效比例很低。
解决办法是让生成模型和拆解模型保持一致,同时在下游生成提示词里,把抽象的“段落节奏”翻译成更具体的指令,比如“平均每段不超过三行”“段与段之间的语气不要连续四段都是陈述句”。这里我给所有做过类似项目的朋友一个建议:不要在同一个工作流里混用能力差距过大的模型,抽象描述在多模型之间传递时,信息损耗非常严重。
5.3 批量调用限流与超时
批量生成50篇以上时,我一度频繁收到超时报错。原因很简单:工作流里有多个大模型节点,串行调用导致单篇耗时太久,触发了平台接口超时限制。源码层面我加了一个简单的异步并发控制,把同时进行的生成任务限制在3到5个;Coze工作流侧则把不依赖顺序的节点改成可并行执行。
改完之后,50篇的批量任务从原来的一小时缩短到二十分钟以内,超时问题基本消失。附带的一个收获是,飞书文档写入节点也要做重试,否则偶发的网络抖动会导致整批任务中断,这个不起眼的小点让我少加了好几个夜班。
6. 我现在建议的落地起点
如果你也想做类似的Coze智能体,我的建议是先别急着搭完整源码。第一步,只建一个“拆解节点”,把十篇你认可的文章跑成写作配方,感受一下输出格式是否稳定;第二步,再建一个“生成节点”,手工把配方粘进去,先验证生成质量;第三步,才轮到源码里的批量调度和质量检查模块。
这套顺序能帮你把问题隔离在最小的范围内。我见过太多人一上来就把采集、生成、发布全串起来,结果生成效果不好,根本分不清是提示词的问题、数据的问题还是代码的问题。另外,仿写爆文的最终目的不是复制一篇文章,而是形成一套可以稳定复用的写作方法论,所以建议你每跑完一批,就回去翻一翻那些被人工修改过的稿件,把修改原因反向补充到提示词里,这才是这套系统迭代最核心的养料。
最后分享一个小技巧:Coze工作流里所有输入输出节点,我都会有意识地加上固定前缀,比如input_topic、output_draft。这个习惯在调试时非常管用,它让你的工作流看起来像一份有注释的代码,而不是一堆默认命名的节点。别小看这种细节,它会在你三个月后回看项目时,帮你省下大量回忆时间。
本文还有配套的精品资源,点击获取