Communitygithub.com

vosjs/vos-cut

画面収録(vosso テイク)を、その証拠から製品ビデオにカットします。vos CLI を使用して、テイクのダイジェスト(カーソルトラックが重要と判断した瞬間、それぞれに映像フレームとクロップが含まれる)を読み取り、ビートをナレーションし、プランナーに対する例外として doc.json を編集し、静止画で検証し、vos.so で人間が微調整する属性付きバージョンをプッシュします。すべての編集はデータパッチであるため、再カットは決して再録画しません。録画の編集やカット、テイクからの製品ビデオや新機能紹介クリップの作成、前回のカットと同様の方法でのカット、一連の録画を1つのスタイルでカットするよう求められた場合に使用します。

vos-cut とは?

このスキルは、vos CLI を使用して、ソフトウェア製品の画面収録テイクから洗練されたプロモーションビデオを編集・生成するプロセスを自動化します。AI エージェントは、収録されたカーソルと操作データ(digest.json)、フレーム画像(sheet.png)、およびプロジェクト設定ファイル(doc.json)を分析し、シーン(ビート)の特定、ズームや速度調整などの視覚スタイルの適用、キャプションの追加、トリミングを「例外による編集」アプローチで行います。これにより、プランナーが生成した自動スパンを人間の意図や具体的な指示に基づいて上書き・微調整します。主なワークフローは、確認 → ナレーション → 例外に基づく決定 → 検証 → プッシュ → 人間による確認(再カット)のサイクルです。Cline、Codex、Aider などのターミナルベースの AI エージェント向けに設計されており、vos CLI ツールチェーン(@vosjs/cli)と vos.so プラットフォームと統合されています。このスキルは、編集内容をデータパッチとして保存するため、再カット時に再録画が不要であり、複数のテイクにわたって一貫したスタイルを適用したり、古いビデオを更新したりするのに特に強力です。また、余分なフレームの読み取りを避け、最小限の画像トークン(約10k)で済むため、効率的です。

対応✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/vosjs/skills/tree/main/skills/vos-cut

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

テイクを証拠からカットする

あなたは誰かが行った録画(vosso テイク:recording.webm + cursor.json + meta.json + doc.json)をカットしており、録画を行っているわけではありません。スクリプトからの録画は product-video スキルです。プログラムは vos-create/vos-remix です。

ループは次のとおりです:確認 → ナレーション → 例外による決定 → 検証 → プッシュ → (人間が確認) → 再カット。各ステップはそれを実行する動詞を指定します。ドキュメントは doc.json です。そのフィールドと単位の契約は https://vos.so/llms-full.txt にあります。ここで人間のテイクを再録画することは決してありません。カットは映像を修正できず、映像が要求を伝えられない場合は、ノートにその旨を記載して停止します。

セットアップ

npm i -D @vosjs/cli   # フェッチ、ダイジェスト、プラン、フレーム、レンダリング、プッシュ、プル

認証情報は、この順序で、決して表示しません:VOS_API_KEY、次に ~/.config/vos/credentials の最初の行、次に vos login(このマシン用のキーを発行するブラウザサインイン)。キーはプライベートワークのみを作成し、公開することはできません。digest、frames、render には Chromium が必要です。

