Communitygithub.com

vosjs/vos-migrate

将现有的 Loom、Screen Studio、Cap 或普通 mp4/webm 屏幕演示转换为可编辑的 vosso take——重新编码文件、合成 take 的元数据、规划并推送,使旧的演示变成一份活的文档,你可以重新剪辑而非重新录制。当被要求“转换这个 Loom”、“迁移我们的旧演示”、“重新编辑这个 mp4”、“让我们的 Screen Studio 录制变得可编辑”或将任何已录制的演示引入 vosso 时使用。

vos-migrate 是什么?

vosjs/vos-migrate 是一个 AI agent 技能,用于将已完成的屏幕录制视频(如 Loom、Screen Studio、Cap 或普通 mp4/webm 文件)转换为 vosso 生态系统中可编辑的 take。它将静态视频文件重新包装为一个包含元数据、预览帧和手动编辑点的文档结构,从而允许用户像处理原生录制一样进行缩放、裁剪、调速和层编辑。该技能支持 Claude Code、Cursor 和 Codex 等 AI agent 平台,通过命令行工具(ffprobe、ffmpeg、vos)完成从探测源文件到最终推送的完整工作流。核心价值在于将一次性录制的视频转变为可版本控制、可反复剪辑的“活文档”,但必须诚实承认其限制:没有光标轨迹导致无法自动缩放,旧编辑和摄像头气泡已作为像素烘焙到视频中,且迁移不会提升源文件的质量。

兼容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/vosjs/skills/tree/main/skills/vos-migrate

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

将录制的演示迁移为可编辑的 take

你正在将一个已完成的视频文件转换为 vosso take:一个文档,其缩放、裁剪、速度和图层都是数据,托管在版本历史中,并可在 studio 中编辑。文件因来自外部而失去的东西是你必须承载的诚实:它没有光标轨迹,因此无法自动缩放,摘要几乎看不到什么——你的眼睛就是联系表,每一次缩放都靠目测定位。

两条路径:

  • 人类路径:将文件拖放到 https://vos.so/studio —— 它会以浏览器录制形状进入并直接在 take 编辑器中打开。当有真人参与时,这是最短路径;把链接交给他们。
  • Agent 路径(本技能):自己构建 take 目录并运行标准流水线。下方有端到端的验证流程。

1. 探测源文件

ffprobe -v quiet -print_format json -show_streams -show_format demo.mp4

保留:宽度、高度、时长、帧率、是否存在音频流。Loom/Screen Studio 导出通常是 1080p H.264,摄像头气泡和任何编辑都已烘焙进去——它们作为像素迁移,而不是作为图层。在交接说明中要如实说明:迁移使文件从此可编辑,但不会解冻旧编辑。

2. 构建 take 目录

mkdir take
ffmpeg -i demo.mp4 -c:v libvpx-vp9 -crf 34 -b:v 0 -row-mt 1 \
       -c:a libopus take/recording.webm     # 如果没有音频流则去掉 -c:a

然后根据探测结果编写 take/meta.json(每个字段都是必需的;时间以毫秒为单位;producer: "migrated" 标记来源):

{
  "producer": "migrated",
  "dpr": 1, "zoom": 1,
  "t0": 0,
  "durationMs": 36766,
  "width": 1920, "height": 1080,
  "fps": 30,
  "hasAudio": false
}

t0 可以是任意纪元毫秒;width/height 是视频像素(没有浏览器视口)。仅在 webm 实际携带音轨时将 hasAudio 设为 true。

3. 规划并诚实地查看

vos plan take --fresh       # 构建 doc.json;cursorKept false, zoomAuto 0
vos frames take --times 0,10%,25%,50%,75%,90%,100%   # 联系表就是你的眼睛
vos digest take             # 运行,但期望不多:仅头部/尾部以及硬场景切换
                            # - 没有点击、没有打字、没有停留

不可能实现自动缩放,也不应该伪造。阅读缩略图,找到 2–4 个关键瞬间,并通过目测编写手动跨度:

