Vuncloud 博客
← 返回机房手记专栏

Video-Use 怎么用?让 Claude Code、Codex 等 AI Coding Agent 自动剪辑视频:自然语言视频编辑、素材处理与 AI 视频工作流实战

开源 skill · takes_packed.md · edit/final.mp4约 12 分钟阅读

非线性剪辑软件时间线上的彩色片段、播放头和音频波形,对应 video-use 用 EDL 驱动 ffmpeg 自动剪辑
TL;DR · 先看这五句
  • video-use 是 browser-use 的开源技能,不是 Premiere。素材丢进文件夹,跟 Agent 说话,拿回 edit/final.mp4
  • 模型不看整段视频。主阅读物是 ElevenLabs Scribe 打出来的逐词转写,压成约 12KB 的 takes_packed.md
  • 顺序固定:盘点 → 白话策略 → 你点头 → EDL → ffmpeg 渲染 → 切点自检,最多 3 轮
  • Claude Code、Codex、Hermes、OpenClaw 都能接。整仓软链接到技能目录,旁边要有 ffmpeg 和 ELEVENLABS_API_KEY
  • 口播、教程、访谈最合适。纯画面蒙太奇转写很薄;复杂调色仍留给时间线软件

把「帮我剪掉嗯啊」打进对话框,Agent 如果只会把整段 mp4 丢给视觉模型,账单和时延都会先爆。browser-use 的 video-use 换了一条路:让 Claude Code、Codex 这类能跑命令的编码 Agent去读转写、写剪辑决定表(EDL),再调用 ffmpeg 出片。仓库写明 100% 开源,入口是 github.com/browser-use/video-use。本文按 2026 年 9 月 23 日仓库里的 README、install.md 和 SKILL.md整理。命令和目录以当天文件为准,拉取后若有变动,以你本地的 SKILL.md 为准。

它适合的片子官方列过:口播、蒙太奇、教程、旅行、访谈。没有预设菜单。你要的是一段能跑完的 Agent 会话,外加一台不会中途睡眠的机器来扛转写之后的渲染。

12
条生产正确性硬规则
~12KB
takes_packed.md,模型的主阅读物
30ms
每个切点的音频淡入淡出

video-use 在剪什么

你不打开时间线。你把原始条放进一个文件夹,在那个目录启动 Agent,用白话说目标。官方示例就一句:edit these into a launch video。Agent 先清点素材、提出策略、等你同意,再在素材旁边写出 edit/final.mp4。技能仓库本身保持干净,产物不准写进 video-use/。

README 列出的成片能力,都是 ffmpeg 和几个可选动画引擎能做的事,不是新模型:

  • 去掉口头禅和条与条之间的死气:umm、uh、说错重来、静音
  • 按段调色:暖调电影感 warm_cinematic、中性增强 neutral_punch,或你自己的 ffmpeg 滤镜链
  • 每个切点 30ms 音频淡化,避免爆音
  • 烧录字幕:默认两词、全大写,风格可改
  • 叠动画:HyperFrames、Remotion、Manim 或 PIL,多条动画用子 Agent 并行
  • 渲染后自检,过了才给你看;会话记忆写在 project.md,下周接着剪

和 browser-use 看网页的思路同一类:与其把截图塞满上下文,不如给模型一份结构化文本。视频这边,那份文本就是转写。

模型怎么「读」视频

SKILL 写得很直:LLM 从不观看视频,它阅读视频。两层就够它按词边界下刀。

第一层永远加载:音频转写。每个源文件打一次 ElevenLabs Scribe,拿到逐词时间戳、说话人分离,以及 (laughter)、(applause)、(sigh) 这类音频事件。所有条压进一份约 12KB 的 takes_packed.md。短语在静音达到 0.5 秒或换说话人时断开。模型主要读的就是这种行:

## C0103  (duration: 43.0s, 8 phrases)
  [002.52-005.36] S0 Ninety percent of what a web agent does is completely wasted.
  [006.08-006.74] S0 We fixed this.

