@optima-chat/optima-agent 0.9.3 → 0.9.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/.claude/skills/channels/SKILL.md +7 -14
  2. package/.claude/skills/video-edit/SKILL.md +255 -0
  3. package/.claude/skills/video-gen/SKILL.md +188 -66
  4. package/.claude/skills/video-gen/templates/INDEX.md +78 -0
  5. package/.claude/skills/video-gen/templates/before-after-beauty.md +183 -0
  6. package/.claude/skills/video-gen/templates/drama-fmcg.md +183 -0
  7. package/.claude/skills/video-gen/templates/kol-reaction-food.md +193 -0
  8. package/.claude/skills/video-gen/templates/multi-point-apparel.md +185 -0
  9. package/.claude/skills/video-gen/templates/pain-solution-home.md +184 -0
  10. package/.claude/skills/video-gen/templates/pdp-360-showcase.md +189 -17
  11. package/.claude/skills/video-gen/templates/pdp-feature-highlight.md +182 -18
  12. package/.claude/skills/video-gen/templates/scene-digital.md +183 -0
  13. package/dist/bin/bi-cli.js +0 -0
  14. package/dist/bin/browser-cli.js +0 -0
  15. package/dist/bin/commerce.js +0 -0
  16. package/dist/bin/gen.js +0 -0
  17. package/dist/bin/google-ads.js +0 -0
  18. package/dist/bin/logistics.js +0 -0
  19. package/dist/bin/optima.js +0 -0
  20. package/dist/bin/scout.js +0 -0
  21. package/dist/bin/sentinel.js +0 -0
  22. package/dist/bin/shopify.js +0 -0
  23. package/dist/src/system-prompt.d.ts.map +1 -1
  24. package/dist/src/system-prompt.js +0 -4
  25. package/dist/src/system-prompt.js.map +1 -1
  26. package/package.json +1 -1
  27. package/.claude/settings.local.json +0 -166
  28. package/.claude/skills/video-gen/templates/lifestyle-scene.md +0 -18
  29. package/.claude/skills/video-gen/templates/tiktok-before-after.md +0 -17
  30. package/.claude/skills/video-gen/templates/tiktok-product-reveal.md +0 -17
  31. package/.claude/skills/video-gen/templates/tiktok-unboxing.md +0 -18
  32. package/dist/bin/comfy.d.ts +0 -3
  33. package/dist/bin/comfy.d.ts.map +0 -1
  34. package/dist/bin/comfy.js +0 -3
  35. package/dist/bin/comfy.js.map +0 -1
  36. package/dist/bin/growth.d.ts +0 -3
  37. package/dist/bin/growth.d.ts.map +0 -1
  38. package/dist/bin/growth.js +0 -3
  39. package/dist/bin/growth.js.map +0 -1
  40. package/dist/src/hooks-loader.d.ts +0 -6
  41. package/dist/src/hooks-loader.d.ts.map +0 -1
  42. package/dist/src/hooks-loader.js +0 -215
  43. package/dist/src/hooks-loader.js.map +0 -1
  44. package/dist/src/ui/App.d.ts +0 -6
  45. package/dist/src/ui/App.d.ts.map +0 -1
  46. package/dist/src/ui/App.js +0 -164
  47. package/dist/src/ui/App.js.map +0 -1
  48. package/dist/src/ui/components/Composer.d.ts +0 -10
  49. package/dist/src/ui/components/Composer.d.ts.map +0 -1
  50. package/dist/src/ui/components/Composer.js +0 -13
  51. package/dist/src/ui/components/Composer.js.map +0 -1
  52. package/dist/src/ui/components/Header.d.ts +0 -7
  53. package/dist/src/ui/components/Header.d.ts.map +0 -1
  54. package/dist/src/ui/components/Header.js +0 -7
  55. package/dist/src/ui/components/Header.js.map +0 -1
  56. package/dist/src/ui/components/Message.d.ts +0 -12
  57. package/dist/src/ui/components/Message.d.ts.map +0 -1
  58. package/dist/src/ui/components/Message.js +0 -21
  59. package/dist/src/ui/components/Message.js.map +0 -1
  60. package/dist/src/ui/components/MessageList.d.ts +0 -9
  61. package/dist/src/ui/components/MessageList.d.ts.map +0 -1
  62. package/dist/src/ui/components/MessageList.js +0 -18
  63. package/dist/src/ui/components/MessageList.js.map +0 -1
  64. package/dist/src/ui/components/Spinner.d.ts +0 -6
  65. package/dist/src/ui/components/Spinner.d.ts.map +0 -1
  66. package/dist/src/ui/components/Spinner.js +0 -7
  67. package/dist/src/ui/components/Spinner.js.map +0 -1
  68. package/dist/src/ui/components/StatusBar.d.ts +0 -11
  69. package/dist/src/ui/components/StatusBar.d.ts.map +0 -1
  70. package/dist/src/ui/components/StatusBar.js +0 -7
  71. package/dist/src/ui/components/StatusBar.js.map +0 -1
  72. package/dist/src/ui/components/index.d.ts +0 -7
  73. package/dist/src/ui/components/index.d.ts.map +0 -1
  74. package/dist/src/ui/components/index.js +0 -7
  75. package/dist/src/ui/components/index.js.map +0 -1
  76. package/dist/src/validation/error-formatter.d.ts +0 -21
  77. package/dist/src/validation/error-formatter.d.ts.map +0 -1
  78. package/dist/src/validation/error-formatter.js +0 -98
  79. package/dist/src/validation/error-formatter.js.map +0 -1
  80. package/dist/src/validation/index.d.ts +0 -10
  81. package/dist/src/validation/index.d.ts.map +0 -1
  82. package/dist/src/validation/index.js +0 -10
  83. package/dist/src/validation/index.js.map +0 -1
  84. package/dist/src/validation/json-validator.d.ts +0 -25
  85. package/dist/src/validation/json-validator.d.ts.map +0 -1
  86. package/dist/src/validation/json-validator.js +0 -173
  87. package/dist/src/validation/json-validator.js.map +0 -1
  88. package/dist/src/validation/schema.d.ts +0 -353
  89. package/dist/src/validation/schema.d.ts.map +0 -1
  90. package/dist/src/validation/schema.js +0 -57
  91. package/dist/src/validation/schema.js.map +0 -1
  92. package/dist/src/validation/suggestions.d.ts +0 -25
  93. package/dist/src/validation/suggestions.d.ts.map +0 -1
  94. package/dist/src/validation/suggestions.js +0 -144
  95. package/dist/src/validation/suggestions.js.map +0 -1
  96. package/dist/src/validation/types.d.ts +0 -40
  97. package/dist/src/validation/types.d.ts.map +0 -1
  98. package/dist/src/validation/types.js +0 -5
  99. package/dist/src/validation/types.js.map +0 -1
  100. package/dist/src/validation/yaml-validator.d.ts +0 -25
  101. package/dist/src/validation/yaml-validator.d.ts.map +0 -1
  102. package/dist/src/validation/yaml-validator.js +0 -177
  103. package/dist/src/validation/yaml-validator.js.map +0 -1
