cutsdk 1.0.0 → 1.1.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.
- package/README.md +57 -25
- package/dist/api/cloud/render-draft.d.ts +5 -2
- package/dist/api/cloud/render-draft.d.ts.map +1 -1
- package/dist/api/cloud/render-draft.js +117 -15
- package/dist/api/cloud/render-draft.js.map +1 -1
- package/dist/api/cloud/submit-video-render-task.js +2 -2
- package/dist/api/cloud/submit-video-render-task.js.map +1 -1
- package/dist/api/cloud/upload-draft.d.ts.map +1 -1
- package/dist/api/cloud/upload-draft.js +0 -2
- package/dist/api/cloud/upload-draft.js.map +1 -1
- package/dist/api/draft-spec/create-and-render-draft.d.ts.map +1 -1
- package/dist/api/draft-spec/create-and-render-draft.js +0 -1
- package/dist/api/draft-spec/create-and-render-draft.js.map +1 -1
- package/dist/api/draft-spec/time.d.ts.map +1 -1
- package/dist/api/draft-spec/time.js +2 -1
- package/dist/api/draft-spec/time.js.map +1 -1
- package/dist/api/images/add-images.js +1 -1
- package/dist/api/images/add-images.js.map +1 -1
- package/dist/api/query/get-text-effects.d.ts +4 -0
- package/dist/api/query/get-text-effects.d.ts.map +1 -0
- package/dist/api/query/get-text-effects.js +36 -0
- package/dist/api/query/get-text-effects.js.map +1 -0
- package/dist/api/setup/templates/project/.agents/skills/cut-draft/SKILL.md +63 -37
- package/dist/api/setup/templates/project/{cut-sdk → cutcli-docs}/.env.example +0 -1
- package/dist/api/setup/templates/project/cutcli-docs/README.md +96 -0
- package/dist/api/setup/templates/project/{cut-sdk → cutcli-docs}/api-cheatsheet.md +29 -5
- package/dist/api/setup/templates/project/{cut-sdk → cutcli-docs}/examples/03-create-and-render.ts +1 -2
- package/dist/api/setup/templates/project/cutcli-docs/examples/04-cli-examples.md +109 -0
- package/dist/api/setup/templates/project/cutcli-docs/material-browser.html +418 -0
- package/dist/api/setup/templates/project/{cut-sdk → cutcli-docs}/quickstart.md +22 -2
- package/dist/api/videos/add-videos.js +1 -1
- package/dist/api/videos/add-videos.js.map +1 -1
- package/dist/config/index.d.ts +1 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +3 -2
- package/dist/config/index.js.map +1 -1
- package/dist/draft/drafts/Effects.d.ts.map +1 -1
- package/dist/draft/drafts/Effects.js +0 -1
- package/dist/draft/drafts/Effects.js.map +1 -1
- package/dist/draft/drafts/data/online/effects.json +31933 -0
- package/dist/draft/drafts/data/online/transitions.json +14375 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/shared/cloud-client.d.ts +2 -7
- package/dist/shared/cloud-client.d.ts.map +1 -1
- package/dist/shared/cloud-client.js +4 -4
- package/dist/shared/cloud-client.js.map +1 -1
- package/dist/shared/draft-service.d.ts.map +1 -1
- package/dist/shared/draft-service.js +15 -0
- package/dist/shared/draft-service.js.map +1 -1
- package/dist/shared/media.d.ts.map +1 -1
- package/dist/shared/media.js +36 -11
- package/dist/shared/media.js.map +1 -1
- package/dist/types/index.d.ts +23 -6
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +12 -12
- package/dist/api/setup/templates/project/cut-sdk/README.md +0 -54
- package/dist/api/setup/templates/project/cut-sdk/examples/04-cli-examples.md +0 -71
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -339
- package/dist/cli.js.map +0 -1
- /package/dist/api/setup/templates/project/{cut-sdk → cutcli-docs}/examples/01-create-draft.ts +0 -0
- /package/dist/api/setup/templates/project/{cut-sdk → cutcli-docs}/examples/02-draft-spec.ts +0 -0
|
@@ -2,76 +2,102 @@
|
|
|
2
2
|
name: cut-draft
|
|
3
3
|
description: >-
|
|
4
4
|
使用 cutsdk 创建和操作剪映/CapCut 草稿工程。用户想创建剪映草稿、添加字幕/图片/视频/音频/特效/贴纸/关键帧/遮罩、
|
|
5
|
-
提交渲染,或提到
|
|
5
|
+
提交渲染,或提到 cutsdk、cutcli、draft spec、剪映、草稿、字幕、CapCut draft 时使用此 skill。
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
#
|
|
8
|
+
# cutcli 项目级 Skill
|
|
9
9
|
|
|
10
|
-
`cutsdk` 是用于创建剪映/CapCut 桌面端草稿文件夹的 Node.js SDK
|
|
10
|
+
`cutsdk` 是用于创建剪映/CapCut 桌面端草稿文件夹的 Node.js SDK。`cutcli` 是给 AI 实时调用的命令行工具。生成后的草稿可直接在剪映桌面端打开。
|
|
11
11
|
|
|
12
12
|
## 先读这些
|
|
13
13
|
|
|
14
14
|
写代码前,先阅读本项目内的文档:
|
|
15
15
|
|
|
16
|
-
1. `
|
|
17
|
-
2. `
|
|
18
|
-
3. `
|
|
16
|
+
1. `cutcli-docs/README.md`
|
|
17
|
+
2. `cutcli-docs/quickstart.md`
|
|
18
|
+
3. `cutcli-docs/api-cheatsheet.md`
|
|
19
19
|
|
|
20
|
-
实现时优先从 `
|
|
20
|
+
实现时优先从 `cutcli-docs/examples/` 里选择最接近的示例改起。
|
|
21
21
|
|
|
22
22
|
## 推荐使用路径
|
|
23
23
|
|
|
24
|
-
- AI 生成完整时间线时,优先使用 `createDraftFromSpec(spec)`。
|
|
25
|
-
-
|
|
24
|
+
- AI 生成完整时间线时,优先使用 `cutcli spec create --file draft.json`,或在代码中使用 `createDraftFromSpec(spec)`。
|
|
25
|
+
- 用户希望“一次创建草稿并提交云渲染”时,优先使用 `cutcli spec render --file draft.json --cloud --wait`,或在代码中使用 `createAndRenderDraft(input)`。
|
|
26
26
|
- 用户要逐步编辑草稿,或 Draft Spec 尚未覆盖某个能力时,再使用低层 API,例如 `createDraft`、`addCaptions`、`addImages`、`addVideos`、`addAudios`、`addMasks`、`addKeyframes`。
|
|
27
|
-
-
|
|
27
|
+
- 需要实时命令行操作时,优先使用便捷命令,例如 `cutcli image add ...`、`cutcli text add ...`、`cutcli audio add ...`。
|
|
28
28
|
|
|
29
29
|
## 关键规则
|
|
30
30
|
|
|
31
31
|
- 包导入名是 `cutsdk`。
|
|
32
|
-
- 低层 SDK
|
|
33
|
-
- AI Draft Spec 的时间字符串可写为 `1.5s`、`500ms`、`300000us`。
|
|
32
|
+
- 低层 SDK 的数字时间单位是微秒:`1s = 1000000`。
|
|
33
|
+
- `cutcli` 便捷命令和 AI Draft Spec 的时间字符串可写为 `1.5s`、`500ms`、`300000us`。
|
|
34
34
|
- 默认草稿目录是 `~/Movies/JianyingPro Drafts/{draftId}/`;可通过 `CUT_DRAFTS_DIR` 覆盖。
|
|
35
|
-
-
|
|
35
|
+
- 媒体本地路径和 URL 都可用:本地路径会复制到草稿 `resources/`,URL 会下载到 `resources/`。
|
|
36
36
|
- 图片必须提供 `width` 和 `height`。
|
|
37
37
|
- 使用低层 API 添加视频或音频时,要提供素材原始时长。
|
|
38
38
|
- 同一轨道内的片段不要重叠,除非目标 API 明确会创建独立轨道。
|
|
39
39
|
- CLI 参数使用 kebab-case,例如 `--font-size`,不要写成 `--fontSize`。
|
|
40
|
+
- 云渲染只有 `status = 7` 才算成功并写入 `video_url`;`0/1/2` 表示等待或处理中,`3/5/6` 表示失败终态。
|
|
41
|
+
- AI 调用 CLI 时,如需结构化错误,使用 `--json-errors` 或 `CUTCLI_JSON_ERRORS=1`。
|
|
40
42
|
|
|
41
43
|
## 最小 Draft Spec 示例
|
|
42
44
|
|
|
43
|
-
|
|
44
|
-
import { createDraftFromSpec } from 'cutsdk';
|
|
45
|
+
保存为 `draft.json`:
|
|
45
46
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"version": "1.0",
|
|
50
|
+
"canvas": { "width": 1080, "height": 1920 },
|
|
51
|
+
"tracks": [
|
|
50
52
|
{
|
|
51
|
-
type:
|
|
52
|
-
clips: [
|
|
53
|
-
{ type:
|
|
54
|
-
]
|
|
55
|
-
}
|
|
56
|
-
]
|
|
57
|
-
}
|
|
53
|
+
"type": "text",
|
|
54
|
+
"clips": [
|
|
55
|
+
{ "type": "caption", "text": "你好剪映", "start": "0s", "duration": "3s" }
|
|
56
|
+
]
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
}
|
|
58
60
|
```
|
|
59
61
|
|
|
60
|
-
|
|
62
|
+
然后执行:
|
|
61
63
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
CUT_API_TOKEN=your_token
|
|
66
|
-
CUT_UPLOAD_API_BASE=http://your-render-backend:8080
|
|
64
|
+
```bash
|
|
65
|
+
cutcli spec validate --file draft.json --pretty
|
|
66
|
+
cutcli spec create --file draft.json --pretty
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
## 云渲染与 API Token 配置
|
|
70
|
+
|
|
71
|
+
云渲染需要配置 API Token,有以下三种方式:
|
|
72
|
+
|
|
73
|
+
1. **命令行保存**:
|
|
74
|
+
```bash
|
|
75
|
+
cutcli login <apiToken>
|
|
76
|
+
```
|
|
77
|
+
这会将 Token 保存到本机 `~/.cutcli/config.json`。
|
|
78
|
+
|
|
79
|
+
2. **环境变量**:
|
|
80
|
+
设置环境变量 `CUT_API_TOKEN`:
|
|
81
|
+
```env
|
|
82
|
+
CUT_API_TOKEN=your_token
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
3. **SDK 参数显式传入**:
|
|
86
|
+
在调用一站式 SDK 时显式设置 `apiToken` 字段:
|
|
87
|
+
```typescript
|
|
88
|
+
render: {
|
|
89
|
+
cloud: true,
|
|
90
|
+
apiToken: 'your_api_token'
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
`cutcli config show` 可检查配置状态,它只会显示 `<set>`,不会打印 Token 明文。
|
|
70
95
|
|
|
71
96
|
## 常见坑
|
|
72
97
|
|
|
73
98
|
1. 不要混用包名。除非项目明确覆盖,否则始终使用 `cutsdk`。
|
|
74
|
-
2.
|
|
75
|
-
3.
|
|
76
|
-
4.
|
|
77
|
-
5.
|
|
99
|
+
2. 本地拼接优先用 `cutcli image/video/audio/text add`;批量 JSON 命令只在需要一次添加多段素材时使用。
|
|
100
|
+
3. 不要把“秒”直接作为低层 API 的数字传入。数字 `3` 表示 3 微秒,不是 3 秒。
|
|
101
|
+
4. 对动画/特效名有精确要求时,不要凭空编造。先用 CLI 查询可用资源,或使用项目里已有示例。
|
|
102
|
+
5. 除非 SDK 无法表达目标操作,否则不要手动改剪映草稿 JSON。
|
|
103
|
+
6. 生成复杂时间线时,先用 `cutcli spec validate --file draft.json` 或 `validateDraftSpec(spec)` 校验 Draft Spec。
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# cutsdk 项目接入指南
|
|
2
|
+
|
|
3
|
+
这个目录是给 AI Agent 和开发者第一次在项目中使用 `cutsdk` 时看的接入资料。
|
|
4
|
+
|
|
5
|
+
`cutsdk` 可以用 Node.js 代码创建剪映/CapCut 桌面端草稿文件夹,支持字幕、图片、视频、音频、特效、贴纸、关键帧、遮罩、AI Draft Spec,以及可选的云渲染。
|
|
6
|
+
|
|
7
|
+
## 阅读顺序
|
|
8
|
+
|
|
9
|
+
1. 先读 `quickstart.md`。
|
|
10
|
+
2. 再扫一遍 `api-cheatsheet.md`。
|
|
11
|
+
3. 从 `examples/` 中复制最接近需求的示例改起。
|
|
12
|
+
4. 需要挑选花字、特效、贴纸、转场时,直接打开 `material-browser.html`。特效/转场使用本地在线缓存,贴纸会联网刷新全量素材库。
|
|
13
|
+
|
|
14
|
+
## 安装
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install cutsdk
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
如果要使用 CLI:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm install -g @cutcli/cutcli
|
|
24
|
+
cutcli agents install
|
|
25
|
+
cutcli login <apiToken>
|
|
26
|
+
cutcli spec validate --file draft.json
|
|
27
|
+
cutcli spec create --file draft.json
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
不全局安装也可以直接用 `npx`:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npx @cutcli/cutcli spec create --file draft.json
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## 环境变量
|
|
37
|
+
|
|
38
|
+
当项目需要自定义草稿目录或使用云渲染时,把 `.env.example` 复制为 `.env` 并填写:
|
|
39
|
+
|
|
40
|
+
```env
|
|
41
|
+
CUT_DRAFTS_DIR=/absolute/path/to/JianyingPro Drafts
|
|
42
|
+
CUT_API_TOKEN=your_token
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
也可以用 CLI 保存云渲染 Token:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
cutcli login <apiToken>
|
|
49
|
+
cutcli config show --pretty
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Token 会保存到本机 `~/.cutcli/config.json`,输出中只显示 `<set>`。
|
|
53
|
+
|
|
54
|
+
云渲染状态码:
|
|
55
|
+
|
|
56
|
+
| status | 含义 |
|
|
57
|
+
|--------|------|
|
|
58
|
+
| `0` | 初始创建,尚未正式入队 |
|
|
59
|
+
| `1` | 已提交/排队中,等待云渲染机器领取 |
|
|
60
|
+
| `2` | 处理中,机器已领取任务并开始渲染 |
|
|
61
|
+
| `3` | 草稿 ID 异常或草稿 ID 不存在 |
|
|
62
|
+
| `5` | 处理超时 |
|
|
63
|
+
| `6` | 处理失败 |
|
|
64
|
+
| `7` | 成功完成,此时才会写入 `video_url` |
|
|
65
|
+
|
|
66
|
+
## 核心概念
|
|
67
|
+
|
|
68
|
+
- 一个草稿就是磁盘上的剪映兼容工程文件夹。
|
|
69
|
+
- 默认草稿路径是 `~/Movies/JianyingPro Drafts/{draftId}/`。
|
|
70
|
+
- 低层 SDK API 的时间数值使用微秒。
|
|
71
|
+
- AI Draft Spec 和 `cutcli image/text/audio/video add` 支持更易读的时间字符串,例如 `3s`、`500ms`、`300000us`。
|
|
72
|
+
- 媒体 URL 和本地文件路径会被复制/下载到草稿的 `resources` 文件夹。
|
|
73
|
+
|
|
74
|
+
## 推荐优先使用
|
|
75
|
+
|
|
76
|
+
AI 生成视频草稿时,优先使用 `createDraftFromSpec`。它允许用一个 JSON 对象描述完整时间线,再由 SDK 调用底层草稿 API。
|
|
77
|
+
|
|
78
|
+
创建草稿后还需要补充高级操作时,可以使用带 `afterCreate` 的 `createAndRenderDraft`,或直接调用低层 API。
|
|
79
|
+
|
|
80
|
+
使用命令行时,优先使用:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
cutcli spec validate --file draft.json --pretty
|
|
84
|
+
cutcli spec create --file draft.json --pretty
|
|
85
|
+
cutcli spec render --file draft.json --cloud --wait --pretty
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
逐步修改草稿时,优先使用便捷命令:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
cutcli text add <draftId> --text "标题" --start 0s --duration 3s --font-size 8
|
|
92
|
+
cutcli image add <draftId> --src ./素材/bg.png --start 0s --duration 5s --width 1080 --height 1920
|
|
93
|
+
cutcli audio add <draftId> --src ./素材/bgm.mp3 --start 0s --duration 20s
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
AI 调用 CLI 时,如果需要结构化错误输出,可以加 `--json-errors` 或设置 `CUTCLI_JSON_ERRORS=1`。
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# cutsdk API 速查
|
|
2
2
|
|
|
3
3
|
从 `cutsdk` 导入:
|
|
4
4
|
|
|
@@ -17,6 +17,8 @@ import {
|
|
|
17
17
|
addSticker,
|
|
18
18
|
addKeyframes,
|
|
19
19
|
addMasks,
|
|
20
|
+
getTextEffects,
|
|
21
|
+
getTextEffect,
|
|
20
22
|
renderDraft,
|
|
21
23
|
isCutSdkError,
|
|
22
24
|
} from 'cutsdk';
|
|
@@ -49,7 +51,6 @@ const result = await createAndRenderDraft({
|
|
|
49
51
|
render: {
|
|
50
52
|
cloud: true,
|
|
51
53
|
apiToken: process.env.CUT_API_TOKEN,
|
|
52
|
-
apiBase: process.env.CUT_UPLOAD_API_BASE,
|
|
53
54
|
},
|
|
54
55
|
});
|
|
55
56
|
|
|
@@ -73,6 +74,8 @@ await addCaptions({
|
|
|
73
74
|
captions: [{ text: 'Hello', start: 0, end: 5000000 }],
|
|
74
75
|
fontSize: 8,
|
|
75
76
|
textColor: '#ffffff',
|
|
77
|
+
textEffect: '红黄火焰综艺花字',
|
|
78
|
+
hasShadow: true,
|
|
76
79
|
});
|
|
77
80
|
```
|
|
78
81
|
|
|
@@ -126,7 +129,28 @@ try {
|
|
|
126
129
|
## 对应 CLI 命令
|
|
127
130
|
|
|
128
131
|
```bash
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
+
cutcli draft create --width 1080 --height 1920
|
|
133
|
+
cutcli query text-effects --keyword 火焰 --limit 5
|
|
134
|
+
cutcli text add <draftId> --text "Hello" --start 0s --duration 3s
|
|
135
|
+
cutcli image add <draftId> --src ./素材/bg.png --start 0s --duration 5s --width 1080 --height 1920
|
|
136
|
+
cutcli cloud render <draftId> --wait
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
云渲染状态:
|
|
140
|
+
|
|
141
|
+
| status | 含义 |
|
|
142
|
+
|--------|------|
|
|
143
|
+
| `0` | 初始创建,尚未正式入队 |
|
|
144
|
+
| `1` | 已提交/排队中 |
|
|
145
|
+
| `2` | 处理中 |
|
|
146
|
+
| `3` | 草稿 ID 异常或不存在 |
|
|
147
|
+
| `5` | 处理超时 |
|
|
148
|
+
| `6` | 处理失败 |
|
|
149
|
+
| `7` | 成功完成,读取 `video_url` |
|
|
150
|
+
|
|
151
|
+
## 花字查询
|
|
152
|
+
|
|
153
|
+
```ts
|
|
154
|
+
const effects = await getTextEffects({ keyword: '火焰', limit: 5 });
|
|
155
|
+
const exact = await getTextEffect({ name: effects.effects[0].title });
|
|
132
156
|
```
|
package/dist/api/setup/templates/project/{cut-sdk → cutcli-docs}/examples/03-create-and-render.ts
RENAMED
|
@@ -27,7 +27,7 @@ async function main() {
|
|
|
27
27
|
},
|
|
28
28
|
output: {
|
|
29
29
|
draftsDir: process.env.CUT_DRAFTS_DIR,
|
|
30
|
-
name: '
|
|
30
|
+
name: 'cutcli-render-demo',
|
|
31
31
|
},
|
|
32
32
|
afterCreate: async ({ draft, clip }) => {
|
|
33
33
|
const firstImage = clip('image', 0);
|
|
@@ -52,7 +52,6 @@ async function main() {
|
|
|
52
52
|
render: {
|
|
53
53
|
cloud: true,
|
|
54
54
|
apiToken: process.env.CUT_API_TOKEN,
|
|
55
|
-
apiBase: process.env.CUT_UPLOAD_API_BASE,
|
|
56
55
|
wait: true,
|
|
57
56
|
},
|
|
58
57
|
});
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# cutcli CLI 示例
|
|
2
|
+
|
|
3
|
+
当用户希望使用命令行而不是 SDK 代码时,参考这些示例。
|
|
4
|
+
|
|
5
|
+
## 创建草稿
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
cutcli draft create --width 1080 --height 1920 --pretty
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
输出中会包含 `draftId`,后续命令都使用这个草稿 ID。
|
|
12
|
+
|
|
13
|
+
## 使用 Draft Spec 创建完整草稿
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
cutcli spec validate --file draft.json --pretty
|
|
17
|
+
cutcli spec create --file draft.json --pretty
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
需要云渲染时:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
cutcli spec render --file draft.json --cloud --wait --pretty
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## 便捷添加单个素材
|
|
27
|
+
|
|
28
|
+
便捷命令支持 `1.5s`、`500ms`、`300000us` 这类时间字符串。
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
cutcli query text-effects --keyword 火焰 --limit 5 --pretty
|
|
32
|
+
cutcli text add <draftId> --text "主标题" --start 0s --duration 3s --font-size 10 \
|
|
33
|
+
--text-effect "红黄火焰综艺花字" --border-color "#000000" --shadow --shadow-color "#000000" --pretty
|
|
34
|
+
cutcli image add <draftId> --src ./素材/bg.png --start 0s --duration 5s --width 1080 --height 1920 \
|
|
35
|
+
--in-animation 渐显 --in-animation-duration 500ms --transition 叠化 --transition-duration 500ms --pretty
|
|
36
|
+
cutcli audio add <draftId> --src ./素材/bgm.mp3 --start 0s --duration 20s --pretty
|
|
37
|
+
cutcli video add <draftId> --src ./素材/clip.mp4 --start 5s --duration 3s --width 1080 --height 1920 \
|
|
38
|
+
--mask 圆形 --scale-x 0.9 --scale-y 0.9 --pretty
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## 批量 JSON 命令
|
|
42
|
+
|
|
43
|
+
单素材命令是本地拼接主路径。下面的 `captions/images/audios` 批量 JSON 命令用于一次添加多段素材,或需要更细字段时使用。
|
|
44
|
+
|
|
45
|
+
### 添加字幕
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
cutcli captions add <draftId> --captions '[
|
|
49
|
+
{
|
|
50
|
+
"text": "CLI 字幕示例",
|
|
51
|
+
"start": 0,
|
|
52
|
+
"end": 3000000,
|
|
53
|
+
"keyword": "CLI",
|
|
54
|
+
"keywordColor": "#00ffaa",
|
|
55
|
+
"inAnimation": "渐显",
|
|
56
|
+
"outAnimation": "渐隐",
|
|
57
|
+
"inAnimationDuration": 500000,
|
|
58
|
+
"outAnimationDuration": 500000
|
|
59
|
+
}
|
|
60
|
+
]' --font-size 8 --text-color "#ffffff" --bold --text-effect "红黄火焰综艺花字" --shadow --pretty
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### 添加图片
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
cutcli images add <draftId> --image-infos '[
|
|
67
|
+
{
|
|
68
|
+
"imageUrl": "/absolute/path/to/background.png",
|
|
69
|
+
"width": 1080,
|
|
70
|
+
"height": 1920,
|
|
71
|
+
"start": 0,
|
|
72
|
+
"end": 5000000
|
|
73
|
+
}
|
|
74
|
+
]' --scale-x 0.9 --scale-y 0.9 --transform-y 0.05 --pretty
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### 添加音频
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
cutcli audios add <draftId> --audio-infos '[
|
|
81
|
+
{
|
|
82
|
+
"audioUrl": "/absolute/path/to/music.mp3",
|
|
83
|
+
"duration": 5000000,
|
|
84
|
+
"start": 0,
|
|
85
|
+
"end": 5000000,
|
|
86
|
+
"volume": 0.7
|
|
87
|
+
}
|
|
88
|
+
]' --pretty
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## 渲染
|
|
92
|
+
|
|
93
|
+
首次使用云渲染前保存 Token:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
cutcli login <apiToken>
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
cutcli cloud render <draftId> --wait --pretty
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## JSON 文件输入
|
|
104
|
+
|
|
105
|
+
大多数 JSON 参数也支持 `@file.json`:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
cutcli captions add <draftId> --captions @captions.json --pretty
|
|
109
|
+
```
|