video-use 技能实战指南:用对话式 Agent 完成视频剪辑、调色、字幕与动画合成
2026/9/24 17:03:55 网站建设 项目流程
  • AI 技能/插件
  • 音视频
  • 视频处理
  • 人工智能

【免费下载链接】video-use

Edit videos with coding agents

项目地址:https://gitcode.com/GitHub_Trending/vid/video-use
点击查看免费下载

导读

video-use是一个开源、基于对话驱动的视频编辑技能(Skill),它让 Claude Code、Codex 等具备 Shell 能力的编码 Agent 能够"阅读"原始素材并自主完成剪辑决策:转写、切条、调色、叠加动画、烧录字幕,最终产出final.mp4。本文以仓库根目录的 SKILL.md 为骨架,结合 helpers/ 下五个 Python 工具的真实实现,系统讲解其设计原则、12 条硬性规则、完整工作流、EDL 格式、剪辑工艺、调色模型、字幕风格与动画编排。读完本文,你将掌握如何安装并驱动这套流水线,理解每条生产正确性规则背后的 ffmpeg 原理,并能独立为一个多镜头(multi-take)素材集产出可直接交付的成片。


一、设计原则:LLM 不"看"视频,而是"读"视频

video-use的核心哲学只有一句话:LLM 从原始转写文本 + 按需视觉信息中进行推理。它不会把视频逐帧丢给模型(那会产生数百万 token 的噪声),而是只维护一个真正值得保留的派生产物——按短语打包的转写文件takes_packed.md,其余一切(填充词标记、重拍检测、镜头分类、强调打分)都在决策时刻即时推导。

SKILL.md 用 7 条原则勾勒整体设计:

  1. LLM 从原始转写 + 按需视觉推理。唯一的派生产物是takes_packed.md
  2. 音频优先,视觉跟随。剪辑候选来自语音边界与静音间隙,仅在决策点才下钻到画面。
  3. 询问 → 确认 → 执行 → 迭代 → 持久化。在用户用自然语言确认策略之前,绝不触碰剪辑。
  4. 泛化。不预设视频类型,先看素材、再问用户、然后剪辑。
  5. 艺术自由是默认值。文档中所有具体数值、预设、字体、颜色、时长、音高结构都是"一个已验证视频的工作示例",不是强制要求;唯一必须遵守的是 Hard Rules。
  6. 自由发明。如果素材需要文档中未描述的技术(分屏、画中画、下三分之一身份卡片、反应剪辑、变速、定格、交叉淡化、匹配剪辑、L-cut、J-cut……),直接用 ffmpeg 和 PIL 构建,不必等待许可。
  7. 展示前自验。自己都不愿意交付的结果,不要呈现给用户。

这一设计直接呼应 README 中"LLM never watches the video"的表述:转写层(始终加载)用 ElevenLabs Scribe 拿到词级时间戳、说话人分离和音频事件,打包成约 12KB 的takes_packed.md视觉层(按需调用)timeline_view生成胶片条 + 波形 + 词标签 PNG,只在决策点使用。

二、12 条硬性规则:生产正确性不可妥协

SKILL.md 强调:这些规则一旦偏离就会产生静默失败或坏输出,它们不是品味问题,而是正确性问题。逐条解读如下:

  1. 字幕最后应用——在滤镜链中必须排在所有覆盖层(overlay)之后,否则覆盖层会遮挡字幕(静默失败)。
  2. 逐段抽取 → 无损-c copy拼接,而不是单次 filtergraph 全片处理,否则叠加覆盖层时每一段都会被二次编码。
  3. 每个段边界做 30ms 音频淡入淡出afade=t=in:st=0:d=0.03,afade=t=out:st={dur-0.03}:d=0.03),否则每个切口都会出现可闻的"爆音"。
  4. 覆盖层使用setpts=PTS-STARTPTS+T/TB把动画的第 0 帧平移到覆盖窗口起点,否则覆盖窗口内看到的是动画的中间帧。
  5. 主字幕(master SRT)使用输出时间线偏移output_time = word.start - segment_start + segment_offset,否则段拼接后字幕错位。
  6. 绝不在单词中间切断,每个剪切边都吸附到 Scribe 转写给出的词边界。
  7. 每个剪切边都要留边距(padding),工作窗口 30–200ms。Scribe 时间戳有 50–100ms 漂移,留边可吸收漂移;快节奏剪紧一点,电影感剪松一点。
  8. 只使用词级逐字 ASR。绝不用 SRT/短语模式(会丢失亚秒级间隙数据),绝不用归一化的填充词(会丢失编辑信号)。
  9. 按源文件缓存转写。除非源文件本身变化,否则绝不重新转写。
  10. 多个动画用并行子代理,绝不串行。通过Agent工具同时生成 N 个,总墙钟时间 ≈ 最慢的一个。
  11. 执行前确认策略。用户批准纯英文计划之前绝不触碰剪辑。
  12. 所有会话输出写入<videos_dir>/edit/,绝不写入video-use/项目目录内部。

