cutsdk 1.0.0 → 1.1.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.
Files changed (53) hide show
  1. package/README.md +27 -24
  2. package/dist/api/cloud/render-draft.d.ts +5 -2
  3. package/dist/api/cloud/render-draft.d.ts.map +1 -1
  4. package/dist/api/cloud/render-draft.js +117 -15
  5. package/dist/api/cloud/render-draft.js.map +1 -1
  6. package/dist/api/cloud/submit-video-render-task.js +2 -2
  7. package/dist/api/cloud/submit-video-render-task.js.map +1 -1
  8. package/dist/api/cloud/upload-draft.d.ts.map +1 -1
  9. package/dist/api/cloud/upload-draft.js +0 -2
  10. package/dist/api/cloud/upload-draft.js.map +1 -1
  11. package/dist/api/draft-spec/create-and-render-draft.d.ts.map +1 -1
  12. package/dist/api/draft-spec/create-and-render-draft.js +0 -1
  13. package/dist/api/draft-spec/create-and-render-draft.js.map +1 -1
  14. package/dist/api/query/get-text-effects.d.ts +4 -0
  15. package/dist/api/query/get-text-effects.d.ts.map +1 -0
  16. package/dist/api/query/get-text-effects.js +36 -0
  17. package/dist/api/query/get-text-effects.js.map +1 -0
  18. package/dist/api/setup/templates/project/.agents/skills/cut-draft/SKILL.md +48 -33
  19. package/dist/api/setup/templates/project/{cut-sdk → cutcli-docs}/.env.example +0 -1
  20. package/dist/api/setup/templates/project/cutcli-docs/README.md +95 -0
  21. package/dist/api/setup/templates/project/{cut-sdk → cutcli-docs}/api-cheatsheet.md +29 -5
  22. package/dist/api/setup/templates/project/{cut-sdk → cutcli-docs}/examples/03-create-and-render.ts +1 -2
  23. package/dist/api/setup/templates/project/cutcli-docs/examples/04-cli-examples.md +109 -0
  24. package/dist/api/setup/templates/project/{cut-sdk → cutcli-docs}/quickstart.md +22 -2
  25. package/dist/config/index.d.ts +1 -0
  26. package/dist/config/index.d.ts.map +1 -1
  27. package/dist/config/index.js +3 -2
  28. package/dist/config/index.js.map +1 -1
  29. package/dist/draft/drafts/Effects.d.ts.map +1 -1
  30. package/dist/draft/drafts/Effects.js +0 -1
  31. package/dist/draft/drafts/Effects.js.map +1 -1
  32. package/dist/index.d.ts +6 -0
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +5 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/shared/cloud-client.d.ts +2 -7
  37. package/dist/shared/cloud-client.d.ts.map +1 -1
  38. package/dist/shared/cloud-client.js +4 -4
  39. package/dist/shared/cloud-client.js.map +1 -1
  40. package/dist/shared/media.d.ts.map +1 -1
  41. package/dist/shared/media.js +36 -11
  42. package/dist/shared/media.js.map +1 -1
  43. package/dist/types/index.d.ts +23 -6
  44. package/dist/types/index.d.ts.map +1 -1
  45. package/package.json +9 -12
  46. package/dist/api/setup/templates/project/cut-sdk/README.md +0 -54
  47. package/dist/api/setup/templates/project/cut-sdk/examples/04-cli-examples.md +0 -71
  48. package/dist/cli.d.ts +0 -3
  49. package/dist/cli.d.ts.map +0 -1
  50. package/dist/cli.js +0 -339
  51. package/dist/cli.js.map +0 -1
  52. /package/dist/api/setup/templates/project/{cut-sdk → cutcli-docs}/examples/01-create-draft.ts +0 -0
  53. /package/dist/api/setup/templates/project/{cut-sdk → cutcli-docs}/examples/02-draft-spec.ts +0 -0
