关于 open-edit
open-edit 是一款命令行工具,可将 HTML 页面创作的视频内容渲染为成片,适合希望项目保持可编辑的创作者。它还提供转录、剪辑、音频、素材处理及交接至 VEED 的工具。
主要功能
- 01将 HTML 页面渲染为视频
- 02仅重新渲染修改片段
- 03检查视频帧与图像合集
- 04转录与片段编辑工具
- 05音频混合与合并
- 06交接至 VEED 项目
适用场景
- 01用 HTML 和素材制作视频
- 02修改后只重渲染对应片段
- 03转录内容并重排镜头
- 04为渲染视频添加音轨
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ veedstudio/ open-edit --skill open-edit安装后在 Claude Code 中输入/open-edit确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
CUT.mdFABRIC.mdTRANSCRIPTION.mdVEED.md详细介绍
open-edit
你可以自行编写 HTML 页面来创作作品,然后用 render 渲染。OpenEdit 提供了基础 shell 所没有的功能:登录一次即可使用 VEED 的托管服务、用于剪辑和声音处理的测量工具,以及只重新渲染你修改部分的渲染器。下文中的 openedit 是 npx @veedstudio/openedit-cli 的简称;每条命令都可通过 --help 查看其标志说明。
设置
每个工作区只需设置一次,在运行第一条命令之前完成。WORKSPACE 是当前项目根目录,或不在项目中时的当前目录。
npx --yes @veedstudio/openedit-cli init --dry --workspace "$WORKSPACE"
npx --yes @veedstudio/openedit-cli init --workspace "$WORKSPACE"
请查看最后一行 preflight:,不要看退出代码:ready — OPEN_EDIT_ROOT=… 表示可以继续,runs/ 和记录的偏好设置都位于该根目录下。如果 init 输出 APPROVAL REQUIRED,请向用户说明每项具体操作并等待明确同意,然后再次运行并添加 --auto-approve。如果最后一行提示由用户运行安装命令,--auto-approve 无法代为运行这些命令:请把命令交给用户,并在用户运行完毕后再次运行 init。未经用户明确同意,绝不要安装任何机器全局内容,也不要根据渲染请求推断用户已同意。如果命令输出 update available,告知用户一次;只有在用户同意后,才运行它指定的 init --update 命令。如果用户拒绝,继续操作,不要再次询问。
每个作品单独一个文件夹
将作品所需的一切都放在 runs/<key>/ 下:页面、素材、渲染结果和音频。代码就是编辑内容:该文件夹便于用户日后返回修改某个场景,或将作品用于另一段视频,因此作品所需的所有内容都必须放在其中。
工具
| 需求 | 命令 |
|---|---|
| 获取包含真实逐字时间戳的转录文本 | transcribe <video> [...] 会运行 $OPEN_EDIT_ROOT/.open-edit-prefs.json 中记录的服务商。如果没有记录(命令会拒绝运行并说明原因)、未找到 VEED 登录信息,或运行失败:请先阅读 TRANSCRIPTION.md |
| 删除、重新排序或拼接片段 | 阅读 CUT.md(speech-probe、apply-edl、retime-transcript) |
| 拼接画面尺寸不一致的完整视频片段 | concat-videos(以 30 fps 重新编码到同一画布) |
| 查看视频、页面或一组图片 | frames <video> --at <sec,...> --sheet(将这些时刻生成一张图片;要查看参考图片文件夹,请使用 --images),render --stills |
| 从背景中抠出主体 | background-removal(免费的 VEED 方案;无法运行时,命令会显示 fal 的价格并停止,只有添加 --fal 才会购买) |
| 让演示者朗读脚本 | Fabric:请先阅读 FABRIC.md |
| 为人脸配上新音频 | lipsync |
| 使用任意 fal 模型:图片、视频、音乐、语音、特效 | fal schema <model>,然后运行 fal run <model> --input <json or @file> --run runs/<key>(批量运行时使用 --batch <jobs.json>);输入中的本地文件会自动上传 |
| 将网页字体下载为本地文件 | fonts <Family> [...] --out <dir> |
| 获取真实的授权图片 | stills search、stills show、stills save |
| 将多个片段混成一条配乐 | mix-audio runs/<key>(人声轨会自动降低背景音量;规格请查看 mix-audio --help) |
| 为渲染结果添加符合交付响度的声音 | mux-audio --video <render> --audio <source clip or built track> --out <file> |
| 在 VEED 编辑器中打开作品供用户修改,或导入用户从编辑器带来的项目 | 阅读 VEED.md(veed-project、veed-pull) |
Fabric、背景移除、lipsync 和 veed-project 共用 VEED 转录登录信息:使用同一个 veed.io 账户和已保存的令牌,无需再次登录。编辑器交接中的书签会在用户自己的浏览器 VEED 会话中运行。background-removal --fal 完全无需 VEED 登录。
渲染
openedit render runs/<key>/index.html --out runs/<key>/out.mp4 --fps <fps> --duration <seconds>
画布是页面的 #stage(或 [data-stage])元素,按其自身尺寸捕获;若不存在,则为 1920x1080。--width/--height 则从页面左上角开始捕获指定尺寸的区域,并忽略舞台。使用视频素材时,画布和帧率取自素材本身,frames 会显示两者。将其 frameRate(如 30000/1001)传给 --fps,不要使用旁边的十进制数。
- 渲染器负责控制时间。它会驱动虚拟时钟(
performance.now、Date.now、requestAnimationFrame、定时器,以及设定种子的Math.random),将每个 CSS 和 Web Animations 动画设为对应帧的时间,并跳转 GSAP 的全局时间轴。其他任何随时间变化的内容都放进window.__seek(t)(可以是异步函数)。 - 首帧之前会等待字体、图片和视频加载完成,并让每个
<video>显示精确对应帧的画面。字体和素材文件请与页面放在一起。 --from <s> --to <s>只会重新渲染这段内容,其余部分会复用。修改后,只重新渲染修改过的部分,而不是整段内容。--stills 0.5,2,4 --sheet <file>可在不完整渲染的情况下预览几个时刻。--transparent会生成带透明通道的画面。- 如果页面出错、渲染结果为空白,或 Chrome 未能启动,程序会明确报错;请查看打印出的原因。若加载列表中有加载失败的项目(视频、图片或字体),则渲染结果有误:请修复并重新渲染后再交付。
- 输出不含声音:由
mux-audio添加音轨(先用mix-audio构建多段音轨)。
无视频素材
如果用户没有附加视频,先阅读需求,再判断是否需要视频:
- 用户之后会提供视频片段:等待。
- 根据脚本制作真人出镜视频:按照
FABRIC.md使用 Fabric。 - 使用其他模型生成视频片段(包括 fal 上的任何模型及其密钥和费用):务必同时说明,字幕是根据片段中的语音转写而来,且大多数生成器输出的视频没有声音。
- 完全不需要视频:使用静帧、图形、生成图像和音频制作。这就是完整的制作流程。
如果不清楚属于哪种情况,请先询问。
费用
- VEED 转录会消耗某个工作区的 VEED 转录额度。如果账号有多个工作区,CLI 不会替你选择:请用
--workspace指定用户选定的工作区。 - Fabric 会消耗其所选工作区的 AI Playground 额度;
FABRIC.md说明了它的三个阶段。 - 每次 fal 调用(
fal run、lipsync、background-removal --fal或--fast)都会计入用户自己的 fal 账号费用。 首次付费调用前,用一行话说明要制作什么以及费用,然后等待用户回复。背景移除默认使用免费方案。 - 交付时,说明花费了多少,以及费用计入哪个账号。
与用户沟通
开始时用一行话说明,然后提供交付文件路径,并用一两句话介绍结果。不要逐步汇报进度,也不要透露内部信息:运行密钥、命令名称或原始工具输出。用通俗的话提醒用户注意结果中的问题,例如转写出的文字没有时间戳。如果必须停止,请用通俗的话说明画面出了什么问题,以及有哪些可选方案。