
去年我们在做营销自动化改造时内部孵化了一个代号为 Marketingskills 的项目——目标是给AI代理构建一套可复用的营销技能库。项目要解决的痛点很直接大模型什么都知道一点可一旦让它独立产出营销方案效果就飘忽不定。这篇复盘记录了这个技能库从拆解方法论、设计架构到落地验证的完整过程也总结了几个只有真实踩过坑才会注意到的细节。如果你也正在做类似的AI营销工具或者正准备给代理接入营销场景这篇文章里的大部分踩坑记录和技术取舍应该都能直接用上。1. 一个现实问题为什么通用模型的营销输出总差一口气1.1 一次让人印象深刻的翻车演示项目立项的契机其实很偶然。当时团队接到一个任务给某消费品牌做一套自动化营销助手要求在对话框里输入产品信息和目标人群几秒钟内就能产出可用的投放文案和活动思路。大家一开始的思路几乎一样——接一个能力不错的模型配几个常规工具再用提示词约束一下这事就成了。初次演示翻车了。模型确实在第一时间给出了一篇结构完整的文案有吸睛标题、有卖点段落、有行动号召看起来像模像样。可业务同事只看了一眼就指出了问题投放渠道是信息流文案却写成了公众号长文风格字数超了四倍目标人群是25到35岁一线城市职场女性但文案里通篇在用姐妹快来这种过度亲昵的语气更致命的是文案里出现了行业第一史上最强这类明显违规的表述。整篇内容在营销专业人士眼里属于没有经过训练就直接上岗的水平。这不是模型能力的问题而是缺了一套让模型按营销规则干活的机制。单独靠提示词今天约束住了渠道明天就可能在活动策划上犯傻就算这一次输出质量上去了下一次换一个输入又完全不可控。也是从那次演示之后我们才决定把重心转向另一个方向为AI代理构建一套结构化的营销技能库。1.2 营销任务的三个底层特征流程、约束、闭环营销工作之所以难被通用模型直接胜任是因为它和一般的内容生成任务有本质区别。我把这些区别总结成三个词流程、约束、闭环。第一个特征是强流程。策划一场活动通常是先做市场调研再定人群再出策略然后才是内容创意和渠道排期最后还要复盘归因。步骤颠倒、跳步产出的方案就不具备可落地性。通用模型没有这种工序意识它倾向于把所有知识一次性倒出来看起来内容全面实则什么都落不了地。第二个特征是强约束。每个营销动作都有明确边界渠道有字数规范和调性要求品类有广告法红线预算有上下限品牌有必须传达的话术。约束不是建议是必须遵守的规则。通用模型对规则的理解往往是大概知道不能怎么说却做不到在每一个输出里稳定地遵守全套规则。第三个特征是强闭环。营销讲究动作可归因、结果可复盘。一次投放结束后要知道哪个渠道、哪条素材、哪个人群包贡献了转化。这意味着代理不仅要会生成内容还要会结构化记录决策过程、调用数据做分析。通用模型天生不擅长这种工作留痕它更擅长的是一次性响应。这三个特征决定了通用模型适合做知识问答但无法稳定输出符合专业规范的营销动作。如果想让代理稳定地干活就必须把营销方法论拆成一个个明确、可校验、可复用的操作单元这正是技能库的出发点。1.3 技能库到底是什么从知识到技能动作这里要澄清一个常见误解。很多人一听技能库以为就是把行业知识、模板、案例整理成资料库让代理去检索。但那只是知识库。技能库和知识库最大的区别在于知识库回答是什么技能库回答怎么做而且是以可执行的方式回答。一个技能本质上是一份结构化的岗位作业指导书。它至少包含几个部分明确的任务边界这个技能解决什么问题、什么时候不该用、输入参数定义任务所需的原材料字段、执行逻辑怎么一步步做、输出规范产出什么结构的结果、以及质量红线哪些事情绝对不能做。打个比方知识库像是给实习生一摞往年的策划案让他自己看技能库则是师傅手把手告诉他——拿到需求先确认预算再查历史数据按标准模板输出方案过程中不许写违规词。后者才是能稳定复现专业水平的做法。所以我们一开始就确定了一个原则宁可减少技能数量也要保证每个技能都是可执行的动作而不是一堆参考材料。2. 技能拆解方法论怎么把营销经验变成代理能用的技能2.1 从任务树出发而不是从岗位出发做技能库的第一个步骤不是写代码而是做任务拆解。我们最初犯过一个方向性错误试图按照市场部的岗位分工来划分技能——品牌岗一个技能、投放岗一个技能、内容岗一个技能。结果做出来的技能包个个巨大无比代理根本不知道该在什么场景下调用。后来改成从任务树出发。把营销全流程当成一棵树根节点是完成一次营销目标往下逐层拆出决策动作。以新品上市为例第一层拆成市场环境分析、目标人群定义、竞品定位研究、渠道策略、内容策略、节奏排期、投放执行、效果复盘。第二层继续拆比如市场环境分析可以继续拆成行业趋势扫描目标市场容量估算竞品动态监测。拆到第三层的时候基本就能判断哪些节点适合做成技能了。判断标准很朴素这个节点是否具有标准操作流程是否会被反复使用是否可以被独立验证。如果答案是是就把它登记为一个候选技能如果只是偶尔用一次的临时任务就不值得单独封装。2.2 五域分类法洞察、内容、策略、执行、复盘拆出来的技能可能有三四十个如果全部平铺在一个层级上代理检索起来会非常吃力。我们参照营销团队的工作习惯把它们归成了五个域洞察域、内容域、策略域、执行域、复盘域。洞察域解决看懂市场和用户的问题典型技能包括用户访谈提纲生成、竞品信息结构化采集、舆情关键词提取、销售数据异常归因。内容域解决把信息变成打动人的材料的问题包括广告文案生成、社媒内容改写、视频脚本撰写、落地页框架生成。策略域解决怎么打的问题包括人群圈选建议、渠道组合推荐、预算分配草案、活动玩法设计。执行域解决怎么落地的问题包括排期表生成、任务分派说明、素材尺寸适配。复盘域解决怎么评估和沉淀的问题包括效果归因模板、周报生成、经验案例抽取。这个分类不是拍脑袋定的它对应营销工作的自然顺序先洞察再策略再内容与执行最后复盘。代理在接到任务时也能按照这个顺序去检索技能而不是在所有技能里漫无目的地找。分类同时承担了索引功能后面讲路由的时候会再提到。2.3 技能粒度的判断标准技能拆得多细才算合理这是我们调试阶段反复纠结的问题。拆得太粗一个技能里面混杂了多种职责代理调用时会出现顺带做一堆不该做的事拆得太细技能数量爆炸路由成本变高还容易互相打架。我们后来定了一条内部经验法则一个技能应当能在一次对话轮次内完成识别、执行、返回结构化结果的完整闭环如果一个技能的执行需要超过三个主要步骤或者输出结果要覆盖两种以上完全不同的产物就说明它还不够内聚需要继续拆。以内容域为例内容创作这种名字从一开始就不合格它太泛了。合理的粒度是为指定渠道生成广告文案、将长文改写为社交平台短帖、为一组卖点生成A/B测试标题方案——每一个都是一个可以独立验收的动作。粒度的判断最终落到一句话上一个技能只做一件事但这件事要做完整、做到能验收。宁可拆得稍微细一点让编排层去组合也不要让单个技能变成四不像。3. 核心架构设计技能的表达、路由与编排3.1 技能包的标准化表达一份自描述的Schema技术架构的第一步是定义技能的统一表达格式。不管技能后面的执行体是提示词模板、Python函数还是外部API调用技能对外暴露的接口说明必须是统一的否则代理没法一致地理解和使用它们。我用的是一份类似这样的Schema以YAML为例skill: name: campaign_copy_generator version: 1.2.0 domain: content description: | 用于生成适用于不同营销渠道的广告文案。 适合在用户提供产品信息、目标人群和投放渠道时使用。 不适用于品牌命名、关键词扩写、社媒日常互动回复等任务。 parameters: product_name: type: string required: true description: 产品名称可附带一句话核心卖点 target_audience: type: string required: true description: 目标人群描述如25-35岁一线城市职场女性 channel: type: string enum: [feeds, search, video, email, push] required: true tone: type: string enum: [professional, lively, premium, affordable] required: false default: professional word_limit: type: integer required: false description: 文案字数上限可从渠道自动推断 execution: type: prompt_template template_ref: templates/campaign_copy.jinja2 tools: - compliance_word_checker quality_rules: - 禁止出现行业第一史上最强等绝对化用语 - 每条文案必须包含明确的行动号召CTA - 输出必须给出3个标题候选这里每个字段都有自己的作用。name是技能的全局唯一ID建议用动作对象动作类型的命名方式比如 campaign_copy_generator而不是 content_skill_01免得技能一多自己先懵了。description是给代理看的使用说明书要写清楚适用和不适用的场景这一块的写法后面有一整节专门讲。parameters决定代理能传什么参数进来字段类型和必填设置很关键。execution是技能真正的执行体可以是提示词模板也可以是一段代码。quality_rules是质量红线这一步非常实用——它让技能的专业底线以显式规则形式存在而不是寄希望于模型的自我发挥。3.2 双路路由语义检索加规则兜底技能库能不能正确地被调用比技能本身写得好不好更重要。一个写得很好的技能如果在错误的时候被调用就是负资产。我们用双路路由来解决匹配问题。第一路是语义检索。把用户的原始请求做向量化和每个技能的description向量做相似度计算召回Top K个候选技能。第二路是规则兜底。对高频和敏感场景写死关键词或正则规则比如请求里出现预算投放成本时强制路由到策略域的预算分配技能出现违禁词广告法时路由到合规检查技能。两路结果汇合后用评分仲裁语义分数足够高时按语义走语义分数含糊但规则命中时按规则走两者都不明确时宁可返回未匹配技能也不强行选择一个错误的。这条宁缺毋滥的路由原则是我们在大量实际调用里总结出来的——错配一个技能比不配技能的危害大得多因为用户会拿错误输出去执行。3.3 代理决策层意图识别与多技能编排的配合方式有了技能库和路由代理的执行流程就变成这样先理解用户目标识别出任务类型再把大任务拆成子任务对每个子任务检索技能并依次调用最后汇总各个技能的输出生成对用户的最终回复。这个流程里代理不只是调用工具的执行器它更像一个总监——分活、盯进度、做缝合。为了做到这点我们在代理逻辑里加了一个简单的循环观察当前输入判断下一步需要的技能调用后看结果是否符合预期不符合则调整参数重试或换技能。整体思路和主流的ReAct模式接近但没有引入复杂的流程引擎避免过度设计。举个例子当用户输入帮我做一批618的推送文案主打某款轻食产品预算在5万以内第一步意图识别 —— 任务域内容域大任务是活动文案生成 第二步子任务分解 —— 卖点抽取、文案生成、合规检查 第三步技能路由 —— 匹配到 campaign_copy_generator 第四步按序调用 —— 先抽卖点再生成3板文案再跑合规检查 第五步汇总输出 —— 返回3版文案并附合规检查通过说明整个流程跑完代理返回给用户的不是一段裸文案而是一份结构化结果下游投放系统可以直接消费。这才是技能库带来的最大价值从生成一段文字变成完成一个规范动作。4. 实战从零搭建营销技能库的完整过程4.1 第一步盘点存量SOP圈定高频技能清单我们做这个项目的起点不是技术而是翻档案——把团队过去两年的营销执行记录全部过了一遍重点提取那些反复出现的标准流程。比如每次投放前都要做的人群分析、每次内容创作都要走的卖点确认—文案生成—合规审核流程。从档案里提炼出约40个高频任务片段再开会和业务同事逐一确认哪些是他们真正想要代理来分担的。最后圈定了第一期要做的10个技能人群画像生成、竞品卡片生成、广告文案生成、社媒短帖改写、活动玩法建议、投放排期表、预算分配草案、合规词检查、效果归因报告、经验案例沉淀。圈定清单时我个人有一条心得宁可第一期只做5个做深做透也不要为了看起来全面一次性铺20个。技能库的价值是稳定可靠不是数量多。开头那版贪多的技能库最后有三分之一因为质量问题被下线重做反而拖慢了整体进度。4.2 完整实现一个广告文案生成技能包拿最核心的广告文案生成来过程拆解。先定义参数。输入参数经过三轮评审才定下来product产品名称和一句话卖点、audience目标人群描述、channel投放渠道枚举值、tone语气偏好可空、word_limit字数上限可空。一开始还有人坚持要加品牌历史竞品卖点情感关键词等6个参数但设计技能不是设计问卷参数越少代理的使用门槛越低很多信息可以通过提示词让模型去推理补全而不是逼用户全都填上。然后定义执行体。我们没有直接让模型从头生成文案而是把执行分成三步第一步卖点抽取。让模型从产品描述里抽取出不超过3条核心卖点每条卖点只保留一个最直接的表达避免堆砌形容词。第二步渠道适配。根据channel字段调整文案结构和篇幅。信息流推送只保留一句标题加一句正文搜索场景要求嵌入用户搜索词意图邮件场景允许较长的结构化正文。第三步合规与风格检查。调用一个内置的合规词表检查输出中是否出现绝对化用语并在语气和字数和预期不符时自动修正。最后固化输出格式标题候选3个、正文1段、CTA行动建议1条、以及可用时间范围建议。这个结构化的输出比让代理自由生成一段文字要容易被下游系统消费也更容易做质量统计。4.3 用回归case集验证技能库是否可用技能写完之后最怕的是感觉能用一上线就失控。我们为每个技能维护了一个回归case集通常8到15个典型输入覆盖正常请求、边界请求、错误请求三种情况。以广告文案技能为例正常请求是为一个智能手环写一条618信息流文案人群是25到35岁运动爱好者边界请求是写一条只有产品名没有卖点信息的文案错误请求是帮我把公司简介写得更高级这明显不该路由到这个技能。每个case集跑完记录三件事是否被正确路由、输出是否满足硬性规范、业务同事给出的主观评分。第一轮跑下来文案技能的合规通过率只有六成问题主要集中在语气偏差和漏写CTA。把这些case加入回归集修完下一轮通过率才逐步稳定到九成以上。这个流程听起来笨但它是整个项目里性价比最高的环节。没有case集做护栏技能库的迭代就是盲人摸象。5. 技能库的评测与持续迭代不只是能跑通5.1 三层质量指标路由、执行、业务技能库上线后怎么判断它好不好我们拆成了三个层次。第一层是路由指标。给定一批测试任务代理选对技能的比例是多少。我们对100个标注入会计题做了持续统计路由准确率需要稳定在九成以上低于这个数字说明description或分类体系有问题。第二层是执行指标。技能被调用后输出是否达标。这里用两个维度硬性规范通过率字数、结构、违禁词、参数完整度和主观专业评分业务同事按1-5分打分。硬性规范可以自动测主观评分则需要每周抽检。第三层是业务指标。技能库最终要服务于真实营销动作因此还要看业务结果——使用技能生成的文案点击率是否优于人工基准、复盘报告节省了多少小时、预算分配建议被采纳的比例。这一层见效最慢但对项目的存亡最关键。如果技能库只是内部自嗨、业务指标毫无变化那这个项目迟早会被叫停。5.2 从调用日志里读出改进信号评测不是等周会才做平时更重要的信号藏在调用日志里。信号一代理频繁请求用户补充参数。说明技能参数设计得太死或者必填项过多。我们曾经有一个投放排期技能要求提供每日预算曲线结果代理为了填这个参数反复追问用户把交互变成了一场审讯。后来把该参数改成可推断可选项这个问题立刻消失。信号二用户对输出进行大量改写。如果业务同事拿到技能输出后平均需要改掉40%以上的内容那说明技能的专业性还不够要么是模板太弱要么是缺少关键输入。信号三技能调用率断崖式下降。某个技能上周调用200次这周只剩20次大概率是某次更新把它改坏了或者路由样本被改了导致它不再被命中。这些都需要立刻排查而不是等月底汇总。定期跨技能做相似度审计也很有用——如果两个技能在同一个case上都能高分命中说明边界不清需要合并或明确差异。我们每个月跑一次这个审计它帮我们主动发现过好几次技能互抢的问题而不是等用户抱怨了才被动处理。5.3 版本管理、技能合并与退役机制技能库本质上是一个长期维护的资产不能写完就放着。我们参照软件工程的做法给每个技能加了版本号执行逻辑有调整就升一次小版本路由策略有变动就升大版本。每个季度做一次技能体检。统计各技能的调用次数、成功率、平均耗时清理僵尸技能——连续三个月零调用且无明确使用计划的技能会被标记为休眠不再参与路由如果半年后仍然没有场景就正式废弃。技能合并常见于相同域内的重叠比如信息流文案生成和推送文案生成经常在case里互相抢活儿最后我们把它们合并成短文案生成路由时用channel参数区分风格。版本管理还有一个实际作用出问题时能快速回滚。曾经有一次更新一个内容改写技能把语气模板调得太激进导致输出里出现大量感叹号业务同事一眼就发现了。我们直接回滚到上一版本避免了持续污染。没有版本管理这种事故至少要影响两到三天的线上输出。6. 最容易翻车的地方实战中的避坑记录6.1 技能描述写得越像营销路由越容易乱技能description是给模型看的路由说明书不是营销宣传稿。第一版我们写了很多本技能致力于赋能品牌实现全域增长洞察用户深层需求驱动高效转化这类充满业界黑话的描述。结果就是语义检索全乱了——输入帮我看看最近舆情这个请求召回的候选技能里居然有七八个看起来都差不多对。后来统一改成干巴巴的技术风格说明确这个技能做什么任务处理什么类型的输入输出什么结构不适用于哪些场景。写清楚边界比写得漂亮重要得多。技能描述的建议格式我总结成四条任务类型、输入条件、输出结构、禁用场景。从改成这个格式之后路由准确率最明显的一次提升直接跳了十个百分点。这件事给我留下的印象很深——面向模型的文字简洁明确的干话永远好过修辞。6.2 参数设计太理想化代理被逼成复读机技能参数设计本质上是给代理留多少自由度的设计。第二版技能库曾有一半的技能要求十来个参数全必填结果代理在对话里不断追问请问预算范围是请问目标人群年龄请问投放周期用户被问到崩溃。有一个测试用户直接吐槽这哪是AI营销助手这是AI查户口。修正原则很简单只把影响输出正确性的关键信息设为必填其他全部给默认值或让代理从上下文推断。比如文案生成技能channel和product是必填tone可以默认跟随品牌调性word_limit可以从channel推断活动策划技能目标人群如果没有明说只要任务可执行就允许代理先按默认人群做再提醒。参数设计的目标是让代理少提问、多干活。改完参数设计之后用户对话轮次平均减少了近四成满意度反而上去了。6.3 技能数量膨胀之后召回率断崖式下降当技能数量超过五六十个的时候光靠语义检索做首轮筛选会出现问题相似技能互相干扰Top K召回里塞满了不相干的结果。我们第一次遇到这个情况是在技能数突破80个后路由准确率从九成掉到七成以下排查了一个下午才发现是向量检索的噪声变大了。解决办法也是从那一刻开始做的给技能库加两级路由。第一级是域名匹配用意图分类器先判断请求属于洞察、内容、策略、执行、复盘中的哪一类第二级才在域名内做向量检索候选池一下子从80个缩到10到15个。加了这一层之后路由准确率又回到了九成以上。所以如果技能数量注定要增长建议从一开始就把分类路由写进架构别等膨胀了再补。6.4 权限边界与人工兜底涉及真实预算的动作必须留闸门最后一条经验可能是所有做AI营销工具的人都应该记住的技能库可以很聪明但真实资金操作不能被它全权托管。技能库里有不少技能在外面接的是营销平台API比如人群包圈选、素材提交、预算修改。这些动作一旦执行消耗的是真金白银。我们做权限设计时定了几条规矩只读类的数据技能可以全自动运行内容生成和策略建议类的输出需要人工一键确认直接影响预算、转化优化目标等参数的写操作必须走两条人工审批流程代理只负责生成建议文本和预填表单不能直接提交。虽然有同事觉得这样不够自动化但踩过几次因为参数口径错误导致的超预算教训之后大家都理解了AI代理管方向人管钱袋。这个闸门设计在项目复盘里被业务方评价为最让人放心的机制。做这个技能库项目下来我最大的体会是不要急于把技能堆满先花时间把技能的路由逻辑和拆解方法论打磨清楚。技能库不是一个数据库更像一支球队的战术板——每一次调用都要知道为什么上这一个技能它比上一个技能强在哪里、边界在哪里。包括我们下一步的计划也并不是继续加新技能而是回头把现有技能的失败案例做成负样本训练路由层的边界感。希望这篇复盘对正在做类似AI营销代理的朋友有帮助也欢迎有类似经验的人一起交流。