如果你在VibeMKT Hub上使用过营销Skill,你可能注意到每个Skill都附带一个SKILL.md文件。这个文件不是产品说明书,而是Agent读取并执行的指令集。写好SKILL.md,意味着你的营销经验可以从"每次口头交代"变成"一行命令触发"。本文基于VibeMKT Hub的收录实践,提供一份编写营销Skill的完整框架。
前置条件:你的营销经验适合做成Skill吗
在写SKILL.md之前,先判断你的营销经验是否适合Skill化:
- 任务边界清晰:能做"生成Google Ads关键词组"的Skill比能做"帮我做海外广告投放"的Skill更有可能被正确使用。
- 输入输出可定义:如果你在工作中每次都需要大量的隐性知识和临场判断,这个任务暂时还不适合做成Skill。
- 有可复用的规则:你的经验中是否有反复使用的判断标准、步骤序列、核验清单?这些规则是Skill的骨架。
- 不替代人的最终决策:Skill可以生成建议、初稿和检查结果,但涉及发布、预算、重大品牌声明的决策应该保留人工审批。
SKILL.md的七段结构

VibeMKT Hub推荐以下七段结构。每段回答Agent执行过程中一个特定的信息需求:
第一段:YAML元数据
文件以YAML前置元数据开头,声明Skill的身份信息:
---
name: seo-article-generator
description: 根据主题和关键词生成符合SEO/GEO规范的中文营销文章。适用场景:内容营销人员需要快速生成结构化的SEO文章初稿时使用。
---
name必须是英文小写、连字符分隔的唯一标识。description需要同时说明这个Skill做什么、什么时候用——Agent会根据description判断是否触发。
第二段:角色与能力声明
告诉Agent在这个Skill的执行上下文中扮演什么角色,具备什么能力。这决定了Agent在生成过程中调用哪些内部知识:
# 角色
你是一个中文SEO内容策略师和营销文章作者。你擅长将关键词转化为结构化文章,遵循E-E-A-T内容标准。
注意:角色声明不是"你是最好的营销专家"这类空泛描述,而是具体说明Agent在执行时需要调用哪些知识域。
第三段:触发说明
这是SKILL.md中最关键但最容易被忽略的部分。触发说明要回答两个问题:
- 什么情况下应该触发这个Skill:用关键词、任务描述和用户意图来界定。
- 什么情况下不应该触发:明确排除的场景,防止Skill在不适合的场景被调用。
# 触发条件
当用户要求生成SEO文章、内容营销文章或关键词驱动的内容时触发。
不要在此Skill中处理:广告文案、社媒短内容、视频脚本、邮件营销内容。
第四段:输入契约
明确规定用户必须提供什么、可以提供什么、Skill会如何处理缺失的必填信息:
# 输入
必填:主题、目标关键词、目标受众
可选:字数范围、特殊格式要求、禁止使用的表达
缺少必填信息时:询问用户补充,不自行假设
输入契约是Skill可靠性的基础。一个没有输入契约的Skill,就像没有参数的函数——调用结果是不可预期的。
第五段:执行步骤
这是Skill的核心逻辑。用清晰的编号步骤描述Agent应该按什么顺序做什么:
# 执行流程
1. 接收并确认输入:核对必填信息是否完整
2. 理解搜索意图:分析目标关键词背后的用户需求
3. 确定文章结构和角度
4. 生成文章正文
5. 自检:按核验清单逐项检查
6. 输出最终结果
每一步应该有一个明确的输出物或检查点。步骤之间的衔接决定了Agent是否会在中途"迷路"。
第六段:输出契约
告诉Agent应该以什么格式输出什么内容。这是Agent的"交付标准":
# 输出
格式:HTML(不含html/head/body标签)
结构:标题 + 导语段落 + H2分节 + 总结
必须包含:目标关键词在首段自然出现一次
禁止:h1标签、编造的数据、'赋能''颠覆'等空泛表达
第七段:自检规则
Agent在输出前对自己的产出进行逐项检查。自检规则越具体,AI输出的一致性越高:
# 自检清单
- [ ] 标题包含核心关键词且不超过30个汉字
- [ ] 首段直接回答核心搜索意图
- [ ] 每个H2回答一个独立的子问题
- [ ] 未编造任何数据、案例或引用
- [ ] 输出为纯HTML片段,不含h1、html、body标签
触发词设计:让Skill更容易被准确调用
触发词是用户对Agent说的一句话或几个词,用于激活Skill。好的触发词设计遵循以下原则:
- 覆盖自然表达:不要只设一个精确匹配触发词。用户可能说"写篇SEO文章""帮我生成一篇内容""搞一篇营销文"——这些都应该触发同一个Skill。
- 区分意图强度:同一类任务中,用户的意图从"快速草稿"到"精修发布"不同。如果不同意图需要不同的执行深度,考虑做成两个Skill或在一个Skill中用参数区分。
- 避免与其他Skill冲突:如果你的"内容生成Skill"和别人的"文案Skill"有重叠的触发词,Agent可能随机选择其中一个。在触发描述中加排除条件。
撰写后验证:四个测试
写完SKILL.md后,用以下四个测试验证:
- 陌生人测试:给一个不熟悉的同事看SKILL.md,他能说清楚这个Skill做什么、什么时候用吗?
- 边界测试:用触发词以外的表达方式描述任务,Agent还会正确触发吗?用一个不适合的任务描述测试,Agent会错误触发吗?
- 缺失输入测试:故意不给必填信息,Skill会要求补充还是自己编造?
- 输出一致性测试:用同一个输入调用三次,输出的结构和质量是否稳定?
完整模板
以下是一个可直接复制修改的营销Skill模板骨架:
---
name: your-skill-name
description: 一句话说明这个Skill解决什么任务、适用什么场景。
---
# 角色
你是一个[具体角色],擅长[具体能力]。
# 触发条件
当用户[具体任务描述]时触发。
不要在以下场景触发:[排除场景列表]。
# 输入
必填:[必填变量列表]
可选:[可选变量列表]
缺少必填信息时的行为:[询问/使用默认值/拒绝执行]。
# 执行流程
1. [步骤一及检查点]
2. [步骤二及检查点]
3. ...
# 输出
格式:[输出格式]
必须包含:[必含内容]
禁止:[禁止内容]
# 自检清单
- [ ] [检查项1]
- [ ] [检查项2]
...
写好SKILL.md不是一次性工作。Skill应该随着使用反馈持续迭代——你今天写下的执行步骤,可能在下周的使用中就发现需要调整顺序或增加分支判断。把SKILL.md当作一个活的文档来维护。