多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

video-use 实战指南:用 Claude Code 对话式剪辑视频的完整方案

video-use 实战指南:用 Claude Code 对话式剪辑视频的完整方案 AI 技能/插件音视频视频处理人工智能【免费下载链接】video-useEdit videos with coding agents项目地址https://gitcode.com/GitHub_Trending/vid/video-use点击查看免费下载导读video-use 是一个 100% 开源的对话式视频剪辑方案把原始素材丢进一个文件夹用自然语言与 Claude Code也兼容 Codex、Hermes、Openclaw 等具备 shell 权限的 Agent对话最终得到一份final.mp4。它的核心思路是让 LLM 通过词级时间戳文本 按需生成的视觉合成图来阅读视频而不是逐帧看视频从而以极低的 token 成本完成口播、混剪、教程、旅行、访谈等任意类型素材的剪辑。读完本文你将掌握 video-use 的安装注册、双层级读取机制、完整处理流水线转录 → 打包 → 推理 → EDL → 渲染 → 自评估以及底层 6 个 helper 脚本的调用方式与实现原理。一、video-use 能做什么video-use 面向任何内容的视频剪辑无需预设模板presets或菜单工作方式是在素材目录中与 Agent 对话。核心能力包括剪掉填充词与死空间自动识别umm、uh、false starts说错后重说以及镜头间的空白停顿自动调色每个片段可套用暖调电影感warm cinematic、中性冲击neutral punch或任意自定义 ffmpeg 滤镜链30ms 音频淡入淡出每个剪切点都施加 30ms 的afade杜绝剪辑处爆音pop烧录字幕默认按2 词一组 全大写的风格烧录完全可自定义生成动画覆盖层通过 HyperFrames、Remotion、Manim 或 PIL 生成动画每个动画由并行派生的子 Agent 独立完成渲染输出自评估在展示给用户之前对每个剪切边界自动检查渲染质量会话记忆持久化每次会话写入videos_dir/edit/project.md下次会话可无缝衔接。使用方式极简在会话中向 Agent 说一句edit these into a launch videoAgent 会先清点素材inventory、提出剪辑策略并等待你确认然后产出位于素材旁的edit/final.mp4。所有输出都落在videos_dir/edit/技能仓库目录保持干净——这是贯穿全项目的硬性约定之一。二、快速上手Setup Prompt 与手动安装2.1 一条 Prompt 完成安装video-use 设计为把安装也交给 Agent 自己完成。将下面这段提示词粘贴给 Claude Code、Codex、Hermes、Openclaw 或任何有 shell 权限的 Agent它会自动克隆仓库、安装依赖、注册技能并只在你需要时向你索要一次 ElevenLabs API KeySet 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 youre 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 thats where the editing scripts live. After install, dont transcribe anything on your own — just tell me its ready and wait for me to drop footage into a folder.安装完成后把 Agent 指向你的素材文件夹并启动它cd /path/to/your/videos claude # or codex, hermes, etc.2.2 手动安装步骤如果你更愿意手工完成install.md 给出了完整流程。三件事必须就位仓库克隆到稳定路径、ffmpeg在$PATH上可选yt-dlp用于在线源、仓库根目录.env中有 ElevenLabs API Key。# 1. Clone and symlink into your agents skills directory git clone https://gitcode.com/GitHub_Trending/vid/video-use ~/Developer/video-use ln -sfn ~/Developer/video-use ~/.claude/skills/video-use # Claude Code # ln -sfn ~/Developer/video-use ~/.codex/skills/video-use # Codex # 2. Install deps cd ~/Developer/video-use uv sync # or: pip install -e . brew install ffmpeg # required brew install yt-dlp # optional, for downloading online sources # 3. Add your ElevenLabs API key cp .env.example .env $EDITOR .env # ELEVENLABS_API_KEY...关键细节来自 install.md依赖清单pyproject.toml声明了requests、librosa、matplotlib、pillow、numpy要求 Python ≥ 3.10可选依赖animations [manim]。项目没有 console scripts——helper 均以python helpers/name.py方式直接调用。技能注册需要对整个仓库目录做符号链接symlink而不仅仅是SKILL.md因为 helper 必须与SKILL.md作为兄弟目录共存Claude Code 用~/.claude/skills/Codex 用${CODEX_HOME:-$HOME/.codex}/skills/其他 Agent 若没有 skills 目录则在系统提示词中~/Developer/video-use/SKILL.md引入。API Key 处理检查顺序是环境变量 → 仓库根.env写入时用printf ELEVENLABS_API_KEY%s\n $KEY .env并chmod 600绝不回显、绝不提交.env可用curl -s -o /dev/null -w %{http_code} -H xi-api-key: ... https://api.elevenlabs.io/v1/user验证200表示可用401表示密钥错误。验证而非臆断安装完成后必须跑一个真实命令如python helpers/timeline_view.py --help与ffprobe -version | head -1不能只做文件存在性检查。完整转写测试是可选的——Scribe 按量计费建议等用户真正丢来第一条素材再验证。懒加载yt-dlp、HyperFrames、Remotion、Manim 都不是安装时必需的首次实际用到时才安装HyperFrames 目前要求 Node.js 22。三、核心机制LLM 如何阅读视频README 中最关键的设计论断是LLM 从不看视频它读视频——通过两层结构获得按词边界精确剪辑所需的全部信息。其 token 成本对比极为直观朴素做法30,000 帧 × 1,500 tokens 4500 万 tokens 的噪声video-use 做法12KB 文本 少量 PNG这与 browser-use 给 LLM 提供结构化 DOM 而非截图是同一思路只不过对象从网页换成了视频。3.1 Layer 1 —— 音频转录始终加载对每个源视频调用一次 ElevenLabs Scribe获得词级时间戳word-level timestamps、说话人分离speaker diarization以及音频事件(laughter)、(applause)、(sigh)。所有片段被打包进单个约 12KB 的takes_packed.md这是 LLM 的主要阅读视图## 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.3.2 Layer 2 —— 视觉合成图按需生成timeline_view工具可为任意时间范围生成胶片条 波形 词标签合成 PNG。它只在决策点被调用——模棱两可的停顿、多条 take 的比较、剪切点的正确性检查——而绝不做全片扫描。3.3 底层实现transcribe 与 pack 两个 helperLayer 1 的落地代码在 helpers/transcribe.py 与 helpers/transcribe_batch.pytranscribe.py video先用 ffmpeg 抽取单声道 16kHz PCM 音频-vn -ac 1 -ar 16000 -c:a pcm_s16le再以model_idscribe_v1、diarizetrue、tag_audio_eventstrue、timestamps_granularityword上传到 Scribe结果写入edit_dir/transcripts/video_stem.json。缓存策略输出文件已存在则跳过上传对应 SKILL.md 硬规则第 9 条除非源文件本身变化否则绝不重转写。可选参数--language ISO code与--num-speakers N已知说话人数可提升 diarization 精度。transcribe_batch.py videos_dir遍历目录中mp4/mov/mkv/avi/m4v等常见扩展名用 4 个并行 worker--workers N可调批量转写逐文件缓存。pack_transcripts.py --edit-dir dir把transcripts/*.json聚合成takes_packed.md。其短语切分逻辑pack_transcripts.py 中group_into_phrases在静音 ≥ 0.5s 或说话人切换时断句--silence-threshold可调并将speaker_0规范化为S0。这样一小时素材的转写也只需原始 Scribe JSON 约 1/10 的 token同时保留词边界精度。四、完整处理流水线PipelineREADME 给出了端到端流水线Transcribe ── Pack ── LLM Reasons ── EDL ── Render ── Self-Eval │ └─ issue? fix re-render (max 3)4.1 八个步骤从清点素材到交付SKILL.md 把流水线展开为可执行的会话流程Inventory清点对每个源跑ffprobe对目录跑transcribe_batch.py用pack_transcripts.py生成takes_packed.md抽样一两个timeline_view获得视觉第一印象Pre-scan预扫描通读takes_packed.md标记口误、明显说错的话、要避免的措辞形成清单作为编辑简报输入Converse对话用通俗语言描述你看到的素材提出由素材塑造的问题收集内容类型、目标时长/宽高比、审美/品牌方向、节奏感、必留片段、必剪片段、动画与调色偏好、字幕需求——不用固定清单每类视频该问的问题不同Propose strategy提出策略4–8 句话描述结构、take 选择、剪辑方向、动画计划、调色方向、字幕风格、时长预估等待确认后才动手对应硬规则第 11 条Execute执行生成edl.json在模棱两可处深入timeline_view并行子 Agent 构建动画逐片段调色用render.py合成Preview预览render.py --preview1080p、medium、CRF 22可评估质量Self-eval自评估对渲染输出而非源素材在每个剪切边界跑timeline_view±1.5s 窗口检查视觉跳变/闪烁、边界波形尖峰漏掉的爆音、字幕被覆盖层遮挡、覆盖层错位等再抽样开头 2s、结尾 2s 和 2–3 个中间点检查调色一致性与字幕可读性并用ffprobe校验时长与 EDL 预期一致。失败 → 修复 → 重渲染 → 重评估最多 3 轮超过则如实上报给用户而不是无限循环Iterate persist迭代与持久化自然语言反馈 → 重新规划 → 重渲染绝不重转写最终渲染经确认后向project.md追加本次会话记录。4.2 底层实现render.py 的正确顺序helpers/render.py 的模块 docstring 明确把渲染顺序固化为三段正是 SKILL.md 硬规则 2/3 的代码化逐片段提取把调色滤镜与 30ms 音频淡入淡出直接烘进片段afadetin:st0:d0.03,afadetout:st{dur-0.03}:d0.03避免后期叠加覆盖层时的二次转码无损 concat用 concat demuxer 以-c copy拼接成base.mp4不重编码最终合成若有覆盖层/字幕用单条 filtergraph 叠加动画setptsPTS-STARTPTS{t}/TB将动画第 0 帧平移到其窗口起点对应硬规则 4并最后施加subtitles滤镜对应硬规则 1。render.py还内置了三层质量阶梯与两个工程细节质量阶梯--draft720p、ultrafast、CRF 28仅验剪切点→--preview1080p、medium、CRF 22可评估→ 默认 final1080p、fast、CRF 20HDR 源色调映射通过ffprobe检测color_transfer是否为 PQsmpte2084或 HLGarib-std-b67是则前置zscaletonemap链Hable 色调映射输出干净的 Rec.709 SDR避免 8-bit 容器携带 HDR 元数据导致过饱和响度归一化默认开启两遍loudnorm目标-14 LUFS / -1 dBTP / LRA 11对齐 YouTube/Instagram/TikTok/X/LinkedIn 主流平台归一化标准--no-loudnorm可跳过预览模式自动退化为单遍近似。4.3 EDL剪辑决策的唯一事实源EDL 是连接LLM 推理与渲染的契约完整格式SKILL.md{ version: 1, sources: {C0103: /abs/path/C0103.MP4, C0108: /abs/path/C0108.MP4}, ranges: [ {source: C0103, start: 2.42, end: 6.85, beat: HOOK, quote: ..., reason: Cleanest delivery, stops before slip at 38.46.}, {source: C0108, start: 14.30, end: 28.90, beat: SOLUTION, quote: ..., reason: Only take without the false start.} ], 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 }其中grade可以是预设名、原始 ffmpeg 滤镜串或auto后者对每个片段单独分析并生成逐段微调overlays是已渲染好的动画片段subtitles可选且最后应用。4.4 多 take 选择编辑器子 Agent 简报模板当任务是在多条素材中为每个节拍挑选最佳 take时SKILL.md 提供了可直接使用的子 Agent 简报。其结构是承重墙load-bearing节拍示例则按需调整You are editing a type video. Pick the best take of each beat and assemble them chronologically by beat, not by source clip order. INPUTS: - takes_packed.md (time-annotated phrase-level transcripts of all takes) - Product/narrative context: 2 sentences from the user - Speaker(s): name, role, delivery style note - Expected structure: pick an archetype or invent one - Verbal slips to avoid: list from the pre-scan pass - Target runtime: seconds RULES: - Start/end times must fall on word boundaries from the transcript. - Pad cut boundaries (working window 30–200ms). - Prefer silences ≥ 400ms as cut targets. OUTPUT (JSON array, no prose): [{source: C0103, start: 2.42, end: 6.85, beat: HOOK, quote: ..., reason: ...}, ...]简报同时给出可选的叙事原型库如技术发布HOOK → PROBLEM → SOLUTION → BENEFIT → EXAMPLE → CTA、教程INTRO → SETUP → STEPS → GOTCHAS → RECAP、访谈(QUESTION → ANSWER → FOLLOWUP) repeat等以及超预算则删节拍或修剪尾音、汇报总时长并自行修正的自纠规则。五、剪辑工艺与 12 条硬规则5.1 硬规则偏离即静默失败SKILL.md 定义了 12 条非协商的生产正确性规则其共性在于偏离会产生静默失败或损坏输出而非审美问题字幕必须是滤镜链中最后应用的层否则覆盖层遮挡字幕静默失败逐片段提取 → 无损-c copyconcat而不是单遍 filtergraph否则加覆盖层时每个片段双重编码每个片段边界 30ms 音频淡入淡出否则每个剪切点都有可闻爆音覆盖层用setptsPTS-STARTPTST/TB把动画第 0 帧平移到窗口起点否则覆盖窗口内看到的是动画中间帧主 SRT 使用输出时间轴偏移output_time word.start - segment_start segment_offset否则片段拼接后字幕错位绝不从词中间剪切——每个剪切边缘都必须对齐 Scribe 转录的词边界每个剪切边缘都要留边padding工作窗口 30–200ms——Scribe 时间戳有 50–100ms 漂移padding 吸收漂移快节奏更紧、电影感更松只用词级逐字 ASR绝不用 SRT/短语模式丢失亚秒级间隙数据绝不使用归一化填充词丢失剪辑信号每个源缓存转录除非源文件本身变化否则绝不重转写多个动画必须并行子 Agent绝不串行总耗时 ≈ 最慢的一个执行前必须获得策略确认所有会话输出进videos_dir/edit/绝不在video-use/项目目录内写任何文件。5.2 剪切工艺要点音频优先剪切候选来自词边界与静音间隙笑声、爆点、强调节拍要延伸过爆点——笑声本身就是节拍说话人交接常见留白 400–600ms快节奏更少、电影感更多静音间隙是剪切候选≥ 400ms 通常最干净150–400ms 的短语边界需视觉检查后可用 150ms 不安全疑似句中padding 示例随项目发布的 launch video首个保留词前 50ms、末词后 80ms始终停留在 30–200ms 工作窗口内绝不同时独立推理音轨与画面每个剪切点都必须同时验证两条轨道。5.3 目录布局与会话记忆技能本体位于video-use/用户素材在任意位置所有输出进入videos_dir/edit/videos_dir/ ├── source files, untouched └── edit/ ├── project.md ← memory; appended every session ├── takes_packed.md ← phrase-level transcripts, the LLMs primary reading view ├── edl.json ← cut decisions ├── transcripts/name.json ← cached raw Scribe JSON ├── animations/slot_id/ ← per-animation source render reasoning ├── clips_graded/ ← per-segment extracts with grade fades ├── master.srt ← output-timeline subtitles ├── downloads/ ← yt-dlp outputs ├── verify/ ← debug frames / timeline PNGs ├── preview.mp4 └── final.mp4project.md每次会话追加一段结构化记录Strategy/Decisions/Reasoning log/Outstanding启动时若存在则先用一句话总结上次会话再询问是否继续——这就是下周的会话接着上周的进度的实现方式。六、调色、字幕与动画三个可深度定制的环节6.1 调色grade.py调色的正确姿势是推理画面而不是套预设先用timeline_view看一帧判断哪里不对调一个量再看。心理模型是 ASC CDL每通道out (in * slope offset) ** power再全局饱和度——slope管高光、offset管阴影、power管中间调。helpers/grade.py 提供两种模式与内置预设--list-presets可查看Auto 模式默认用 ffmpegsignalstats采样 N 帧计算平均亮度、动态范围std、平均饱和度输出限幅在 ±8%的修正滤镜目标只是干净但不显调过色绝不施加创意 LUT 或青橙分裂。若片段已均衡则退回subtle基线eqcontrast1.03:saturation0.98预设模式warm_cinematic12% 对比、压黑、-12% 饱和、暖阴影冷高光、胶片曲线——随项目发布的 launch video 实拍可用适合口播、neutral_punch最小矫正对比 轻微 S 曲线无色相偏移、none直拷用户未要求时的默认自由模式grade.py --filter raw ffmpeg接受任意滤镜串人像、自然、产品、音乐视频、纪录片可自创链路。硬性要求调色必须在逐片段提取时完成而非拼接后整体处理后者会双重编码激进调整前必须先测肤色。6.2 字幕按需字幕有三个值得推理的维度分块每行 1/2/3 词或整句、大小写全大写/标题/自然、位置距底部边距。仓库附带两种已实践风格bold-overlayrender.py内置为SUB_FORCE_STYLE短视频技术发布风格。2 词一组、全大写、遇标点断行、Helvetica 18 Bold、白字黑描边、MarginV35FontNameHelvetica,FontSize18,Bold1, PrimaryColourH00FFFFFF,OutlineColourH00000000,BackColourH00000000, BorderStyle1,Outline2,Shadow0, Alignment2,MarginV35注意 render.py 中实际内置值是MarginV90——源码注释解释了这不是审美而是平台安全区规则TikTok/IG Reels/Shorts 的 UI标题、用户名、音乐、右侧操作栏覆盖 1080×1920 画面底部约 25–30%libass 相对PlayResY288自动缩放渲染画布MarginV90能把字幕基线抬到距底部约 30% 处在所有竖屏平台都避开 UI不建议无理由降到 75 以下。natural-sentence叙述性/纪录片/教育内容。4–7 词、自然大小写、自然停顿断行、MarginV60–80、更大字号。未内置 force_style需要时自行设计。字幕硬规则最后应用规则 1输出时间轴偏移规则 5。6.3 动画按需引擎按动画槽位逐个选择不因动画和网页沾边就默认 RemotionHyperFrames浏览器原生 HTML/CSS/GSAP 视频合成——产品 UI 动效、网站/原型转视频、动态排版、落地页 storyboard、数据驱动 UI 状态、透明 WebM 覆盖层且需要确定帧捕获 lint/validate/render 校验时RemotionReact/CSS 合成适合已有 Remotion 品牌体系或用户明确要求 React 时Manim正式图表、状态机、公式推导、图结构变换——仓库自带 skills/manim-video/SKILL.md 及 14 篇参考资料PIL PNG 序列 ffmpeg简单覆盖卡片计数器、打字机文本、单条进度条、渐进绘制迭代最快——随项目发布的 launch video 即采用此法。时长经验值取决于语境与旁白同步的解释性动画约 3s 起步、简单卡片 5–7s、复杂图表 8–14s节拍同步的强调动画音乐视频/快剪0.5–2s 即可任何情况下切出前保持末帧 ≥ 1s压在旁白上时总时长 ≥narration_length 1s绝不并行揭示两个独立元素——眼睛一次只能追踪一个新事物。动画还要做payoff 同步取关键台词的时间戳让覆盖层在reveal_duration秒前开始、落地帧恰好对准台词说出的时刻。缓动是普适规则绝不linear机器人感def ease_out_cubic(t): return 1 - (1 - t) ** 3 def ease_in_out_cubic(t): if t 0.5: return 4 * t ** 3 return 1 - (-2 * t 2) ** 3 / 2打字文本有个锚点技巧按完整字符串宽度居中而不是按已显示的部分宽度——否则文字会在揭示过程中向左滑。并行子 Agent 简报要求每个 prompt 自包含子 Agent 无父上下文一句话目标、绝对输出路径、精确技术规格分辨率/fps/编码/pix_fmt/CRF/时长、具体色值、字体路径与索引、逐帧时间线含缓动、反清单无 chrome、无多余元素、代码模式引用、交付清单以及关键一句不要提问任何歧义取最显然的解释继续。6.4 输出规格默认匹配源素材规格除非用户另有要求。常见目标1920×108024电影感、1920×108030屏幕内容、1080×192030竖屏社交、3840×2160244K 电影、1080×108030方形。render.py默认将任意源缩放到 1080p竖屏素材按高度缩放以保持方向其他目标通过--filter或修改提取命令实现——值得在会话中先问清交付格式。七、五个设计原则与反模式清单7.1 设计原则文本 按需视觉不倾倒帧转录文本就是工作表面音频优先视觉跟随剪切来自语音边界与静音间隙Ask → confirm → execute → self-eval → persist未经策略批准绝不触碰剪切对内容类型零假设先看、再问、然后才剪12 条硬规则 其余艺术自由生产正确性不可协商审美不是。7.2 反模式无论何种风格都会失败的实践预计算的分层编解码格式带可用性/语气标签/镜头分层——过度工程应在决策时从转录派生手工调参的精彩瞬间打分函数——LLM 比任何启发式都选得好Whisper 的 SRT/短语级输出——丢失亚秒级间隙数据必须词级逐字本地 CPU 跑 Whisper——慢且归一化填充词用托管 Scribe在合成覆盖层之前就把字幕烧进基底——覆盖层会盖住它们硬规则 1有覆盖层时用单遍 filtergraph——双重转码应逐片段提取后 concat线性动画缓动——机器人感必须 cubic片段边界硬切音频——可闻爆音硬规则 3打字文本按部分字符串居中——文字生长时左滑多个动画串行子 Agent——必须并行未确认策略就开剪——绝不允许重转写已缓存的源——不变输入的不变输出假设视频是什么类型——先看、再问、最后剪。结语从看视频到读视频的范式转变video-use 的全部设计都围绕一个核心洞察收敛对 LLM 而言45M tokens 的逐帧画面不如 12KB 带词级时间戳的文本 几张按需生成的合成图——前者是噪声后者是信息。仓库以 README.md 为入口、SKILL.md 为每日操作手册、install.md 为安装契约、helpers/ 六个脚本为执行引擎把这个洞察落成了一条可复现、可验证、可自我评估的流水线Transcribe → Pack → LLM Reasons → EDL → Render → Self-Eval并配合 12 条生产正确性硬规则、可自由发挥的剪辑/调色/字幕/动画工艺以及project.md会话记忆构成了一个真正对话驱动、全开源的视频剪辑方案。无论你是想复用它的开箱流程还是借鉴文本 按需视觉的 Agent 设计思路都可以直接在这个仓库中继续深入。赞分享AI 技能/插件音视频视频处理人工智能【免费下载链接】video-useEdit videos with coding agents项目地址https://gitcode.com/GitHub_Trending/vid/video-use点击查看免费下载相关推荐video-use 安装部署实战指南为 Claude Code / Codex 等 Coding Agent 配置对话式视频编辑器video use 安装部署实战指南为 Claude Code / Codex 等 Coding Agent 配置对话式视频编辑器 video use 是一套AI 技能/插件音视频视频处理人工智能基于 Gemini 的 Video RAG 实战上传视频并与其对话video-rag-gemini 完整使用指南基于 Gemini 的 Video RAG 实战上传视频并与其对话video rag gemini 完整使用指南 视频理解是当前多模态 AI 落地的热门方示例工程FunASR 应用选型实战音频剪辑、实时语音识别与语音对话的完整落地指南FunASR 应用选型实战音频剪辑、实时语音识别与语音对话的完整落地指南 本指南以 FunASR 官方参考文档《Speech Applications》为骨架语音音频人工智能大模型模型推理服务本地部署创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表