第二层按需调用:画面复合。timeline_view 对某一时间窗导出胶片条、波形和词标签 PNG。只用在决策点:含糊的停顿、两条重拍怎么选、切点是否干净。它不是扫描工具,不要每秒都叫一次。

官方拿一条朴素路径做对比:3 万帧乘每帧约 1500 token,大约 4500 万 token 的噪声。video-use 的路径是 12KB 文本加少数几张 PNG。这个数字是仓库自己的对照,不是本站实测账单。你要记住的是方向:上下文里应该是词和时间,不是抽帧。

片场场记板写着镜头号、时间码和场次名,对应 video-use 先盘点多条素材再提出剪辑策略
先有条号和时间码,再谈剪哪一句。原片留在素材目录,决定写进 edit/。

安装:Claude Code、Codex、OpenClaw

机器上要同时有四样东西:稳定路径上的仓库克隆、$PATH 里的 ffmpeg 和 ffprobe、仓库根目录 .env 里的 ElevenLabs 密钥,以及当前 Agent 能发现 SKILL.md。Python 依赖在 pyproject.toml:requests、librosa、matplotlib、pillow、numpy。没有控制台命令,脚本用 python helpers/….py 直接跑。

把安装交给 Agent

官方建议把下面这段贴给 Claude Code、Codex、Hermes、OpenClaw,或任何有 shell 的 Agent。它会自己克隆、装依赖、注册技能,并在需要时向你要一次密钥:

Set up https://github.com/browser-use/video-use for me.

Read install.md first to install this repo, wire up ffmpeg, register the skill with whichever agent you're running under, and set up the ElevenLabs API key — ask me to paste it when you need it. Then read SKILL.md for daily usage, and always read helpers/ because that's where the editing scripts live. After install, don't transcribe anything on your own — just tell me it's ready and wait for me to drop footage into a folder.

密钥在 elevenlabs.io 的 API keys 页。安装验收只检查 timeline_view.py --help 和 ffprobe -version。不要为了「证明装好了」去转写一条真片,Scribe 按次计费。密钥写进 ~/Developer/video-use/.env 后 chmod 600,不要回显,不要提交。

自己克隆和注册

想亲手做,按仓库的手动安装。软链接的是整个目录,因为 helpers/ 必须和 SKILL.md 做邻居:

git clone https://github.com/browser-use/video-use ~/Developer/video-use
ln -sfn ~/Developer/video-use ~/.claude/skills/video-use
# Codex:ln -sfn ~/Developer/video-use ~/.codex/skills/video-use

cd ~/Developer/video-use
uv sync                         # 或 pip install -e .
brew install ffmpeg             # 必需,ffprobe 一并装上
brew install yt-dlp             # 可选,只有要从 URL 拉片时才需要

cp .env.example .env            # ELEVENLABS_API_KEY=...
Agent 技能落点
Claude Code ~/.claude/skills/video-use
Codex ${CODEX_HOME:-~/.codex}/skills/video-use
Hermes / OpenClaw / 其他 该 Agent 的 skills 目录,名字仍叫 video-use。没有技能目录时,在系统提示里指向 ~/Developer/video-use/SKILL.md

ffmpeg 要 4.x 或更新。静态构建也可以。Linux 用发行版包,别猜 sudo 密码。HyperFrames、Remotion、Manim 第一次做动画槽才装,不要在安装日全局偏好某一个。HyperFrames 当前要 Node.js 22+。yt-dlp 同样懒安装。

更新就 git pull --ff-only,软链接下次会话自动吃到新代码。依赖清单变了再跑一次 uv sync。

第一次出片

装完之后,人在素材目录,不在技能仓库:

cd /path/to/your/videos
claude    # 或 codex、hermes

第一句不要说「开始渲染」。说:盘点这些条,用白话给我一条策略。官方流程是问清楚、确认、再执行、再自检、再记入 project.md。策略没点头,不准动刀。