规则 2、3、5 在 helpers/render.py 中有完整的工程化落地(见第五节),规则 10 在"动画编排"一节有专门的并行子代理模板。

三、目录布局与会话内存

技能本体位于video-use/(仓库根),用户素材放在任意目录,所有会话产物统一落在<videos_dir>/edit/

<videos_dir>/ ├── <source files, untouched> └── edit/ ├── project.md ← 会话记忆;每次会话追加 ├── takes_packed.md ← 短语级转写,LLM 的主要阅读视图 ├── edl.json ← 剪辑决策 ├── transcripts/<name>.json ← 缓存的原始 Scribe JSON ├── animations/slot_<id>/ ← 每个动画的源 + 渲染 + 推理 ├── clips_graded/ ← 带调色与淡入淡出的逐段抽取 ├── master.srt ← 输出时间线字幕 ├── downloads/ ← yt-dlp 下载产物 ├── verify/ ← 调试帧 / 时间线 PNG ├── preview.mp4 └── final.mp4

其中project.md是跨会话的持久记忆:每次会话在文件末尾追加一节,包含Strategy(一段话描述方案)、Decisions(镜头选择、剪切、调色、动画及原因)、Reasoning log(非显而易见决策的一行推理)、Outstanding(遗留事项)。下次启动时读取该文件,用一句话总结上次会话,再询问是否继续——这正是 SKILL.md 原则 3 中"persist"的载体。

四、安装与冷启动检查

首次安装的完整步骤在 install.md:克隆仓库、安装 Python 依赖、安装 ffmpeg、注册技能、配置 ElevenLabs API key。日常会话不必重跑安装,冷启动只需验证以下几点:

  • ELEVENLABS_API_KEY可解析——来自环境变量或仓库根目录.env(缺失时请用户粘贴,写入.env,绝不写入用户的<videos_dir>);
  • ffmpeg+ffprobe在 PATH 中;
  • Python 依赖已安装(仓库内执行uv syncpip install -e .);
  • 若会话需要 HyperFrames 或 Remotion 槽位,需 Node.js + npm(HyperFrames 目前要求 Node.js 22+);
  • yt-dlp、HyperFrames、Remotion、Manim 仅在首次使用时安装;首次使用的动画环境搭建发生在槽位目录内,而不是 video-use 仓库根目录。HyperFrames 可用npx --yes hyperframes ...调用,Remotion 可用npx create-video@latest脚手架或作为槽位内项目级依赖安装;
  • 技能内置了skills/manim-video/,构建 Manim 槽位时阅读其 SKILL.md。

依赖清单见 pyproject.toml:requestslibrosamatplotlibpillownumpy(可选动画依赖manim)。注意 helpers 没有 console scripts,一律以python helpers/<name>.py直接调用。

技能通过符号链接注册(如~/.claude/skills/video-use/~/.codex/skills/video-use/),helpers 与 SKILL.md 必须保持同级。安装验证要求"对真实文件跑一条真实命令",而不是仅检查文件存在。

五、Helpers 工具链:源码级拆解

六个 helper 脚本构成完整流水线,全部位于 helpers/:

