术语统一:视觉脚本→视觉短片、预设钩子→开场钩子(技能层全量)+ clarify v30 维度口径衔接

- P0: D·视觉脚本→D·视觉短片 20 处/5 文件(SKILL.md S9、6_框架映射表、9_脚本、创作流程规范、07_格式指南);F07 纯视觉短片保留
- P2a: 预设钩子→开场钩子 10 处/3 文件(5_选题、7_大纲、04_爆款开场口径说明)
- P1a/P1b: clarify.md 新增第 7 条维度口径衔接(内容形式4选→S6细化、故事框架倾向词→S6定型、开场钩子同口径) CHANGELOG v30
- SKILL.md frontmatter updated_at=2026-09-07; references-add/变更日志.md 归档 09-07 条目
- 需求框 v29(内容形式置首/Vlog去人物采访/叙事结构→故事框架) 已于上轮提交范围
This commit is contained in:
maogeigei committed 2026-09-07 15:03:21 +08:00
1 parent c3727d8e6f
commit f7cd6ffa72
15 files changed
+376 -172

No files matched your search

@@ -101,7 +101,7 @@
请帮我把抖音账号 {账号名称「x」, 账号地址「y」} 添加:通过抖音网页获取账号信息与视频列表,写入账号列表并保存到本地
```
### 9 需求打磨 clarify(09-02 弹窗内对话式 · 09-07 模板文件化)
### 9 需求打磨 clarify(09-02 弹窗内对话式 · 09-07 模板文件化 · v29 八维编导名)
> 账号列表「AI创作」弹窗底部的对话打磨,非 AI 会话任务(不走 /api/run),直调 Dify chat-messages。
@@ -113,14 +113,14 @@
|----|------|------|---------|
| 正文 | 无 | 对用户说的话(150 字内);追问时问题**独占一段**;收尾时提示「可直接点击右下角 ✓ 提交创作」 | 渲染为 AI 气泡 |
| 候选 | `==OPTS==` | 每行一个候选,格式「骨架词——具体展开」(≤45 字、无编号);结合本条创意/人设落地,禁干巴术语 | 解析为气泡下内嵌按钮行,点选=以整行文本发一轮 |
| 需求 | `==REQ==` | 5 行清单:一句话创意/创新·爆点/痛点·爽点/叙事结构/其他约束(空项留空) | 解析回填需求框字段 |
| 需求 | `==REQ==` | 8 行清单:内容形式/一句话故事/开场钩子/故事爆点/故事爽点/故事框架/人物关系/特别要求(空项留空) | 解析回填需求框字段 |
**System Prompt 已抽为文件**:`mcn-work-shop/prompts/clarify.md`(==PROMPT== 与 ==CHANGELOG== 之间为正文,头尾说明不发模型)。**迭代 prompt 只改该文件**,server.js 启动按 mtime 缓存读取、占位符注入(`{{accountName}}/{{personaText}}/{{contentText}}/{{attachText}}/{{reqMdText}}/{{histText}}/{{turnText}}`),不再改 server.js 字符串。
**关键规则(clarify.md 内固化)**:
- 候选骨架受控词表:叙事结构(钩子前置/悬念反转/递进铺垫/先抑后扬)、内容形式(剧情/Vlog/口播/**视觉短片**)、剧情人物关系(一次一层);每项必须结合本条创意给「具体形态」
- 收尾门槛:创意/爆点/爽点/叙事结构 **至少 3 项明确**才可提示提交,否则继续补缺口
- 前端草稿缓存:`localStorage aicreate_draft_{账号}`(w/convo/attach,每轮回复后存、提交后删);点遮罩外不关闭,仅 X/「重置」可关
- 候选骨架受控词表:内容形式(剧情/Vlog/口播/**视觉短片**)、故事框架(钩子前置/悬念反转/递进铺垫/先抑后扬)、开场钩子(悬念提问/反差画面/直击痛点/身份共鸣/利益承诺)、剧情人物关系(一次一层);每项必须结合本条创意给「具体形态」
- 收尾门槛(09-07 v29):内容形式/一句话故事/开场钩子/故事爆点/故事爽点/故事框架 **核心 6 项至少 4 项明确**才可提示提交;且内容形式=剧情时「人物关系」也须明确。未达门槛继续补最关键缺口
- 前端草稿缓存:`localStorage aicreate_draft_{账号}`(w/convo/attach,每轮回复后存、提交后删);点遮罩外不关闭,仅 X/「重置」可关;旧草稿缺 v28 新字段(hook/ftype/cast)自动为空,兼容不报错
## 关键细节
@@ -1,6 +1,6 @@
# 「对话式选题完善」用户模拟使用场景案例
> 版本:09-07 OPTS 候选 chips 版(视觉短片/口播等编导词定稿)|入口:账号列表 → 任一行「AI创作」→ 弹窗底部输入框
> 版本:09-07 v29 八维编导名版(内容形式/一句话故事/开场钩子/故事爆点/故事爽点/故事框架/人物关系/特别要求)|入口:账号列表 → 任一行「AI创作」→ 弹窗底部输入框
> 一句话:用户在弹窗里像聊天一样逐步说出想法,AI 每轮把缺口整理成**可点选候选**,点一下即回填,补齐后一键提交创作。
---
@@ -9,14 +9,17 @@
| # | 场景 | 模拟目标 | 关键验证点 |
|---|------|---------|-----------|
| 1 | 从零想法 → 提交创作 | 主流程闭环 | 5 字段逐步点亮、叙事结构 chips 点选、提交按钮 |
| 2 | 想拍"视觉短片" | 内容形式四选项分支 | D·视觉短片词条出现、点击后画面驱动进需求 |
| 1 | 从零想法 → 提交创作 | 主流程闭环 | 8 字段逐步点亮、故事框架/开场钩子 chips 点选、提交按钮 |
| 2 | 想拍"视觉短片" | 内容形式四选项分支 | 视觉短片词条出现、点击后画面驱动进内容形式行 |
| 3 | 想做剧情演绎但人物没想好 | 人物/关系分支追问 | AI 追问人物关系、chips 提供关系候选 |
| 4 | 想法已经很完整 | 快速收尾 | AI 直接总结、提示提交、不再弹 chips |
| 5 | 上传需求文档起步 | 附件 + 对话结合 | 附件被通读、诉求进清单 |
> 术语对照(文档内统一用编导词):
> 内容形式 = 剧情(场次叙事)/ Vlog 纪实·人物采访 / 口播(干货·教程·盘点) / **视觉短片**(画面+音乐驱动,测评种草或纯氛围)
> 术语对照(文档内统一用 v29 编导词):
> 内容形式 = 剧情(场次叙事)/ Vlog / 口播(干货·教程·盘点) / **视觉短片**(画面+音乐驱动,测评种草或纯氛围) → 独立字段「内容形式」,**置需求框首位**
> 故事框架 = 钩子前置 / 悬念反转 / 递进铺垫 / 先抑后扬 → 独立字段「故事框架」
> 开场钩子 = 悬念提问 / 反差画面 / 直击痛点 / 身份共鸣 / 利益承诺 → 独立字段「开场钩子」(前 3 秒留人)
> 收尾门槛 = 核心 6 项(内容形式/一句话故事/开场钩子/故事爆点/故事爽点/故事框架)取 4;内容形式=剧情时「人物关系」也须明确
---
@@ -27,29 +30,29 @@
**① 用户输入:**
> 想拍一条亲子互动的搞笑短剧
**AI 行为:** 吸收"亲子 + 搞笑 + 短剧"→ 填入一句话创意;判断内容形式可定为剧情(场次叙事);发现叙事结构缺口 → 追问并给 4 个候选 chips。
**AI 行为:** 吸收"亲子 + 搞笑 + 短剧"→ 内容形式可定为剧情(场次叙事)写入内容形式行(首位) → 判断一句话故事可推断"天使宝宝 × 打工人妈妈 反差互动"填入 → 发现故事框架缺口 → 追问并给 4 个候选 chips。
**AI 气泡(实测同款):**
> 没问题!"天使宝宝 × 打工人妈妈"的日常反差互动,精准戳中宝妈笑点。既然定了剧情短剧,这条视频您更倾向哪种叙事结构?
> 没问题!"天使宝宝 × 打工人妈妈"的日常反差互动,精准戳中宝妈笑点。既然定了剧情短剧,这条视频您更倾向哪种故事框架?
>
> 〔钩子前置〕〔悬念反转〕〔递进铺垫〕〔先抑后扬〕
**需求框变化:** `2/5 已填`(一句话创意 ✅、叙事结构=剧情·场次叙事 ✅)
**需求框变化:** `2/8 已填`(内容形式=剧情·场次叙事 ✅、一句话故事 ✅)
**② 用户点击:** 〔钩子前置〕
**用户侧效果:** 点击文本以"钩子前置"作为用户输入发一轮,chips 即时收起(防重复点)。
**AI 行为(下一轮):** 吸收选择 → 叙事结构行更新为"钩子前置(开场即抛钩子)" → 发现爆点/痛点仍有缺口 → 继续追问并给候选。
**AI 行为(下一轮):** 吸收选择 → 故事框架行更新为"钩子前置(开场即抛钩子)" → 发现开场钩子缺口(v28 新增追问层) → 追问开场钩子并给候选(悬念提问/反差画面/直击痛点/身份共鸣/利益承诺 × 亲子落点)。
**需求框变化:** `3/5 已填`
**需求框变化:** `3/8 已填`
**③ 用户继续:** (示例)点击爆点候选或直接输入 "反转的点是爸爸藏私房钱被妈妈抓包"。
**③ 用户点击:** 〔反差画面——妈妈躲门后偷看,爸爸独自带娃鸡飞狗跳〕
**AI 行为:** 吸收 → 补爆点 → 若痛点/爽点仍空 → 依账号设定(妈妈带娃痛点)给爽点候选。
**AI 行为:** 吸收 → 开场钩子行写入"反差画面:妈妈躲门后偷看、爸爸带娃鸡飞狗跳(前 3 秒)" → 故事爆点/故事爽点若仍空 → 依账号设定(妈妈带娃痛点)给爽点候选。
**④ 直到需求框 ≥4/5,AI 回复:**
> 需求已齐:剧情短剧 × 钩子前置,笑点结构完整。可以直接点右下角 ✓ 提交创作了!
**④ 直到核心 6 项 ≥4 项明确(内容形式/一句话故事/故事框架/开场钩子已满 4),AI 回复:**
> 需求已齐:剧情短剧 × 钩子前置 × 反差开场,笑点结构完整。可以直接点右下角 ✓ 提交创作了!
**⑤ 用户点击** ✓ 提交创作 → 确认弹窗展示需求清单 → 确认 → 创建 S1-S11 全流程创作任务。
@@ -73,17 +76,17 @@
**AI 气泡(预期):**
> 明白了,画面优先、台词极少——这属于**视觉短片**。确认一下内容形式:
>
> 〔剧情(多角色对白)〕〔Vlog 纪实·人物采访〕〔口播(干货·教程·盘点)〕〔视觉短片(画面+音乐驱动)〕
> 〔剧情(多角色对白)〕〔Vlog〕〔口播(干货·教程·盘点)〕〔视觉短片(画面+音乐驱动)〕
**② 用户点击:** 〔视觉短片(画面+音乐驱动)〕
**AI 行为(下一轮):** 叙事结构行写入"视觉短片(画面驱动、配乐承载情绪)" → 追问音乐氛围倾向/时长 → 给候选(如〔治愈氛围〕〔氛围卡点〕)。
**AI 行为(下一轮):** 内容形式行写入"视觉短片(画面驱动、配乐承载情绪)" → 追问故事框架/开场钩子(氛围类常用递进铺垫或氛围卡点开场) → 给候选(如〔治愈氛围〕〔氛围卡点〕)。
**需求框变化:** 叙事结构字段呈现 **视觉短片** 字样 ✅(验证本轮术语定稿生效)
**需求框变化:** 内容形式字段呈现 **视觉短片** 字样 ✅(验证 v28 内容形式独立字段生效)
**验收清单:**
- [ ] 选项文案是否为「视觉短片」而非旧词「视觉脚本」
- [ ] 点击后叙事结构行是否注明"画面驱动"
- [ ] 点击后**内容形式**行是否写入"视觉短片"并注明"画面驱动"(勿再落入结构类字段)
---
@@ -103,14 +106,14 @@
**② 用户点击:** 〔闺蜜反目(多年挚友)〕
**AI 行为(下一轮):** 把人物关系吸收进创意行(如"十年闺蜜因…反目")→ 继续追问决裂导火索或爆点 → 给候选。
**AI 行为(下一轮):** 把人物关系吸收进**人物关系行**(如"闺蜜反目(多年挚友):十年闺蜜因…反目")→ 继续追问决裂导火索或故事爆点 → 给候选。
**需求框变化:** 一句话创意行包含人物关系信息 ✅
**需求框变化:** 人物关系行包含"闺蜜反目(多年挚友)"信息 ✅(v28 独立字段,不再挤在创意行)
**验收清单:**
- [ ] 剧情向输入是否触发"人物/关系"追问(此前 flova 缺口)
- [ ] 剧情向输入是否触发"人物关系"追问(此前 flova 缺口)
- [ ] 追问是否一次一层、不堆问题
- [ ] 点击关系候选后是否写入创意行
- [ ] 点击关系候选后是否写入**人物关系行**(而非一句话故事行)
---
@@ -126,7 +129,7 @@
**AI 气泡(预期):**
> 需求已经很完整:美妆测评、30 秒、妆前妆后反差开场、口播节奏快、结尾挂优惠。直接点 ✓ 提交创作即可。
**需求框变化:** `5/5 已填`
**需求框变化:** 核心 6 项已明确 4 项(内容形式=口播、一句话故事=美妆测评种草、开场钩子=妆前妆后反差、故事框架=反差直给)→ AI 不再追问 ✅
**验收清单:**
- [ ] 信息齐备时 AI 是否**不**输出候选(chips 不出现 = 正常)
@@ -149,7 +152,7 @@
>
> 〔营养早餐的一天〕〔挑食宝宝秒喝光〕〔妈妈偷喝被发现〕
**需求框变化:** 其他约束行出现"儿童牛奶 · 早餐场景 · 禁功效词" ✅
**需求框变化:** 特别要求行出现"儿童牛奶 · 早餐场景 · 禁功效词" ✅
**验收清单:**
- [ ] 附件诉求是否进入需求框对应字段