Communitygithub.com

vosjs/vos-migrate

將現有的 Loom、Screen Studio、Cap 或純 mp4/webm 螢幕錄影轉換為可編輯的 vosso take,重新編碼檔案、合成 take 的中繼資料、規劃並推送,讓舊的錄影變成一份動態文件,而非需要重錄的靜態檔案。

vos-migrate 是什麼?

這是一個專為 vosso(一種建立在 git 基礎上的螢幕錄影與編輯格式)設計的遷移技能。它能將已完成的影片檔案(如 Loom、Screen Studio 匯出、Cap 錄製或純 mp4/webm)轉換為 vosso take——一種結構化文件,其中縮放、修剪、速度與圖層均為數據,並可透過工作室進行編輯。此技能完全以命令列驅動(透過 vos CLI 工具),核心步驟包括:使用 ffprobe 分析原始影片,透過 ffmpeg 重新編碼為 VP9/Opus,並手動撰寫 metadata 與編輯規劃(doc.json),其中包含縮放與修剪(以「manual」標記,因為缺乏游標軌道)。最後,它會將 take 推送到 vosso 平台,使舊的錄影變得可編輯且具版本歷史。然而,它也有明確限制:由於無游標軌道,無法自動縮放,且原始編碼品質無法還原。此技能適合開發者將現有螢幕錄影轉化為可維護的文件。

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

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

將錄製的示範影片遷移為可編輯的 take

你正在將一個已完成的影片檔案轉換為 vosso 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 "從 <來源> 遷移" \
    --note "<內容說明;標明舊有編輯已烤入;你重新剪輯了哪些部分>"

最後進入循環:觀看頁面播放它,工作室編輯你撰寫的每個區間以及檔案從未有過的一切(背景、文字圖層、速度),而 vos pull 則可將人類的編輯拉回。這句口號適合交接時使用,用一句話總結:這是你最後一個盲目編輯的示範——下一次使用 vos record 錄製,攝影機就會自動規劃。

誠實的限制(一定要說出來,絕不掩蓋)

  • 無游標軌道 ⇒ 無法自動縮放、無點擊效果、無打字縮放,也沒有構圖提示——每次縮放都要靠你的眼睛,而且你必須說清楚。
  • 舊的編輯、鏡頭泡泡和字幕均為烤入的像素。
  • 遷移會重新編碼一次(VP9);壓縮品質差的來源仍然品質差——遷移無法還原品質。
  • 標準尺寸的交付清單(儲存靜態圖、海報)無論從遷移的 take 還是從原生 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.

相關技能