用 CapCut + Claude 自动化 YouTube Shorts:CLI 完整管线

自动化 YouTube Shorts 是一条四步管线:挑出对的 60 秒、写一个能抓住人的开头、用代码拼出 CapCut 草稿、渲染发布。第一步和第二步用大模型。第三步需要一个能把 CapCut 工程文件写出来的确定性工具。第四步是个渲染按钮。这篇讲的是第一到第三步,以及我为了让第三步成立而写的开源 CLI。

想要现成可跑的完整管线? 我把完整的爆款短片系统 —— 选题逻辑、开头模板、驱动 capcut-cli 全自动跑的 Claude skill —— 都打包在 Viral Story Shorts Blueprint(爆款故事短片蓝图) 里。下面这个 CLI 是引擎,蓝图是工作流。

为什么要自动化

人手做一条 YouTube Short 大约要 45 分钟到 2 小时。挑片段、找出对的那 20 秒、打字幕、对时间、加开头卡、放 CTA、渲染。大部分都是机械活儿。真正决定数据的部分 —— 选段和开头文案 —— 只占 15% 的时间。剩下 85% 都在 CapCut 里挪方块。

如果你打算每天发一条 Short,机械活儿会累积成一份兼职。如果你打算每天发五条、跑三个号,那就是全职,而且因为太累质量会下滑。自动化把比例反过来:模型把算力用在需要判断的部分,CLI 把毫秒花在不需要判断的部分。

硬限制是 CapCut 没有公开 API。你不能 POST /drafts 拿一个工程文件回来。草稿格式是嵌套很深的 draft_content.json,时间单位是微秒、字幕文字埋在转义过的 JSON 字符串里、segment ID 要对得上 material ID 又要对得上 track ID。手动改很脆。capcut-cli 填的就是这个空白。

capcut-cli 做什么

capcut-cli 是一个开源的 Node CLI,直接读写 CapCut 和剪映的项目文件。它把工程文件暴露成命令列表,而不是 JSON 树:

npm install -g capcut-cli

capcut info ./project              # 概览
capcut texts ./project             # 列字幕
capcut set-text ./project a1b2c3 "新字幕"
capcut shift-all ./project +0.3s --track text
capcut cut ./project 1:00 2:00 --out ./short.json

默认 JSON 输出,可以管道给 jq,也能从任何语言里调。--human 参数给人看的表格输出。所有写操作都先备份。同一个二进制在 macOS、Windows、Linux 上都能跑。包和源码在 npmGitHub

重点不是 CLI 本身。重点是:有了这个确定性 CLI 挡在 CapCut 工程格式前面,大模型就能在不胡编时间戳、不破坏 schema 的前提下驱动剪辑这一步。

四步管线

下面是自动化的形状。每一步都互相独立、可替换。

1. 选段

长视频里值得切短的就那么几个瞬间,剩下都是水分。选段是判断题,但是有边界的判断题:给一份带时间戳的字幕,挑出开头潜力最强的 60 秒窗口。

# 从你的 CapCut 项目导出字幕
capcut export-srt ./long-video > transcript.srt

# 给 Claude,让它返回 JSON 数组的候选窗口
claude --prompt "对下面这份 SRT 排出候选 60s 窗口。返回 JSON:[{start_ms, end_ms, hook_strength, rationale}]" \
       --input transcript.srt > candidates.json

# 取最强的那个
START=$(jq -r '.[0].start_ms / 1000 | floor' candidates.json)
END=$(jq -r '.[0].end_ms / 1000 | floor' candidates.json)

# 切出来
capcut cut ./long-video "${START}s" "${END}s" --out ./short.json

capcut cut 在边界裁剪片段、把时间归零、删掉空轨道、清理没人引用的素材。输出的是独立草稿,不是偷偷指向母工程的切片。

2. 写开头

Shorts 的前三秒决定观众是不是划走。Claude API 配一个锐利的 system prompt 在这件事上很在行。便宜也行 —— Haiku 就够了。也可以换成国内的模型(DeepSeek、GLM、Kimi 都行,提示几乎不用改,下面模型无关那一节再展开)。

HOOK=$(claude --model haiku-4.5 \
  --prompt "为下面这段字幕写三个开头变体: <SEGMENT_TRANSCRIPT>。\
            约束:8 字以内、不标题党、必须接得住正文。\
            返回 JSON:[{hook, predicted_retention, why}]" \
  | jq -r '.[0].hook')

capcut add-text ./short.json 0s 3s "$HOOK" \
  --font-size 28 --color "#FFD700" --align 1 --y -0.4

注意位置参数。--y -0.4 把开头放在画面上三分之一,眼睛先落到那儿。--align 1 居中。这些是人工剪辑师手做的部分,模型对空间没有直觉 —— CLI 当默认值带着走。

