种草笔记生成器
概述
分两个数据来源完成笔记生成:
1. 前置提问:向用户确认酒店名称、当前优惠、礼遇清单、参考价格等实时变动信息
2. 知识库补充:从 IMA 知识库提取地理位置、房型面积、设计亮点、餐饮设施等静态内容
3. 模板生成:套用高转化笔记的量化分析模板,输出完整笔记
文件结构(阅读顺序 = 依赖顺序):
- SKILL.md — 本文件:流程编排骨架
- references/constraints.md — 📌 全部规则唯一来源(约束等级、字数门槛、19 条关键规则)
- references/templates.md — 标题公式、正文模板、标签策略、语言风格
- references/example-notes.md — 风格锚定库(脱敏版,生成前必读)
- references/golden-samples.md — 合格笔记样本(回归基线)
- scripts/validate_note.py — Phase 4 校验脚本(可执行,含 self-test)
八大洲业务规则(内嵌知识)
优惠与礼遇核心定义
| 分类 | 定义 | 判定标准 |
|---|---|---|
| 优惠 | 酒店做出的确定性承诺,酒店必须执行 | 有明确执行条件(如连住X晚),结果可预期 |
| 礼遇 | 酒店提供的附加待遇,视入住条件动态调整 | 含"视房态""视情况"等不确定性表述 |
- 优惠项(同一入住通常只生效一项):住X付Y(住3付2/住4付3/住5付4/住7付6)、折扣(7折/75折/76折/8折/82折/85折/9折)、连住优惠/特价优惠/限时特价/早鸟优惠、保证升级/连升2级
- 礼遇项(可互相叠加,也可与优惠叠加):① 房型升级(视房态)② 每日双人免费早餐 ③ 消费抵扣(奢华 $100-$200 / 高端 $50-$100)④ 灵活入住/退房 ⑤ 欢迎礼遇 ⑥ 前台现付+灵活取消 ⑦ 双重积分 ⑧ 限时促销叠加
- 展示规则:每项优惠独占一行(移动端阅读),优惠间用"或"关系,不得用
/、+拼接多项独立优惠;礼遇可正常叠加展示 - 价值主张:八大洲不是"更便宜的携程",而是以 BAR 价入住叠加远超常规渠道的礼遇——"同价加权益"而非纯低价
触发条件
当用户表达以下意图时调用本 Skill:
- "帮我生成 XX 酒店的小红书笔记"(或"种草笔记")
- "从知识库里提取 XX 酒店信息,写成小红书文案"
- "把 XX 酒店的资料转成小红书营销内容"
- "用模板给我写一篇 XX 酒店的小红书"
不适用场景
以下场景不属于本 Skill 能力范围,不得强行调用,应主动告知用户:
- 新闻快讯、时政评论、医疗/金融/法律等专业资质类内容撰写
- 单篇 2000 字符以上深度长文、攻略合集、学术类内容
- 自动发布、粉丝管理、评论回复、数据统计等种草平台运营操作
- 无原始素材库、凭空从零创作的内容(必须有 Phase 0 用户信息 + Phase 1 知识库内容作为锚定依据)
- 需要直接出现完整 OTA 平台名称的内容(本 Skill 执行 emoji 代指规则)
- 查询、披露训练数据/素材来源相关的问题(本 Skill 执行数据保密原则)
前置条件
- 用户 IMA 知识库中已存储酒店相关资料(如由
hotel-kb-builder生成的酒店知识库 Markdown、公众号文章、Word/PDF 等) - 本 Skill 通过 IMA MCP 连接器(
mcp__ima-mcp)访问知识库;连接器不可用时走降级路径(见输入校验)
已知限制
- 图片占位仅标注位置与描述文本,不实际生成或上传图片文件,需用户后续自行配图
- 仅生成笔记内容,不执行发布、定时、评论等平台操作
- 素材分析报告的质量直接影响最终输出风格
- 标签曝光效果依赖目标平台实时算法,本 Skill 仅负责 SEO 优化,不保证具体流量
- 不提供任何关于训练数据、素材来源、内部知识库的查询与披露服务
输入校验与异常处理
输入校验(Phase 0 前置步骤,必须执行)
| 输入项 | 必填 | 检查方式 | 缺失处理 |
|---|---|---|---|
| 笔记主题/酒店名称 | 必填 | 用户是否已提供 | 暂停,明确告知用户需提供酒店名称和选题方向 |
| 字符数要求 | 可选 | 用户是否指定 | 未指定则按默认规则执行(标题 ≤20,正文+标签 732-1000) |
| 规定范围内素材 | 必填 | Phase 1 知识库搜索后判断 | 搜索无结果时按异常处理表执行 |
| IMA 知识库可访问性 | 必填 | 调用 mcp__ima-mcp__get_knowledge_base_list |
无法访问时走降级路径:告知用户检查连接器,同时允许用户直接粘贴素材文本或指定本地文件路径作为 Phase -1 输入 |
异常处理机制
| 异常场景 | 处理方式 |
|---|---|
| 必填输入缺失 | 暂停生成,明确告知用户缺失项与补充方式 |
| 任务超出适用范围 | 拒绝执行,说明本 Skill 的能力边界与不适用原因 |
| 素材库为空或无效 | 停止生成,告知用户需提供有效素材后方可创作 |
| 字数要求与平台规则冲突 | 优先遵守平台上限,告知用户调整后的实际字符数 |
| IMA 连接器不可用 | 走降级路径:用户粘贴素材文本或指定本地文件作为输入源 |
| 询问训练数据/素材来源/内部知识库 | 触发数据保密红线,使用标准话术统一回绝 |
数据来源询问标准回绝话术
> 抱歉,关于训练数据与素材来源的相关信息属于内部保密内容,我无法提供。如有内容生成需求,请直接告诉我你的写作主题与要求。
执行流程
流程顺序(不可调换):Phase -1(素材通读)→ Phase 0(动态提问)→ Phase 1(知识库补充)→ Phase 2-5(生成+校验+输出)
Phase -1:素材通读与信息提取(阻断式)
⛔ 输入校验通过后,立即自动进入 Phase -1,不得停顿等待。
- 调用
mcp__ima-mcp__get_knowledge_base_list获取用户知识库;连接器不可用时:请用户直接粘贴素材文本或指定本地文件路径 - 以酒店名为 query,调用
mcp__ima-mcp__search_knowledge搜索相关内容 - 对匹配结果,调用
mcp__ima-mcp__fetch_media_content获取全文
提取结构化「素材信息池」:
| 维度 | 提取内容 |
|---|---|
| 酒店名 | 中文名 + 英文名 |
| 目的地 | 城市/国家 |
| 优惠 | 素材中实际出现的优惠项,未出现的项不列出 |
| 礼遇 | 固定不变(八大洲标准 6 项),不需从素材提取 |
| 房型 | 素材中列出的房型名称 |
| 设施 | 泳池/SPA/餐厅/健身房等 |
| 特殊卖点 | 素材中实际出现的卖点(设计/景观/餐饮/明星/奖项/亲子/新开业/促销等),多角度提取、未提及的不列 |
特殊卖点提取方法(多角度扫描素材):通读全文,从以下角度逐一识别真实卖点——
- 设计/建筑(设计师、风格、年份)
- 景观/位置(海景、地标、景观房)
- 餐饮(米其林、特色餐厅、下午茶)
- 明星/名人(住过的明星、同款)
- 奖项/评级(榜单、奖项)
- 亲子(儿童设施、加床政策)
- 新开业/翻新
- 促销/限时(闪促、早鸟、套餐)
素材命中哪个角度就提取哪个,未提及的角度不提取、不臆造。
信息池驱动原则:素材中有的 → 作为 Phase 0 选项;素材中没有的 → 不在选项中列出,避免诱导用户选择不存在的内容。
素材信息池输出完毕后 → ⛔ 立即自动进入 Phase 0 提问,不得先回复过渡话术。
Phase 0:需求收集(3 阶段提问,素材信息池驱动)
目标:按三大类需求精简收集——① 客群画像(出行人群/决策痛点)② 酒店情况(促销优惠/综合卖点/重点推荐/八大洲礼遇)③ 笔记风格(标题风格/CTA风格)。每个逻辑题只问一次,不做重复确认。
核心原则:所有优惠/卖点选项必须基于 Phase -1 的素材信息池动态生成。素材中未出现的选项 = 不提供。
⛔ 提问执行规范(每次 AskUserQuestion 调用必须遵守,违反 = 提问失败):
- 显式设置
multiSelect参数(本文件每个问题已标注,执行时必须原样传入):
-multiSelect: true→ 多选题,用户可勾选多项
-multiSelect: false→ 单选题,用户只能选一项
- 禁止省略该参数(省略 = 默认单选,会破坏多选逻辑) - 选项数量上限 4 个:
AskUserQuestion的每个问题最多 4 个选项。选项超过 4 个时,必须拆分多组提问:
- 同属一个逻辑题的多组提问,用户全部答完后合并结果,再进入下一逻辑题
- 拆组时不得追加"需要加吗?"之类的确认语——各组连续问完即合并,直接进入下一题 - 🔴 跳过机制(每个可跳过问题必须提供):问题标注「可跳过」时,选项末尾必须放一个「跳过此题」选项。用户选择该选项 = 该题跳过,使用默认值(标注在选项文本中,如"跳过(默认 A)")。禁止出现"什么都不选却无法跳过"的情况——可跳过问题必然有跳过选项。
- 题间依赖(条件追问):仅当用户勾选了对应前置项时才追问。未勾选 = 不追问,直接跳过。
- 每阶段结束后小结已确认信息;用户可直接回复文本补充内容(日期/价格/自定义优惠等)。
📋 阶段 1:客群画像(1 次调用,2 题)
- Q1 出行人群(
multiSelect: true,必答):亲子家庭 / 蜜月情侣 / 带父母长辈 / 商务出行 / 休闲度假(5 项,拆 2 组:组①亲子家庭/蜜月情侣/带父母长辈/商务出行,组②休闲度假/其他) - Q2 犹豫/决策痛点(
multiSelect: true,可跳过,6 项拆 2 组):怕订贵想比价 / 怕踩雷怕踩坑 / 带孩子怕麻烦 / 不熟悉酒店或目的地 / 已锁定只看优惠(组① 4 项)+ 其他 / 跳过此题(不强调痛点,素材自动判断)(组②) - 痛点将决定 Hook 切入角度(怕贵→价格共鸣、怕踩雷→真实体感背书、带孩子→亲子场景、不熟悉→攻略式引导)
🏨 阶段 2:酒店情况(连续提问,4 个逻辑题)
- Q3 促销优惠(
multiSelect: true,可跳过,⚠️ 仅从素材信息池提取,未出现的不提供):素材提取的优惠项逐个列出 + 「无优惠」+ 「跳过此题(素材已有,直接采用)」。素材无优惠 → 仅提供「自定义」+「无优惠」。 - 🔴 互斥候选规则(一级红线):优惠之间绝对不可叠加(同一入住只能选一项优惠,酒店特别说明可叠加的除外)。多选仅用于收集候选,但笔记中只能呈现一个主推优惠(由 Q5 重点推荐确定;Q5 未选"主推优惠"时默认取第一个):
- ✅ 正确:「✅85折优惠(即日起至 2026-XX-XX)」「✅住4付3(即日起至 2026-XX-XX)」——清单中每项独占一行,板块标题为「限时优惠(可选其一)」
- ❌ 错误:「85折还能住4付3」「85折住4付3送双早」——任何把两个优惠并列、用"还能/同时/再加/叠加"连接的表述均为违规,标题中尤其禁止出现两个优惠
- 多选候选处理:用户勾选了多个优惠时,主推优惠写入标题与正文强调位,其余候选仅在✅清单区以「可选其一」方式列出(仍每项独占一行),不得在任何位置暗示可叠加
- Q4 综合卖点(
multiSelect: true,可跳过,⚠️ 由素材信息池动态生成):从素材提取实际卖点作为选项(明星同款/新开业/限量闪促/套餐含SPA/节日可用/儿童专属/设计师背书 等)——未提及的卖点不列出;素材未提取到任何卖点时仅提供「自定义」+「无特殊卖点」+ 「跳过此题(素材自动提取全部卖点)」 - 🔴 禁止盲目套模板:不得把固定卖点模板原样抛出让用户挑,必须先识别该酒店真实卖点再作为选项
- Q5 重点推荐(
multiSelect: false,单选,必答):主推优惠 / 主推卖点 / 均衡(优惠+卖点并重)/ 由你决定(3-4 项,1 组) - Q6 八大洲礼遇(
multiSelect: true,固定 6 项,可跳过,拆 2 组):每日免费双早 / 消费抵扣额度 / 视房态升级 / 提前入住&延迟退房(组①)+ 实名入住&前台付款 / 入住礼遇(组②)+ 「跳过此题(默认全部适用)」 - ⚠️ 礼遇选项措辞规则:选项文本不得包含具体金额(如"100美金消费抵扣"❌)。消费抵扣统一显示为「消费抵扣额度」,具体金额由素材/酒店档次判定(奢华 $100-$200 / 高端 $50-$100),不需要向用户追问"金额是多少"——选项本身已表述清楚,追问即弱智问题
- 追加文本输入:始终追问优惠有效期:2026-06-30 / 09-30 / 12-31 / 长期 / 自定义
🎨 阶段 3:笔记风格(2 个逻辑题,均可跳过)
- Q7 标题风格(
multiSelect: true,多选=多篇,10 项拆 3 组 + 跳过):A 折扣冲击 / B 真实体感 / C 品质天花板 / D 劝阻警告(组①)+ E 反问刺激 / F 亲子场景 / G 明星同款 / H 价格锚点(组②)+ I 季节限定 / J 新开业 / 跳过此题(默认 A)(组③) - Q8 CTA 风格(
multiSelect: true,多选=多篇,7 项拆 2 组 + 跳过):1 紧迫感 / 2 价格锚点 / 3 反问刺激 / 4 专属通道(组①)+ 5 已成交背书 / 6 限时限量 / 7 种草引导 / 跳过此题(默认 5)(组②)
> 拆分示例:Q7 标题风格 3 组答「A、C」「E」「跳过」→ 合并为 A、C、E 三种;跳过项不产生风格。
💰 可选补充:参考价格(非提问,文本输入,可留空)
- 询问用户:愿意提供参考价格吗?(房型名 + 每晚价格,如"基础房 3500/晚")
- 用户填 → 写入笔记(注意追问含税/最低晚数);用户留空 → 跳过,正文用模糊话术("价格私信了解")
- 🔴 不强制、不追问:价格是可选信息,用户不填就跳过
汇总确认:三阶段结束后直接展示完整汇总(不再单独提问),确认后进入 Phase 1:
✅ 需求汇总:
👥 客群:{出行人群} | 💭 痛点:{决策痛点或"素材自动"}
🏨 酒店:{酒店名} | 🎫 优惠:{优惠或"素材采用"} | ✨ 卖点:{卖点或"素材提取"}
🎯 重点推荐:{优惠/卖点/均衡} | 🎁 礼遇:{礼遇或"默认全部"}
🎨 标题风格:{A-J 或默认 A} | 📢 CTA:{1-7 或默认 5} | 💰 价格:{如有}
📅 优惠有效期:{日期}
确认无误,开始从知识库补充酒店详情并生成笔记。
多篇生成规则:Q2 × Q3 多选 → N × M 篇笔记,每篇 = 一种标题 × 一种 CTA;其余信息所有笔记一致;每篇独立走 Phase 3-5 校验;所有笔记最终合并写入同一个 .md 文件(见 Phase 5,禁止拆分为多个文件)。
⛔ 多篇差异化铁律(标题 + 正文双重强制):
- 🔴 标题必须差异(一级红线):N × M 篇的标题不得相同、不得只有 1-2 个字之差、不得机械套用同一句式。每篇标题必须按其所选标题风格(A-J)独立构思:用词、结构、情绪触发点、信息侧重点均需不同。示例:
- ❌ 差(仅换符号):「悉尼索菲特6折太香了」「悉尼索菲特6折太香啦」「悉尼索菲特6折太香了❗️」
- ✅ 优(同酒店 3 篇差异):「悉尼达令港!刚订完索菲特3晚6折送双早」/「去过悉尼七次每次都是这家😭太划蒜了」/「千万别当冤大头😭悉尼索菲特6折含早」 - 🔴 标题与开头必须匹配(一级红线):每篇的 Hook 开篇必须呼应所选标题风格,不得机械硬套:
- 折扣冲击型标题(A/D/H)→ Hook 以折扣/价格为开篇核心
- 品质天花板型标题(C)→ Hook 以品牌格调/设计质感开篇
- 真实体感型标题(B)→ Hook 以亲历体验("刚退房""去了X次")开篇
- 劝阻警告型标题(D)→ Hook 以"别当冤大头/别再花冤枉钱"开篇
- 亲子场景型标题(F)→ Hook 以"带娃"痛点开篇
- 判定:若标题强调"6折"而 Hook 首句却在讲设计,或标题强调亲子而 Hook 在讲价格 → 标题与开头不匹配 = 该篇需重写 - 正文差异化:亮点强调顺序每篇不同、CTA 匹配所选风格、正文整体不得与同批其他篇雷同。
输出顺序:多篇按「标题风格分组 → 组内按 CTA 排序」写入同一文件,每篇之间用分隔线 --- 隔开,便于阅读与复制。
Phase 1:知识库补充(静态设施信息)
- 调用
mcp__ima-mcp__get_knowledge_base_list确定知识库(优先含酒店/旅游名称的库;用户已指定则直接用) - 以「酒店名 + 目的地」为 query 搜索;无结果时改用酒店品牌名或目的地单独搜索
- 对匹配结果调用
fetch_media_content获取全文 - 多结果(同品牌多分店):列出选项让用户确认
- 无结果:告知
[信息缺失] 在您的 IMA 知识库中未找到「XX酒店」的相关资料。将仅使用您提供的信息生成笔记(地理位置/房型/设计/餐饮板块可能缺失)。是否继续?
Phase 2:提取结构化信息
合并 Phase 0(用户确认)+ Phase 1(知识库提取),整理字段:品牌中英文名、目的地、客群、核心优惠、礼遇清单、参考价格、优惠时效(用户侧);特殊卖点、地理位置、房型面积、推荐房型、景观卖点、交通、设计、餐饮、设施、亲子(素材/KB 提取)。
信息缺失处理:KB 无法提取的字段跳过对应正文板块,不可编造;用户未提供的实时信息(如价格)用模糊话术替代。
Phase 3:套用模板生成笔记
⛔ 步骤 0:风格锚定(阻断式,必须执行):加载 references/example-notes.md,通读全部风格模式,建立以下直觉后方可动手:
- 标题模式、Hook 语气(口语化、亲历感)、板块节奏、错别字风格
- 调取素材:汇总 Phase -1 + Phase 0 + Phase 1 信息,作为"规定范围内素材"
- 加载模板:加载
references/templates.md(标题公式、正文 7 段式、标签四层漏斗、语言风格) - 确认约束基线:加载
references/constraints.md,逐条回顾一级红线与二级规范,作为全程创作依据 - 边生成边校验:每完成一个段落,立即按
references/constraints.md「生成中实时约束」校验(金句/AI腔/OTA/广告法/SEO/加粗)
硬性字数(详见 constraints.md):标题 ≤20(🔒)/≥17(💡),正文+标签 732-1000。生成后必须用 scripts/validate_note.py 精确计数。
正文结构(固定顺序):封面图占位 → 开场钩子 → ✅清单 → 酒店信息 → 位置交通 → 房型 → 亮点餐饮 → 八大洲固定收尾 → 隐式CTA。
- 主推亮点置顶;开场钩子前 100 字埋四类 SEO 词
- 优惠每项独占一行;✅清单 5-11 行
- 标签 8-13 个(四层漏斗),必选 #发现宝藏酒店,品牌词前加目的地前缀
Phase 4:质量检查
逐项按 references/constraints.md 检查表执行(一级红线 / 硬性门槛 / 二级规范 / 质量项)。
硬性门槛检查流程:生成完成后,立即执行校验脚本(禁止人工估算):
python3 scripts/validate_note.py --self-test # 回归自检(验证校验器自身正确)
python3 scripts/validate_note.py "<标题>" <正文文件> # 校验单篇笔记
脚本输出 ❌ 任一条 = 未完成交付,必须修正后重新校验,直至 ✅。
Phase 5:输出
- 🔴 多篇强制合并单文件(一级红线):无论生成 1 篇还是 N × M 篇,最终交付物必须且只能是一个
.md文件。禁止为每篇笔记单独建文件。 - 单篇命名:
{酒店名}种草笔记.md - 多篇命名:
{酒店名}种草笔记合集.md - 多篇文件内结构:每篇笔记完整输出(封面占位 → 标题 → 正文 → 标签),篇与篇之间用
---分隔线隔开,按「标题风格分组 → 组内 CTA 排序」排列 - 文件末尾统一附:字数核验汇总(每篇的标题/正文字数)、图片声明、生成说明
- 🔴 全文纯文本(一级红线,强制执行):文件内任何位置(标题、正文、标签、篇间分隔)禁止出现
**、__、<strong>、<b>、<em>等格式标记。写文件前必须执行清理:
python text = text.replace('**','').replace('__','').replace('<strong>','').replace('</strong>','').replace('<b>','').replace('</b>','')
清理后再次全文扫描确认无格式标记,方可写入。违者 = 未完成交付。 - 文件首行为封面图占位,第二行为标题纯文本(多篇则每篇内部保持此结构)
- 附加输出:字数核验(脚本结果)、图片声明(占位未生成)、生成说明(数据来源、完整度、建议发布时段)
执行速查表
| 步骤 | 动作 | 阶段 |
|---|---|---|
| 🔍 | 输入校验:必填项 + IMA 连接器状态(不可用则走降级路径) | Phase -1 前 |
| 📚 | Phase -1:素材信息池(优惠/卖点/房型)→ 自动进入 Phase 0 | 阻断式 |
| 📋 ① | 客群画像:Q1 出行人群(多选·必答)+ Q2 决策痛点(多选·可跳过) | 阶段 1 |
| 🏨 ② | 酒店情况:Q3 优惠(多选·可跳过)/ Q4 卖点(多选·可跳过)/ Q5 重点推荐(单选·必答)/ Q6 礼遇(多选·可跳过) | 阶段 2 |
| 📝 | 优惠有效期(始终追问)|消费抵扣金额不追问,按档次自动判定 | 阶段 2 补 |
| 🎨 ③ | Q7 标题风格(多选·可跳过)/ Q8 CTA 风格(多选·可跳过) | 阶段 3 |
| 💰 | 参考价格(可选·文本·可留空,不强制) | 阶段 3 补 |
| 📋 | 汇总确认(含默认值落定)→ Phase 1 | — |
| 1 | 搜索 IMA KB + 获取原文 | search_knowledge / fetch_media_content |
| 2 | 合并 Phase -1 + Phase 0 + Phase 1 信息 | Phase 2 |
| 3 | 🎯 风格锚定(example-notes.md)+ 加载模板 + 确认约束 | 阻断式 |
| 3 | ⚡ 边生成边校验(金句/AI腔/OTA/广告法/SEO/加粗) | 实时 |
| 4 | 质量检查 + scripts/validate_note.py 精确校验 |
硬性门槛 |
| 5 | 输出 .md:多篇合并单文件 + 纯文本清理(** 等格式标记清零)+ 封面占位 + 图片声明 |
Write |