
今天拆的是 video-use:把原始素材丢进一个文件夹,让 Claude Code 或 Codex 读着词级转写稿剪出 final.mp4。文章给全它在链条上的位置、转写这一笔真实开销、中文字幕与音频接缝这两处已知阻塞,以及今天该不该动手的判断。
edit/final.mp41。截至今早,仓库显示 24,981 star、3,028 fork、21 次提交、9 位贡献者,主分支最后一次推送停在 8 月 30 日1。(laughter)、(applause)、(sigh))的转写稿。所有素材打包成一个约 12KB 的 takes_packed.md,按 0.5 秒以上的停顿或换人切成短句,每行标着时间区间:## C0103 (duration: 43.0s, 8 phrases) {#c0103-duration-430s-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.helpers/timeline_view.py 给出任意时间段的胶片条、波形和字块合成图,用在含糊的停顿、多个 take 的取舍和剪辑点的检查上2。这两层合起来,就是它读素材的方式。
static/timeline-view.svg),画的是 42.00 秒到 48.00 秒这一段。中间那排字是词级时间戳,Ninety percent of what …wasted. 和 We fixed this. 之间标着 620ms 的静音,后面还有一处 880ms;下方两个绿底 CUT 落在静音区间里。图底那行写着它的取舍标准:400ms 以上的静音是安全的切点,词提供边界精度,音频事件标记要留下的拍子。1timeline_view,查画面跳变、边界上的波形尖峰、被叠加层盖住的字幕、错位的叠加层,再抽查头 2 秒、尾 2 秒和中间两三个点。查到问题就改、重渲、再看,最多三轮;三轮之后仍有问题就报给你,不无限循环2。一支片子里多个动画分别交给子 Agent 并行去做,总耗时约等于最慢的那一个,这是第 10 条硬规则2。ffmpeg 和 ffprobe 在 PATH 上,一把 ElevenLabs 的 API key。yt-dlp 只在要从链接下载素材时才要装;Node.js 22 以上只在动画插槽要用 HyperFrames 或 Remotion 时才要装3。<素材目录>/edit/ 下:final.mp4 和 preview.mp4 之外,还有 edl.json(每一刀取自哪个源、从第几秒到第几秒、属于哪一拍、为什么留)、master.srt、clips_graded/ 里调过色的每段中间片,以及 takes_packed.md 本身2。project.md 是它的会话记忆,每剪完一支追加一次;下次在同一个目录里开工,它接着上次的记录走。转写结果按源文件缓存,源文件没变就不重新转写,这是第 9 条硬规则,也是这套东西里最省钱的一条2。install.md 要求全部由 Agent 自己完成,只在要 key 的时候问你一次3:~/Developer/video-use,然后 uv sync 或 pip install -e .;ffmpeg 与 ffprobe;~/.claude/skills/video-use,Codex 是 $CODEX_HOME/skills/video-use。要软链整个目录的原因是 helpers/ 里的脚本按 bare name 互相调用,必须和 SKILL.md 待在一起;.env,权限设成 600。install.md 里备了一段可以直接粘进 Agent 的安装提示词,让它自己走完这四步。里面还有一条克制的要求:装完不要顺手转写一遍做验证,等素材真正进来再跑,因为 Scribe 按小时计费3。cd 进素材目录,在那一层起你的编码助手,说一句 “edit these into a launch video”。它会先清点素材、给出一段四到八句的策略(选哪些 take、剪成什么形状、要不要动画、调色方向、字幕样式、预计时长),等你点头再动刀2。
static/video-use-banner.png。画面是一次真实会话:你在对话里说一句要剪什么,Agent 把待办列成清单一项项做,素材库在右边。这一期的正文讲它读什么、剪什么,这张图给的是它的使用形态——一件发生在对话里的事,没有时间线界面。1install.md 让你 brew install ffmpeg,而报告者那台机器上(Homebrew ffmpeg 8.1.2、arm64 macOS)默认那个包没有编进 libass,subtitles、ass、drawtext 三个滤镜根本不存在。后果是任何带 --build-subtitles 的运行都会在最后一步抛 CalledProcessError,而 master.srt 已经生成好了、前面的流程看起来全都正常,报错信息又长得像引号写错,不像少了个滤镜。他给的走法是先用 ffmpeg -filters 探一下,再在 macOS 上换 brew install ffmpeg-full(有 libass,但是 keg-only,得把它放到 PATH 前面),或者自己对着 libass 编一份。install.md 里另写着任何现代(4.x 以上)的 ffmpeg 构建都够用,把这两句并排看,最常见的 macOS 安装路径恰好在烧字幕这一步不够用4。render.py 第 51 行:字幕样式被写死成 FontName=Helvetica,force_style 会盖掉字幕文件里的设定,而 libass 在这个路径下不做字形回退,中文转写出来的字就渲染成空方块。他用一段 720x1280 的竖版 H.265 中文素材复现了这件事,并顺手标了 macOS 上的一个细节:PingFang SC 走 fontconfig 解析不到(fc-match "PingFang SC" 会静默返回 Verdana),换成 Heiti SC 能解析到系统字体文件。他自己只改了字体这一处,就正常了4。concat_segments() 用 concat demuxer 加 -c copy:每段取出来的素材各自带着 AAC 编码器的 priming 与 padding 样本,流复制时这些样本在每个接口处对不齐。他对一段两段预览做了逐样本分析(48kHz 单声道),不连续点正好落在 AAC 帧边界上、拼接点之后约 102ms,max |Δsample| = 2038,而局部语音的 p95 约 400;这个跳变在 loudnorm 之前的基础预览里就存在,所以是拼接带进来的6。-c:a aac -b:a 192k -ar 48000),视频继续 -c copy——第 2 条硬规则防的是视频被二次编码,这样既守住它,又消掉了接缝6。timeline_view 的 PNG,这一声咔哒是用户先听到的,不是流程抓到的。他建议加一个 helpers/verify_cuts.py,每次渲染后机械地检查音频跳变和边界上的亮度突变,不合格就返回非零码,用它卡住「给你看预览」这一步6。render.py。这是一个人在一台机器上的一次复现,和上面那条字幕问题各走各的路径。→、—、… 这类字符。Windows 上 Python 对重定向或管道流会回落到本地代码页(cp1252),打印这个动作本身就抛 UnicodeEncodeError:render.py 死在第一行进度上,一段都没提取出来;pack_transcripts.py 在写完 takes_packed.md 之后仍然以非零码退出,任何检查退出码的 Agent 步骤会被它打断。作者数出 15 处调用点、分布在 4 个 helper 里,并说明这不限于 Windows——LANG=C 加管道输出同样中招;chcp 65001 不管用,因为非 tty 流用的是 locale 的首选编码。他自己给的绕法是一行环境变量 PYTHONIOENCODING=utf-8,不用改仓库7。render.py 里那一行字体常量,不算难题。install.md 把这件事写得很直白:转写全部由 Scribe 完成,key 不生效或过期,就等于不能装3。素材进不了文本层,整套流程起不来,所以要评估它,得先确认你能拿到 ElevenLabs 的账号,也接受把素材音频送到它的接口上。手上是还没公开的访谈素材时,这一条值得在动手前想清楚。| 方案 | 你给它什么 | 它给你什么 | 它在这一层 | 许可与公开体量 |
|---|---|---|---|---|
| video-use | 一个装原始素材的文件夹,加一把 ElevenLabs key | 一条按词边界剪出来的成片,连转写稿、剪辑决定和字幕一起交回 | 方法论与资产层里的剪辑手艺:一份技能规则加几个 ffmpeg、PIL 脚本 | MIT;24,981 star、3,028 fork1 |
| video-shotcraft(第 1 期) | 一句需求和你产品的截图 | 一支还能继续编辑的 Remotion 宣传片工程 | 站在 Remotion 之上的镜头与动效资产库 | Apache-2.0;8,771 star、789 fork13 |
| OpenMontage(第 2 期) | 一句需求,加你的素材 | 走完工序的成片,带审批门、决策日志和预算上限 | 流程与方法层,安排哪个阶段谁做什么 | AGPL-3.0;59,577 star、7,498 fork14 |
| HyperFrames | 用 HTML、CSS 和 GSAP 写的合成 | 确定性渲染出的 MP4 | 渲染底座;video-use 的动画插槽会把活派给它 | Apache-2.0;50.7k star、4,349 次提交15 |
| hypit | 一支参考视频,或一句描述 | 一套以词为锚点的工作流,换宿主、换语言、换比例都能重跑 | 视频工作流的描述语言 | 自订许可;6,479 star、777 fork16 |
edl.json 里那些剪辑决定你认不认,project.md 记下来的东西够不够你下次接着用。这一轮的钱按素材时长算,一小时素材 0.22 美元。github.com
github.com
github.com
github.com
github.com
github.com
elevenlabs.io
remotion.dev
github.com
github.com
github.com
github.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.