脚本职责关键参数
transcribe.py单文件 Scribe 调用--num-speakers N--language--edit-dir(有缓存)
transcribe_batch.py4 工作线程并行转写--workers(默认 4)、--num-speakers
pack_transcripts.pytranscripts/*.jsontakes_packed.md--silence-threshold(默认 0.5s)
timeline_view.py胶片条 + 波形 PNG<video> <start> <end>--n-frames--transcript
render.py段抽取 → 拼接 → 覆盖层 → 字幕--preview--draft--build-subtitles--no-subtitles--no-loudnorm
grade.pyffmpeg 滤镜链调色--preset--filter--analyze--list-presets

5.1 转写层:Scribe 词级 ASR

helpers/transcribe.py 先用 ffmpeg 把视频抽成单声道 16kHz PCM WAV-ac 1 -ar 16000 -c:a pcm_s16le),再上传到 ElevenLabs Scribe 接口。请求参数值得注意(call_scribe,见 helpers/transcribe.py):

  • model_id=scribe_v1
  • diarize=true——说话人分离;
  • tag_audio_events=true——标记(laughs)(sighs)(applause)等音频事件;
  • timestamps_granularity=word——词级时间戳,这是规则 8 的实现基础;
  • 可选language_codenum_speakers(已知说话人数时能提升分离准确率)。

输出完整 JSON 写入<edit_dir>/transcripts/<video_stem>.json按源文件缓存:文件已存在则直接跳过上传(规则 9)。

transcribe_batch.py负责多镜头素材的并行转写,默认 4 个工作线程,支持--workers调整;它按扩展名(.mp4/.mov/.mkv/.avi/.m4v等)扫描目录并跳过已有转写的文件。

5.2 打包层:takes_packed.md 的生成算法

helpers/pack_transcripts.py 是"LLM 主要阅读视图"的制造者。其核心函数group_into_phrases(helpers/pack_transcripts.py)按两条规则断句:

  • 静音 ≥ 阈值(默认 0.5s)——利用 Scribewords数组中spacing类型条目携带的间隙信息;
  • 说话人切换——speaker_id变化即断句。

音频事件(audio_event)会保留在短语文本中并加括号(如(laughs)),这正是剪辑工艺中"音频事件即信号"的数据来源。输出格式:

## 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.

行首[start-end]是短语级时间范围,S0是说话人编号(剥离了speaker_前缀)。按 SKILL.md 的测算,一小时素材打包后约占原始 Scribe JSON 的 1/10 token,且从纯文本就能获得词边界精度——这就是"12KB 文本 + 少量 PNG 替代 4500 万 token 帧噪声"的关键。

5.3 视觉下钻层:timeline_view

helpers/timeline_view.py 是唯一的视觉下钻工具,给定<video> <start> <end>产出合成 PNG:等间隔抽取 N 帧拼成胶片条(默认 10 帧)、在下方渲染 RMS 波形包络、叠加词级标签、并用半透明蓝色阴影标注 ≥400ms 的静音间隙find_silences阈值 0.4s)。SKILL.md 明确警告:这不是扫描工具,只在决策点使用(存疑停顿、重拍对比、切口抽查),绝不能在后台循环扫描每一句。

5.4 调色层:grade.py 的两种模式

helpers/grade.py 提供两种工作方式:

自动模式(默认)——auto_grade_for_clip用 ffmpegsignalstats滤镜采样约 10 帧,统计亮度均值(YAVG)、动态范围(YMIN/YMAX)、饱和度(SATAVG),按位深归一化后套用决策规则:过暗提 gamma、过平提对比度、极平提饱和。所有调整硬性钳制在 ±8% 以内,绝不施加创意色偏——目标是"看起来干净但不像调过色"。

预设模式——--preset指定命名滤镜(--list-presets可查看全部):

  • subtleeq=contrast=1.03:saturation=0.98,安全底线;
  • neutral_punch:对比度 + 轻微 S 曲线,无色偏,最小修正;
  • warm_cinematic:+12% 对比度、压黑、-12% 饱和、暖阴影冷高光的青橙分离、胶片曲线(SKILL.md 注明来自真实发布视频,对 talking head 安全);
  • none:直通拷贝,用户未要求调色时的默认值。

任何其他风格用--filter '<raw ffmpeg>'直接传滤镜串。两条硬性要求:调色在段抽取阶段逐段施加(而不是拼接后再调,否则二次编码),以及不测肤色就不要激进。调色心智模型是 ASC CDL:out = (in * slope + offset) ** power,slope 管高光、offset 管阴影、power 管中间调,最后全局饱和度。

5.5 渲染层:render.py 的六阶段管线

helpers/render.py 完整实现规则 1–5,管线顺序(见模块 docstring 与main):

  1. 逐段抽取extract_all_segmentsextract_segment):每段一个独立 MP4,调色滤镜 + 30ms 音频淡入淡出烘焙进段内(规则 3)。质量阶梯:final 为 1080plibx264 fast CRF 20,preview 为 1080pmedium CRF 22,draft 为 720pultrafast CRF 28(仅供切口验证)。竖屏素材按高度缩放scale=-2:1920保持朝向;
  2. 无损拼接concat_segments):concat demuxer +-c copy,不重编码(规则 2);
  3. 字幕构建--build-subtitlesbuild_master_srt):从各源转写 + EDL 偏移计算输出时间线时间(规则 5),按 2 词一句、遇标点断句、大写化;
  4. 合成build_final_composite):覆盖层逐个setpts=PTS-STARTPTS+T/TB平移帧 0(规则 4),overlay=enable='between(t,start,end)'挂载,字幕滤镜排最后(规则 1);
  5. 响度归一(默认开启):两遍 loudnorm 到 -14 LUFS / -1 dBTP / LRA 11(社交平台标准,preview/draft 模式用单遍近似);
  6. HDR → SDR:检测color_transfer为 PQ(smpte2084)或 HLG(arib-std-b67)时,前置zscale+tonemap链(hable 映射、desat=0)转 Rec.709 SDR——否则 8-bit 输出仍携带 HDR 元数据,在录屏与社交上传的二次编码中会过饱和、过曝。

EDL 的grade字段可为预设名、原始滤镜串或autoresolve_grade_filter按段分析并施加逐段微修正)。

六、八步工作流:从清单到交付

SKILL.md 定义的标准流程:

  1. 盘点(Inventory)ffprobe每个源;transcribe_batch.py批量转写目录;pack_transcripts.py生成takes_packed.md;抽样一两个timeline_view获得视觉第一印象。
  2. 预扫描问题:通读takes_packed.md,记录口误、明显说错的词、要避免的表达,形成纯文本清单并喂给编辑简报。
  3. 对话(Converse):用自然语言描述所见,基于素材提出针对性问题,收集:内容类型、目标时长/宽高比、审美/品牌方向、节奏感受、必须保留的时刻、必须剪掉的时刻、动画与调色偏好、字幕需求。不要用固定清单——每类素材该问的问题都不一样。
  4. 提出策略:4–8 句话描述:形态、镜头选择、剪辑方向、动画计划、调色方向、字幕风格、时长估算。等待确认(规则 11)。
  5. 执行:通过编辑子代理简报产出edl.json;在存疑处用timeline_view下钻;动画交给并行子代理;逐段调色;render.py合成。
  6. 预览render.py --preview(1080p 可评估质量)。
  7. 自评(展示用户之前):对渲染输出(不是源素材)在每个切口边界 ±1.5s 窗口跑timeline_view,逐图检查:切口视觉不连续/闪烁/跳变、边界波形尖峰(漏网的爆音)、字幕被覆盖层遮挡(规则 1 违规)、覆盖层错位或显示错误帧(规则 4 违规)。再抽样开头 2s、结尾 2s 与 2–3 个中间点,检查调色一致性、字幕可读性、整体连贯性;用ffprobe核对时长符合 EDL 预期。自评上限 3 轮——3 轮后仍有问题就标记给用户,而不是无限循环。
  8. 迭代 + 持久化:自然语言反馈 → 重新规划 → 重新渲染;绝不重新转写(规则 9);确认后出最终渲染,追加写入project.md

七、剪辑工艺:音频优先的切口决策

SKILL.md 给出可操作的口径:

  • 音频优先:切口候选来自词边界和静音间隙;
  • 保留高峰:笑声、妙语、强调节拍要延伸过去,把反应也剪进来——笑声本身就是节拍;
  • 说话人交接需要语流间的"空气",常见 400–600ms;快节奏更短,电影感更长;
  • 音频事件即信号(laughs)(sighs)(applause)标记节拍,延伸越过它们;
  • 静音间隙是切口候选:≥400ms 通常最干净;150–400ms 的短语边界可用但需目检;<150ms 不安全(处于短语中间);
  • 切口留边示例(随附的发布视频实测):首词前 50ms、末词后 80ms;蒙太奇剪紧、纪录片放松,始终落在 30–200ms 工作窗口(规则 7);
  • 绝不割裂地分别推理音轨与画面——每个切口必须同时满足两条轨道的质量要求。

八、编辑子代理简报:多镜头选优的标准模板

当任务是"从多个镜头中为每个节拍选出最佳一条"时,SKILL.md 建议派发独立子代理,简报结构如下(结构本身是承重的,音高形状示例不是):

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>

常见结构原型(可选、可改、可发明):Tech launch/demo 用HOOK → PROBLEM → SOLUTION → BENEFIT → EXAMPLE → CTA;教程用INTRO → SETUP → STEPS → GOTCHAS → RECAP;访谈是(QUESTION → ANSWER → FOLLOWUP)循环;旅行/活动用ARRIVAL → HIGHLIGHTS → QUIET MOMENTS → DEPARTURE;纪录片用THESIS → EVIDENCE → COUNTERPOINT → CONCLUSION;音乐/演出用INTRO → VERSE → CHORUS → BRIDGE → OUTRO

规则包括:起止时间必须落在转写的词边界上;切口留边(30–200ms);优先 ≥400ms 静音作为切口;无更好镜头时才保留不可避免的口误并在reason注明;超预算就删节拍或收尾,报告总时长并自我修正。输出为无散文的 JSON 数组,并附一行总时长核验:

[{"source": "C0103", "start": 2.42, "end": 6.85, "beat": "HOOK", "quote": "...", "reason": "..."}, ...]

九、EDL 格式:剪辑决策的单一事实来源

edl.json是执行与渲染之间的契约,完整结构如下(出自 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是已渲染的动画片段,start_in_output决定其在成片时间线上的挂载起点;subtitles可选且最后应用ranges中的start/end是源素材本地时间,渲染器据此抽取并计算输出时间线偏移。

十、字幕:三个值得推理的维度

字幕有三个维度需要推理:断句(每行 1/2/3 个词或整句)、大小写(UPPER/Title/Natural)、位置(距底部边距)。组合取决于内容:

bold-overlay(短平快技术发布、快节奏社交):2 词一句、UPPERCASE、遇标点断句、Helvetica 18 Bold、白字黑描边、MarginV抬高。SKILL.md 示例给出MarginV=35,而仓库实际随附的SUB_FORCE_STYLE(helpers/render.py)使用MarginV=90——代码注释说明这不是品味而是平台安全区规则:TikTok/IG Reels/Shorts 的 UI(标题、用户名、音乐、右侧操作栏)覆盖竖屏帧底部约 25–30%,libass 按PlayResY=288相对缩放画布,MarginV=90可将字幕基线抬到距底部约 30% 处,在任何宽高比下都避开 UI;不要无故降到 75 以下。以随附实现为准:

FontName=Helvetica,FontSize=18,Bold=1, PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,BackColour=&H00000000, BorderStyle=1,Outline=2,Shadow=0, Alignment=2,MarginV=90

natural-sentence(叙事、纪录片、教育):4–7 词断句、句子大小写、自然停顿处断句、MarginV=60–80、字号更大、最大宽度略宽。仓库未随附该模式的 force_style,需要时自行设计。

render.py --build-subtitles会按 2 词一句、标点断句的算法从逐源转写自动生成master.srtbuild_master_srt,见 helpers/render.py):对每个段,取落在段范围内的词,成句后按词.start - 段.start + 段偏移映射到输出时间线,输出前统一大写化并去除尾部标点。硬性要求仍是规则 1(最后应用)与规则 5(输出时间线偏移)。

十一、动画编排:按槽位选引擎,并行子代理构建

动画必须匹配内容与品牌:调色板、字体、视觉语言都来自对话,绝不假设默认值;用户未给时在策略阶段提出调色板并等待确认。引擎选择不搞一刀切:

  • HyperFrames——浏览器原生 HTML/CSS/GSAP 视频合成:产品 UI 动效、网页转视频、mockup 转视频、动态排版、落地页/故事板宣传、数据驱动 UI 状态、透明 WebM 覆盖层,以及需要确定性帧捕获 + lint/validate/render 检查的片段。槽位内用npx --yes hyperframes init . --example blank --non-interactive --skip-skills脚手架,构建后跑适用的检查(lintvalidate、可行时草稿渲染),最后npx --yes hyperframes render . -o render.mp4--format webm -o render.webm(需要 alpha 时);
  • Remotion——React/CSS 组合、组件状态、可复用 React 原语或既有品牌系统。槽位内用npx create-video@latest脚手架或本地安装 Remotion,用项目本地remotion render输出render.mp4,再用ffprobe核验时长与分辨率;
  • Manim——正式图表、状态机、公式推导、图形变形,深度内容见 skills/manim-video/SKILL.md;
  • PIL + PNG 序列 + ffmpeg——简单覆盖卡片:计数器、打字机文本、单条柱状揭示、渐进式绘制,迭代快、任意审美(随附发布视频即用此法)。

混合使用不被禁止(例如 PIL 背景 + HyperFrames/Remotion 图层叠加)。EDL 的overlays.file必须指向真实渲染产物路径。

时长经验值(上下文相关):同步解说类须 1× 可读——简单卡片约 3s 底线、通常 5–7s、复杂图表 8–14s;节拍同步的强调动效(MV、快剪)0.5–2s 即可,此时"1× 可读"降级为"1× 可辨识";切出前终帧保持 ≥1s(通用);压在配音上时总时长 ≥旁白时长 + 1s(通用);绝不并行揭示多个独立元素——眼睛一次只能追踪一个新东西。

动画落点时机(同步解说类):拿到落点词的词级时间戳,让覆盖层提前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

ease_out_cubic用于单次揭示(缓慢落定),ease_in_out_cubic用于连续绘制。打字文本锚定技巧:按完整字符串宽度居中,而非部分字符串宽度,否则揭示过程中文本会左移。示例配色(发布视频,仅为众多审美之一):近黑背景(10,10,10)、橙色强调#FF5A00/(255,90,0)、暗灰标签(110,110,110)、Menlo Bold 字体(/System/Library/Fonts/Menlo.ttcindex 1)、≤2 个强调色、约 40% 留白、极简装饰——终端的复古技术感。这只是一种风格。

并行子代理简报——每个动画一个子代理(通过Agent工具),提示词必须自包含(子代理没有父上下文),包含 10 项:①一句话目标("只做一个动画:[规格]。别的都不做");②绝对输出路径(<edit>/animations/slot_<id>/render.mp4);③精确技术规格(分辨率、fps、编码器、pix_fmt、CRF、时长);④具体调色板值(RGB 元组、hex 或设计系统引用);⑤字体路径及索引;⑥逐帧时间线(何时发生什么、用什么缓动);⑦反清单("无装饰、无多余、未指定就不加标题");⑧代码模式参考(内联复制 helpers,跨槽位不 import);⑨交付清单(脚本、渲染、ffprobe 核验时长、报告);⑩"不要提问,任何歧义都选最显然的解释并继续"。一个子代理只产出一个文件(文件名唯一,并行代理互不覆盖)。

十二、输出规格与抗模式清单

输出规格:默认匹配源素材,除非用户另有要求。常见目标:1920×1080@24电影感、1920×1080@30屏幕内容、1080×1920@30竖屏社交、3840×2160@244K 影院、1080×1080@30方形。render.py默认把任意源缩放到 1080p;其他目标需传--filter或编辑抽取命令。值得主动询问用户交付格式。

抗模式清单(无论什么风格都会翻车的做法):分层预计算编解码格式(USABILITY/tone 标签/镜头层)——过度工程,决策时从转写即时推导即可;手调的时刻打分函数——LLM 选得比任何启发式都好;Whisper SRT/短语级输出——丢失亚秒级间隙数据,必须词级逐字;本地 CPU 跑 Whisper——慢且归一化填充词,用托管 Scribe;合成前把字幕烧进基底——覆盖层会遮住它们(规则 1);有覆盖层时用单次 filtergraph——双重重编码,用逐段抽取 + 拼接;线性缓动——机械感,必须三次缓动;段边界硬切音频——可闻爆音(规则 3);按部分字符串居中打字文本——随增长左移;多个动画串行子代理——必须并行;确认策略前就动手剪辑——绝不允许;重新转写已缓存源——不可变输入的不变输出;预设视频类型——先看、再问、最后剪。

结语

video-use的全部功力浓缩在 SKILL.md 这份技能文档里:12 条硬性规则保证输出的生产正确性,7 条原则划定"必做"与"艺术自由"的边界,而 helpers/ 下的脚本把每一条规则都变成了可执行、可验证的工程实现。无论你的素材是 talking head、蒙太奇、教程、旅行还是访谈,这套"转写 → 打包 → 推理 → EDL → 渲染 → 自评"的流水线都能以对话方式驱动,产出自检通过的成片。动手前请务必通读 install.md 完成环境搭建,并在每次会话中让全部输出落在<videos_dir>/edit/之下。

  • AI 技能/插件
  • 音视频
  • 视频处理
  • 人工智能

【免费下载链接】video-use

Edit videos with coding agents

项目地址:https://gitcode.com/GitHub_Trending/vid/video-use
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询