@optima-chat/optima-agent 0.9.13 → 0.9.15
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/.claude/skills/.kb-skills-managed.json +9 -9
- package/.claude/skills/ads/SKILL.md +244 -244
- package/.claude/skills/ads/template/campaign/CREATIVES.md +18 -18
- package/.claude/skills/ads/template/campaign/NOTES.md +10 -10
- package/.claude/skills/ads/template/campaign/STRATEGY.md +29 -29
- package/.claude/skills/ads/template/user/ADS.md +29 -29
- package/.claude/skills/ads/template/user/LEARNINGS.md +15 -15
- package/.claude/skills/ads/template/user/PROGRESS.md +20 -20
- package/.claude/skills/ads/template/user/README.md +25 -25
- package/.claude/skills/ads/template/user/assets/.gitignore +2 -2
- package/.claude/skills/bi/SKILL.md +131 -131
- package/.claude/skills/browser/SKILL.md +201 -201
- package/.claude/skills/channels/SKILL.md +188 -188
- package/.claude/skills/collection/SKILL.md +88 -88
- package/.claude/skills/douyin/SKILL.md +408 -408
- package/.claude/skills/ffmpeg/SKILL.md +164 -164
- package/.claude/skills/gen/SKILL.md +327 -279
- package/.claude/skills/growth/SKILL.md +90 -90
- package/.claude/skills/growth/template/ACCOUNTS.md +14 -14
- package/.claude/skills/growth/template/CALENDAR.md +7 -7
- package/.claude/skills/growth/template/COMMENTS.md +7 -7
- package/.claude/skills/growth/template/GROWTH.md +37 -37
- package/.claude/skills/growth/template/PROGRESS.md +4 -4
- package/.claude/skills/growth/template/README.md +20 -20
- package/.claude/skills/growth/template/TOPICS.md +7 -7
- package/.claude/skills/homepage/SKILL.md +177 -177
- package/.claude/skills/i18n/SKILL.md +517 -517
- package/.claude/skills/ingesting-sources/SKILL.md +94 -94
- package/.claude/skills/initializing-kb/SKILL.md +117 -117
- package/.claude/skills/instagram/SKILL.md +321 -321
- package/.claude/skills/inventory/SKILL.md +328 -328
- package/.claude/skills/kol-outreach/SKILL.md +232 -232
- package/.claude/skills/kol-outreach/template/campaign/CONFIG.md +60 -60
- package/.claude/skills/kol-outreach/template/campaign/KOLS.md +6 -6
- package/.claude/skills/kol-outreach/template/campaign/PROGRESS.md +3 -3
- package/.claude/skills/kol-outreach/template/campaign/TEMPLATES.md +88 -88
- package/.claude/skills/kol-outreach/template/merchant/BRAND.md +36 -36
- package/.claude/skills/kol-outreach/template/merchant/CAMPAIGNS.md +6 -6
- package/.claude/skills/kol-outreach/template/merchant/MERCHANT_LIMITS.md +16 -16
- package/.claude/skills/kol-outreach/template/merchant/PROGRESS.md +4 -4
- package/.claude/skills/kol-outreach/template/merchant/README.md +20 -20
- package/.claude/skills/linting-the-wiki/SKILL.md +68 -68
- package/.claude/skills/logistics/SKILL.md +180 -180
- package/.claude/skills/markdown-pdf/SKILL.md +72 -72
- package/.claude/skills/merchant/SKILL.md +110 -110
- package/.claude/skills/multigrid-poster/SKILL.md +192 -192
- package/.claude/skills/multigrid-poster/layouts/2x2.json +34 -34
- package/.claude/skills/multigrid-poster/layouts/3x3.json +43 -43
- package/.claude/skills/multigrid-poster/scripts/compose.py +116 -116
- package/.claude/skills/order/SKILL.md +452 -452
- package/.claude/skills/product/SKILL.md +379 -379
- package/.claude/skills/product-page/SKILL.md +106 -106
- package/.claude/skills/querying-the-wiki/SKILL.md +59 -59
- package/.claude/skills/reddit/SKILL.md +277 -277
- package/.claude/skills/review/SKILL.md +321 -321
- package/.claude/skills/scout/SKILL.md +575 -575
- package/.claude/skills/sentinel/SKILL.md +281 -281
- package/.claude/skills/shein/SKILL.md +246 -246
- package/.claude/skills/shipping/SKILL.md +200 -200
- package/.claude/skills/shop-content/SKILL.md +101 -101
- package/.claude/skills/shopify/SKILL.md +282 -282
- package/.claude/skills/skillify/SKILL.md +114 -114
- package/.claude/skills/taobao/SKILL.md +238 -238
- package/.claude/skills/tiktok/SKILL.md +381 -381
- package/.claude/skills/twitter/SKILL.md +302 -302
- package/.claude/skills/updating-related-pages/SKILL.md +65 -65
- package/.claude/skills/video-edit/SKILL.md +123 -138
- package/.claude/skills/video-gen/SKILL.md +720 -720
- package/.claude/skills/video-gen/templates/INDEX.md +78 -78
- package/.claude/skills/video-gen/templates/before-after-beauty.md +183 -183
- package/.claude/skills/video-gen/templates/drama-fmcg.md +183 -183
- package/.claude/skills/video-gen/templates/kol-reaction-food.md +193 -193
- package/.claude/skills/video-gen/templates/multi-point-apparel.md +185 -185
- package/.claude/skills/video-gen/templates/pain-solution-home.md +184 -184
- package/.claude/skills/video-gen/templates/pdp-360-showcase.md +189 -189
- package/.claude/skills/video-gen/templates/pdp-feature-highlight.md +182 -182
- package/.claude/skills/video-gen/templates/scene-digital.md +183 -183
- package/.claude/skills/wechat/SKILL.md +174 -174
- package/.claude/skills/xhs/SKILL.md +170 -170
- package/README.md +276 -276
- package/dist/bin/optima.js +26 -26
- package/dist/bin/serve.js +23 -23
- package/dist/src/agent.d.ts +1 -1
- package/dist/src/agent.js +4 -4
- package/dist/src/system-prompt.js +175 -175
- package/dist/src/tools/memory.js +10 -10
- package/dist/src/ui/headless.js +7 -7
- package/package.json +79 -79
- package/dist/bin/video-edit.d.ts +0 -3
- package/dist/bin/video-edit.d.ts.map +0 -1
- package/dist/bin/video-edit.js +0 -153
- package/dist/bin/video-edit.js.map +0 -1
|
@@ -1,65 +1,65 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: updating-related-pages
|
|
3
|
-
description: "在 ingest 后同步更新知识库的关联页面。通常由 ingesting-sources 触发,不单独使用。"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Updating Related Pages
|
|
7
|
-
|
|
8
|
-
在来源 ingest 之后,同步 wiki 的其他部分。
|
|
9
|
-
|
|
10
|
-
## 启动 SOP
|
|
11
|
-
|
|
12
|
-
1. `ls ~/kb/REGISTRY.md`
|
|
13
|
-
- 不存在 → 告诉用户"还没有知识库,需要先创建一个",引导使用 initializing-kb
|
|
14
|
-
2. 读 `~/kb/REGISTRY.md` — 获取所有 active 的 KB 列表
|
|
15
|
-
3. 确定目标 KB:
|
|
16
|
-
- 用户明确指定了 KB slug 或主题 → 直接用
|
|
17
|
-
- 只有一个 active KB → 用它
|
|
18
|
-
- 多个 active → 根据用户问题匹配 `主题` + `说明` 字段;无法判断时列出让用户选
|
|
19
|
-
4. 读 `~/kb/<slug>/AGENTS.md` 了解该 KB 的契约
|
|
20
|
-
|
|
21
|
-
## 更新流程
|
|
22
|
-
|
|
23
|
-
1. 从来源页或 ingest 产出的 affected-page 列表开始
|
|
24
|
-
2. 确认哪些 entity、overview 和 analysis 页面需要更新
|
|
25
|
-
3. 优先更新现有页面,而不是先新建页面
|
|
26
|
-
4. 为变更后的页面补齐或修复交叉链接
|
|
27
|
-
5. 如果创建了新的长期页面,更新 `~/kb/<slug>/index.md`
|
|
28
|
-
6. 如果这次变更实质性影响了 wiki,在 `~/kb/<slug>/log.md` 中追加记录
|
|
29
|
-
7. 追加 `~/kb/PROGRESS.md`
|
|
30
|
-
8. `cd ~/kb && git add -A && git commit -m "[<slug>] update: <更新了哪些页面>"`
|
|
31
|
-
|
|
32
|
-
## 更新规则
|
|
33
|
-
|
|
34
|
-
更新既有页面时:
|
|
35
|
-
|
|
36
|
-
- 保持页面的稳定职责
|
|
37
|
-
- 把新信息合并进正确的 section,而不是随手堆一段笔记
|
|
38
|
-
- 当新来源改变了先前理解时,要让修正过程可见
|
|
39
|
-
- 让 source-backed 内容与综合推断保持可区分
|
|
40
|
-
- 优先使用可链接的短陈述,而不是长段无结构文字
|
|
41
|
-
|
|
42
|
-
## 冲突处理
|
|
43
|
-
|
|
44
|
-
如果新来源与旧页面冲突:
|
|
45
|
-
|
|
46
|
-
- 不要无解释地删除旧结论
|
|
47
|
-
- 记录新的证据
|
|
48
|
-
- 更新当前理解
|
|
49
|
-
- 让之后的读者仍然看得出分歧在哪里
|
|
50
|
-
|
|
51
|
-
## 何时创建新页面
|
|
52
|
-
|
|
53
|
-
只有在下列情况下才应新建页面:
|
|
54
|
-
|
|
55
|
-
- 新信息引入了一个 recurring concept,但还没有稳定 landing page
|
|
56
|
-
- 某个 analysis 或 comparison 已经有独立长期价值
|
|
57
|
-
- 现有页面已经过宽,无法干净吸收这次更新
|
|
58
|
-
|
|
59
|
-
## 最小交付标准
|
|
60
|
-
|
|
61
|
-
一次成功的 related-page update 至少应留下:
|
|
62
|
-
|
|
63
|
-
- 被同步更新过的相关页面
|
|
64
|
-
- source、entity、overview 和 analysis 页面之间清晰的交叉链接
|
|
65
|
-
- 在适用时,对"理解发生变化"有可见处理
|
|
1
|
+
---
|
|
2
|
+
name: updating-related-pages
|
|
3
|
+
description: "在 ingest 后同步更新知识库的关联页面。通常由 ingesting-sources 触发,不单独使用。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Updating Related Pages
|
|
7
|
+
|
|
8
|
+
在来源 ingest 之后,同步 wiki 的其他部分。
|
|
9
|
+
|
|
10
|
+
## 启动 SOP
|
|
11
|
+
|
|
12
|
+
1. `ls ~/kb/REGISTRY.md`
|
|
13
|
+
- 不存在 → 告诉用户"还没有知识库,需要先创建一个",引导使用 initializing-kb
|
|
14
|
+
2. 读 `~/kb/REGISTRY.md` — 获取所有 active 的 KB 列表
|
|
15
|
+
3. 确定目标 KB:
|
|
16
|
+
- 用户明确指定了 KB slug 或主题 → 直接用
|
|
17
|
+
- 只有一个 active KB → 用它
|
|
18
|
+
- 多个 active → 根据用户问题匹配 `主题` + `说明` 字段;无法判断时列出让用户选
|
|
19
|
+
4. 读 `~/kb/<slug>/AGENTS.md` 了解该 KB 的契约
|
|
20
|
+
|
|
21
|
+
## 更新流程
|
|
22
|
+
|
|
23
|
+
1. 从来源页或 ingest 产出的 affected-page 列表开始
|
|
24
|
+
2. 确认哪些 entity、overview 和 analysis 页面需要更新
|
|
25
|
+
3. 优先更新现有页面,而不是先新建页面
|
|
26
|
+
4. 为变更后的页面补齐或修复交叉链接
|
|
27
|
+
5. 如果创建了新的长期页面,更新 `~/kb/<slug>/index.md`
|
|
28
|
+
6. 如果这次变更实质性影响了 wiki,在 `~/kb/<slug>/log.md` 中追加记录
|
|
29
|
+
7. 追加 `~/kb/PROGRESS.md`
|
|
30
|
+
8. `cd ~/kb && git add -A && git commit -m "[<slug>] update: <更新了哪些页面>"`
|
|
31
|
+
|
|
32
|
+
## 更新规则
|
|
33
|
+
|
|
34
|
+
更新既有页面时:
|
|
35
|
+
|
|
36
|
+
- 保持页面的稳定职责
|
|
37
|
+
- 把新信息合并进正确的 section,而不是随手堆一段笔记
|
|
38
|
+
- 当新来源改变了先前理解时,要让修正过程可见
|
|
39
|
+
- 让 source-backed 内容与综合推断保持可区分
|
|
40
|
+
- 优先使用可链接的短陈述,而不是长段无结构文字
|
|
41
|
+
|
|
42
|
+
## 冲突处理
|
|
43
|
+
|
|
44
|
+
如果新来源与旧页面冲突:
|
|
45
|
+
|
|
46
|
+
- 不要无解释地删除旧结论
|
|
47
|
+
- 记录新的证据
|
|
48
|
+
- 更新当前理解
|
|
49
|
+
- 让之后的读者仍然看得出分歧在哪里
|
|
50
|
+
|
|
51
|
+
## 何时创建新页面
|
|
52
|
+
|
|
53
|
+
只有在下列情况下才应新建页面:
|
|
54
|
+
|
|
55
|
+
- 新信息引入了一个 recurring concept,但还没有稳定 landing page
|
|
56
|
+
- 某个 analysis 或 comparison 已经有独立长期价值
|
|
57
|
+
- 现有页面已经过宽,无法干净吸收这次更新
|
|
58
|
+
|
|
59
|
+
## 最小交付标准
|
|
60
|
+
|
|
61
|
+
一次成功的 related-page update 至少应留下:
|
|
62
|
+
|
|
63
|
+
- 被同步更新过的相关页面
|
|
64
|
+
- source、entity、overview 和 analysis 页面之间清晰的交叉链接
|
|
65
|
+
- 在适用时,对"理解发生变化"有可见处理
|
|
@@ -1,138 +1,123 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: video-edit
|
|
3
|
-
description: "剪辑用户【已有的】口播视频——去除卡顿停顿让视频更流畅紧凑。
|
|
4
|
-
|
|
5
|
-
必备前提:用户已经有视频文件(拍好的、上传的、或给出文件路径)。
|
|
6
|
-
|
|
7
|
-
触发:用户上传/给出视频文件 + 说'剪一下'/'去卡顿'/'变流畅'/
|
|
8
|
-
'剪辑'/'剪短点'/'加字幕'/'cut'/'edit'/'trim'/'让视频更紧凑'。"
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# Video-Edit Skill — 让视频变流畅
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
## 用户怎么说,你交付什么
|
|
16
|
-
|
|
17
|
-
**默认所有剪辑都带字幕**——中文短视频(TikTok / 小红书 / 视频号)99% 需要字幕,"剪一下"的潜台词就是"给我能直接发的成片"。
|
|
18
|
-
|
|
19
|
-
| 用户说 | 你交付 |
|
|
20
|
-
|---|---|
|
|
21
|
-
| "剪一下" / "去卡顿" / "变流畅" | `<video>_subbed.mp4`(剪 + 字幕) |
|
|
22
|
-
| "剪成 X 秒短视频" / "30 秒" | `<video>_subbed.mp4`(压到目标时长 + 字幕) |
|
|
23
|
-
| "加字幕"(不需要剪) | `<video>_subbed.mp4`(仅字幕) |
|
|
24
|
-
| "剪一下不要字幕" / "无字幕版" | `<video>_edited.mp4` |
|
|
25
|
-
|
|
26
|
-
只有当用户提到平台但**没说目标时长**时(如"剪成 TikTok"无时长),才追问"目标多长?"。
|
|
27
|
-
其他情况**直接动手**,不要废话。
|
|
28
|
-
|
|
29
|
-
##
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
-
|
|
124
|
-
- ❌ 用户说"剪一下"只交付 `_edited.mp4` 不烧字幕——**默认带字幕**,除非用户明说不要
|
|
125
|
-
- ❌ 让用户编辑 cut_proposal.md——**你来编辑**
|
|
126
|
-
- ❌ 把命令名暴露给用户——简单交付即可
|
|
127
|
-
- ❌ 编造命令(仅 5 个:both / analyze / cut / review / subtitle)
|
|
128
|
-
- ❌ 用户说"剪掉前 X 秒"/"剪掉中间一段"——这是定点裁剪不是去卡顿停顿,video-edit 不做这个;直接告诉用户"我擅长去卡顿停顿,定点裁剪请用别的方式"
|
|
129
|
-
|
|
130
|
-
## 命令参考(你内部用)
|
|
131
|
-
|
|
132
|
-
| 命令 | 用途 |
|
|
133
|
-
|---|---|
|
|
134
|
-
| `video-edit both <video>` | 一键自动剪辑 |
|
|
135
|
-
| `video-edit analyze <video>` | 生成 `<video>.work/cut_proposal.md` |
|
|
136
|
-
| `video-edit cut <video>` | 按 proposal 剪辑 |
|
|
137
|
-
| `video-edit review <video>` | 检查 `<video>_edited.mp4`,输出 review_report.md |
|
|
138
|
-
| `video-edit subtitle <video>` | 烧字幕。传**原片路径**即可,自动找 `_edited.mp4` 做输入;输出固定是 `<原片>_subbed.mp4`(不会带 `_edited`) |
|
|
1
|
+
---
|
|
2
|
+
name: video-edit
|
|
3
|
+
description: "剪辑用户【已有的】口播视频——去除卡顿停顿让视频更流畅紧凑。
|
|
4
|
+
|
|
5
|
+
必备前提:用户已经有视频文件(拍好的、上传的、或给出文件路径)。
|
|
6
|
+
|
|
7
|
+
触发:用户上传/给出视频文件 + 说'剪一下'/'去卡顿'/'变流畅'/
|
|
8
|
+
'剪辑'/'剪短点'/'加字幕'/'cut'/'edit'/'trim'/'让视频更紧凑'。"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Video-Edit Skill — 让视频变流畅
|
|
12
|
+
|
|
13
|
+
用户给原始视频,你交付剪好的成片。
|
|
14
|
+
|
|
15
|
+
## 用户怎么说,你交付什么
|
|
16
|
+
|
|
17
|
+
**默认所有剪辑都带字幕**——中文短视频(TikTok / 小红书 / 视频号)99% 需要字幕,"剪一下"的潜台词就是"给我能直接发的成片"。
|
|
18
|
+
|
|
19
|
+
| 用户说 | 你交付 |
|
|
20
|
+
|---|---|
|
|
21
|
+
| "剪一下" / "去卡顿" / "变流畅" | `<video>_subbed.mp4`(剪 + 字幕) |
|
|
22
|
+
| "剪成 X 秒短视频" / "30 秒" | `<video>_subbed.mp4`(压到目标时长 + 字幕) |
|
|
23
|
+
| "加字幕"(不需要剪) | `<video>_subbed.mp4`(仅字幕) |
|
|
24
|
+
| "剪一下不要字幕" / "无字幕版" | `<video>_edited.mp4` |
|
|
25
|
+
|
|
26
|
+
只有当用户提到平台但**没说目标时长**时(如"剪成 TikTok"无时长),才追问"目标多长?"。
|
|
27
|
+
其他情况**直接动手**,不要废话。
|
|
28
|
+
|
|
29
|
+
## 核心原则:一键出片,不满意再调
|
|
30
|
+
|
|
31
|
+
用户说"剪一下",你**直接出成片**,不要中途停下来问确认。像开拍 app 一样:上传 → 自动出片 → 不满意再调。
|
|
32
|
+
|
|
33
|
+
**不满意时的调整**:用户看完成片说"第X段不该删"/"XX那句话留着",你编辑 `cut_proposal.md`(去掉/加上 `#` 注释),重跑 `cut` + `subtitle`,几秒出新版。
|
|
34
|
+
|
|
35
|
+
## 你的内部流程
|
|
36
|
+
|
|
37
|
+
### 默认剪辑(剪 + 字幕,最常见)
|
|
38
|
+
|
|
39
|
+
一步到位,不要分步等确认:
|
|
40
|
+
```bash
|
|
41
|
+
video-edit both <video>
|
|
42
|
+
video-edit subtitle <video>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
`both` = analyze + cut,一口气完成转写、静音检测、生成 proposal、执行剪辑。
|
|
46
|
+
`subtitle` 从原始转写推算字幕时间轴(不会重新调 whisper),烧录输出 `<原片>_subbed.mp4`。
|
|
47
|
+
|
|
48
|
+
### 用户要求调整时
|
|
49
|
+
|
|
50
|
+
用户看完成片说某段不对:
|
|
51
|
+
1. 读 `<video>.work/cut_proposal.md`
|
|
52
|
+
2. 编辑对应行(`#` 注释 = 删除,去掉 `#` = 保留)
|
|
53
|
+
3. 删除 `<video>.work/subs.ass`(让 subtitle 重新生成)
|
|
54
|
+
4. 重跑:
|
|
55
|
+
```bash
|
|
56
|
+
video-edit cut <video>
|
|
57
|
+
video-edit subtitle <video>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
这两步纯本地(不调 whisper),几秒完成。
|
|
61
|
+
|
|
62
|
+
### 限时长精剪(用户给了目标时长)
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
video-edit analyze <video>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
读 `<video>.work/cut_proposal.md`,**你自己**做这些判断:
|
|
69
|
+
- 找钩子句放最前
|
|
70
|
+
- 删跑题、删 NG、删填充词
|
|
71
|
+
- 压到目标时长
|
|
72
|
+
- 把要删的行首加 `#`,保存
|
|
73
|
+
- 删除 `<video>.work/subs.ass`
|
|
74
|
+
|
|
75
|
+
然后:
|
|
76
|
+
```bash
|
|
77
|
+
video-edit cut <video>
|
|
78
|
+
video-edit subtitle <video>
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### 仅字幕(用户明确说不剪)
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
video-edit subtitle <video>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
没有 `_edited.mp4` 时,命令直接对原片烧字幕,输出 `<原片>_subbed.mp4`。
|
|
88
|
+
|
|
89
|
+
### 无字幕版(用户明确说不要字幕)
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
video-edit both <video>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
交付 `<原片>_edited.mp4`,不跑 subtitle。
|
|
96
|
+
|
|
97
|
+
## 交付怎么说
|
|
98
|
+
|
|
99
|
+
简洁,**只说结果**:
|
|
100
|
+
|
|
101
|
+
- ✅ "剪好了,xxx_subbed.mp4,时长 23 秒"
|
|
102
|
+
- ✅ "无字幕版剪好了,xxx_edited.mp4,时长 23 秒"
|
|
103
|
+
- ❌ "我用了 video-edit analyze,然后编辑了 cut_proposal.md..."
|
|
104
|
+
- ❌ "review 显示 3 个 WARN,但都不影响..."
|
|
105
|
+
|
|
106
|
+
## 不要做的事
|
|
107
|
+
|
|
108
|
+
- ❌ 用户说"剪一下"就追问平台/钩子/时长——直接 `both` + `subtitle`
|
|
109
|
+
- ❌ 用户说"剪一下"只交付 `_edited.mp4` 不烧字幕——**默认带字幕**
|
|
110
|
+
- ❌ 剪之前停下来展示方案等确认——**直接出片**,不满意再调
|
|
111
|
+
- ❌ 把命令名、cut_proposal.md 路径暴露给用户——内部实现细节
|
|
112
|
+
- ❌ 编造命令(仅 5 个:both / analyze / cut / review / subtitle)
|
|
113
|
+
- ❌ 用户说"剪掉前 X 秒"/"剪掉中间一段"——定点裁剪不是去卡顿,告诉用户"我擅长去卡顿停顿,定点裁剪请用别的方式"
|
|
114
|
+
|
|
115
|
+
## 命令参考(你内部用)
|
|
116
|
+
|
|
117
|
+
| 命令 | 用途 |
|
|
118
|
+
|---|---|
|
|
119
|
+
| `video-edit both <video>` | **默认用这个**:analyze + cut 一步到位 |
|
|
120
|
+
| `video-edit analyze <video>` | 仅转写 + 生成 proposal(限时长精剪时用) |
|
|
121
|
+
| `video-edit cut <video>` | 按 proposal 剪辑,生成 `_edited.mp4` |
|
|
122
|
+
| `video-edit review <video>` | 诊断用:检查 `_edited.mp4`,输出 review_report.md |
|
|
123
|
+
| `video-edit subtitle <video>` | 烧字幕。传**原片路径**,自动找 `_edited.mp4` 做输入,输出 `<原片>_subbed.mp4` |
|