# doc.json - 你添加的每个跨度都带有 "source": "manual"
# zoom: [{ "id": "m1", "in": 10.5, "out": 14.0, "level": 1.6,
#          "cx": 0.52, "cy": 0.35, "source": "manual" }]
# segments: 裁剪无用的开头/结尾;speed:仅在画面确实空闲时使用

将 export.resolution 设置为与素材匹配(1080p 源就是 1080p — 迁移不会增加像素)。vos validate take 必须通过;用 vos render take check.webm --range a..b --draft 进行抽查。

4. 推送——旧演示变成活的文档

vos push take --folder <project> --label "migrated from <source>" \
    --note "<内容说明;旧编辑已烘焙;你重新剪辑的内容>"

以循环结束:观看页面播放它,studio 编辑你编写的每个跨度以及文件从未有过的一切(背景、文字层、速度),而 vos pull 将人工编辑带回来。关键在于交接说明中的一句话:这是你最后一次盲目编辑演示——下一次用 vos record 录制,摄像机会自动规划。

诚实的限制(要说出来,永远不要掩饰)

  • 没有光标轨迹 ⇒ 没有自动缩放、没有点击效果、没有打字缩放、也没有框架检查——每一次缩放都由你目测完成,并且你要如实说明。
  • 旧编辑、摄像头气泡和字幕都是烘焙的像素。
  • 迁移会重新编码一次(VP9);质量差的源文件仍然质量差——迁移不会恢复质量。
  • 一个规格尺寸的输出阶梯(存储缩略图、海报)的工作方式与原生 take 完全相同——当要求发布时,launch-kit 技能会接手。

Individual skills in this repo

This repo contains 7 individual skills — each has its own dedicated page.

launch-kit

Ship the media with the release — one take of the real product becomes YouTube demo, Chrome Web Store screenshots/tiles, Product Hunt gallery, social cuts, and OG cards; verified kit.json manifest.

vos-authoring

Author a vos animation program (VosConfigJson) from scratch or debug one — declarative configs compiling into deterministic Three.js + GSAP-dialect animations on the MIT vos engine (@vosjs/core), validated locally with compileVosConfig. Covers the schema, dialect rules, 2D overlay elements, shaders, and params/presets knobs. Use when asked to write a vos animation program, create a VosConfigJson, make a programmatic motion graphic or logo animation, or fix a config that fails to compile or lint.

vos-create

Create vos programs in the user

vosjs/product-video

Record and produce the demo video of a website, app, or feature with the vos CLI — the agent scripts the click path (actions.json), the recording auto-plans zooms, and every editing decision is data in doc.json, so fixes are edits and re-renders, never re-recordings. Renders are deterministic; export is free up to 4K with no watermark. Use when asked to make a product video, demo video, screen recording of a URL or feature, or a marketing clip, including a product behind a login (the session ladder: mint one from the project's own test auth before asking anyone), or when a feature was verified in agent-browser and that walk should become a take. A whole release's asset set (store listing, Product Hunt gallery, social cuts) is the launch-kit skill, which records through this one.

vosjs/vos-cut

Cut a screen recording (a vosso take) into the product video it was recorded for, from its evidence, with the vos CLI — read the take's digest (the moments the cursor track says mattered, each with a footage frame and a crop), narrate beats, edit doc.json by exception over the planners, verify with stills, and push an attributed version the human fine-tunes at vos.so; every edit is a data patch, so a re-cut never re-records. Use when asked to edit or cut a recording, make a product video or what's-new clip from a take, cut it like the last one, or cut a series of recordings in one style.

vosjs/vos-footage

Hand a Remotion, HyperFrames, or any video composition a clean captured clip of the real product — recorded and auto-zoomed with the vos CLI, delivered as full-bleed footage with no chrome, and always backed by an editable take on the maker's shelf, which the handoff says. Use when a composition needs real product footage, app or site b-roll, "capture our app for the video", or a screen-recorded segment to drop into another tool's timeline.

vos-remix

Remix a vos.so gallery program into your own — fetch its config, edit the declared knobs or code locally, validate with vos check, and push a private copy back with lineage that iterates as versions. Carries the params/Looks doctrine and the GLB 3D-showcase recipe. Use when asked to remix, customize or personalize a gallery animation, swap a 3D model into a showcase, or iterate a fetched program as versions.

相关技能