0. 以下のすべてのルールよりも優先される基本ルール

  • ビデオを決して読まないでください。 あなたの目は vos digest です:digest.json、次に sheet.png、そして決定が必要な場合にのみクロップします。90秒のテイクは約35の瞬間と、すべての画像を読んだ場合約25〜40kの画像トークンになります。シートと決定的なクロップを合わせると約10kです。done イベントは見積もりを出力します。
  • 例外によって編集します。 プランナー(ズーム、スピード、チルト)は、すべてのクリック、タイピングセッション、スクロールラン、アイドルギャップがどこにあるかをすでに決定しています。ダイジェスト内の plan はそれらのスパンと proposed を保持し、各瞬間の下にあるものを指定します。それらを保持、マージ、削除、または再タイミングします。プランナーが知り得ないものだけを追加します(どの単独クリックがビート、キャプション、または退屈だがアイドルではない高速スルーに値するか)。あなたが触れるスパンにはすべて "source": "manual" が含まれます。DROP した提案は rejected([{id, lane, in, out}]、レーンとそのソース範囲)に入ります。これにより、再プランや plan --reuse によって実行される再録画がそのビートを再度提案しなくなります。スタジオは、人間が自動スパンを削除したときに自分でそれを書き込みます。
  • カメラではなく、レイヤーでポイントします。 カットがコンポーネント(ボタン、カード、コードブロック)を指し示し、ズームがピクセルを拡大する場合、doc.json 内の html レイヤーとして再描画します(overlays[] で kind: "html":マークアップ、製品自身のタイプの CSS、1080p px でのデザインボックス)。対象の上ではなく、その隣に配置します。リポジトリに製品の実際のコンポーネントがあります。それらを使用します。マークアップは整形式の XML であり、vos validate は描画されないものを示します。CSS アニメーションはウォールクロック上で実行され、anim と motion を優先して拒否されます。
  • ドキュメントの単位はコピーし、決して変換しません。 瞬間の focus はズームスパンの cx/cy です。その rect はズームが含まなければならないものです。source 範囲は映像の秒数(ズーム/スピード/チルト/セグメント)です。output 範囲はレンダリング秒数(オーバーレイ/オーディオ)です。どこでもピクセル値は #1 の間違いです。
  • 人間の編集は神聖です。 ダイジェスト内の doc.manual は人間が決定したスパンをカウントします。あなたのベース以降に人間が編集したノードに触れるプッシュは protected_conflict として扱います。要求がその正確なノードを指定していない限り、それらの値を保持します。
  • ラウンドは3回までで、その後は人間に任せます。 ラウンド = 編集 → 検証 → フレーム → 判断。3回でランディングしない場合は、最良のラウンドをプッシュし、理由を説明します。
  • 要求が決定します。フォルダのレシピが次に優先。最後にこれらのデフォルト。 最近のメンバーが矛盾するレシピ行は、あなたのノートで古いとマークされ、従われません。

1. 確認

vos fetch <vosId> --media        # あなたが録画していないホストされたテイク(doc + 映像のホーム)
vos pull <take> --media          # vos.so にすでにリンクされているテイクディレクトリ
vos folder pull <slug> --media   # プロジェクトのテイク、レシピを含む
vos plan <take> --style <seed doc.json|vosId>   # シリーズ内:シードのスタイル、データによる
vos digest <take> [--transcript whisper.json] [--style <seed>]

この順序で読みます:

  1. digest.json → take(duration、page、has cursor/mic)、moments(id、kind、source/output windows、focus、rect、activity、proposed、said)、plan、doc.manual。hasCursor: false のテイク(ブラウザレコーダーテイク)は、head/tail/scenes のみをリストします:activity でペースを調整し、要求が場所を指定した場合にのみズームし、ノートでテイクにカーソルトラックがなかったことを伝えます。
  2. sheet.png → 時系列順のクロップ、ID が焼き付けられています。これは一目でわかるフィルムです。
  3. m<nn>.crop.png は、要求またはレシピが決定的にする瞬間のもの。m<nn>.full.png はコンテキスト(どのページ、どのセクション)のためだけに使用します。

クロップを読む:何に焦点が当たっているか(コントロール、フィールド、コンテンツ)。何を言っているか(ラベル、入力された値)。クリックの結果が次の瞬間のフレーム、またはその直後の scene 瞬間に表示されているか。scene はフレーム差のジャンプ(ナビゲーション、ダイアログ)です。そのフルフレームを見て名前を付けます。

クリックリストが示さない2つのことをクロップが示します:その rect がフレームの大部分を占めるクリッククラスターは DRAG(狙いを定める、スクラブする、物を動かす)であり、ターゲットではありません。また、activity が約0.1を超えている「アイドル」ギャップはビデオの再生中であり、アイドルではありません。どちらもプランナーの提案は不要です。