package/dist/cli.js DELETED
@@ -1,339 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- const commander_1 = require("commander");
8
- const fs_1 = __importDefault(require("fs"));
9
- const dotenv_1 = __importDefault(require("dotenv"));
10
- const create_draft_1 = require("./api/draft/create-draft");
11
- const get_draft_info_1 = require("./api/draft/get-draft-info");
12
- const list_drafts_1 = require("./api/draft/list-drafts");
13
- const easy_create_material_1 = require("./api/draft/easy-create-material");
14
- const add_captions_1 = require("./api/captions/add-captions");
15
- const get_captions_1 = require("./api/captions/get-captions");
16
- const add_images_1 = require("./api/images/add-images");
17
- const get_images_1 = require("./api/images/get-images");
18
- const add_videos_1 = require("./api/videos/add-videos");
19
- const get_videos_1 = require("./api/videos/get-videos");
20
- const add_audios_1 = require("./api/audios/add-audios");
21
- const get_audios_1 = require("./api/audios/get-audios");
22
- const add_effects_1 = require("./api/effects/add-effects");
23
- const get_effects_1 = require("./api/effects/get-effects");
24
- const add_sticker_1 = require("./api/sticker/add-sticker");
25
- const get_stickers_1 = require("./api/sticker/get-stickers");
26
- const add_keyframes_1 = require("./api/keyframes/add-keyframes");
27
- const get_keyframes_1 = require("./api/keyframes/get-keyframes");
28
- const add_masks_1 = require("./api/masks/add-masks");
29
- const get_masks_1 = require("./api/masks/get-masks");
30
- const add_text_style_1 = require("./api/text-style/add-text-style");
31
- const get_audio_duration_1 = require("./api/query/get-audio-duration");
32
- const get_image_animations_1 = require("./api/query/get-image-animations");
33
- const submit_video_render_task_1 = require("./api/cloud/submit-video-render-task");
34
- const render_draft_1 = require("./api/cloud/render-draft");
35
- function parseJsonArg(val) {
36
- if (val.startsWith('@')) {
37
- const filePath = val.slice(1);
38
- return JSON.parse(fs_1.default.readFileSync(filePath, 'utf-8'));
39
- }
40
- return JSON.parse(val);
41
- }
42
- function output(data, pretty) {
43
- console.log(pretty ? JSON.stringify(data, null, 2) : JSON.stringify(data));
44
- }
45
- async function run() {
46
- const program = new commander_1.Command();
47
- program
48
- .name('cut')
49
- .description('CapCut 草稿 CLI 工具')
50
- .version('1.0.0')
51
- .option('--env-file <path>', '指定 .env 文件路径')
52
- .option('--pretty', '美化 JSON 输出', false)
53
- .hook('preAction', (thisCommand) => {
54
- const opts = thisCommand.opts();
55
- if (opts.envFile)
56
- dotenv_1.default.config({ path: opts.envFile });
57
- });
58
- const pretty = () => program.opts().pretty;
59
- // ========== draft ==========
60
- const draft = program.command('draft').description('草稿管理');
61
- draft.command('create')
62
- .description('创建新草稿')
63
- .option('--width <n>', '画布宽度', '1080')
64
- .option('--height <n>', '画布高度', '1920')
65
- .option('--user-id <id>', '用户ID')
66
- .action(async (opts) => {
67
- const result = await (0, create_draft_1.createDraft)({ width: +opts.width, height: +opts.height, userId: opts.userId });
68
- output(result, pretty());
69
- });
70
- draft.command('list')
71
- .description('列出所有草稿')
72
- .action(async () => {
73
- const result = await (0, list_drafts_1.listDrafts)();
74
- output(result, pretty());
75
- });
76
- draft.command('info <draftId>')
77
- .description('查看草稿信息')
78
- .action(async (draftId) => {
79
- const result = await (0, get_draft_info_1.getDraftInfo)({ draftId });
80
- output(result, pretty());
81
- });
82
- draft.command('easy <draftId>')
83
- .description('快速添加素材')
84
- .requiredOption('--audio-url <url>', '音频URL')
85
- .option('--img-url <url>', '图片URL')
86
- .option('--video-url <url>', '视频URL')
87
- .option('--text <text>', '文字内容')
88
- .action(async (draftId, opts) => {
89
- const result = await (0, easy_create_material_1.easyCreateMaterial)({ draftId, audioUrl: opts.audioUrl, imgUrl: opts.imgUrl, videoUrl: opts.videoUrl, text: opts.text });
90
- output(result, pretty());
91
- });
92
- // ========== captions ==========
93
- const captions = program.command('captions').description('字幕管理');
94
- captions.command('add <draftId>')
95
- .description('添加字幕')
96
- .requiredOption('--captions <json>', '字幕数据 (JSON 或 @file.json)')
97
- .option('--font <name>', '字体名称')
98
- .option('--alignment <n>', '对齐方式')
99
- .option('--alpha <n>', '透明度')
100
- .option('--text-color <hex>', '文字颜色')
101
- .option('--font-size <n>', '字号')
102
- .option('--bold', '加粗')
103
- .option('--italic', '斜体')
104
- .option('--underline', '下划线')
105
- .option('--transform-x <n>', 'X轴位置,归一化值 (0=居中, -1=最左, 1=最右)')
106
- .option('--transform-y <n>', 'Y轴位置,归一化值 (0=居中, 1=最上, -1=最下)')
107
- .action(async (draftId, opts) => {
108
- const result = await (0, add_captions_1.addCaptions)({
109
- draftId, captions: parseJsonArg(opts.captions), font: opts.font,
110
- alignment: opts.alignment ? +opts.alignment : undefined,
111
- alpha: opts.alpha ? +opts.alpha : undefined,
112
- textColor: opts.textColor, fontSize: opts.fontSize ? +opts.fontSize : undefined,
113
- bold: opts.bold, italic: opts.italic, underline: opts.underline,
114
- transformX: opts.transformX ? +opts.transformX : undefined,
115
- transformY: opts.transformY ? +opts.transformY : undefined,
116
- });
117
- output(result, pretty());
118
- });
119
- captions.command('list <draftId>')
120
- .description('查看已有字幕')
121
- .action(async (draftId) => {
122
- const result = await (0, get_captions_1.getCaptions)({ draftId });
123
- output(result, pretty());
124
- });
125
- // ========== images ==========
126
- const images = program.command('images').description('图片管理');
127
- images.command('add <draftId>')
128
- .description('添加图片')
129
- .requiredOption('--image-infos <json>', '图片数据 (JSON 或 @file.json)')
130
- .option('--alpha <n>', '透明度')
131
- .action(async (draftId, opts) => {
132
- const result = await (0, add_images_1.addImages)({ draftId, imageInfos: parseJsonArg(opts.imageInfos), alpha: opts.alpha ? +opts.alpha : undefined });
133
- output(result, pretty());
134
- });
135
- images.command('list <draftId>')
136
- .description('查看已有图片')
137
- .action(async (draftId) => {
138
- const result = await (0, get_images_1.getImages)({ draftId });
139
- output(result, pretty());
140
- });
141
- // ========== videos ==========
142
- const videos = program.command('videos').description('视频管理');
143
- videos.command('add <draftId>')
144
- .description('添加视频')
145
- .requiredOption('--video-infos <json>', '视频数据 (JSON 或 @file.json)')
146
- .option('--alpha <n>', '透明度')
147
- .action(async (draftId, opts) => {
148
- const result = await (0, add_videos_1.addVideos)({ draftId, videoInfos: parseJsonArg(opts.videoInfos), alpha: opts.alpha ? +opts.alpha : undefined });
149
- output(result, pretty());
150
- });
151
- videos.command('list <draftId>')
152
- .description('查看已有视频')
153
- .action(async (draftId) => {
154
- const result = await (0, get_videos_1.getVideos)({ draftId });
155
- output(result, pretty());
156
- });
157
- // ========== audios ==========
158
- const audios = program.command('audios').description('音频管理');
159
- audios.command('add <draftId>')
160
- .description('添加音频')
161
- .requiredOption('--audio-infos <json>', '音频数据 (JSON 或 @file.json)')
162
- .action(async (draftId, opts) => {
163
- const result = await (0, add_audios_1.addAudios)({ draftId, audioInfos: parseJsonArg(opts.audioInfos) });
164
- output(result, pretty());
165
- });
166
- audios.command('list <draftId>')
167
- .description('查看已有音频')
168
- .action(async (draftId) => {
169
- const result = await (0, get_audios_1.getAudios)({ draftId });
170
- output(result, pretty());
171
- });
172
- // ========== effects ==========
173
- const effects = program.command('effects').description('特效管理');
174
- effects.command('add <draftId>')
175
- .description('添加特效')
176
- .requiredOption('--effect-infos <json>', '特效数据 (JSON 或 @file.json)')
177
- .action(async (draftId, opts) => {
178
- const result = await (0, add_effects_1.addEffects)({ draftId, effectInfos: parseJsonArg(opts.effectInfos) });
179
- output(result, pretty());
180
- });
181
- effects.command('list <draftId>')
182
- .description('查看已有特效')
183
- .action(async (draftId) => {
184
- const result = await (0, get_effects_1.getEffects)({ draftId });
185
- output(result, pretty());
186
- });
187
- // ========== sticker ==========
188
- const sticker = program.command('sticker').description('贴纸管理');
189
- sticker.command('add <draftId>')
190
- .description('添加贴纸')
191
- .requiredOption('--sticker-id <id>', '贴纸ID')
192
- .requiredOption('--start <n>', '开始时间')
193
- .requiredOption('--end <n>', '结束时间')
194
- .option('--scale <n>', '缩放')
195
- .action(async (draftId, opts) => {
196
- const result = await (0, add_sticker_1.addSticker)({ draftId, stickerId: opts.stickerId, start: +opts.start, end: +opts.end, scale: opts.scale ? +opts.scale : undefined });
197
- output(result, pretty());
198
- });
199
- sticker.command('list <draftId>')
200
- .description('查看已有贴纸')
201
- .action(async (draftId) => {
202
- const result = await (0, get_stickers_1.getStickers)({ draftId });
203
- output(result, pretty());
204
- });
205
- // ========== keyframes ==========
206
- const kf = program.command('keyframes').description('关键帧管理');
207
- kf.command('add <draftId>')
208
- .description('添加关键帧')
209
- .requiredOption('--keyframes <json>', '关键帧数据 (JSON 或 @file.json)')
210
- .action(async (draftId, opts) => {
211
- const result = await (0, add_keyframes_1.addKeyframes)({ draftId, keyframes: parseJsonArg(opts.keyframes) });
212
- output(result, pretty());
213
- });
214
- kf.command('list <draftId>')
215
- .description('查看关键帧')
216
- .requiredOption('--segment-id <id>', '片段ID')
217
- .action(async (draftId, opts) => {
218
- const result = await (0, get_keyframes_1.getKeyframes)({ draftId, segmentId: opts.segmentId });
219
- output(result, pretty());
220
- });
221
- // ========== masks ==========
222
- const masks = program.command('masks').description('遮罩管理');
223
- masks.command('add <draftId>')
224
- .description('添加遮罩')
225
- .requiredOption('--segment-ids <ids>', '片段ID列表 (逗号分隔)')
226
- .option('--name <name>', '遮罩类型', '线性')
227
- .option('--width <n>', '宽度')
228
- .option('--height <n>', '高度')
229
- .option('--feather <n>', '羽化')
230
- .option('--rotation <n>', '旋转')
231
- .option('--invert', '反转')
232
- .action(async (draftId, opts) => {
233
- const result = await (0, add_masks_1.addMasks)({
234
- draftId, segmentIds: opts.segmentIds.split(','), name: opts.name,
235
- width: opts.width ? +opts.width : undefined, height: opts.height ? +opts.height : undefined,
236
- feather: opts.feather ? +opts.feather : undefined, rotation: opts.rotation ? +opts.rotation : undefined,
237
- invert: opts.invert,
238
- });
239
- output(result, pretty());
240
- });
241
- masks.command('list <draftId>')
242
- .description('查看遮罩')
243
- .option('--segment-id <id>', '片段ID')
244
- .action(async (draftId, opts) => {
245
- const result = await (0, get_masks_1.getMasks)({ draftId, segmentId: opts.segmentId });
246
- output(result, pretty());
247
- });
248
- // ========== text-style ==========
249
- program.command('text-style')
250
- .description('生成文字样式')
251
- .requiredOption('--text <text>', '文字内容')
252
- .requiredOption('--keyword <keywords>', '关键词 (| 分隔)')
253
- .option('--keyword-color <hex>', '关键词颜色')
254
- .option('--font-size <n>', '默认字号')
255
- .option('--keyword-font-size <n>', '关键词字号')
256
- .action(async (opts) => {
257
- const result = await (0, add_text_style_1.addTextStyle)({
258
- text: opts.text, keyword: opts.keyword,
259
- keywordColor: opts.keywordColor,
260
- fontSize: opts.fontSize ? +opts.fontSize : undefined,
261
- keywordFontSize: opts.keywordFontSize ? +opts.keywordFontSize : undefined,
262
- });
263
- output(result, pretty());
264
- });
265
- // ========== query ==========
266
- const query = program.command('query').description('工具查询');
267
- query.command('audio-duration')
268
- .description('获取音频时长')
269
- .requiredOption('--url <url>', '音频URL')
270
- .action(async (opts) => {
271
- const result = await (0, get_audio_duration_1.getAudioDurationApi)({ url: opts.url });
272
- output(result, pretty());
273
- });
274
- query.command('image-animations')
275
- .description('查看图片动画列表')
276
- .option('--mode <n>', '模式', '0')
277
- .option('--type <type>', '类型: in/out/loop', 'in')
278
- .action(async (opts) => {
279
- const result = await (0, get_image_animations_1.getImageAnimations)({ mode: +opts.mode, type: opts.type });
280
- output(result, pretty());
281
- });
282
- // ========== cloud ==========
283
- const cloud = program.command('cloud').description('云渲染');
284
- cloud.command('render <draftId>')
285
- .description('上传草稿并创建云渲染任务')
286
- .option('--draft-path <path>', '草稿目录路径;默认使用 CUT_DRAFTS_DIR/<draftId>')
287
- .option('--zip-path <path>', '指定已有 zip 文件路径')
288
- .option('--api-token <token>', 'API Token;也可使用 CUT_API_TOKEN 环境变量')
289
- .option('--api-base <url>', '后端地址;默认使用 CUT_UPLOAD_API_BASE')
290
- .option('--wait', '提交后持续轮询,直到渲染完成/失败或超时', false)
291
- .option('--poll-interval <seconds>', '轮询间隔秒数;默认 15', '15')
292
- .option('--timeout <seconds>', '最长等待秒数;默认 1800', '1800')
293
- .option('--keep-zip', '保留临时 zip 文件', false)
294
- .action(async (draftId, opts) => {
295
- const result = await (0, render_draft_1.renderDraft)({
296
- draftId,
297
- draftPath: opts.draftPath,
298
- zipPath: opts.zipPath,
299
- apiToken: opts.apiToken,
300
- apiBase: opts.apiBase,
301
- keepZip: opts.keepZip,
302
- wait: opts.wait,
303
- pollIntervalMs: Number(opts.pollInterval) * 1000,
304
- timeoutMs: Number(opts.timeout) * 1000,
305
- onPoll: opts.wait ? (job) => console.error(`[cloud] job ${job.id}: ${job.status}`) : undefined,
306
- });
307
- output(result, pretty());
308
- });
309
- cloud.command('result <jobId>')
310
- .description('查看云渲染任务结果')
311
- .option('--api-token <token>', 'API Token;也可使用 CUT_API_TOKEN 环境变量')
312
- .option('--api-base <url>', 'API 地址;默认使用 CUTCLI_API_BASE 或 https://api.apiz.ai')
313
- .action(async (jobId, opts) => {
314
- const result = await (0, render_draft_1.getCloudRenderStatus)({
315
- taskId: jobId,
316
- apiToken: opts.apiToken,
317
- apiBase: opts.apiBase,
318
- });
319
- output(result, pretty());
320
- });
321
- cloud.command('render-legacy <draftUrl>')
322
- .description('使用旧 submit_video_render_task 接口提交云渲染任务')
323
- .option('--api-token <token>', 'API Token;也可使用 CUT_API_TOKEN 环境变量')
324
- .option('--api-base <url>', 'API 地址;默认使用 CUT_API_BASE 或 https://ts-api.fyshark.com')
325
- .action(async (draftUrl, opts) => {
326
- const result = await (0, submit_video_render_task_1.submitVideoRenderTask)({
327
- draftUrl,
328
- apiToken: opts.apiToken,
329
- apiBase: opts.apiBase,
330
- });
331
- output(result, pretty());
332
- });
333
- await program.parseAsync(process.argv);
334
- }
335
- run().catch((err) => {
336
- console.error(err.message || err);
337
- process.exit(1);
338
- });
339
- //# sourceMappingURL=cli.js.map
package/dist/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}