cerevox 2.31.0 → 2.32.1

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.
@@ -11,41 +11,7 @@ const node_path_1 = __importDefault(require("node:path"));
11
11
  const axios_1 = __importDefault(require("axios"));
12
12
  const form_data_1 = __importDefault(require("form-data"));
13
13
  const mime_1 = __importDefault(require("mime"));
14
- const api_1 = require("@coze/api");
15
- const jwtSecret = `-----BEGIN PRIVATE KEY-----
16
- MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC23at7LLNiTO5R
17
- M/382vGetlShF/F2Cg7mdqdqkqLWEk4qil5u49th70qRlQSPgcfRrYAMDC9kZnwQ
18
- Uoyn8oatJ4FsSyCcIQlR0VPSCCKfUzvFFaDgjwOeBxYMITo8tut7winE/8MeNuUq
19
- a0q0l1ckFz7/MmyYHMK9ZPaZT7uPXvbYaLh33yPsieaHy0dDvpGqYdweqdZpv5tn
20
- rh9crYvlOYWhIs6iJv7g7bEig+UCttChxAiGzCHc3A/Xd1VNKFb73YLNv8FxBJLn
21
- jPiLyBB1M4g8dO5JR4Cer+aB+D56XD4cIXQluhK/JXoWmozMWBZdC4LdtDFEvs9S
22
- 1Hp2YszzAgMBAAECggEASqjEK1z7vCWWozar+wFU5qygbsj8v2mp3bQR9DP8IZSF
23
- r16g4XtMBXcSJdAGdaTR9Sx1+/U5oC8rdeqOHL+q9qULdTBTFwtx56KkKztBD3WH
24
- EJcdALHDE1DnUnp6cXFpQTTros+dVQeqlqAJdyPW4xhOkxh+N7h+VZ8UA1IHTKgT
25
- Fx8spSdDOF1xfdJInGq6Kb0qEboq3ou+3cp/e1Bikn9yvhkn0Mdwv4Hv5npxwr1Q
26
- QjjpbvrYuFPyXfHWRRu3ZE5KwESXtPSFeRkV6WzoxKzqgEueiPHV/WUdP6Oisewb
27
- W72mV8b3Y23pL9wIDhrblZay6t/PN+s4bH3+6xAuEQKBgQDiz9msl2HnKdu5fQKy
28
- ZngVazBfgce0XdqW+hZgCA8Ni7iWcTviw7kSHur6AdGlhxPam/CPhhlIFi5wufLC
29
- 4O39WZPjVtQyfJDrFcBdqngZuaSOZTs59e8I/Se32lw8LpktllqMMLiJdz5h/J0P
30
- /Uh5K/hrcIinhQhqYAcxxhU1GwKBgQDOZgz8n39ZJDmk4hqyLDlOItxMfSeqHpVz
31
- A8WQX+aMVDjecruNY7j8sq1A9FZvYtiinfCF7fjg9a1p+lriSLGsHayb0F1AFYFw
32
- N2Hvk710FOTkJiNCrSS3gvZnf4W2mfWz/vDb8hW9zZtezubSnoaDcOgltwZgbdai
33
- QqOwkD29CQKBgDYCdL0qlz+qsg3rfNbqm7HOAojbqKiEqObGysk3Yg5BtUTt1erb
34
- 3Jg6EI5UHI4kKlAmThR/REnsLkbdoLdTRJjN2e+K36DeFMxGM7aaP1sw38Sgyoe0
35
- zqT/U5PuRYR3PDak1Q8JEwh5ArvmoagLElT4aYF8HK53eVeLYmsx1h79AoGANHyr
36
- LMr6vZaCujVtiIXKhN5Em4bwQUjJxJfe89oPbPw2Agu3Ojtz3X8qo+v+1xCR+rij
37
- Y8uikMKpONwbpJPL6vMY4/7W1+cgJYNP+nbdpNlzY7l3Gguh3LEHLEa3oDoCy6U3
38
- ZxdnA/93VWLUPBdoKaDayEyE6JzGCjlcGxhzOtECgYB40KE4VMIYF9PKgVtL9tsX
39
- DZrcsp7PiKtUrWhz96+nygKu678Lj/O4ReB0H1hQE04nkQ+eZHqH4WaIznKYvDUi
40
- mSde5ZXN60jcQDm0UYojdYpY55oitD4uG9avkUZcMJVKQTueoAePU2XEnHy+43gk
41
- EbZOiRJrh3lzjEVzA5VZGA==
42
- -----END PRIVATE KEY-----`;
43
- const JWTConfig = {
44
- appId: '1106342691264',
45
- userId: 'cerevox-zerocut',
46
- keyid: '9sqmlwZFiwLMqa3gVqUfxtolHktVDrwaLe4RUYFGq_s',
47
- privateKey: jwtSecret,
48
- };
14
+ const sandbox_1 = require("../core/sandbox");
49
15
  let tokenBuffer = null;