@@ -0,0 +1,183 @@
1
+ ---
2
+ name: before-after-beauty
3
+ type: before-after
4
+ category: beauty
5
+ duration_sweet_spot: 20-25s
6
+ design_principle: "每个字段对应一个可预见的失败模式;字段密度按镜头风险不对称"
7
+ ---
8
+
9
+ # Template: 效果对比型(美妆 / 护肤 / 清洁)
10
+
11
+ > **第一性原理**:本模板每个字段对应一个具体的失败模式。
12
+ > **适合**:美妆 / 护肤 / 洗护 / 家居清洁,客单价 ¥80–500
13
+ > **高风险镜头**:#4(产品应用 CU)· #7(after 特写)· #9(CTA)
14
+
15
+ ---
16
+
17
+ # A · 项目卡(**对抗"决策基础不全"**)
18
+
19
+ | 字段 | 填写 | 不填的后果 |
20
+ |---|---|---|
21
+ | `{product_name}` | | PRODUCT_LOCK 无锚点 |
22
+ | `{product_type}`(面膜/粉底/洁面/...) | | 影响镜头动作(涂抹/按压/清洁)|
23
+ | `{effect_claim}`("提亮两个度")| | Hook 无承诺点 |
24
+ | `{price}` / `{original_price}` | | CTA 写不出 |
25
+ | `{target_skin}`(油皮/干皮/敏感)| | 受众不清,参考图用错 |
26
+ | `{before_condition}`(暗黄/干燥/痘痘)| | #1 #2 拍不出可视化痛点 |
27
+ | `{after_state}`(透亮/水润/净透)| | #6 #7 拍不出 reveal |
28
+
29
+ ---
30
+
31
+ # B · 五段骨架(Before-Apply-After-Proof-CTA)
32
+
33
+ | 段 | 时长 | 必须决定的事 |
34
+ |---|---|---|
35
+ | BEFORE | 0-4s | 展示**哪种皮肤问题**?(暗黄/出油/细纹)|
36
+ | APPLY | 4-10s | 展示**产品使用动作**(涂抹/按压/停留多久)|
37
+ | AFTER | 10-15s | 以**什么机位**展示效果(同角度对比 / 时间流逝)|
38
+ | PROOF | 15-20s | 拿什么证据:**成分 / 销量 / 评论 / KOL 背书**(四选一)|
39
+ | CTA | 20-25s | 限时 + 赠品 + 位置指示 |
40
+
41
+ **效果对比类铁律**:BEFORE 和 AFTER **必须同角度同光线**,否则"对比"失效。
42
+
43
+ ---
44
+
45
+ # C · 镜头表(字段密度按风险不对称)
46
+
47
+ | # | 时长 | 画面 | 字幕 | 运镜 | PRODUCT_LOCK | REF_IMG | NEGATIVE |
48
+ |---|---|---|---|---|---|---|---|
49
+ | 1 | 0-2s | `{before_CU}` 面部痛点特写 | `{pain_label}`("暗黄"/"出油") | CU 正脸 + 环形光 | — | `refs/before.jpg` | no skin distortion |
50
+ | 2 | 2-4s | `{pain_multi_angle}` 多角度痛点 | 痛点词 ×3 | 侧脸 / 仰角 | — | — | — |
51
+ | 3 | 4-6s | `{product}` 开瓶 / 挤出 | `{product_name}` | CU + 静止 | **★ full** | **`refs/product.jpg`** | **no label distortion, no color shift** |
52
+ | **4** | **6-10s** | **`{apply_motion}`** 涂抹 / 按压 | `{apply_verb}`("轻拍"/"按摩")| **MS 跟手 + 45° 侧光** | **★ same** | **`refs/product.jpg`** | **no extra fingers, no smudge on product** |
53
+ | 5 | 10-13s | `{time_lapse}` 变化过程 | "5 分钟后" | 定格 + 淡入淡出 | — | — | — |
54
+ | **6** | **13-15s** | **`{after_CU}` 效果特写** | `{after_word}`("透亮"/"水润")| **CU 同机位对比** | — | **`refs/after.jpg`** | **no over-smoothed skin, no unrealistic glow** |
55
+ | 7 | 15-17s | `{side_by_side}` 对比拼图 | "before / after" | 静止 | — | `refs/compare.jpg` | no mirror flip |
56
+ | 8 | 17-20s | `{proof_evidence}` 成分/销量/评论 | "{proof_label}" | 屏录 | — | `refs/proof.png` | no fake data |
57
+ | **9** | **20-25s** | **`{product_hero}` + 价格 + 购物车箭头** | `{cta_line}` | **CU + 轻推** | **★ hero** | **`refs/product.jpg`** | **no burned-in subtitle** |
58
+
59
+ ---
60
+
61
+ # D · PRODUCT_LOCK 规范
62
+
63
+ ```yaml
64
+ product_lock:
65
+ name: "{product_name}"
66
+ must_specify:
67
+ - bottle_shape: "{e.g. pump / dropper / squeeze tube}"
68
+ - color_palette: "{e.g. nude pink + white + gold accent}"
69
+ - label_text: "{e.g. 中文品牌 + 英文 product line + 容量}"
70
+ - cap_style: "{e.g. screw-top / flip-top / pump head}"
71
+ consistency_method:
72
+ primary: "same seed across #3/#4/#9"
73
+ backup: "image-to-video chain #3 → #4 (apply motion 续接)"
74
+ reference_image: "refs/product.jpg (≥1200x1200 白底 + 3 角度)"
75
+ ```
76
+
77
+ ---
78
+
79
+ # E · 参考图清单
80
+
81
+ | 文件 | 用途 | 必须 |
82
+ |---|---|---|
83
+ | `refs/product.jpg` | 产品主图(白底 · ≥1200x1200)| ✅ |
84
+ | `refs/before.jpg` | before 皮肤状态参考 | ✅ |
85
+ | `refs/after.jpg` | after 效果参考(同角度同光线)| ✅ |
86
+ | `refs/compare.jpg` | 对比拼图参考 | ⚠️ 推荐 |
87
+ | `refs/proof.png` | 成分 / 销量 / 评论截图 | ✅ |
88
+
89
+ **对比类铁律**:`refs/before.jpg` 和 `refs/after.jpg` **必须同机位同光线**,否则 AI 生成时会出现角度不一致。
90
+
91
+ ---
92
+
93
+ # F · 通用默认值
94
+
95
+ ```yaml
96
+ aspect: "9:16"
97
+ total_duration: 25
98
+ pacing: slow-moderate
99
+ asl: 2.8
100
+ bgm:
101
+ douyin: "商家原声(轻柔)"
102
+ tiktok: "original sound / satisfying ASMR"
103
+ xhs: "治愈钢琴 / 纯音乐"
104
+ hook_template: "{target_skin} 姐妹还在 {pain_noun} 吗?"
105
+ cta_template: "{price}(原价 {original_price})送 {gift}"
106
+ ```
107
+
108
+ ---
109
+
110
+ # G · 平台 Delta
111
+
112
+ | | 抖音小店 | TikTok Shop | 小红书 |
113
+ |---|---|---|---|
114
+ | 字幕 | 中文 | 英文 + "GLOW UP ✨" | 中文 + 表情 + 成分党术语 |
115
+ | 时长 | 25s(master)| 22s | 30s(加前置"成分解读")|
116
+ | BGM | 商家原声 | original sound (ASMR) | 纯音乐 |
117
+ | CTA 话术 | "小黄车 送同品牌面膜" | "Linked in bio ✨" | "评论区扣 1 发链接" |
118
+ | Hashtag | `#美妆护肤 #护肤心得` | `#skincaretiktok #glowup #beforeafter` | `#护肤 #成分党 #抗老` |
119
+ | 封面帧 | #6 after CU | #7 side-by-side 对比 | #4 涂抹动作 |
120
+
121
+ ---
122
+
123
+ # H · 失败模式 Checklist
124
+
125
+ ## H.1 生成前
126
+
127
+ - [ ] `refs/before.jpg` 和 `refs/after.jpg` **同机位同光线**
128
+ - [ ] `refs/product.jpg` ≥ 1200x1200 且**标签文字清晰**
129
+ - [ ] `PRODUCT_LOCK.label_text` 填写完整(AI 易生成乱码 label)
130
+ - [ ] NEGATIVE 含 `no label distortion / no text garble`
131
+
132
+ ## H.2 导出前
133
+
134
+ - [ ] 产品在 #3/#4/#9 外观一致(特别检查**瓶身标签**是否乱码)
135
+ - [ ] BEFORE vs AFTER 是否同角度(对比类视频死穴)
136
+ - [ ] 皮肤过度美化?(`no over-smoothed skin` 触发)
137
+ - [ ] AFTER 特写里**没有产品**(产品只在应用段出现)
138
+
139
+ ## H.3 发布前
140
+
141
+ - [ ] 静音能看懂"前后对比"逻辑?
142
+ - [ ] 2× 播放节奏跟得上?
143
+ - [ ] 效果承诺是否违反广告法(医美词 / 神奇 / 最好)?← **美妆额外红线**
144
+ - [ ] 各平台 Delta 改完?
145
+
146
+ ---
147
+
148
+ # I · 成本预估
149
+
150
+ ```yaml
151
+ production_cost:
152
+ per_second_rate_usd:
153
+ standard: TBD # 填自 Optima credits 换算表
154
+ hifi: TBD # 填自 Optima credits 换算表
155
+ complexity_note: "美妆特写 prompt 更复杂"
156
+ human_review: "45 min(广告法审查额外)"
157
+ editing: "1.5 hour"
158
+ per_platform_delta: "20 min × 3 = 1 hour"
159
+ total: "$5.4 + 3.5 hours"
160
+
161
+ breakeven_math:
162
+ if_product_margin: "{margin} (美妆毛利通常 60-70%)"
163
+ conversion_rate_assumption: "1.5%"
164
+ realistic_range_per_platform: "20K-200K views (美妆赛道高)"
165
+ ```
166
+
167
+ ---
168
+
169
+ # J · 复用边界
170
+
171
+ **✅ 直接套用**:
172
+ 面膜 · 精华 · 粉底 · 眼霜 · 洗面奶 · 身体乳 · 清洁工具(如洁面仪)
173
+
174
+ **❌ 不适合**:
175
+ - 香水(不可视化 → 换 kol-reaction-food 类模板)
176
+ - 美容仪 ≥¥500 → KOL 信任型
177
+ - 家居清洁 → `pain-solution-home.md`(痛点驱动而非美学驱动)
178
+
179
+ ---
180
+
181
+ # 相关
182
+
183
+ - 美妆广告法红线参考:国标 GB/T 2716(不含医美宣称)
@@ -0,0 +1,183 @@
1
+ ---
2
+ name: drama-fmcg
3
+ type: drama
4
+ category: fmcg
5
+ duration_sweet_spot: 25-35s
6
+ design_principle: "每个字段对应一个可预见的失败模式;字段密度按镜头风险不对称"
7
+ ---
8
+
9
+ # Template: 剧情植入型(快消 / 咖啡 / 饮料 / 办公零食)
10
+
11
+ > **第一性原理**:本模板每个字段对应一个具体的失败模式。
12
+ > **适合**:办公咖啡 / 功能饮料 / 便携零食 / 即饮茶 / 助眠食品,客单价 ¥20–100
13
+ > **高风险镜头**:#5(产品植入瞬间)· #8(使用后转变)· #10(CTA)
14
+ > **核心挑战**:产品不能生硬,必须"长在剧情里"
15
+
16
+ ---
17
+
18
+ # A · 项目卡
19
+
20
+ | 字段 | 填写 | 不填的后果 |
21
+ |---|---|---|
22
+ | `{product_name}` | | PRODUCT_LOCK 无锚点 |
23
+ | `{product_use_moment}`(提神/解压/加餐)| | 剧情场景选不对 |
24
+ | `{price}` | | CTA 写不出 |
25
+ | `{story_protagonist}`(打工人/学生/宝妈)| | 剧情无主角 |
26
+ | `{story_conflict}`(下午 3 点昏昏欲睡)| | Tension 段空 |
27
+ | `{resolution_moment}`(喝一口精神百倍)| | Resolve 段空 |
28
+ | `{brand_tone}`(治愈/逗趣/热血)| | 整体风格错乱 |
29
+
30
+ ---
31
+
32
+ # B · 五段骨架(Setup-Tension-Product-Resolve-CTA)
33
+
34
+ | 段 | 时长 | 必须决定的事 |
35
+ |---|---|---|
36
+ | SETUP | 0-5s | 建立场景 + 主角(不露品)|
37
+ | TENSION | 5-12s | 冲突升级(可视化痛点达到顶点)|
38
+ | PRODUCT | 12-18s | 产品**自然出现**(不是硬广) |
39
+ | RESOLVE | 18-28s | 使用后转变(情绪反转)|
40
+ | CTA | 28-33s | 价格 + 同款购买引导 |
41
+
42
+ **剧情类铁律**:产品必须**在故事的"功能性转折点"出现**,不是"突然硬塞"。
43
+
44
+ ---
45
+
46
+ # C · 镜头表(12 镜 · 33s · ASL ~2.8s)
47
+
48
+ | # | 时长 | 画面 | 字幕 | 运镜 | PRODUCT_LOCK | REF_IMG | NEGATIVE |
49
+ |---|---|---|---|---|---|---|---|
50
+ | 1 | 0-2s | `{scene_establish}` 场景定位 | `{time_label}`("周一下午 3:00")| 广角 + 自然光 | — | `refs/scene.jpg` | no stock-look |
51
+ | 2 | 2-4s | `{protagonist_intro}` 主角出场 | `{protagonist_state}`("已经 crash 了")| MS + 自然 | — | — | no exaggerated acting |
52
+ | 3 | 4-7s | `{struggling_closeup}` 挣扎细节(打哈欠/揉眼)| `{struggle_detail}` | CU | — | — | no fake gestures |
53
+ | 4 | 7-12s | `{tension_peak}` 冲突顶点(眼看要误事)| `{tension_word}` | 节奏加快 + 紧张 BGM | — | — | no cliché over-drama |
54
+ | **5** | **12-15s** | **`{product_entry}` 产品自然入镜** | — | **CU 产品 + 主角手伸向** | **★ full** | **`refs/product.jpg`** | **no jump cut, no obvious insertion** |
55
+ | 6 | 15-18s | `{product_detail}` 产品近景 | `{product_name}` | 微推 | **★ same** | `refs/product.jpg` | — |
56
+ | 7 | 18-22s | `{usage_moment}` 使用瞬间(喝/吃/打开)| `{usage_verb}` | CU + 音效 | **★ same** | — | no mouth distortion |
57
+ | **8** | **22-26s** | **`{resolution_shift}`** 情绪反转 | `{resolve_word}`("瞬间复活")| **MS 表情特写** | — | **`refs/protagonist_happy.jpg`** | **no over-acted joy** |
58
+ | 9 | 26-28s | `{story_continue}` 主角继续行动 | `{action_verb}` | 跟拍 | — | — | — |
59
+ | **10** | **28-31s** | **`{product_CU}` + 价格 + 购物车标** | `{cta_line}` | **CU + 字幕** | **★ hero** | **`refs/product.jpg`** | **no burned subtitle** |
60
+ | 11 | 31-32s | 品牌 slogan | `{brand_slogan}` | 静止 | — | `refs/logo.jpg` | — |
61
+ | 12 | 32-33s | 留白 + 品牌色 | — | 静止 | — | — | — |
62
+
63
+ ---
64
+
65
+ # D · PRODUCT_LOCK 规范
66
+
67
+ ```yaml
68
+ product_lock:
69
+ name: "{product_name}"
70
+ must_specify:
71
+ - package_type: "{瓶 / 罐 / 袋 / 盒}"
72
+ - color_accent: "{产品主色}"
73
+ - logo_position: "{瓶身 / 盖 / 标签}"
74
+ - size_cue: "{手持对比比例}"
75
+ consistency_method:
76
+ primary: "same seed #5/#6/#7/#10"
77
+ backup: "产品镜头独立拍摄(真品+白底)再合成到剧情"
78
+ reference_image: "refs/product.jpg(≥1200x1200 白底 + 持握示意图)"
79
+ ```
80
+
81
+ ---
82
+
83
+ # E · 参考图清单
84
+
85
+ | 文件 | 用途 | 必须 |
86
+ |---|---|---|
87
+ | `refs/product.jpg` | 产品白底主图 | ✅ |
88
+ | `refs/scene.jpg` | 剧情场景参考(办公室 / 咖啡厅 / 教室)| ✅ |
89
+ | `refs/protagonist.jpg` | 主角人设(若用 AI 生成)| **仅 AI 生成时必须** |
90
+ | `refs/protagonist_happy.jpg` | 主角反转后情绪 | ⚠️ 推荐 |
91
+ | `refs/logo.jpg` | 品牌 logo | ⚠️ 推荐 |
92
+
93
+ ---
94
+
95
+ # F · 通用默认值
96
+
97
+ ```yaml
98
+ aspect: "9:16"
99
+ total_duration: 33
100
+ pacing: moderate(前慢后快)
101
+ asl: 2.8
102
+ bgm:
103
+ douyin: "商家原声 + 环境音"
104
+ tiktok: "cinematic / narrative BGM"
105
+ xhs: "治愈电影感"
106
+ hook_template: "{story_protagonist} 的 {scene_label} 是不是这样..."
107
+ cta_template: "{price} 同款 · {offer}"
108
+ ```
109
+
110
+ ---
111
+
112
+ # G · 平台 Delta
113
+
114
+ | | 抖音小店 | TikTok Shop | 小红书 |
115
+ |---|---|---|---|
116
+ | 字幕 | 中文剧情化 | 英文 + POV 句式 | 中文 + 情绪感叹 |
117
+ | 时长 | 33s | 28s(砍 #4 或 #9)| 40s(加背景故事)|
118
+ | 剧情调性 | 共鸣型(贴近打工人)| POV 高能 | 治愈系 |
119
+ | BGM | 商家原声 | cinematic beat | 治愈 |
120
+ | CTA 话术 | "看完还不买吗?左下角" | "POV: you found it 👇" | "评论区问同款" |
121
+ | Hashtag | `#职场日常 #打工人自救` | `#POV #workdayvibes #lifehack` | `#治愈瞬间 #打工人日常 #种草` |
122
+ | 封面帧 | #4 tension 顶点 | #8 反转瞬间 | #9 故事延续 |
123
+
124
+ ---
125
+
126
+ # H · 失败模式 Checklist
127
+
128
+ ## H.1 生成前
129
+
130
+ - [ ] 剧情**逻辑自洽**(主角为什么会用这个产品?)
131
+ - [ ] 产品植入**不生硬**(RESOLVE 必须对应 TENSION 的 pain)
132
+ - [ ] NEGATIVE 含 `no jump cut, no obvious insertion, no over-drama`
133
+ - [ ] 主角演出**自然**(AI 易生成过度表情)
134
+
135
+ ## H.2 导出前
136
+
137
+ - [ ] 产品在 #5/#6/#7/#10 外观一致
138
+ - [ ] 主角**面部 / 情绪连贯**(#2/#3/#8 应为同一人)
139
+ - [ ] 剧情因果链成立(场景 → 冲突 → 产品 → 反转)
140
+ - [ ] 产品**不抢戏**(占画面 ≤25% 时间)
141
+ - [ ] CTA 不破坏剧情结尾氛围
142
+
143
+ ## H.3 发布前
144
+
145
+ - [ ] 静音能看懂剧情?(剧情类对字幕要求更高)
146
+ - [ ] 反转效果**够明显**(让观众"哈"一声)
147
+ - [ ] 产品功效宣称**合规**(不是药品 / 不是神奇效果)
148
+ - [ ] 各平台 Delta 改完?
149
+
150
+ ---
151
+
152
+ # I · 成本预估
153
+
154
+ ```yaml
155
+ production_cost:
156
+ per_second_rate_usd:
157
+ standard: TBD # 填自 Optima credits 换算表
158
+ hifi: TBD # 填自 Optima credits 换算表
159
+ complexity_note: "人物表演 + 场景丰富"
160
+ human_review: "30 min"
161
+ editing_narrative: "2.5 hours(剧情节奏 + 情绪 BGM)"
162
+ per_platform_delta: "25 min × 3 = 75 min"
163
+ total: "$8.4 + 4.5 hours"
164
+
165
+ breakeven_math:
166
+ margin_typical: "40-60%(快消中高毛利)"
167
+ conversion_rate: "1-2%(剧情类情感转化中等)"
168
+ realistic_range_per_platform: "30K-300K views"
169
+ brand_value_beyond_sales: "剧情类的品牌记忆度高,长尾效应比痛点-解决型强"
170
+ ```
171
+
172
+ ---
173
+
174
+ # J · 复用边界
175
+
176
+ **✅ 直接套用**:
177
+ 办公咖啡 · 功能饮料 · 便携零食 · 即饮茶 · 助眠食品 · 提神糖果 · 速食汤包
178
+
179
+ **❌ 不适合**:
180
+ - 需要详细说明的产品(如新品类教育)→ KOL 试用
181
+ - 视觉美学驱动(如美妆)→ 效果对比
182
+ - 纯功能展示(如数码)→ 场景化使用
183
+ - 高客单价(剧情投入产出比低)
@@ -0,0 +1,193 @@
1
+ ---
2
+ name: kol-reaction-food
3
+ type: kol-reaction
4
+ category: food
5
+ duration_sweet_spot: 30-45s
6
+ design_principle: "每个字段对应一个可预见的失败模式;字段密度按镜头风险不对称"
7
+ ---
8
+
9
+ # Template: KOL 真实反应型(食品 / 饮料 / 预制菜)
10
+
11
+ > **第一性原理**:本模板每个字段对应一个具体的失败模式。
12
+ > **适合**:零食 / 饮料 / 预制菜 / 生鲜 / 调味品,客单价 ¥30–200
13
+ > **高风险镜头**:#3(开箱)· #5(入口瞬间 / 味觉反应)· #8(CTA)
14
+ > **信任核心**:#5 的**真实反应 CU** — 伪造反应 = 内容即死
15
+
16
+ ---
17
+
18
+ # A · 项目卡
19
+
20
+ | 字段 | 填写 | 不填的后果 |
21
+ |---|---|---|
22
+ | `{product_name}` | | PRODUCT_LOCK 无锚点 |
23
+ | `{product_category}`(零食/饮料/主食) | | 入口镜头拍摄方式不同 |
24
+ | `{price}` | | CTA 写不出 |
25
+ | `{target_user}`(打工人/学生/宝妈)| | Hook 找不到切入 |
26
+ | `{kol_type}`(头部美食 / 素人开箱 / 主持专业)| | 镜头语言全盘变 |
27
+ | `{taste_descriptor}`(甜咸/酥脆/麻辣)| | 味觉反应无法指导 |
28
+ | `{product_highlights}`(3 个卖点:新鲜度 / 口感 / 份量)| | PROOF 空 |
29
+
30
+ ---
31
+
32
+ # B · 五段骨架(Intro-Unbox-Taste-Reaction-CTA)
33
+
34
+ | 段 | 时长 | 必须决定的事 |
35
+ |---|---|---|
36
+ | INTRO | 0-5s | KOL 登场 + 产品预告("今天试{product}")|
37
+ | UNBOX | 5-12s | 包装展示 + 产地 / 规格介绍 |
38
+ | TASTE | 12-20s | **入口瞬间**(CU 核心,不可替代)|
39
+ | REACTION | 20-35s | 真实口头 + 表情 + 特征描述 |
40
+ | CTA | 35-42s | 评分 + 价格 + 限时优惠 |
41
+
42
+ **食品类铁律**:#5 TASTE 段必须是**真实 KOL 或真人演员**拍摄,AI 生成易出现"假笑 / 嘴型不对 / 咀嚼违和"。
43
+
44
+ ---
45
+
46
+ # C · 镜头表(12 镜 · 42s · ASL ~3.5s · 慢于其他类型)
47
+
48
+ | # | 时长 | 画面 | 字幕 | 运镜 | PRODUCT_LOCK | REF_IMG | NEGATIVE |
49
+ |---|---|---|---|---|---|---|---|
50
+ | 1 | 0-2.5s | `{kol_hero_shot}` KOL 本人 CU | `{kol_intro}`("今天吃{product}") | CU | — | `refs/kol.jpg` | **no deepfake**, no facial distortion |
51
+ | 2 | 2.5-5s | `{product_in_hand}` KOL 举产品 | `{product_name}` | MS | **★ partial** | `refs/product.jpg` | no product warp |
52
+ | **3** | **5-9s** | **`{unboxing_sequence}` 开箱过程** | `{unboxing_detail}`("真空包装/锁鲜膜")| **跟手 + CU** | **★ full** | **`refs/product_packaging.jpg`** | **no label garble, no brand confusion** |
53
+ | 4 | 9-12s | `{product_close_up}` 食物本体特写 | `{visual_label}`("芝士爆浆")| 微距 + 自然光 | — | `refs/food_close.jpg` | no unappetizing color |
54
+ | **5** | **12-16s** | **`{taste_moment}` 入口 CU** | `{taste_onomatope}`("咔嚓")| **CU 正脸 + 咀嚼 ASMR** | — | **`refs/kol.jpg`** | **no fake chewing, no mouth distortion** |
55
+ | 6 | 16-20s | `{reaction_freeze}` 吃到瞬间定格 | `{exclaim_word}` | 定格 + 字幕爆出 | — | — | no over-acted reaction |
56
+ | 7 | 20-25s | `{taste_description}` KOL 语言描述 | `{descriptor_1}`("外酥里嫩")| MS | — | — | — |
57
+ | 8 | 25-30s | `{comparison_analogy}` 类比描述 | `{descriptor_2}`("像...但更...")| MS + B-roll | — | — | — |
58
+ | 9 | 30-33s | `{product_multi_flavor}` 其他口味展示 | `{flavors_list}` | 快切 | **★ same** | `refs/product_variants.jpg` | no color shift |
59
+ | 10 | 33-37s | `{rating_graphic}` 评分字幕卡 | `{rating}`("★★★★☆")| 静止 + 图形叠加 | — | — | — |
60
+ | **11** | **37-41s** | **`{product_CU}` + 价格 + 小黄车箭头** | `{cta_line}` | **CU + 轻推** | **★ hero** | **`refs/product.jpg`** | **no burned subtitle** |
61
+ | 12 | 41-42s | KOL 挥手 / 品牌 | `{sign_off}` | MS | — | — | — |
62
+
63
+ ---
64
+
65
+ # D · PRODUCT_LOCK 规范
66
+
67
+ ```yaml
68
+ product_lock:
69
+ name: "{product_name}"
70
+ must_specify:
71
+ - package_shape: "{e.g. 立式袋装 / 罐装 / 盒装}"
72
+ - label_colors: "{主色 + 副色}"
73
+ - label_text: "{中英文品牌 + 口味名 + 净含量}"
74
+ - food_appearance: "{颜色 + 形状 + 表面纹理}"
75
+ consistency_method:
76
+ primary: "same seed #3/#4/#9/#11"
77
+ backup: "单独拍真实 KOL + AI 生成产品镜头拼接"
78
+ reference_image: "refs/product.jpg + refs/food_close.jpg + refs/kol.jpg"
79
+ ```
80
+
81
+ **特别警告**:食品包装的**条码 / 生产日期 / 配料表**是 AI 的灾难区。NEGATIVE 必加 `no barcode distortion, no fake date, no ingredient garble`。
82
+
83
+ ---
84
+
85
+ # E · 参考图清单
86
+
87
+ | 文件 | 用途 | 必须 |
88
+ |---|---|---|
89
+ | `refs/product.jpg` | 产品整体(带包装)| ✅ |
90
+ | `refs/product_packaging.jpg` | 包装细节 | ✅ |
91
+ | `refs/food_close.jpg` | 食物本体特写 | ✅ |
92
+ | `refs/kol.jpg` | KOL 本人参考(若用真人拍摄则可跳过)| **仅 AI 生成 KOL 时必须** |
93
+ | `refs/product_variants.jpg` | 多口味合影 | ⚠️ 推荐 |
94
+
95
+ **食品类铁律**:#5 TASTE 段**优先用真人拍摄再合成**,AI 生成的吃相难以过审。
96
+
97
+ ---
98
+
99
+ # F · 通用默认值
100
+
101
+ ```yaml
102
+ aspect: "9:16"
103
+ total_duration: 42
104
+ pacing: slow-moderate
105
+ asl: 3.5
106
+ bgm:
107
+ douyin: "商家原声 / KOL 本人声"
108
+ tiktok: "original sound with chewing ASMR"
109
+ xhs: "治愈轻音乐 + 环境音"
110
+ hook_template: "{target_user} 的 {category} 清单加上这个"
111
+ cta_template: "{price}(原价 {original_price}){limited_offer}"
112
+ ```
113
+
114
+ ---
115
+
116
+ # G · 平台 Delta
117
+
118
+ | | 抖音小店 | TikTok Shop | 小红书 |
119
+ |---|---|---|---|
120
+ | 字幕 | 中文 + 口味描述 | 英文 + foodie terms | 中文 + 配料表解读 |
121
+ | 时长 | 42s(master)| 35s | 50s(加背景故事)|
122
+ | KOL 风格 | 真实 / 口音亲切 | 高能 / 戏剧 | 精致 / 氛围 |
123
+ | BGM | KOL 原声 + ASMR | original sound | 轻音乐 |
124
+ | CTA 话术 | "小黄车 ¥29.9 抢" | "Link below! $4.99 🔥" | "评论区扣 1 拿链接" |
125
+ | Hashtag | `#好吃到哭 #零食推荐` | `#foodreview #snacksoftiktok #tasty` | `#美食 #宝藏零食 #种草` |
126
+ | 封面帧 | #6 反应定格 | #5 入口瞬间 | #4 食物特写 |
127
+
128
+ ---
129
+
130
+ # H · 失败模式 Checklist
131
+
132
+ ## H.1 生成前
133
+
134
+ - [ ] 决定 #5 TASTE 段用**真人拍摄**还是 AI 生成(真人更稳)
135
+ - [ ] `refs/product_packaging.jpg` 含完整包装信息(条码 / 生产日期可不清晰但要存在)
136
+ - [ ] NEGATIVE 含 `no barcode distortion, no fake date, no ingredient garble, no unappetizing color`
137
+ - [ ] 口味描述避免医疗词("增强免疫力""改善睡眠"等)
138
+
139
+ ## H.2 导出前
140
+
141
+ - [ ] KOL 面部一致性(若 AI 生成,严防 deepfake 风险)
142
+ - [ ] 食物颜色**诱人真实**(不要过度饱和成假色)
143
+ - [ ] 包装文字可读(品牌名可见,不是乱码)
144
+ - [ ] 口味描述**可兑现**(说"爆浆"真的有爆浆画面)
145
+
146
+ ## H.3 发布前
147
+
148
+ - [ ] 静音能看懂"KOL 在吃什么" + "评分几分"?
149
+ - [ ] 2× 能跟上节奏?
150
+ - [ ] 是否符合广告法(食品不可有"最""第一""治愈""功效"等)?← 食品红线
151
+ - [ ] 保质期 / 过敏原信息是否需要补字幕?
152
+ - [ ] 各平台 Delta 改完?
153
+
154
+ ---
155
+
156
+ # I · 成本预估
157
+
158
+ ```yaml
159
+ production_cost:
160
+ per_second_rate_usd:
161
+ standard: TBD # 填自 Optima credits 换算表
162
+ hifi: TBD # 填自 Optima credits 换算表
163
+ complexity_note: "混合真人 + AI"
164
+ real_kol_filming: "$0-$500(自己拍 OR 雇 KOL)"
165
+ human_review: "45 min(食品广告法审查重)"
166
+ editing_asmr: "2 hours(ASMR 音效 + 字幕爆出)"
167
+ per_platform_delta: "20 min × 3 = 1 hour"
168
+ total: "$6 + $0-500 + 4 hours"
169
+
170
+ breakeven_math:
171
+ margin_typical: "30-50%(食品毛利中等)"
172
+ conversion_rate: "2-4%(食品冲动消费高)"
173
+ realistic_range_per_platform: "20K-500K views"
174
+ ```
175
+
176
+ ---
177
+
178
+ # J · 复用边界
179
+
180
+ **✅ 直接套用**:
181
+ 零食 · 饮料 · 预制菜 · 调味品 · 乳制品 · 茶叶 · 咖啡豆
182
+
183
+ **❌ 不适合**:
184
+ - 生鲜(需要产地溯源型,非 KOL 反应型)
185
+ - 保健品 → 严格广告法限制,需专门模板
186
+ - 婴幼儿食品 → 需专家背书型模板
187
+ - 高客单名贵食材(松露 / 鱼子酱)→ 奢侈品型模板
188
+
189
+ ---
190
+
191
+ # 相关
192
+
193
+ - 食品广告法参考:国标 GB 7718 / GB 13432