一次正常会话会经过这些问法,问题随素材变,没有固定清单:片子类型、目标时长和画幅、气质、必须留下的瞬间、必须剪掉的瞬间、要不要动画和调色、要不要字幕。然后 Agent 用 4 到 8 句写出形状:选哪条、往哪切、动画、调色、字幕、预计时长。你回复同意之后,它才写 edl.json、按段调色、调用 render.py。

预览用 render.py --preview(720p,快)。自检看的是成片上每个切点前后约 1.5 秒的 timeline_view,外加片头片尾和中间两三处,并用 ffprobe 对时长。失败就改、再渲染、再看,最多 3 轮。3 轮还有问题,要标给你,不准死循环。你看到预览时,自检应该已经过了。

项目方也提供了托管试玩(Browser Use Cloud)以及用 Browser Use Box 从 VPS 或 Telegram 常开的入口。你自己的机器或 Cloud Mac 上,路径就是上面这套:素材目录 + 已注册的技能。

目录、脚本和 EDL

原片不动。会话全部落在 <videos_dir>/edit/:

路径 作用
project.md 每场会话追加一段:策略、决定、未完成项。下次先读它
takes_packed.md 短语级转写,选切点的主阅读物
transcripts/*.json Scribe 原始 JSON,按源文件缓存。源文件没变就不要重转
edl.json 切点、调色、叠层、字幕路径、总时长
clips_graded/ 按段抽出并已调色、已做音频淡化的片段
animations/slot_* 每个动画槽自己的源和成片
master.srt · preview.mp4 · final.mp4 成片时间轴上的字幕、预览、终片

流水线是一条直线,自检可以退回渲染,但有上限:

Transcribe → Pack → LLM 推理 → EDL → Render → Self-Eval
                                              └ 有问题就改,最多 3 轮

常用脚本都在 helpers/,路径相对 SKILL.md 所在目录:

  • transcribe.py:单文件 Scribe,可加 --num-speakers,结果缓存
  • transcribe_batch.py <videos_dir>:4 个 worker 并行,多条素材用这个
  • pack_transcripts.py --edit-dir:JSON 收成 takes_packed.md
  • timeline_view.py:决策点的胶片条 PNG
  • render.py <edl.json> -o …:按段抽出、拼接、叠层、最后烧字幕。--preview 走 720p,--build-subtitles 顺手写 master.srt
  • grade.py:预设或 --filter 自定义链。调色发生在抽段时,不要拼完再整片重编码

edl.json 的形状大致如此。时间和路径来自你的素材,不要抄示例里的秒数:

{
  "version": 1,
  "sources": {"C0103": "/abs/path/C0103.MP4"},
  "ranges": [
    {"source": "C0103", "start": 2.42, "end": 6.85,
     "beat": "HOOK", "quote": "...", "reason": "这遍最干净"}
  ],
  "grade": "warm_cinematic",
  "overlays": [
    {"file": "edit/animations/slot_1/render.mp4", "start_in_output": 0.0, "duration": 5.0}
  ],
  "subtitles": "edit/master.srt",
  "total_duration_s": 87.4
}

多条里选最佳一句时,会再开一个编辑子 Agent:按节拍(HOOK、问题、解法……)而不是按文件顺序组装,起止必须落在词边界上。结构可以是发布片、教程、访谈或你自己发明的,不要套死一种。

会翻车的硬规则

SKILL 把艺术判断交给模型,只把不遵守就会静默坏片的 12 条钉死。下面是剪的时候真正会听到、看到的那些,其余几条(缓存转写、并行动画、先确认再动刀、产物只进 edit/)已经写在前面。

规则 不遵守时你看到什么
字幕放在滤镜链最后 叠层盖住字幕,而且不一定报错
按段抽出,再用无损 -c copy 拼接 单遍滤镜图在加叠层时把每段再编码一次
切点 30ms afade 每个切口一声爆音
叠层用 setpts 把第 0 帧挪到窗口起点 窗口里播到动画中段
SRT 用成片时间轴:词起点 − 段起点 + 段偏移 拼接后字幕整段错位
切口落在词边界,并外扩 30–200ms 切进词中间。Scribe 时间戳会漂 50–100ms,外扩是拿来吃掉漂移的
只要逐词原文,不要短语模式 SRT,也不要被归一化的口头禅 亚秒级气口丢了,去「嗯」没有信号

本地 Whisper 的 SRT 被明确写成反模式:慢,而且会把口头禅归一化掉。转写走托管 Scribe,并按源文件缓存。

素材怎么处理

切点从话和气口来,画面跟着走。静音 ≥400ms 通常是最干净的切口;150–400ms 的短语边界可以用,但要看一眼画面;短于 150ms 多半切在半句里,不安全。说话人交接可以留 400–600ms 气口,快剪收紧,纪录放宽,这是口味不是法律。笑、包袱、强调要留尾巴,笑声本身就是拍点。(laughs) 这类事件是信号,切口不要卡在它前面。

每一刀都要音画一起成立。只修音频或只修画面,是 SKILL 点名的失败方式。

调色按段做。先用 timeline_view 看一帧,再改一件事,再看。预设只是起点:口播上 warm_cinematic 比较安全,neutral_punch 只加对比、不动色相,none 是用户没提调色时的默认。肤色没试过,不要把斜率拉得很猛。

字幕三个旋钮:一行几个词、大小写、离底边多远。短视频发布片的现成风格是两词全大写、Helvetica 18 Bold、白字黑边、MarginV=35。纪录片可以改成一句 4–7 词、正常大小写、边距更大。无论哪种,字幕最后烧,时间码用成片轴。

动画按槽选引擎,不要因为「像网页」就默认 Remotion:

  • HyperFrames:HTML/CSS/GSAP,产品界面动效、透明 WebM。槽目录里 npx --yes hyperframes,要 Node 22+
  • Remotion:用户点名 React,或已有 Remotion 设计系统时再用
  • Manim:公式、状态机、图的变形。仓库自带 skills/manim-video/
  • PIL + PNG 序列:计数、打字机、单条揭示。发布片示例用的就是这条,快

配色、字体没说清楚就停在策略阶段,确认后再画。跟旁白对齐的卡片,简单的大约 5–7 秒,复杂图 8–14 秒,落幅至少停 1 秒。揭示用三次缓出,不要线性。多个动画槽同时开子 Agent,墙钟时间约等于最慢的那条。每个子 Agent 的提示要自包含,因为它们看不到父会话。

画幅跟源,除非你指定。常见目标:电影感 1920×1080@24、屏幕内容 30fps、竖屏 1080×1920、方形 1080×1080。render.py 默认收到什么都缩到 1080p。交付比例值得在策略里问一句。

自然语言话术

有效的话术都在约束策略,而不是替 ffmpeg 写滤镜。下面是同一套流程里能直接说的句子,中英都行,Agent 读的是意图:

  • 「先别转写以外的事。盘点文件名、时长、有没有对白,用六句话给策略,等我回复再写 EDL。」
  • 「这是产品发布口播。目标 60–90 秒、16:9。去掉嗯、啊和说错重来。留下那句 We fixed this 和后面的笑声。」
  • 「两条都讲了定价。用没有口误的那条。切口落在词边界,前后各留大约 80ms。」
  • 「不要调色。不要字幕。先 --preview。我点头再出 final.mp4。」
  • 「竖屏 1080×1920,字幕用两词大写。动画只要一张 5 秒的标题卡,确认配色再做。」
  • 「源文件没换,不要重新转写。按我上一条意见只改 HOOK 的出点。」

改意见时走自然语言回环:重定策略、重渲染、不重转写。终片在你确认预览之后再出。每场结束会往 project.md 追加策略、决定和未完成项。下次进目录,Agent 应先用一句话概括上一场,再问要不要续。

什么时候别用它

它是编码 Agent 上的剪辑技能,不是调色台。

  • 几乎没有对白的音乐蒙太奇。切点设计以语音边界和静音为主。画面意图你得自己写进策略,否则模型没有主阅读物。
  • 你要手拖关键帧、多机位实时切换、精细二级调色。这些留在 Final Cut、Premiere、DaVinci。video-use 负责粗剪、去口头禅、烧字幕、简单叠层,成片可以再进 NLE。
  • 转写预算。Scribe 花的是 ElevenLabs 额度。缓存存在就是为了不重复付。安装时试跑一条长片,是最常见的浪费。
  • 自检不是审片。它抽切点附近的 PNG 和波形,抓跳切、爆音、被挡住的字幕。它不保证笑话好笑,也不保证品牌色正确。口味仍要你点头。
  • 权利。只处理你有权剪的素材。技能可以配合 yt-dlp 拉 URL,那是素材入口,不是绕过版权的理由。
  • 密钥。只放在技能仓库的 .env。不要写进素材目录,不要贴进会同步到别处的聊天记录。

长会话为什么放 Cloud Mac

一次发布片往往是:批量转写、来回改策略、720p 预览、再加一两条动画槽、最后 1080p。ffmpeg 和子 Agent 都吃时间。笔记本合盖、Agent 进程跟着睡,edit/ 会停在半截预览上。

  • 会话别断。在 Cloud Mac 上开 tmux,Claude Code 或 Codex 跑在里面。断线之后渲染还在,project.md 也还在。
  • 工具链就是 brew。官方 macOS 路径是 brew install ffmpeg。同一台机器上还有 Python、uv,以及 HyperFrames 要的 Node 22。不用在渲染中途换一台 Linux 去找滤镜差异。
  • 磁盘跟着素材走。原片和 edit/ 放在 Agent 所在的那块盘。软链接只链技能仓库,不链素材。
  • 和编码任务分开也行,合在一台更省事。同一台 Mac 上,上午 Codex 改仓库,下午 video-use 剪发布口播。两边都是长会话,都怕睡眠。

模型下周可能换,技能目录和 ffmpeg 不会。把 Agent 放到 Vuncloud Cloud Mac,笔记本只负责看 preview.mp4 和回一句「HOOK 再短两秒」。

FAQ

video-use 是剪辑软件吗?

不是。它是 browser-use 开源的 Agent 技能。你在素材目录里说话,Agent 读逐词转写、写 EDL,再用 ffmpeg 渲染 edit/final.mp4。没有时间线界面。

哪些 Agent 能用?

能跑 shell、能读 SKILL.md 的都可以。官方路径覆盖 Claude Code、Codex、Hermes 和 OpenClaw。软链接整个仓库,不要只链一个 markdown。

一定要 ElevenLabs 吗?

转写要。Scribe 提供逐词时间戳、说话人分离和笑声等事件。密钥放在仓库 .env,权限 600。没有密钥,流水线起不来。安装时不要用真片试转写。

模型会把整段视频当图片看吗?

不会常驻看。主阅读物是 takes_packed.md。画面只在决策点和成片自检时,通过 timeline_view 的 PNG 抽查。

成片在哪,原素材会被改吗?

原文件留在原地。产物在素材目录的 edit/,终片是 final.mp4。策略未经你确认,不应下刀。

能取代 Premiere 或 Final Cut 吗?

口播和教程的粗剪、去口头禅、烧字幕,它很快。关键帧、多机位和精细调色仍交给 NLE。几乎无对白的片子,要自己把画面策略说清楚。

结语

三句话:video-use 让编码 Agent 读转写而不是抽帧;你点头之前它不该渲染;成片在素材旁边的 edit/final.mp4,不在技能仓库里。先把 ffmpeg、密钥和整目录软链接装对,第一句只要求策略。预览过了再谈调色和动画。

口头禅和气口适合交给这条流水线。口味和权利仍在你这边。机器别在渲染中途睡过去。

剪辑 Agent 得有一块不睡眠的 Mac

ffmpeg、Scribe 缓存和 project.md 都在同一台机器上。Claude Code 或 Codex 放进 tmux,断线之后 edit/ 还在。

查看 Cloud Mac 套餐

机房手记 · Video-Use

长会话剪辑,别放在会睡眠的笔记本上

Claude Code · Codex · ffmpeg · Cloud Mac

查看 Cloud Mac 套餐
限时优惠 点击查看套餐