フォルダが関係する場合は、何かを決定する前に、その中のすべての .md ファイル(自身のものと継承されたもの)を読んでください。

2. ナレーション

作業メモに3〜6のビートを書き、それぞれにその瞬間ID、表示される内容(クロップから)、目的(レシピ、ページタイトル、said、または要求から)を含めます。例:

B1 m01-m04  ギャラリー:閲覧、プログラムを選択            (大きく開く、1つのカードズーム)
B2 m05-m06  Remix がスタジオを開く                          (シーンが見どころ)
B3 m07-m12  ノブ:リミックスパネルで5つのスライダードラッグ     (1つのホールドズーム、中央部を2倍)
B4 m13-m14  結果が再生される                            (リリース、セトル)

テイクに要求が付属していませんか?録画から推測し(何を示しているか、どこで表示されるか、どのくらいの長さか)、バージョンノートに明記して、人間がカット前に間違った要求を修正できるようにします。

要求がビートを指定している場合(「エクスポート部分をよりキビキビさせる」)、最初にそれを瞬間IDにマッピングし、その外側には触れません。

3. 例外によって決定する

ビートごとに、plan とレシピに対して:

  • ズーム。 プランナーのスパンがビートをフレーミングする場合は保持します。隣接する提案を1つのビートである場合は1つのホールドスパンにマージします(ビートごとに1つのズーム、クリックごとではありません)。ビートではないクリックの提案はドロップします。プランナーがスキップした単独クリックに、クロップがそれが重要な瞬間であることを示す場合はスパンを追加します。rect からレベルを決定します:小さなコントロールは1.8〜2.2、パネルは1.4〜1.6。ターゲットがフレーム幅の大部分を占める場合、フレーミング lint がレベルを決定するので、それに従います。cx/cy = 瞬間の focus。あなたが発行するID:u1、u2…。エディタの録画では、スパンが表示されるLANEをズームし、ドラッグされているキャンバスは決してズームしません。ナビゲートするクリックの前にズームをリリースして、ページの切り替えがワイドで再生されるようにします。
  • 速度。 タイピング/アイドル/スクロールの提案を保持します。activity が低く、ビートを必要としない部分、またはドラッグクラスターの下に 2×〜3× を追加します。ビートの見せ場や再生中には決して適用しません。
  • チルト。 カメラスタイルにチルトがある場合(tiltStyle/スタイルのパーソナリティ)で、ビートが句読点に値する場合のみ。1つのポーズあたり約5秒、±5..18°。
  • トリミング。 頭と尾:重要事項の最初と最後までカットします(segments)。最後に約0.5秒のセトルを残します。ローディング画面はカットします。
  • テキスト。 言うべきことがあるビートごとに1つのキャプション。一定の間隔(5〜10秒ごと、それぞれ2.5〜4秒、一度に2つは不可)で、製品の言葉とビデオの意図で。lower-third y ≈ 0.82。OUTPUT 秒。クリックしたコントロールの上には決して配置しません(validate が警告します)。その下の地面が明るい場合(エディタのタイムラインなど)は box を指定し、各キャプションをその瞬間ごとに判断します。フローを説明するフィルムの場合、フィルム全体で1つのキャプションはまばらすぎます。ゼロが正しいのは、レシピまたは要求がテキストなしと指定した場合のみです。
  • スタイル。 シリーズ内の場合、カットする前に vos plan --style <seed> を実行します。これにより、シードの zoomStyle/zoomParams/speedParams/tiltStyle/frame/cursor/cam/export がコピーされ、それらの下の自動スパンが再プランされます。これらの数値をレシピで再記述しないでください。シードのドキュメントがそれらのホームです。

パッチは doc.json への EDITS として書き、書き換えは決して行いません。理解できないフィールドはすべて保持します。

4. 検証