3. 拼出草稿

有了片段和开头,剩下的草稿都是确定性的。下三分之一署名、片尾 CTA 卡、背景音乐、CTA 箭头,每个元素都是一行命令。

# 下三分之一署名
capcut add-text ./short.json 5s 15s "@你的频道" \
  --font-size 14 --color "#FFFFFF" --align 0 --x -0.4 --y -0.45

# 片尾 CTA
capcut add-text ./short.json 55s 5s "完整视频在简介里" \
  --font-size 14 --color "#FFFFFF" --align 1 --y 0

# 低音量的背景音乐
capcut add-audio ./short.json ./music/lofi-loop.mp3 0s 60s --volume 0.2

或者用 batch 一次性写入,更快,因为只解析一次工程文件:

echo '{"cmd":"add-text","start":"0s","duration":"3s","text":"开头那句","y":-0.4}
{"cmd":"add-text","start":"5s","duration":"15s","text":"@你的频道","y":-0.45,"x":-0.4}
{"cmd":"add-text","start":"55s","duration":"5s","text":"完整视频在简介里","y":0}' \
  | capcut batch ./short.json

模板让多条短片之间的复用更快。把一条做好的标题样式抽成模板,套到每一条新短片上:

# 一次:抽出你的招牌标题样式
capcut save-template ./reference-short a1b2c3 "house-title" --out ~/.shorts/house-title.json

# 之后每一条新短片
capcut apply-template ./short.json ~/.shorts/house-title.json 0s 3s "$HOOK"

4. 打开、审核、渲染

CapCut 仍然管着渲染步骤和一些 CLI 没暴露的关键帧效果。在 CapCut 里打开草稿,眼瞄一遍时间轴,渲染成 MP4。自动化把你送到渲染步骤的起点,不是一路送到上传。这是有意为之 —— 你要在署你名字的东西上 YouTube 之前留一道人工审核闸门。

上传那一步用 YouTube Data API 就行。yt-upload --file ./short.mp4 --title "$TITLE" --description "$DESCRIPTION" 是常规写法。也别在没有审核闸门的情况下自动上传 —— 标题和描述写错了,比节奏不好修起来麻烦得多。

模型无关:可换 DeepSeek / GLM / Kimi

整个管线里,第 1 步和第 2 步是模型调用。capcut-cli 本身跟模型无关。如果你不想用 Claude,提示几乎一字不改就能换成:

  • DeepSeek-V3 / R1 —— 编程和逻辑推理任务上极受欢迎,价格只有海外大模型的一小部分
  • Zhipu GLM-4.5 —— 在国内被叫"中文 Claude",复杂任务处理表现稳
  • Moonshot Kimi —— 200k+ 上下文,长视频字幕一次塞进去都没问题

提示模板基本通用,差别在 API endpoint 和返回格式。把上面的 claude --prompt 替换成对应 SDK 的 chat.completions 调用即可。

让 Shorts 火起来的那部分(最难的)

上面这条管线让你能跑出量。火不火它管不了。火是选段、开头质量、包装 —— 这些是 CLI 替不了的创意判断。

几条真的影响数据的规律:

故事弧,不是摘要。 一条有起承转合的 Short 比一条总结更长视频的 Short 留存更好。CLI 让你能把同一份素材切成不同的微叙事 —— 挑那条故事弧最强的。

先把"回报信号"前置。 在最前两秒就告诉观众他能在这条里拿到什么,哪怕真的回报在 0:45 才出现。这是开头的活儿,是整条短片里杠杆最高的一行。

字幕永远要有,大字号、高对比度。 大多数 Shorts 是静音看的。CLI 通过 capcut add-text--y 控制纵向位置;默认放下三分之一,大号字,白底带阴影。

只放一个 CTA,片尾,别堆链接。 “完整视频在简介里"比三个 CTA 互相打架表现要好。在 55 秒处用 capcut add-text 加上,想要更精致就配个淡入。

这些是 CLI 替你做不了的创意决策。CLI 让这些决策的执行变得便宜,所以你能反复 A/B。

完整蓝图

如果你要的是完整管线 —— 选得准的选段提示、上过量的开头模板、不用人工胶水就把 capcut-cli 全程串起来的 Claude skill —— 那是我打包的 Viral Story Shorts Blueprint。Claude Code 直接载入,跑在开源 CLI 之上。

只想要 CLI 也行:npmGitHub 上都有,MIT 许可,没埋点,二进制里没有任何升级推销。

关于作者

我是 Rene Zander,做 AI 内容自动化系统,服务对象是个人创作者和小团队。更多技术文章在 renezander.com,需要定制可以 联系我