mcpField
O
open-edit

open-edit

github.com/veedstudio创意与媒体1.7k1.2k 次安装3 周前更新
代码仓库

关于 open-edit

open-edit 是一款命令行工具,可将 HTML 页面创作的视频内容渲染为成片,适合希望项目保持可编辑的创作者。它还提供转录、剪辑、音频、素材处理及交接至 VEED 的工具。

主要功能

  1. 01将 HTML 页面渲染为视频
  2. 02仅重新渲染修改片段
  3. 03检查视频帧与图像合集
  4. 04转录与片段编辑工具
  5. 05音频混合与合并
  6. 06交接至 VEED 项目

适用场景

  1. 01用 HTML 和素材制作视频
  2. 02修改后只重渲染对应片段
  3. 03转录内容并重排镜头
  4. 04为渲染视频添加音轨

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/veedstudio/open-edit --skill open-edit

安装后在 Claude Code 中输入/open-edit确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

CUT.md
FABRIC.md
TRANSCRIPTION.md
VEED.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 账号费用。 首次付费调用前,用一行话说明要制作什么以及费用,然后等待用户回复。背景移除默认使用免费方案。
  • 交付时,说明花费了多少,以及费用计入哪个账号。

与用户沟通

开始时用一行话说明,然后提供交付文件路径,并用一两句话介绍结果。不要逐步汇报进度,也不要透露内部信息:运行密钥、命令名称或原始工具输出。用通俗的话提醒用户注意结果中的问题,例如转写出的文字没有时间戳。如果必须停止,请用通俗的话说明画面出了什么问题,以及有哪些可选方案。

评论

支持 Markdown