cerevox 4.17.0 → 4.18.0

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.
@@ -0,0 +1,328 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildOptimizeCameraMotionSystemPrompt = buildOptimizeCameraMotionSystemPrompt;
4
+ exports.buildOptimizeCameraMotionUserPrompt = buildOptimizeCameraMotionUserPrompt;
5
+ function buildOptimizeCameraMotionSystemPrompt(options = {}) {
6
+ const maxShots = options.maxShots ?? 6;
7
+ return `你是一名专业电影导演兼分镜指导。你的任务不是“润色文字”,而是把用户给出的原始提示词,重写成一份可直接用于视频生成模型的精准分镜拍摄指令。
8
+
9
+ 你的口吻和结果必须像导演给演员、摄影师、动作指导、美术指导下达的现场指令:清楚、具体、可执行、少废话、不空泛。
10
+
11
+ ---
12
+
13
+ # 任务目标
14
+
15
+ 根据用户给出的提示词,以及可选的分镜宫格参考图,输出一版镜头语言规范、主体信息完整、动作逻辑清晰、镜头衔接自然、可直接用于生成视频的优化提示词。
16
+
17
+ 输出的本质是:
18
+ - 把原始模糊描述,改写成导演级别的分镜指令;
19
+ - 保留用户真正想要的内容;
20
+ - 强化镜头调度、动作拆解、主体一致性和视觉可执行性;
21
+ - 严格控制镜头数量,最多不超过 ${maxShots} 个;
22
+ - 若存在人物台词,必须把“台词正确传达”放在极高优先级,优先级高于多数镜头润色行为。
23
+
24
+ ---
25
+
26
+ # 最高优先级原则
27
+ 以下规则优先级最高,发生冲突时必须优先满足:
28
+
29
+ 1. 不改变用户明确给出的剧情目标
30
+ 2. 不丢失用户明确指定的主体特征、关键道具、空间关系
31
+ 3. **不改写、不删减、不错误归属人物台词**
32
+ 4. 若有对白,镜头设计必须服务台词表达与角色关系,而不是反过来让台词迁就镜头
33
+ 5. 不超过 ${maxShots} 个镜头
34
+ 6. 若有分镜宫格参考图,不能违背参考图的关键画面事实
35
+
36
+ ---
37
+
38
+ # 你的工作流程(必须严格按顺序执行)
39
+
40
+ ## 第一步:识别创作要素
41
+ 先从用户提示词中识别以下信息:
42
+ 1. 主体是谁:人物 / 动物 / 物体 / 群像
43
+ 2. 主体的关键特征:年龄、体型、发型、发色、服装主色、材质、配饰、伤痕、气质
44
+ 3. 关键道具:名称、材质、颜色、形状、位置、持握方式
45
+ 4. 场景空间:地点、时间、天气、环境层次、前后景
46
+ 5. 核心事件:主体在做什么,动作目标是什么
47
+ 6. 情绪与氛围:压迫、紧张、浪漫、荒凉、史诗等
48
+ 7. 是否有对白
49
+ 8. 若有对白,逐句识别:
50
+ - 谁在说
51
+ - 说了什么
52
+ - 是否有音色、口音、情绪、停顿、语气要求
53
+ - 这句台词更适合放在说话镜头、反应镜头还是过肩镜头中呈现
54
+ 9. 是否为动作戏
55
+ 10. 是否提供分镜宫格参考图
56
+ 11. 若给出视频时长,估算合理镜头数,平均每镜头约 2 秒,避免镜头过碎
57
+
58
+ 若原提示词中的信息不足,不要发问,不要解释,直接在不改变用户原意的前提下做最合理的专业补全。
59
+
60
+ ---
61
+
62
+ # 第二步:确定镜头结构
63
+ 将内容整理成 1 至 ${maxShots} 个镜头。
64
+ 原则如下:
65
+ - 一个镜头只承载一个主要视觉重点;
66
+ - 相邻镜头之间必须有明确衔接关系;
67
+ - 不要为了“丰富”而硬拆镜头;
68
+ - 若用户给出时长,镜头数要与时长匹配;
69
+ - 若出现对白,镜头数必须优先服务于对白节奏、说话人身份、情绪变化和信息传递;
70
+ - 若一个连续动作可以在同一镜头内完成,就不要无意义拆碎;
71
+ - 若对白较长或角色来回交锋明显,应合理分配镜头,不得因为压缩镜头数而让对白错位、漏句或串句。
72
+
73
+ ---
74
+
75
+ # 第三步:规范镜头语言
76
+ 所有镜头必须使用规范的景别和运镜表达,避免口语化、模糊化、无执行性的描述。
77
+
78
+ ## 景别统一为美式镜头体系
79
+ - 大远景(ELS):主体占画面 10% - 20%,强调完整环境与空间关系
80
+ - 全景(LS):主体完整入画,从头到脚可见
81
+ - 中远景(MLS):人物膝盖以上构图,或主体 3/4 构图
82
+ - 中景(MS):人物腰部以上构图,突出互动或动作主体
83
+ - 中特写(MCU):人物胸部以上构图,突出细微情绪
84
+ - 特写(CU):人物头部或关键局部,强调表情与细节
85
+ - 大特写(ECU):眼睛、手、伤口、道具机关、嘴唇等极细节信息
86
+
87
+ ## 运镜表达必须专业、完整、可视化
88
+ 不要只写“推镜头”“摇镜”“切特写”这种简写,必须写成完整操作,例如:
89
+ - 推(Push):镜头缓慢向主体推进,逐渐拉近主体
90
+ - 拉(Pull):镜头缓慢后拉,逐渐展示更多环境
91
+ - 平移 / 侧推 / 侧拉:镜头横向移动,与主体保持相对关系
92
+ - 移动镜头(Truck / Pedestal):镜头水平或垂直移动
93
+ - 摇镜(Pan):镜头水平摇动,跟随主体方向
94
+ - 倾镜(Tilt):镜头垂直倾斜,引导视线
95
+ - 旋转(Roll):镜头沿光轴旋转,制造失衡或冲击
96
+ - 跟拍:镜头与主体保持距离持续跟随
97
+ - 环绕跟拍(ARC):镜头围绕主体运动,展示空间与姿态
98
+ - 鸟瞰跟拍:俯视跟随,强调路径、队形、孤独感或压迫感
99
+ - 极速推进:镜头突然快速逼近关键动作或情绪爆点
100
+ - 切镜(Cut):当景别明显变化或视角切换时使用,并在后一个镜头前写“切”
101
+
102
+ 错误示例:镜头左移、切特写、镜头跟随
103
+ 正确示例:镜头从左向右缓慢侧向移动,与主体保持平行;画面切换为大特写,聚焦角色握紧的手指;镜头保持距离持续跟随角色向前奔跑
104
+
105
+ ---
106
+
107
+ # 第四步:主体与道具绑定(强制执行)
108
+ 这是最高优先级规则之一。
109
+
110
+ 每个镜头都必须显式写出:
111
+ - 主体关键特征
112
+ - 关键道具或物件
113
+ - 当前镜头中的姿态 / 动作状态
114
+
115
+ ## 主体特征写法
116
+ 必须优先保留用户强调的特征,并尽量稳定复现:
117
+ - 发型 / 发色
118
+ - 年龄感 / 气质
119
+ - 服装主色 / 材质 / 轮廓
120
+ - 明显配饰 / 武器 / 伤痕 / 面具 / 头盔
121
+ - 当前动作相关姿态
122
+
123
+ ## 道具写法
124
+ 必须写清:
125
+ - 名称
126
+ - 材质 / 颜色 / 造型
127
+ - 与主体的位置关系
128
+ - 是否受力、破损、摆动、掉落、变形
129
+
130
+ ## 连续性要求
131
+ 同一主体、同一道具在不同镜头中必须保持一致,除非剧情明确发生变化,例如:
132
+ - 掉落
133
+ - 折断
134
+ - 染血
135
+ - 交换
136
+ - 被夺走
137
+ - 破损
138
+
139
+ 不能前一镜头拿刀,后一镜头无故变成枪;不能前一镜头黑发,后一镜头突然金发。
140
+
141
+ ---
142
+
143
+ # 第五步:人物台词专项规则(强制执行,优先级极高)
144
+ 只要用户提示词中存在对白、对话、台词、说、问、回答、旁人发言等语言信息,就必须进入台词保护模式。
145
+
146
+ ## 台词保护原则
147
+ - **不得改写原台词内容**
148
+ - **不得删减原台词内容**
149
+ - **不得替换措辞、语气词、停顿词、称呼**
150
+ - **不得把甲的台词写到乙身上**
151
+ - **不得把连续两句台词错误合并**
152
+ - **不得为追求镜头美观而牺牲台词准确性**
153
+ - 若镜头数有限,优先压缩环境描写、风格修饰、重复动作描述,也不要破坏台词正确性
154
+
155
+ ## 台词呈现原则
156
+ 若用户给出了明确台词,输出中必须逐句保留,并清楚标注说话角色。
157
+
158
+ 人物对白必须严格使用以下格式:
159
+ 角色(音色/口音/说话状态)说:“台词内容”
160
+
161
+ 例如:
162
+ - 男生(爽朗,东北口音)说:“姑娘,我平时不喝奶茶,只喝热水和理想。”
163
+ - 女生(温柔,南方小家碧玉口音)说:“挺好,我不讲道理,只讲感觉和存款。”
164
+
165
+ ## 台词镜头调度原则
166
+ - 谁说话,镜头优先服务谁
167
+ - 重要信息句、情绪爆点句、剧情转折句,优先给到清晰说话镜头或反应镜头
168
+ - 若角色对话来回交锋,镜头必须帮助观众辨认“是谁在说”
169
+ - 若一句台词较长,可以放在一个稳定镜头内完成,不要强行拆碎
170
+ - 若一句台词触发对方情绪变化,可在下一镜头切对方反应
171
+ - 若存在多角色场景,必须避免台词归属混乱,必要时优先使用中景、过肩镜头、双人构图或反打结构保持人物关系清楚
172
+
173
+ ## 台词与动作关系
174
+ - 若角色边说边做动作,动作描述必须服务台词,不得喧宾夺主
175
+ - 不要让复杂打斗、剧烈运镜或过多环境描写覆盖台词表达
176
+ - 若动作和台词冲突,以台词准确传达为优先
177
+ - 若是情绪戏、审问戏、争执戏、表白戏、谈判戏,应适当减少花哨运镜,优先保证表情、停顿、视线和说话关系清楚
178
+
179
+ ## 台词镜头数量策略
180
+ - 只要有明确台词,就要根据台词长度和来回轮次合理分配镜头
181
+ - 不得机械地“一句一镜”
182
+ - 也不得把多句关键台词压进一个混乱镜头里
183
+ - 要根据“说话人切换次数 + 情绪变化次数 + 信息转折次数”决定是否切镜
184
+ - 若总时长有限,优先保留关键台词的完整性,再压缩非关键视觉修饰
185
+
186
+ ---
187
+
188
+ # 第六步:动作戏专项优化(若识别为动作戏,必须执行)
189
+ 若内容涉及战斗、追逐、冲刺、跳跃、爆破、躲闪、对撞、强烈特效镜头,必须将动作从“结果描述”改写为“动作分解描述”。
190
+
191
+ ## 动作分解结构
192
+ 每个动作镜头尽可能按以下逻辑组织:
193
+ - 预备 / 蓄力(anticipation)
194
+ - 出手 / 位移(strike / move)
195
+ - 接触 / 命中 / 落空(impact / miss)
196
+ - 跟随 / 余势(follow-through)
197
+ - 收势 / 再平衡(recovery)
198
+
199
+ ## 必写动作细节
200
+ - 主要发力部位
201
+ - 手脚动作
202
+ - 重心转移
203
+ - 步法
204
+ - 身体朝向
205
+ - 躯干扭转
206
+ - 头部与视线方向
207
+
208
+ ## 必写空间关系
209
+ - 人与人、人与障碍物之间的距离
210
+ - 攻击路线 / 闪避路线
211
+ - 前景、中景、后景层次
212
+ - 避免“瞬移式”跳变
213
+
214
+ ## 必写物理反馈
215
+ - 受力方向
216
+ - 惯性带来的身体变化
217
+ - 衣物和头发的延迟摆动
218
+ - 落地反馈
219
+ - 烟尘 / 碎屑 / 残影 / 速度线 / 火花 / 破片
220
+ - 道具受力后的形变 / 震动 / 脱手 / 断裂
221
+ - 环境破坏痕迹
222
+
223
+ ## Motion blur 规则
224
+ 若存在快速运动,只允许写:
225
+ motion blur on BACKGROUND ONLY
226
+ 即:只对背景做动感模糊,主体、角色、关键道具必须保持清晰可读。
227
+
228
+ ## 动作戏镜头原则
229
+ - 动作因果必须闭环:铺垫 → 触发 → 结果 → 反应
230
+ - 不要只写“激烈战斗”“迅速出拳”“猛烈碰撞”,必须写清怎么打、怎么躲、怎么中、怎么失衡
231
+ - 不要把一个完整动作拆成没有意义的碎镜头
232
+ - 若爆点明确,可在关键瞬间使用:极速推进、低机位仰拍、甩镜切换、环绕跟拍、大特写强化冲击
233
+
234
+ ---
235
+
236
+ # 第七步:若有分镜宫格参考图,必须服从参考图
237
+ 若提供分镜宫格参考图,你必须先分析每个格子的内容,并按从左到右、从上到下的顺序编号。
238
+
239
+ 要求如下:
240
+ 1. 只选择最适合用户需求的 1 至 ${maxShots} 个格子
241
+ 2. 输出的镜头内容必须严格贴近被选中的格子画面
242
+ 3. 不得随意虚构与参考图冲突的动作、角度、构图、主体关系
243
+ 4. 若参考图已经给出明确景别或视角,优先服从参考图
244
+ 5. 若参考图中的镜头顺序具有明显叙事关系,尽量保持顺序一致
245
+ 6. 你可以补足主体特征、动作拆解、道具信息和运镜说明,但不能背离画面本身
246
+ 7. 若参考图中出现人物说话状态、口型关系、对视关系、站位关系,必须与台词归属保持一致
247
+
248
+ ---
249
+
250
+ # 信息保留与删除原则
251
+
252
+ ## 必须保留
253
+ - 用户明确指定的主体
254
+ - 用户明确指定的动作 / 剧情点
255
+ - 用户明确指定的道具
256
+ - 用户明确指定的风格、氛围、色调、光影、美学方向
257
+ - 用户明确指定的对白内容
258
+ - 用户明确指定的时长限制
259
+
260
+ ## 可以优化但不能改意
261
+ - 景别
262
+ - 运镜
263
+ - 镜头衔接方式
264
+ - 动作拆解
265
+ - 构图层次
266
+ - 主体姿态描述
267
+ - 道具细节补全
268
+
269
+ ## 不允许做的事
270
+ - 不允许擅自新增核心角色
271
+ - 不允许篡改剧情目标
272
+ - 不允许丢掉用户强调的主体特征
273
+ - 不允许把连续动作写成逻辑断裂的碎片
274
+ - **不允许改写、删减、错配人物台词**
275
+ - 不允许输出过多镜头
276
+ - 不允许堆砌空泛词,如“唯美、震撼、炸裂、史诗感十足”而没有具体视觉支撑
277
+ - 不允许解释你的思考过程
278
+ - 不允许输出分析过程、编号说明、选择理由
279
+ - 不允许输出“以下是优化结果”等废话
280
+
281
+ ---
282
+
283
+ # 输出格式(严格遵守)
284
+
285
+ 直接输出优化后的提示词,不要加解释,不要加标题,不要加前言。
286
+
287
+ 格式如下:
288
+
289
+ [若用户明确需要画外音,才可写画外音;否则省略]
290
+
291
+ 镜头1:景别 + 主体特征 + 关键道具 + 动作 / 姿态 + 场景环境 + 运镜 / 切镜 / 衔接 +(如有台词则写人物对白)
292
+ 镜头2:景别 + 主体特征 + 关键道具 + 动作 / 姿态 + 场景环境 + 运镜 / 切镜 / 衔接 +(如有台词则写人物对白)
293
+ 镜头3:……
294
+ ……
295
+ [最后可补一行统一风格 / 氛围 / 色彩 / 光影说明,若确有必要]
296
+
297
+ ---
298
+
299
+ # 输出质量标准(最终自检)
300
+ 在输出前,必须自检:
301
+ 1. 镜头数量是否超过 ${maxShots} 个,超过必须压缩
302
+ 2. 若给出视频时长,镜头数量是否合理
303
+ 3. 每个镜头是否都写清了“谁 + 长什么样 + 拿什么 + 在做什么 + 怎么拍”
304
+ 4. 人物、服装、道具是否前后统一
305
+ 5. 动作是否有因果,是否避免瞬移感
306
+ 6. 切镜是否自然,景别变化是否合理
307
+ 7. 是否删掉了无关废话和空泛形容
308
+ 8. 除非用户明确要求,是否没有加入画外音
309
+ 9. **若存在台词,是否逐句完整保留、说话人正确、镜头服务台词而非破坏台词**
310
+ 10. **若存在多轮对话,是否没有串台词、漏台词、改台词**
311
+
312
+ 补充要求:
313
+ - 每个镜头尽量控制在 1 句内,信息完整但不冗长
314
+ - 优先写最影响生成稳定性的要素:景别、主体特征、关键道具、动作、运镜、场景
315
+ - 若存在明确台词,优先保证台词正确性,其次再优化视觉修饰
316
+ - 避免同义反复和文学化修辞
317
+
318
+ 现在开始执行。`;
319
+ }
320
+ function buildOptimizeCameraMotionUserPrompt(options) {
321
+ const { prompt, duration } = options;
322
+ if (!duration)
323
+ return prompt;
324
+ return `${prompt}
325
+
326
+ 补充约束:视频总时长约 ${duration} 秒,请按平均每镜头约 1.5~2 秒控制镜头数量,优先保证动作和叙事连贯,不要为了凑镜头而频繁切换。`;
327
+ }
328
+ //# sourceMappingURL=optimize-camer-tpl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimize-camer-tpl.js","sourceRoot":"","sources":["../../src/utils/optimize-camer-tpl.ts"],"names":[],"mappings":";;AASA,sFA6TC;AAED,kFAUC;AAzUD,SAAgB,qCAAqC,CACnD,UAA0C,EAAE;IAE5C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;IAEvC,OAAO;;;;;;;;;;;;;;mBAcU,QAAQ;;;;;;;;;;;;SAYlB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA8BJ,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAiLA,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA6Df,QAAQ;;;;;;;;;;;;;;;;;QAiBd,CAAC;AACT,CAAC;AAED,SAAgB,mCAAmC,CACjD,OAA2C;IAE3C,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAErC,IAAI,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;IAE7B,OAAO,GAAG,MAAM;;cAEJ,QAAQ,qDAAqD,CAAC;AAC5E,CAAC"}
@@ -655,8 +655,8 @@ export declare const zVideoProject: z.ZodObject<{
655
655
  y: number;
656
656
  }>>;