50
16
  const BASE_URL = 'https://api.coze.cn';
51
17
  async function applyToken() {
@@ -53,21 +19,17 @@ async function applyToken() {
53
19
  if (tokenBuffer && tokenBuffer.expires_in * 1000 > now) {
54
20
  return tokenBuffer;
55
21
  }
56
- const config = JWTConfig;
57
- const baseUrl = BASE_URL;
58
- if (!config) {
59
- throw new Error('JWT 配置不存在');
60
- }
61
- const payload = {
62
- baseURL: baseUrl,
63
- appId: config.appId,
64
- aud: new URL(baseUrl).host,
65
- keyid: config.keyid,
66
- privateKey: config.privateKey,
67
- sessionName: config.userId,
68
- };
69
- // 如果缓存不存在或即将过期,获取新 token
70
- tokenBuffer = await (0, api_1.getJWTToken)(payload);
22
+ // eslint-disable-next-line custom/no-fetch-in-src
23
+ const res = await fetch(sandbox_1.ADMIN_HOST, {
24
+ method: 'POST',
25
+ headers: {
26
+ 'Content-Type': 'application/json',
27
+ },
28
+ body: JSON.stringify({
29
+ apiKey: process.env.CEREVOX_API_KEY,
30
+ }),
31
+ });
32
+ tokenBuffer = (await res.json());
71
33
  return tokenBuffer;
72
34
  }
73
35
  async function uploadFile(localFile) {
@@ -1 +1 @@
1
- {"version":3,"file":"coze.js","sourceRoot":"","sources":["../../src/utils/coze.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coze.js","sourceRoot":"","sources":["../../src/utils/coze.ts"],"names":[],"mappings":";;;;;AAYA,gCAmBC;AAED,gCA4DC;AAED,kCA4BC;AA3HD,sDAAyB;AACzB,0DAA6B;AAC7B,kDAA0B;AAC1B,0DAAiC;AACjC,gDAAwB;AAExB,6CAA6C;AAE7C,IAAI,WAAW,GAAoB,IAAI,CAAC;AAExC,MAAM,QAAQ,GAAG,qBAAqB,CAAC;AAEhC,KAAK,UAAU,UAAU;IAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,WAAW,IAAI,WAAW,CAAC,UAAU,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC;QACvD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,kDAAkD;IAClD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,oBAAU,EAAE;QAClC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe;SACpC,CAAC;KACH,CAAC,CAAC;IAEH,WAAW,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAa,CAAC;IAC7C,OAAO,WAAW,CAAC;AACrB,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,SAAiB;IAChD,MAAM,QAAQ,GAAG,CAAC,MAAM,UAAU,EAAE,CAAC,CAAC,YAAY,CAAC;IACnD,MAAM,MAAM,GAAG,iBAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAE1C,MAAM,UAAU,GAAG,mBAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAEzC,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,IAAI,EAAE,CAAC;IAEjC,eAAe;IACf,MAAM,IAAI,GAAG,IAAI,mBAAQ,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE;QAC1B,QAAQ,EAAE,UAAU,CAAC,IAAI,GAAG,GAAG;QAC/B,WAAW,EAAE,cAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,0BAA0B;KAC7D,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,QAAQ,CAAC;IAEzB,OAAO;IACP,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAAC,GAAG,OAAO,kBAAkB,EAAE,IAAI,EAAE;QACpE,OAAO,EAAE;YACP,cAAc,EAAE,qBAAqB;YACrC,aAAa,EAAE,UAAU,QAAQ,EAAE;SACpC;KACF,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAE3B,mCAAmC;IAEnC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAE7B,MAAM,WAAW,GAAG,qCAAqC,CAAC;IAC1D,MAAM,OAAO,GAAG;QACd,aAAa,EAAE,UAAU,QAAQ,EAAE;QACnC,cAAc,EAAE,kBAAkB;KACnC,CAAC;IAEF,MAAM,IAAI,GAAG;QACX,WAAW,EAAE,qBAAqB;QAClC,UAAU,EAAE;YACV,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;SAClC;KACF,CAAC;IAEF,kDAAkD;IAClD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;QACnC,MAAM,EAAE,MAAM;QACd,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IACjC,IAAI,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzC,OAAO;QACL,GAAG;KACJ,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,WAAW,CAC/B,UAAkB,EAClB,UAAkC;IAElC,MAAM,QAAQ,GAAG,CAAC,MAAM,UAAU,EAAE,CAAC,CAAC,YAAY,CAAC;IACnD,MAAM,WAAW,GAAG,qCAAqC,CAAC;IAC1D,MAAM,OAAO,GAAG;QACd,aAAa,EAAE,UAAU,QAAQ,EAAE;QACnC,cAAc,EAAE,kBAAkB;KACnC,CAAC;IAEF,MAAM,IAAI,GAAG;QACX,WAAW,EAAE,UAAU;QACvB,UAAU;KACX,CAAC;IAEF,kDAAkD;IAClD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;QACnC,MAAM,EAAE,MAAM;QACd,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IACjC,IAAI,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cerevox",
3
- "version": "2.31.0",
3
+ "version": "2.32.1",
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",
@@ -1,182 +0,0 @@
1
- # 通用视频规则
2
-
3
- 你通过 Zerocut 根据用户需求合成通用视频
4
-
5
- ## 标准流水线
6
-
7
- ### 新建
8
-
9
- 1. 确保项目已正确开启:`zerocut-project-open` 已被调用
10
- 2. 根据剧情设计选择语音 → 使用 `search-voices` 选择合适的配音音色,若用户指定了voice_id,则直接使用该音色ID,无需验证
11
- 3. 剧本规范 → 调用`get-storyboard-schema`获取最新剧本规范 → 编写 story_board.json(受众、脚本、风格、角色、场景)
12
- 4. 剧本润色 → 检查并修改剧本的角色,确保每个场景角色的外貌、妆造、衣着特征在 start_frame 中描述完整以保证一致性
13
- 5. 素材生成(严格按顺序)
14
- 1) 配音 `generate-scene-tts`
15
- 2) 图片 `generate-image` + 视频 `generate-video`
16
- 或 `generate-video-by-ref` 参考图生视频
17
- 3) 背景音乐 `generate-music`
18
- 6. 技术规范 → 调用`get-video-project-schema`获取最新规范 → 根据规范创建 draft_content.json
19
- 7. 执行渲染 → `compile-and-run` 输出成品并自动下载到本地
20
- 8. 关闭项目 → `zerocut-project-close`
21
-
22
- ### 修改
23
-
24
- 1. 确保项目已启动 → `zerocut-project-open`
25
- 2. 修改脚本 → 更新 story_board.json
26
- 3. 更新素材 → 重新生成需要修改的素材
27
- 4. 更新技术规范 → 更新 draft_content.json
28
- 5. 执行渲染 → `compile-and-run` 自动下载成品
29
- 6. 关闭项目 → `zerocut-project-close`
30
-
31
- ---
32
-
33
- ## 详细工作流
34
-
35
- 1. `zerocut-project-open`
36
- 2. 使用`search-voices`选择合适的配音音色
37
- 3. 创建 story_board.json
38
- - 在每个场景中指定选定的voice_id
39
- - 可反复修改 story_board.json 直至每个场景的 start_frame 都包含完整的该场景出现角色的信息,检查一致性
40
- 4. 严格按顺序为每个场景生成素材:
41
- 此时根据每个场景不同的特点,有两种视频素材生成方式:
42
- * 方式一(story_board 的当前 scene 设置 video_type: start_frame 或 start_end_frame):
43
- 1) `generate-scene-tts`生成配音(确定时长:接口返回数据中durationMs为配音时长)
44
- 2) `generate-image`生成首帧图片→`generate-video`生成视频
45
- * 视频生成回退策略:
46
- - 优先使用`generate-video`生成动态视频
47
- - 如用户指定选择kenburns方案,则优先使用 type: kenburns 生成视频,否则仅当`generate-video`多次失败时,才使用kenburns作为回退方案
48
- - Ken Burns特效选择(回退时使用):
49
- - 6秒内:zoom类型(zoom_in, zoom_out)
50
- - 6秒以上:pan类型(pan_left, pan_right, pan_up, pan_down)
51
- * 方式二(story_board 的当前 scene 设置 video_type: references):
52
- 1) `generate-scene-tts`生成配音(确定时长:接口返回数据中durationMs为配音时长)
53
- 2) `generate-video-by-ref`参考图生视频
54
- 5. `generate-music`生成背景音乐
55
- 6. 创建`draft_content.json`:
56
- - ⚠️ 必须包含完整的VideoProject结构
57
- - 除非用户明确拒绝,否则`draft_content.json`中必须包含字幕:
58
- - 字幕文本严格一致性:字幕内容必须与 story_board.json 中每个场景的 script 字段**逐字逐句完全相同**,包括标点符号、语气词、诗意表达
59
- - 严格禁止:任何形式的简化、概括或改写,禁止擅自增加、删除或修改任何文字内容
60
- - 时间轴同步:字幕时间轴必须与对应的视频精确同步(无延迟,与视频时间轴对齐)
61
- 7. `compile-and-run`渲染并自动下载成片
62
- 8. `zerocut-project-close`
63
-
64
- ## 角色参考图
65
- * 当 `stage_atmosphere.characters` 中设置 `apply_reference_image: true` 时,生成场景图片应使用对应的角色参考图,确保角色形象一致性,否则应不传
66
-
67
- ---
68
-
69
- ## 质量建议
70
-
71
- ### 工作流管理
72
- * 规划先行:先分析制定执行计划
73
- * 工作流顺序:规划→搜索→配音→图片→视频→BGM→字幕→渲染下载
74
- * 音色选择:使用`search-voices`筛选配音音色,匹配场景情感
75
- * 配音优先:先生成配音确定时长,再生成视频(视频时长=ceil(配音秒数),3-16秒)
76
- * 时长控制:配音超16秒需简化台词或拆分场景
77
- - 如简化台词,请务必先修改 story_board.json 中的 script 或 dialog 字段,确保生成语音时的一致性
78
- * 视频生成策略:
79
- * 方式一:
80
- - 默认**优先使用**`generate-video`生成动态视频
81
- * 方式二:
82
- - 仅使用`generate-video-by-ref`参考图生视频,用户明确指定使用参考图生视频时,才使用该方案
83
- * 方式三:
84
- - 回退方案,除非用户指定必须使用kenburns方案,否则仅在`generate-video`或`generate-video-by-ref`多次失败时使用kenburns模型作为回退方案
85
- * 时间轴计算规则:
86
- - 视频时长为整秒:clip的durationMs必须是1000的倍数
87
- - 时间轴以视频为准:基于整秒计算,而非配音精确毫秒数
88
- - 配音时长用于确定视频时长:配音7008ms→视频8000ms
89
- - 转场滤镜独立性:转场效果不影响音视频时间轴对齐,音频和字幕保持原始时间同步
90
- * 音频修改后的时间同步:
91
- - 重要:用户修改声音后,如新音频时长发生变化,视频必须重新与声音时间同步
92
- - 重新计算视频时长:新配音时长→向上取整到秒→更新视频durationMs
93
- - 同步更新draft_content.json中所有相关的时间轴参数
94
- * draft_content.json时间轴原则:
95
- - 核心原则:tracks时间轴一律以视频为准
96
- - 音频track必须对齐视频时间轴,不能以音频原始时长为准
97
- - 字幕track必须对齐视频时间轴,确保显示时长与视频(而非语音)同步
98
- - 所有clip的startMs都基于视频时间轴计算
99
- * 检查字幕:
100
- - 除非用户明确指定不要字幕,否则 draft_content.json 中必须包含字幕(subtitles 数组)
101
- - 文本严格一致性:字幕内容**必须**与 story_board.json 中的 script 字段逐字对应
102
- - 字幕时间轴与 TTS 配音精确同步,与视频时间轴对齐(整秒)
103
- - 字幕显示时间不受转场滤镜影响,保持与音频同步
104
- * 转场滤镜策略:除非用户明确要求,否则默认不使用转场滤镜,保持简洁的剪切过渡
105
- * 统一命名:`scXX_*`、`main_bgm_*`、`*_vo.*`
106
- * 时长控制:单镜头3-16s
107
-
108
- ### 图生视频技巧
109
- * 运动导向:提示词=主体运动+背景变化+镜头运动
110
- * 特征定位:突出主体特征(老人、戴墨镜的女人)便于识别
111
- * 环境一致性:确保场景间环境元素一致
112
- - 时间:保持时间段一致(白天、夜晚),避免无故突变
113
- - 天气:保持天气状况一致(晴天、雨天)
114
- - 地点:场景转换符合空间逻辑
115
- - 光线:保持光源方向和强度一致
116
-
117
- ### BGM 音量控制
118
- * 音量:默认BGM音量控制为-25db,通过设置BGM音轨的gain effect控制
119
-
120
- ```json
121
- {
122
- ...
123
- "effects": [{
124
- "name": "gain",
125
- "params": {
126
- "db": -25
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
- draft_content.json 支持转场滤镜,在`timeline.tracks[].clips[]`中配置`transitionIn`:
152
-
153
- ```json
154
- {
155
- "transitionIn": {
156
- "name": "fade",
157
- "durationMs": 1000
158
- }
159
- }
160
- ```
161
-
162
- ---
163
-
164
- ## 故障排查
165
-
166
- 1. 检查时间轴基准:
167
- - 强制要求:draft_content.json 中所有 tracks 的时间轴必须严格根据各素材的 duration、durationMs 创建
168
- - 视频对齐原则:所有时间轴都必须与视频时长对齐
169
- - 检查字幕的startMs/endMs是否与视频时间轴对齐
170
- - 素材时长依据:timeline 中的 clip 时长必须基于实际生成的素材文件的 duration/durationMs 属性
171
- 2. 检查音频修改后的同步:
172
- - 如果用户修改了配音,确认视频时长是否已重新计算
173
- - 验证新配音时长→视频时长的转换是否正确(向上取整到秒)
174
- - 检查所有相关clip的durationMs是否已更新
175
- 3. 检查素材时长一致性:
176
- - 对比assets中的durationMs与timeline中clip的durationMs
177
- - 确认没有使用音频原始时长作为视频时长
178
- - 验证字幕时间范围不超出视频总时长
179
- 4. 检查时间轴计算:
180
- - 确认所有时间都是1000的倍数(整秒)
181
- - 验证startMs + durationMs的计算正确性
182
- - 检查是否有重叠或间隙的时间段