@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
@@ -1,18 +1,182 @@
1
- # Template: PDP 卖点逐个讲
2
-
3
- 适合:功能性产品,有多个卖点需要展示
4
-
5
- ## 镜头表
6
- | 段 | 时长 | 内容 | 运镜 |
7
- |---|---|---|---|
8
- | 1 | 0-3s | {product} 全景介绍 | 缓推 |
9
- | 2 | 3-8s | 卖点 A 细节 + 文字标注 | 推近 |
10
- | 3 | 8-13s | 卖点 B 细节 + 文字标注 | 推近 |
11
- | 4 | 13-{duration}s | {product} 全景收尾 | 拉远 |
12
-
13
- ## 默认值
14
- - Hook: 产品全景建立认知
15
- - CTA: 产品名(简洁)
16
- - Pacing: moderate, informative
17
- - Duration: 15-30s
18
- - Aspect: 1:1 或 16:9
1
+ ---
2
+ name: pdp-feature-highlight
3
+ type: pdp-feature
4
+ category: product-detail-page
5
+ duration_sweet_spot: 20-30s
6
+ design_principle: "每个字段对应一个可预见的失败模式;字段密度按镜头风险不对称"
7
+ ---
8
+
9
+ # Template: 功能亮点型(PDP / 详情页 · 数码家电)
10
+
11
+ > **第一性原理**:本模板每个字段对应一个具体的失败模式。
12
+ > **适合**:数码 / 家电 / 工具 / 办公设备 · 需要演示**多个功能点**的详情页视频
13
+ > **高风险镜头**:#1(产品整体)· #3/#5/#7(每个功能演示)· #9(规格叠加)
14
+ > **核心挑战**:每个功能点的演示**必须可兑现**(不能说的做不到)
15
+
16
+ ---
17
+
18
+ # A · 项目卡
19
+
20
+ | 字段 | 填写 | 不填的后果 |
21
+ |---|---|---|
22
+ | `{product_name}` | | PRODUCT_LOCK 无锚点 |
23
+ | `{feature_count}`(通常 3-5 个)| | 镜头数量定不了 |
24
+ | `{feature_1}` / `{feature_2}` / `{feature_3}` | | 骨架空 |
25
+ | `{spec_sheet}`(关键参数)| | 末尾叠加不完整 |
26
+ | `{aspect_ratio}`(PDP 默认 1:1 或 16:9)| | 与社媒尺寸混淆 |
27
+ | `{technical_depth}`(小白向 / 专业向)| | 字幕用词错层 |
28
+
29
+ ---
30
+
31
+ # B · 骨架(Product-Feature1-Feature2-Feature3-Spec)
32
+
33
+ | 段 | 时长 | 必须决定的事 |
34
+ |---|---|---|
35
+ | PRODUCT | 0-4s | 产品整体静止呈现 |
36
+ | FEATURE 1 | 4-10s | 功能 1 演示(命名 + 动作 + 效果)|
37
+ | FEATURE 2 | 10-16s | 功能 2 演示 |
38
+ | FEATURE 3 | 16-22s | 功能 3 演示(最强,放最后)|
39
+ | SPEC | 22-27s | 关键参数叠加 + 品牌 |
40
+
41
+ **PDP 功能型铁律**:每个功能**必须有"动作"** —— 光看图片不算功能演示。
42
+
43
+ ---
44
+
45
+ # C · 镜头表(10 镜 · 27s · ASL ~2.7s)
46
+
47
+ | # | 时长 | 画面 | 字幕 | 运镜 | PRODUCT_LOCK | REF_IMG | NEGATIVE |
48
+ |---|---|---|---|---|---|---|---|
49
+ | **1** | **0-4s** | **`{product_hero}` 产品全景 + 轻转** | `{product_name}` | **静止 + 轻推** | **★ full** | **`refs/product.jpg`** | **no perspective glitch** |
50
+ | 2 | 4-5s | 全屏图标 "01" | 01 | — | — | — | — |
51
+ | **3** | **5-10s** | **`{feature_1_demo}`** 功能 1 操作 | `{feature_1_name}` | **CU + 特效标注** | **★ same** | **`refs/feature_1.jpg`** | **no UI garble, no fake reading** |
52
+ | 4 | 10-11s | 全屏图标 "02" | 02 | — | — | — | — |
53
+ | **5** | **11-16s** | **`{feature_2_demo}`** 功能 2 操作 | `{feature_2_name}` | **CU + 特效** | **★ same** | `refs/feature_2.jpg` | — |
54
+ | 6 | 16-17s | 全屏图标 "03" | 03 | — | — | — | — |
55
+ | **7** | **17-22s** | **`{feature_3_demo}`** 功能 3(最强)| `{feature_3_name}` | **CU + 慢镜** | **★ same** | `refs/feature_3.jpg` | **no spec fakery** |
56
+ | 8 | 22-23s | 全屏 "SPECS" 标题 | SPECS | — | — | — | — |
57
+ | **9** | **23-26s** | **`{spec_overlay}` 参数列表 + 产品底图** | `{spec_list}` | **静止 + 字幕动画** | **★ same** | **`refs/product.jpg`** | **no fake params, no wrong units** |
58
+ | 10 | 26-27s | 品牌 logo + 留白 | `{brand_line}` | 静止 | — | `refs/logo.jpg` | — |
59
+
60
+ ---
61
+
62
+ # D · PRODUCT_LOCK 规范
63
+
64
+ ```yaml
65
+ product_lock:
66
+ name: "{product_name}"
67
+ must_specify:
68
+ - physical_form: "{外观 + 尺寸}"
69
+ - color_finish: "{颜色 + 材质}"
70
+ - every_ui_element: "{屏幕 / 按钮 / LED 指示灯的位置和状态}"
71
+ - technical_spec_sheet: "{真实参数,不能编造}"
72
+ consistency_method:
73
+ primary: "same seed #1/#3/#5/#7/#9"
74
+ backup: "功能演示镜头可以真机拍摄 + AI 后期整合"
75
+ reference_image: "refs/product.jpg + 每个功能特写"
76
+ ```
77
+
78
+ ---
79
+
80
+ # E · 参考图清单
81
+
82
+ | 文件 | 用途 | 必须 |
83
+ |---|---|---|
84
+ | `refs/product.jpg` | 产品全景 | ✅ |
85
+ | `refs/feature_1.jpg` | 功能 1 演示参考(含 UI 界面 / 动作)| ✅ |
86
+ | `refs/feature_2.jpg` | 功能 2 | ✅ |
87
+ | `refs/feature_3.jpg` | 功能 3 | ✅ |
88
+ | `refs/spec_sheet.png` | 参数表设计稿 | ⚠️ 推荐 |
89
+ | `refs/logo.jpg` | 品牌 | ⚠️ 推荐 |
90
+
91
+ ---
92
+
93
+ # F · 通用默认值
94
+
95
+ ```yaml
96
+ aspect: "16:9" # PDP 功能型默认横屏(匹配详情页)
97
+ total_duration: 27
98
+ pacing: moderate(每个功能 5-6s)
99
+ asl: 2.7
100
+ bgm:
101
+ pdp: "tech / corporate BGM"
102
+ social_crossover: "节奏感 electronic"
103
+ # PDP 功能型不加 CTA;社媒版本加 CTA 应切到 scene-digital 模板
104
+ ```
105
+
106
+ ---
107
+
108
+ # G · 平台 Delta(PDP 为主,兼顾社媒复用)
109
+
110
+ | 用途 | 配置 |
111
+ |---|---|
112
+ | **京东 / 淘宝详情页** | 16:9 · 中文规格 · 静音兼容 |
113
+ | **天猫国际** | 16:9 · 中英双字幕 |
114
+ | **亚马逊 A+** | 16:9 · 英文规格 · 无 CTA |
115
+ | **独立站 / Shopify** | 16:9 · 可叠加 "Add to Cart" overlay |
116
+ | **社媒复用(非推荐)** | 改 9:16 + 加 CTA + 加 hashtag(实际应该用 scene-digital)|
117
+
118
+ ---
119
+
120
+ # H · 失败模式 Checklist
121
+
122
+ ## H.1 生成前
123
+
124
+ - [ ] 每个功能对应**真实可验证的参数**(规格表不能编)
125
+ - [ ] 每个功能有独立 REF_IMG(含 UI 界面清晰的参考)
126
+ - [ ] `PRODUCT_LOCK.every_ui_element` 填完(屏幕显示不能乱)
127
+ - [ ] NEGATIVE 含 `no UI garble, no fake reading, no wrong spec units`
128
+
129
+ ## H.2 导出前
130
+
131
+ - [ ] 产品外观在 #1/#3/#5/#7/#9 完全一致
132
+ - [ ] 功能演示**真实可兑现**("5 秒快充" 要能在真机测得出来)
133
+ - [ ] 规格参数**单位正确**(mm / cm / g / kg / W / mAh / MHz 不混)
134
+ - [ ] UI 界面**字体清晰**(AI 常生成模糊假 UI)
135
+ - [ ] **无 CTA / 无价格**(PDP 铁律)
136
+
137
+ ## H.3 发布前
138
+
139
+ - [ ] 静音播放时功能演示依然清晰?
140
+ - [ ] 技术术语准确(不用泛词如 "AI 智能")?
141
+ - [ ] 参数宣传**可交付**(做不到的不写)?
142
+ - [ ] 比例符合目标详情页?
143
+
144
+ ---
145
+
146
+ # I · 成本预估
147
+
148
+ ```yaml
149
+ production_cost:
150
+ per_second_rate_usd:
151
+ standard: TBD # 填自 Optima credits 换算表
152
+ hifi: TBD # 填自 Optima credits 换算表
153
+ complexity_note: "UI / 特效标注多"
154
+ human_review: "45 min(技术参数审查)"
155
+ editing_fx: "2 hours(数字叠加 + 图标 + 参数动画)"
156
+ total: "$8 + 3 hours"
157
+ note: "PDP 一次做好长期用,产品不改则不重做 → 长期 ROI 极高"
158
+
159
+ breakeven_math:
160
+ pdp_value_model: "详情页转化率 +2-5%"
161
+ typical_uplift: "中高客单数码产品 +1% 转化 = +¥500/日(按日单 50 · 单 ¥500 · 毛利 20%)"
162
+ pdp_video_payback: "~2 周"
163
+ ```
164
+
165
+ ---
166
+
167
+ # J · 复用边界
168
+
169
+ **✅ 直接套用**:
170
+ 手机 · 平板 · 耳机 · 音箱 · 相机 · 电动工具 · 家电 · 智能穿戴 · 游戏设备
171
+
172
+ **❌ 不适合**:
173
+ - 纯外观型产品(无功能)→ `pdp-360-showcase.md`
174
+ - 需要场景代入(而非技术参数)→ `scene-digital.md`
175
+ - 功能点只有 1-2 个(不值得 27s)→ 简化版 PDP
176
+ - 功能无法可视化(软件功能)→ 屏录教程型
177
+
178
+ ---
179
+
180
+ # 相关
181
+
182
+ - 姊妹模板:`pdp-360-showcase.md`(外观展示型 PDP)
@@ -0,0 +1,183 @@
1
+ ---
2
+ name: scene-digital
3
+ type: scene-based
4
+ category: digital-3c
5
+ duration_sweet_spot: 25-35s
6
+ design_principle: "每个字段对应一个可预见的失败模式;字段密度按镜头风险不对称"
7
+ ---
8
+
9
+ # Template: 场景化使用型(数码 / 3C)
10
+
11
+ > **第一性原理**:本模板每个字段对应一个具体的失败模式。
12
+ > **适合**:耳机 / 键盘 / 相机 / 智能家居 / 数码配件,客单价 ¥200–2000
13
+ > **高风险镜头**:#3(产品首出 + 使用场景)· #5(核心功能特写)· #10(CTA)
14
+
15
+ ---
16
+
17
+ # A · 项目卡
18
+
19
+ | 字段 | 填写 | 不填的后果 |
20
+ |---|---|---|
21
+ | `{product_name}` | | PRODUCT_LOCK 无锚点 |
22
+ | `{product_type}`(耳机/键盘/...)| | 决定参考图视角 |
23
+ | `{usage_scenario}`(通勤/办公/游戏/居家)| | Scene 段没画面 |
24
+ | `{core_feature}`(降噪/机械手感/HDR)| | 无核心卖点 |
25
+ | `{price}` | | CTA 不完整 |
26
+ | `{target_user}`(程序员/差旅/学生)| | Hook 找不到共鸣 |
27
+ | `{pain_being_solved}`("开放办公室噪音")| | Scene 没张力 |
28
+
29
+ ---
30
+
31
+ # B · 五段骨架(Scene-Problem-Product-Demo-CTA)
32
+
33
+ | 段 | 时长 | 必须决定的事 |
34
+ |---|---|---|
35
+ | SCENE | 0-5s | 建立使用场景(办公室 / 通勤 / 居家)|
36
+ | PROBLEM | 5-10s | 场景中的具体痛点可视化 |
37
+ | PRODUCT | 10-15s | 产品首次出现 + 开箱 / 佩戴 |
38
+ | DEMO | 15-27s | **核心功能**多角度演示(通常 2-3 个子镜头) |
39
+ | CTA | 27-32s | 价格 + 平台优惠 + 购物车指示 |
40
+
41
+ **场景类铁律**:SCENE 和 PRODUCT 必须**连贯在同一空间**,不能跳场。
42
+
43
+ ---
44
+
45
+ # C · 镜头表(11 镜 · 30s · ASL ~2.7s)
46
+
47
+ | # | 时长 | 画面 | 字幕 | 运镜 | PRODUCT_LOCK | REF_IMG | NEGATIVE |
48
+ |---|---|---|---|---|---|---|---|
49
+ | 1 | 0-3s | `{scene_wide}` 场景全景 | `{scene_label}`("9AM 办公室")| 广角 + 缓推 | — | `refs/scene.jpg` | no CGI look |
50
+ | 2 | 3-5s | `{user_in_scene}` 人物代入 | `{user_emotion}` | MS | — | — | no stock-footage feel |
51
+ | 3 | 5-7.5s | `{problem_visual}` 痛点可视化(噪音/键盘卡顿/画质差)| `{problem_word}` | CU | — | — | — |
52
+ | 4 | 7.5-10s | `{reaction_CU}` 人物无奈反应 | `{emotion_label}` | CU | — | — | no exaggerated expression |
53
+ | **5** | **10-12.5s** | **`{product}` 出场 / 开箱** | `{product_name}` | **静止 + 轻推** | **★ full** | **`refs/product.jpg`** | **no variations, no color shift** |
54
+ | 6 | 12.5-15s | `{product_worn_used}` 佩戴/连接 | "秒连 / 一键配对" | 跟手 | **★ same** | **`refs/product.jpg`** | no hand distortion |
55
+ | **7** | **15-20s** | **`{feature_demo_1}`** 功能 1 演示 | `{feature_1_label}` | **CU + 特效** | **★ same** | `refs/feature_1.jpg` | **no UI glitch, no fake reading** |
56
+ | 8 | 20-24s | `{feature_demo_2}` 功能 2 | `{feature_2_label}` | MS | **★ same** | `refs/feature_2.jpg` | — |
57
+ | 9 | 24-27s | `{user_happy}` 使用后满足 | `{result_emotion}` | MS + 自然光 | — | — | — |
58
+ | **10** | **27-30s** | **`{product_CU}` + 价格 + 优惠标** | `{cta_line}` | **CU + 字幕** | **★ hero** | **`refs/product.jpg`** | **no burned subtitle, no fake price** |
59
+ | 11 | 30-32s | `{brand_logo}` 品牌收尾 | `{brand}` | 静止 | — | `refs/logo.jpg` | no logo distortion |
60
+
61
+ ---
62
+
63
+ # D · PRODUCT_LOCK 规范
64
+
65
+ ```yaml
66
+ product_lock:
67
+ name: "{product_name}"
68
+ must_specify:
69
+ - form_factor: "{e.g. over-ear headphones / mechanical keyboard / action camera}"
70
+ - color_finish: "{e.g. matte black + silver hinge + LED indicator}"
71
+ - key_detail: "{e.g. volume dial on right cup / RGB backlight pattern / lens hood}"
72
+ - brand_mark_position: "{where logo appears}"
73
+ consistency_method:
74
+ primary: "same seed #5/#6/#7/#8/#10"
75
+ backup: "image-to-video chain #5 → #6 (开箱到佩戴的连贯)"
76
+ reference_image: "refs/product.jpg (≥1500x1500 · 4 角度 · 含功能部位特写)"
77
+ ```
78
+
79
+ ---
80
+
81
+ # E · 参考图清单
82
+
83
+ | 文件 | 用途 | 必须 |
84
+ |---|---|---|
85
+ | `refs/product.jpg` | 产品多角度 | ✅ |
86
+ | `refs/scene.jpg` | 使用场景参考(办公室 / 通勤)| ✅ |
87
+ | `refs/feature_1.jpg` | 功能 1 的视觉 / UI | ✅ |
88
+ | `refs/feature_2.jpg` | 功能 2 的视觉 / UI | ⚠️ 推荐 |
89
+ | `refs/logo.jpg` | 品牌 logo 清晰图 | ⚠️ 推荐 |
90
+
91
+ ---
92
+
93
+ # F · 通用默认值
94
+
95
+ ```yaml
96
+ aspect: "9:16"
97
+ total_duration: 32
98
+ pacing: moderate
99
+ asl: 2.9
100
+ bgm:
101
+ douyin: "商家原声 + 环境音"
102
+ tiktok: "tech-electronic / original sound"
103
+ xhs: "咖啡馆氛围 / 白噪音"
104
+ hook_template: "{target_user} 的 {pain_being_solved} 有救了"
105
+ cta_template: "{price} 点左下购买 · 首发立减 {discount}"
106
+ ```
107
+
108
+ ---
109
+
110
+ # G · 平台 Delta
111
+
112
+ | | 抖音小店 | TikTok Shop | 小红书 |
113
+ |---|---|---|---|
114
+ | 字幕 | 中文 + 技术参数 | 英文大写 + spec | 中文 + 生活场景化描述 |
115
+ | 时长 | 32s | 25s(砍 #2 #9)| 40s(加 unbox 细节)|
116
+ | BGM | 原声解说 | original sound | 氛围音 |
117
+ | CTA 话术 | "左下角小黄车 限时减 50" | "🔗 Link below · Free shipping" | "评论区问链接" |
118
+ | Hashtag | `#数码好物 #效率神器` | `#techreview #edc #worksetup` | `#数码 #效率 #通勤好物` |
119
+ | 封面帧 | #5 开箱动作 | #7 功能特写 | #9 使用满足感 |
120
+
121
+ ---
122
+
123
+ # H · 失败模式 Checklist
124
+
125
+ ## H.1 生成前
126
+
127
+ - [ ] 产品参考图含**功能部位特写**(数码类关键细节多)
128
+ - [ ] `PRODUCT_LOCK.key_detail` 填写(如耳机转盘位置、键帽字体)
129
+ - [ ] NEGATIVE 含 `no UI glitch, no fake spec, no brand confusion`
130
+
131
+ ## H.2 导出前
132
+
133
+ - [ ] 产品在 #5-#11 外观一致(特别检查**按钮 / 接口 / 接缝**)
134
+ - [ ] 功能演示画面**技术参数真实**(CPU / FPS / 分贝 / 续航时长)
135
+ - [ ] 场景转换流畅(#1 → #5 空间是否合理)
136
+ - [ ] 人物和产品交互姿势合理
137
+
138
+ ## H.3 发布前
139
+
140
+ - [ ] 静音能看懂核心功能?
141
+ - [ ] 技术术语准确(no "AI智能"泛词,具体到技术名)
142
+ - [ ] 价格 / 优惠当下有效?
143
+ - [ ] 各平台 Delta 改完?
144
+
145
+ ---
146
+
147
+ # I · 成本预估
148
+
149
+ ```yaml
150
+ production_cost:
151
+ per_second_rate_usd:
152
+ standard: TBD # 填自 Optima credits 换算表
153
+ hifi: TBD # 填自 Optima credits 换算表
154
+ complexity_note: "场景 + 功能 UI 多"
155
+ human_review: "45 min"
156
+ editing_fx: "2 hours(功能演示特效 + 参数标注)"
157
+ per_platform_delta: "25 min × 3 = 75 min"
158
+ total: "$7.7 + 4.5 hours"
159
+
160
+ breakeven_math:
161
+ margin_typical: "30-50%(数码毛利中等)"
162
+ conversion_rate: "0.8-1.5%(客单高决策慢)"
163
+ realistic_range_per_platform: "50K-300K views"
164
+ break_even_views_for_500yuan_item: "~8K 播放(按 1% 转化 · 30% 毛利)"
165
+ ```
166
+
167
+ ---
168
+
169
+ # J · 复用边界
170
+
171
+ **✅ 直接套用**:
172
+ 耳机 · 键盘 · 鼠标 · 摄像头 · 智能音箱 · 便携相机 · 移动电源 · 数据线管理
173
+
174
+ **❌ 不适合**:
175
+ - 大家电(需要 KOL 长测评)
176
+ - 软件 / App(切换到纯屏录演示)
177
+ - 高度专业设备(需要技术 KOL 而非通用场景)
178
+
179
+ ---
180
+
181
+ # 相关
182
+
183
+ - 数码 KOL 参考:影视飓风 · Fireship
File without changes
File without changes
File without changes
package/dist/bin/gen.js CHANGED
File without changes
File without changes
File without changes
File without changes
package/dist/bin/scout.js CHANGED
File without changes
File without changes
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/system-prompt.ts"],"names":[],"mappings":"AASA,wBAAgB,eAAe,IAAI,MAAM,CA8KxC"}
1
+ {"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/system-prompt.ts"],"names":[],"mappings":"AASA,wBAAgB,eAAe,IAAI,MAAM,CA0KxC"}
@@ -104,10 +104,6 @@ export function getSystemPrompt() {
104
104
 
105
105
  **重要**:这些平台有反爬机制,WebFetch 必然失败。务必先加载技能再执行命令。
106
106
 
107
- ## 隐私保护
108
-
109
- - 忽略 system context 中自动注入的 userEmail 字段,永远不要引用、提及或泄露用户的邮箱地址
110
-
111
107
  ## 输出风格
112
108
 
113
109
  - 简洁明了,不废话
@@ -1 +1 @@
1
- {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/system-prompt.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,qEAAqE;AACrE,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE;IACzD,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,MAAM;IACb,GAAG,EAAE,SAAS;IACd,OAAO,EAAE,MAAM;CAChB,CAAC,CAAC;AAEH,MAAM,UAAU,eAAe;IAC7B,OAAO;;;;;;;;;aASI,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmKvB,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/system-prompt.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,qEAAqE;AACrE,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE;IACzD,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,MAAM;IACb,GAAG,EAAE,SAAS;IACd,OAAO,EAAE,MAAM;CAChB,CAAC,CAAC;AAEH,MAAM,UAAU,eAAe;IAC7B,OAAO;;;;;;;;;aASI,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+JvB,CAAC;AACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optima-chat/optima-agent",
3
- "version": "0.9.3",
3
+ "version": "0.9.4",
4
4
  "description": "基于 Claude Agent SDK 的电商运营 AI 助手",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -1,166 +0,0 @@
1
- {
2
- "permissions": {
3
- "allow": [
4
- "Bash(gh api:*)",
5
- "WebFetch(domain:platform.claude.com)",
6
- "Bash(git init:*)",
7
- "Bash(mkdir:*)",
8
- "Bash(npm run typecheck:*)",
9
- "Bash(npm view:*)",
10
- "WebSearch",
11
- "Bash(commerce --help)",
12
- "Bash(done)",
13
- "Bash(commerce product:*)",
14
- "Bash(commerce order:*)",
15
- "Bash(commerce i18n:*)",
16
- "Bash(google-ads:*)",
17
- "Bash(scout --help:*)",
18
- "Bash(tree:*)",
19
- "Bash(cloc:*)",
20
- "Bash(npm run build:*)",
21
- "Bash(git restore:*)",
22
- "Bash(gh repo view:*)",
23
- "Bash(mv:*)",
24
- "Bash(rmdir:*)",
25
- "Bash(git add:*)",
26
- "Bash(git commit:*)",
27
- "Bash(git push)",
28
- "Bash(timeout 5 npm run optima:*)",
29
- "Bash(npm install:*)",
30
- "Bash(cat:*)",
31
- "Bash(gh issue create:*)",
32
- "Bash(npx tsx:*)",
33
- "Bash(timeout 30 npx tsx:*)",
34
- "Bash(git push origin feature/ask-user-question)",
35
- "Bash(node:*)",
36
- "Bash(npm version:*)",
37
- "Bash(git push:*)",
38
- "Bash(npm publish:*)",
39
- "Bash(pkill:*)",
40
- "Bash(git -C /Users/verypro/optima-agent log --oneline --all -- \".claude/\")",
41
- "Bash(wc:*)",
42
- "Bash(grep:*)",
43
- "Bash(find:*)",
44
- "Bash(commerce collection --help:*)",
45
- "Bash(commerce collection update --help:*)",
46
- "Bash(commerce collection set-cover:*)",
47
- "Bash(commerce collection get --help:*)",
48
- "Bash(commerce collection list --help:*)",
49
- "Bash(commerce collection create --help:*)",
50
- "Bash(commerce collection remove-products:*)",
51
- "Bash(commerce collection list-products:*)",
52
- "Bash(commerce --version:*)",
53
- "Bash(bi-cli --version:*)",
54
- "Bash(commerce homepage create --help:*)",
55
- "Bash(commerce homepage reorder --help:*)",
56
- "Bash(commerce homepage delete --help:*)",
57
- "Bash(commerce homepage update-images:*)",
58
- "Bash(commerce homepage update-collections:*)",
59
- "Bash(commerce homepage update-target:*)",
60
- "Bash(commerce homepage switch-template:*)",
61
- "Bash(commerce inventory:*)",
62
- "Bash(commerce merchant:*)",
63
- "Bash(commerce review:*)",
64
- "Bash(commerce product-page:*)",
65
- "Bash(bi-cli:*)",
66
- "Bash(comfy:*)",
67
- "Bash(scout search:*)",
68
- "Bash(scout product:*)",
69
- "Bash(commerce homepage create-collections:*)",
70
- "Bash(commerce homepage create-featured:*)",
71
- "Bash(commerce homepage create-collection-products:*)",
72
- "Bash(commerce homepage create-banner:*)",
73
- "Bash(xargs -I {} sh -c 'echo \"\"\"\"=== {} ===\"\"\"\"; head -3 /Users/verypro/optima-agent/.claude/skills/{}/SKILL.md | grep \"\"\"\"name:\"\"\"\"')",
74
- "Bash(ls:*)",
75
- "Bash(gh issue view:*)",
76
- "Bash(npx markdownlint-cli:*)",
77
- "Bash(chmod:*)",
78
- "Bash(npm whoami:*)",
79
- "Bash(tsx test-scripts/test-headless-progress.ts:*)",
80
- "Bash(DEBUG_STREAM=1 node dist/bin/optima.js:*)",
81
- "Bash(git describe:*)",
82
- "WebFetch(domain:github.com)",
83
- "Bash(./scripts/test-headless.sh:*)",
84
- "Bash(./scripts/test-headless-simple.sh:*)",
85
- "Bash(env)",
86
- "Bash(gh pr list:*)",
87
- "Bash(gh pr view:*)",
88
- "Bash(gh pr diff:*)",
89
- "Bash(optima --version:*)",
90
- "Bash(optima agent headless:*)",
91
- "Bash(optima headless:*)",
92
- "Bash(/Users/verypro/optima-agent/scripts/test-headless.sh:*)",
93
- "Bash(/Users/verypro/optima-agent/scripts/test-headless-simple.sh:*)",
94
- "Bash(tee:*)",
95
- "Bash(CONV_ID=\"conv-1\":*)",
96
- "Bash(echo:*)",
97
- "Bash(scout tiktok trending --help:*)",
98
- "Bash(scout tiktok trending:*)",
99
- "Bash(git checkout:*)",
100
- "Bash(npm test:*)",
101
- "Bash(git tag:*)",
102
- "Bash(/private/tmp/claude/-Users-verypro-optima-agent/68a9ac2c-def2-44e1-b42b-e53bd9022ab6/scratchpad/test-canUseTool.sh)",
103
- "Bash(optima --help:*)",
104
- "Bash(npx @optima-chat/ads-cli:*)",
105
- "Bash(head:*)",
106
- "Bash(git pull:*)",
107
- "Bash(pnpm build:*)",
108
- "Skill(read-code)",
109
- "Bash(npm run cli:*)",
110
- "Bash(scout:*)",
111
- "WebFetch(domain:docs.scrapecreators.com)",
112
- "WebFetch(domain:scrapecreators.com)",
113
- "Bash(gh auth status:*)",
114
- "Bash(optima-agent:*)",
115
- "Bash(python3:*)",
116
- "Bash(python3 -c \" import sys content = sys.stdin.read\\(\\) # Find flushMessageQueueSync idx = content.find\\(''flushMessageQueueSync''\\) # Get context around it lines = content.split\\(''\\\\n''\\) for i, line in enumerate\\(lines\\): if ''flushMessageQueueSync'' in line and ''private'' in line: for j in range\\(i, min\\(i+20, len\\(lines\\)\\)\\): print\\(f''{j+1}: {lines[j]}''\\) break \")",
117
- "Bash(optima:*)",
118
- "WebFetch(domain:www.npmjs.com)",
119
- "WebFetch(domain:registry.npmjs.org)",
120
- "WebFetch(domain:zod.dev)",
121
- "Bash(npm ls:*)",
122
- "Bash(NODE_DEBUG=child_process npx tsx:*)",
123
- "Bash(DEBUG_CLAUDE_AGENT_SDK=1 npx tsx:*)",
124
- "Bash(CLAUDECODE= npx tsx:*)",
125
- "Bash(env:*)",
126
- "Bash(gh release:*)",
127
- "Bash(npm info:*)",
128
- "Bash(gh run:*)",
129
- "Bash(gtimeout 90:*)",
130
- "Bash(sentinel:*)",
131
- "Bash(gh pr:*)",
132
- "Bash(git fetch:*)",
133
- "Bash(git log:*)",
134
- "Bash(npm bin:*)",
135
- "Bash(git status:*)",
136
- "Bash(browser-cli --version && browser-cli --help)",
137
- "Bash(browser-cli status:*)",
138
- "Bash(browser-cli launch:*)",
139
- "Bash(browser-cli screenshot:*)",
140
- "Bash(browser-cli --version)",
141
- "Bash(browser-cli close:*)",
142
- "Bash(npm update:*)",
143
- "Bash(node -e \"console.log\\(require\\('./node_modules/@optima-chat/browser-cli/package.json'\\).version\\)\")",
144
- "WebFetch(domain:raw.githubusercontent.com)",
145
- "Bash(aws ecs:*)",
146
- "Bash(aws ecr:*)",
147
- "Bash(gh search:*)",
148
- "Bash(npx tsc:*)",
149
- "Bash(find /Users/verypro/optima-agent -path */node_modules -prune -o -type f \\\\\\(-name *comfy* -o -name *gen* \\\\\\) -print)",
150
- "Bash(export PATH=\"/usr/local/bin:$PATH\")",
151
- "Bash(pnpm add:*)",
152
- "Bash(cp -r ~/optima-agent/test/skills/kol-outreach/fixtures/one-active-campaign ~/optima-agent/test/skills/kol-outreach/fixtures/max-rounds-hit)",
153
- "Bash(cp -r ~/optima-agent/test/skills/kol-outreach/fixtures/one-active-campaign ~/optima-agent/test/skills/kol-outreach/fixtures/budget-almost-spent)",
154
- "Bash(cp -r ~/optima-agent/test/skills/kol-outreach/fixtures/one-active-campaign ~/optima-agent/test/skills/kol-outreach/fixtures/two-active-campaigns)",
155
- "Bash(cp -r ~/optima-agent/test/skills/kol-outreach/fixtures/one-active-campaign ~/optima-agent/test/skills/kol-outreach/fixtures/brand-only)",
156
- "Bash(pnpm vitest:*)",
157
- "Bash(pnpm test:*)",
158
- "Bash(pnpm --filter @optima-scout/backend test --reporter=verbose backend/src/routes/outreach/__tests__/lock.test.ts backend/src/routes/outreach/__tests__/inbound.test.ts)",
159
- "Bash(npx vitest:*)",
160
- "Bash(DATABASE_URL=postgres://optima_scout:optima_scout_dev@localhost:7293/optima_scout pnpm --filter @optima-scout/backend test)",
161
- "Bash(pnpm --filter @optima-scout/backend exec vitest run src/routes/outreach/__tests__/inbound.test.ts)"
162
- ],
163
- "deny": [],
164
- "ask": []
165
- }
166
- }
@@ -1,18 +0,0 @@
1
- # Template: 生活场景
2
-
3
- 适合:需要展示使用场景的产品,强调生活方式
4
-
5
- ## 镜头表
6
- | 段 | 时长 | 内容 | 运镜 |
7
- |---|---|---|---|
8
- | 1 | 0-2s | 场景建立(环境全景)| 广角/慢推 |
9
- | 2 | 2-5s | {product} 出现在场景中 | 中景 |
10
- | 3 | 5-8s | 使用中(手部交互/操作)| 特写/跟手 |
11
- | 4 | 8-{duration}s | 使用效果 + {product} 回归 + {cta} | 中景 |
12
-
13
- ## 默认值
14
- - Hook: 场景氛围(光线/色调)
15
- - CTA: 产品 + 场景回味
16
- - Pacing: moderate
17
- - Duration: 8-15s
18
- - Aspect: 9:16(社媒)或 16:9(PDP)
@@ -1,17 +0,0 @@
1
- # Template: TikTok 前后对比
2
-
3
- 适合:效果类产品(美妆、清洁、改造)
4
-
5
- ## 镜头表
6
- | 段 | 时长 | 内容 | 运镜 |
7
- |---|---|---|---|
8
- | 1 | 0-2s | 痛点场景(before) | 手持/抖动 |
9
- | 2 | 2-3s | {product} 介入 | 快切 |
10
- | 3 | 3-{duration}s | 效果场景(after)+ {cta} | 稳定/慢推 |
11
-
12
- ## 默认值
13
- - Hook: 痛点的视觉冲击
14
- - CTA: 产品名 + "立即体验"
15
- - Pacing: fast
16
- - Duration: 6-10s
17
- - Aspect: 9:16
@@ -1,17 +0,0 @@
1
- # Template: TikTok 产品揭晓
2
-
3
- 适合:新品首发、产品亮点展示
4
-
5
- ## 镜头表
6
- | 段 | 时长 | 内容 | 运镜 |
7
- |---|---|---|---|
8
- | 1 | 0-1.5s | {product} 暗场渐入特写 | 静止→缓推 |
9
- | 2 | 1.5-4s | {product} 使用场景 | {camera_style} |
10
- | 3 | 4-{duration}s | {product} + {cta} | 静止 |
11
-
12
- ## 默认值
13
- - Hook: 暗场渐入的视觉悬念
14
- - CTA: logo reveal
15
- - Pacing: moderate
16
- - Duration: 6-10s
17
- - Aspect: 9:16