vos validate <take>                                   # クリーン。フレーミング警告を読み、修正する
vos digest <take> --no-frames                         # 再タイミング後:新しい OUTPUT 時間、同じフレーム
vos frames <take> --at-moments --at-zooms --times 0,25%,50%,75%,100%
vos frames <take> --times <every caption start + 1>   # 各キャプションをその基盤上で
vos render <take> check.webm --range a..b --draft     # 最も変更されたビート

https://vos.so/llms-full.txt の品質ループとフォルダの基準に対して静止画を判断します:ぼけ、クロム、カーソル、テキストの読みやすさ、最初と最後のフレームをポスターとして。3秒以内に見せ場。エンドはセトル。約5秒あたり1回以下の全フレームバン(ffmpeg -vf "select='gt(scene,0.12)'" でカウント)。moment-<id> 静止画とその <id>.crop.png は同じIDを共有します:「そこにあったもの」と「カットが示すもの」の隣。

5. プッシュ

vos push <take> --label "<何を、命令形、≤60文字>" --note "<カットした要求; ソース秒を含むビート; ドロップおよび追加したもの>" [--folder <slug>]

ベースは vos.json から来ます。409 stale_base → vos pull、その上に再適用し、再度プッシュします。409 protected_conflict → 人間の値を保持します。ただし、要求がそのノードを指定した場合を除きます(その場合のみ --override <id>)。400 はフィールドとその制限を出力します。次に GET /api/vos/<id> を実行し、contentUrls.thumbnail をたどって、完了を報告する前にそれを見てください。

6. 再カット(人間が確認した)

vos pull は、人間が変更した内容の differ の要約を出力します(「zoom z3: レベル 2.2→1.6; overlay c1 削除」)。それがフィードバックです。データ自身の言葉で:人間の言葉が要求したものを再カットし、人間の手がすでに修正したものには触れません。ラウンドを数えます。「素晴らしい」という言葉は、人間の言葉であり、シードの唯一の出口です。

7. 記憶(人間がシードを承認した後のみ)

ファイルに保存し、ルールを書き留めます。数値はシードのドキュメントに残ります。

vos folder create "<series>" --desc "<目的、≤200文字>"
vos folder move <vosId> --to <slug>
vos recipe push CUT.md --folder <slug>      # 適用対象:テイク、seed: <vos id>
vos recipe push BRAND.md --folder <slug>    # 適用対象:任意、seed: なし

レシピは CLAUDE.md と同じように大文字で命名されます。これはコレクションがカットする前に読むファイルです。あなたがファイリングするものは、ステムが大文字化されて保存されるため、ターミナルとシェルフで一致します。

CUT.md には、数値では伝えられないことが書かれています:ビートの語彙、キャプションを取得するものと決して取得しないもの、ホールドの長さ、タイトル/エンドの慣例、長さの範囲、スキップするもの、そして人間がシードに修正した決定(differ から読み取る)。BRAND.md:タイポグラフィ、パレット、背景、音楽、テキストのトーン。後続のメンバー:フォルダをプル、ダイジェスト、シードから --style でプラン、CUT.md に従ってカット、--folder でプッシュします。2つのメンバーにわたって繰り返される修正(または人間がそれらのすべてに対して述べた1つの修正)は、## Agent notes の下に日付を付けて追加され、その上のルールは一致するように書き換えられます(vos recipe push <file> --asset <id> はその場で置き換えます。以前の本文は保持されます)。所有者の行を黙って書き換えることは決してしません。

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-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.

vosjs/vos-migrate

Turn an existing Loom, Screen Studio, Cap, or plain mp4/webm screen demo into an editable vosso take — re-encode the file, synthesize the take's metadata, plan, and push, so the old demo becomes a living document you re-cut instead of a file you re-record. Use when asked to "convert this Loom", "migrate our old demos", "re-edit this mp4", "make our Screen Studio recording editable", or to bring any already-recorded demo into vosso.

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.

関連スキル