テイクを証拠からカットする
あなたは誰かが行った録画(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>]
この順序で読みます:
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でペースを調整し、要求が場所を指定した場合にのみズームし、ノートでテイクにカーソルトラックがなかったことを伝えます。sheet.png→ 時系列順のクロップ、ID が焼き付けられています。これは一目でわかるフィルムです。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> はその場で置き換えます。以前の本文は保持されます)。所有者の行を黙って書き換えることは決してしません。