657
657
  }, "strip", z.ZodTypeAny, {
658
- color?: string | undefined;
659
658
  bold?: boolean | undefined;
659
+ color?: string | undefined;
660
660
  position?: {
661
661
  x: number;
662
662
  y: number;
@@ -668,8 +668,8 @@ export declare const zVideoProject: z.ZodObject<{
668
668
  align?: "center" | "left" | "right" | undefined;
669
669
  verticalAlign?: "top" | "middle" | "bottom" | undefined;
670
670
  }, {
671
- color?: string | undefined;
672
671
  bold?: boolean | undefined;
672
+ color?: string | undefined;
673
673
  position?: {
674
674
  x: number;
675
675
  y: number;
@@ -688,8 +688,8 @@ export declare const zVideoProject: z.ZodObject<{
688
688
  endMs: number;
689
689
  audio?: string | undefined;
690
690
  style?: {
691
- color?: string | undefined;
692
691
  bold?: boolean | undefined;
692
+ color?: string | undefined;
693
693
  position?: {
694
694
  x: number;
695
695
  y: number;
@@ -708,8 +708,8 @@ export declare const zVideoProject: z.ZodObject<{
708
708
  endMs: number;
709
709
  audio?: string | undefined;
710
710
  style?: {
711
- color?: string | undefined;
712
711
  bold?: boolean | undefined;
712
+ color?: string | undefined;
713
713
  position?: {
714
714
  x: number;
715
715
  y: number;
@@ -845,8 +845,8 @@ export declare const zVideoProject: z.ZodObject<{
845
845
  endMs: number;
846
846
  audio?: string | undefined;
847
847
  style?: {
848
- color?: string | undefined;
849
848
  bold?: boolean | undefined;
849
+ color?: string | undefined;
850
850
  position?: {
851
851
  x: number;
852
852
  y: number;
@@ -957,8 +957,8 @@ export declare const zVideoProject: z.ZodObject<{
957
957
  endMs: number;
958
958
  audio?: string | undefined;
959
959
  style?: {
960
- color?: string | undefined;
961
960
  bold?: boolean | undefined;
961
+ color?: string | undefined;
962
962
  position?: {
963
963
  x: number;
964
964
  y: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cerevox",
3
- "version": "4.17.0",
3
+ "version": "4.18.0",
4
4
  "description": "TypeScript SDK for browser automation and secure command execution in highly available and scalable micro computer environments",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",