open-edit について
open-edit は、HTML ページとして制作した映像をレンダリングするコマンドラインツールです。編集可能な状態で作品を管理したい制作者向けに、文字起こし、カット編集、音声、素材処理、VEED への引き継ぎ機能も備えています。
主な機能
- 01HTML ページを動画にレンダリング
- 02変更箇所のみ再レンダリング
- 03動画フレームと画像一覧の確認
- 04文字起こしとクリップ編集
- 05音声のミックスと結合
- 06VEED プロジェクトへの引き継ぎ
活用シーン
- 01HTML と素材から動画を制作
- 02編集箇所だけを再レンダリング
- 03文字起こしとショットの並べ替え
- 04レンダリング済み動画に音声を追加
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ veedstudio/ open-edit --skill open-editインストール後、Claude Code で/open-editを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
CUT.mdFABRIC.mdTRANSCRIPTION.mdVEED.md詳細
open-edit
HTML ページとして自分で作品を作成し、render でレンダリングします。OpenEdit は、素のシェルにはない機能を提供します。1 回のログインで利用できる VEED のホストサービス、カットや音声用の計測ツール、変更した区間だけを再レンダリングするレンダラーです。以下の openedit は npx @veedstudio/openedit-cli の短縮形です。すべてのコマンドで --help を使ってフラグを確認できます。
セットアップ
最初のコマンドを実行する前に、ワークスペースごとに 1 回実行します。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 と表示された場合は、1 回だけユーザーに伝えてください。ユーザーが許可した後に限り、表示された init --update コマンドを実行します。ユーザーが許可しない場合は、再度尋ねずに続行してください。
作品ごとに 1 つのフォルダー
作品を構成するすべてのものを runs/<key>/ の下にまとめます。ページ、アセット、レンダリング結果、音声が含まれます。コードが編集対象です。このフォルダーがあれば、ユーザーは後から戻って 1 つのシーンを変更したり、別の動画に作品を再利用したりできます。そのため、必要なものをほかの場所に置いてはいけません。
ツール
| 必要なもの | コマンド |
|---|---|
| 単語ごとの正確なタイムスタンプ付き文字起こし | transcribe <video> [...] は $OPEN_EDIT_ROOT/.open-edit-prefs.json に記録されたプロバイダーを実行します。記録がない場合(コマンドは実行を拒否してその旨を表示します)、"No VEED login found" と表示された場合、または実行に失敗した場合は、まず TRANSCRIPTION.md を読んでください |
| テイクの削除、並べ替え、結合 | CUT.md(speech-probe、apply-edl、retime-transcript)を読んでください |
| 縦横比の異なるクリップ全体の結合 | concat-videos(再エンコードして、30 fps の 1 つのキャンバスにします) |
| 動画、ページ、または大量の画像の確認 | 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>)。入力内のローカルファイルは自動的にアップロードされます |
| Web フォントをローカルファイルとして取得 | fonts <Family> [...] --out <dir> |
| ライセンス済みの実写真 | stills search、stills show、stills save |
| 複数の素材から 1 つのサウンドトラックを作成 | mix-audio runs/<key>(音声トラックに合わせて BGM の音量が下がります。仕様は mix-audio --help を参照してください) |
| 納品時のラウドネスでレンダリング結果に音声を付ける | mux-audio --video <render> --audio <source clip or built track> --out <file> |
| ユーザーが変更できる VEED エディター内の作品、または VEED から持ち込んだプロジェクト | VEED.md(veed-project、veed-pull)を読んでください |
Fabric、背景除去、lipsync、veed-project は、VEED の文字起こしログインを再利用します。同じ veed.io アカウントと保存済みトークンを使うため、2 回目のサインインは不要です。エディターへの引き渡しに使うブックマークは、ブラウザーでユーザー自身の 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 には両方が表示されます。30000/1001 などの frameRate を --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 上のもの、ユーザー自身の API キーと料金を使うもの)の場合:クリップの音声から字幕を文字起こしすること、そして大半の生成サービスでは無音のクリップが返されることを同時に伝えてください。
- 動画を使わない場合:静止画、グラフィック、生成画像、音声から作成します。これも一連の作業として扱います。
どれに当たるか不明な場合は、確認してください。
料金
- VEED の文字起こしでは、1 つのワークスペースの VEED 文字起こしクレジットを消費します。複数のワークスペースがあるアカウントでは、CLI は自動で選択しません。ユーザーが選んだものを
--workspaceで指定してください。 - Fabric では、選択したワークスペースの AI Playground クレジットを消費します。Fabric の 3 つの手順については
FABRIC.mdを確認してください。 - fal の呼び出し(
fal run、lipsync、background-removal --falまたは--fast)ごとに、ユーザー自身の fal アカウントに料金が発生します。 最初の有料呼び出しの前に、何を作成するかと料金を一行で伝え、ユーザーの返答を待ってください。背景除去のデフォルトの方法は無料です。 - 納品時に、どのアカウントで何にいくら使ったかを報告してください。
ユーザーへの対応
開始時は一行だけ伝え、その後、成果物のパスと結果について一、二文で説明してください。進捗を段階ごとに報告したり、内部情報(実行キー、コマンド名、生のツール出力)を伝えたりしないでください。結果に関する注意点(タイミング情報のない文字起こしなど)は、平易な言葉で伝えてください。作業を中止しなければならない場合は、画面上で何が問題なのか、どのような選択肢があるのかを平易な言葉で説明してください。