让 Claude Code / Codex / Hermes / OpenClaw 等任意有 shell 权限的 Agent 变成对话式视频剪辑师。丢一堆原始素材进文件夹,跟 Agent 聊几句,拿到剪好的
final.mp4。MIT 协议,16.7k stars,2026-04 创建。
核心思路:LLM 不看视频,是”读”视频
和 claude-video 让 Claude 抽帧+喂图直接”看”视频不同,video-use 的设计哲学是LLM 永远不看视频画面,而是靠两层文本/图像表示做剪辑决策:
- Layer 1(常驻):音频转写——每个素材调一次 ElevenLabs Scribe,拿到词级时间戳+说话人分离+音频事件(笑声/掌声/叹气),所有素材打包成一份 ~12KB 的
takes_packed.md,是 LLM 的主要阅读视图 - Layer 2(按需):视觉复合图——
timeline_view.py只在关键决策点(模糊停顿、重录对比、切点检查)生成”胶片条+波形+词标签”PNG,不是逐帧扫描
作者算了笔账:30,000 帧 × 1,500 token/帧 = 4500万 token 噪音;而 video-use 只需 12KB 文本 + 少量 PNG。这和 browser-use 给 LLM 结构化 DOM 而不是截图是同一个思路,用在视频上。
怎么用
安装(首次)
把下面这段贴进 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.Agent 会自动完成:clone 到稳定路径(如 ~/Developer/video-use)、uv sync/pip install -e . 装依赖、brew install ffmpeg(+ 可选 yt-dlp)、把仓库软链到 ~/.claude/skills/video-use(或对应 Agent 的 skills 目录)、只在需要时问你要一次 ElevenLabs API key(用于 Scribe 转写,写入仓库根目录 .env,不会写进你的素材目录)。
也可以手动装:
git clone https://github.com/browser-use/video-use ~/Developer/video-use
ln -sfn ~/Developer/video-use ~/.claude/skills/video-use # Claude Code
cd ~/Developer/video-use
uv sync # 或 pip install -e .
brew install ffmpeg # 必需
brew install yt-dlp # 可选,在线素材下载
cp .env.example .env && $EDITOR .env # 填 ELEVENLABS_API_KEY日常剪辑
cd /path/to/your/videos # 原始素材所在目录
claude # 或 codex、hermes 等进去之后直接说人话,比如:
edit these into a launch video
流程是:Agent 先 inventory 所有素材(ffprobe + 批量转写 + 打包 transcript + 抽样看几张 timeline_view),再用人话描述看到的内容并主动提问(内容类型、目标时长/画幅、审美方向、节奏感、必须保留/必须剪掉的片段、动画和调色偏好、字幕需求——没有固定问卷,问题根据素材现场生成)。然后提出 4-8 句的剪辑策略,等你确认才动手剪。剪完先内部自评(在渲染结果的每个切点跑 timeline_view 检查画面跳变/音频爆音/字幕被遮挡/动画错位,最多自评 3 轮),过了才把 preview.mp4 给你看。你反馈,它再迭代,绝不重新转写。定稿后输出 edit/final.mp4,源文件旁边的 edit/ 目录保持整洁,不污染 skill 目录本身。
想要”随时在线”的剪辑体验(比如 VPS 上跑或用 Telegram 触发),可以配合 Browser Use Box 让 Agent 常驻。
它能干什么
- 掐掉填充词(“嗯""啊”)和素材间死寂片段
- 逐段自动调色(暖色电影感/中性punch/自定义 ffmpeg 滤镜链)
- 每个切点自动加 30ms 音频淡入淡出,切点绝无爆音
- 烧录字幕(默认双词大写 chunk 风格,全可自定义)
- 通过 HyperFrames、Remotion、Manim 或 PIL 生成动画叠加层,多个动画用并行子 Agent 各跑一个
- 渲染后自评(自动检查画面跳变、音频爆音、字幕遮挡、动画错位)
- 把会话记忆写进
project.md,下次接着上次的进度继续
12 条硬规则(生产正确性,不可协商)
SKILL.md 里明确区分”硬规则”(违反=静默失败)和”艺术自由”(值/预设/字体/时长都是示例不是强制)。硬规则包括:
- 字幕必须在滤镜链最后应用(否则被叠加层遮住)
- 分段抽取用无损
-c copyconcat,不走单次 filtergraph(否则加叠加层时会重复编码) - 每个切点强制 30ms 音频淡入淡出
- 叠加层用
setpts=PTS-STARTPTS+T/TB对齐窗口起点(否则看到的是动画中段) - 主字幕用输出时间轴偏移量计算,不能按素材原始时间戳
- 绝不在词中间切(必须对齐 Scribe 转写的词边界)
- 每个切点留 30-200ms padding 吸收 Scribe 时间戳的 50-100ms 漂移
- 只用词级逐字 ASR,不用 SRT/短语模式(会丢秒级以下的间隙数据)
- 转写结果按素材缓存,源文件不变绝不重新转写
- 多个动画必须并行子 Agent 生成,不许串行
- 剪辑策略必须先获得用户确认才能动手
- 所有会话产物落在
<videos_dir>/edit/,绝不写进video-use/项目目录本身
目录产物
<videos_dir>/
├── <原始素材,不动>
└── edit/
├── project.md ← 跨会话记忆
├── takes_packed.md ← 词级转写,LLM 主阅读视图
├── edl.json ← 剪辑决策
├── transcripts/<name>.json ← 缓存的 Scribe 原始 JSON
├── animations/slot_<id>/ ← 每个动画的源码+渲染+推理过程
├── clips_graded/ ← 调色+淡入淡出后的分段素材
├── master.srt
├── preview.mp4
└── final.mp4
依赖与前置条件
ffmpeg+ffprobe(硬依赖)- ElevenLabs API key(Scribe 转写,付费但便宜)
- Python:
requests/librosa/matplotlib/pillow/numpy(uv sync或pip install -e .) - 可选:
yt-dlp(在线素材)、Node.js 22+(HyperFrames/Remotion 动画)、manim(数学/图形动画,仓库自带skills/manim-video/子 skill)
我的判断
对比 claude-video(让 Claude “看懂”已有视频内容,偏理解/问答场景),video-use 是反过来的用途:让 Claude “剪出”新视频,偏生产环节。两者可以配合——先用 claude-video 让 Agent 理解一批素材内容,再用 video-use 实际剪辑输出。
设计上最值得借鉴的是它把”文本优先,视觉按需”的 browser-use 式思路搬到了视频领域,避免了逐帧喂图的 token 爆炸,这个模式本身对做多模态 Agent Skill 设计有参考价值。
相关页面
- claude-video — 让 Claude “看视频”的另一条路线,字幕优先+场景感知抽帧,偏理解而非剪辑
- browser-use — 同一团队出品,“结构化文本代替截图喂给 LLM”的设计哲学同源