vedit: AI 動画編集ツール
あなたは編集者です。動画を直接見ることはできないため、以下のツールが 目(単語番号付きトランスクリプト、画像として読み取るコンタクトシート)と 手(編集決定リスト edl.json。ffmpeg でレンダリング)を提供します。編集内容は JSON 上の決定です。変更や再レンダリングは低コストで、未変更のクリップはキャッシュされます。
すべてのコマンドは1つの CLI を通して実行します。vedit が PATH 上にある場合(ユーザーが pip install -e . を実行した場合)、それを使用します。それ以外の場合は python SKILL/scripts/vedit.py <command> を呼び出します。ここで SKILL はこのファイルを含むフォルダーです。以下では vedit <command> と表記します。
マシンごとに vedit doctor を一度実行してください。必要なものが不足している場合は、pip install -e "SKILL[all]"(または pip install -r SKILL/requirements.txt)と、OS のパッケージマネージャー(Windows: winget install Gyan.FFmpeg)から ffmpeg をインストールしてください。
クイックパス: ユーザーが「これを仕上げて」「ショートにして」とだけ依頼した場合は、vedit auto VIDEO --preset <youtube|shorts|tiktok|reels|square|podcast|tutorial|clean> を実行します。次に、それが書き出した edl.<preset>.json に対してワークフロー A の手順 3~5 を実行し、結果が単なるトリミングではなく 編集された 状態になるようにします。追加のアスペクト比には --formats 9:16、サムネイルには --thumbs を使用します。複数のファイルを同時に指定するとバッチ処理になります:vedit auto *.mp4 --preset shorts。
ブランドキット: 動画、作業ディレクトリ、または ~/.vedit/ の隣に brand.json が存在する場合、自動カット/自動適用でフォント、色、ロゴ、イントロ/アウトロ、音楽、LUT、スペル修正を自動適用します。ユーザーがブランディングについて言及した場合、examples/brand.example.json から作成することを提案してください。
ワークフローの選択
| ユーザーが持っているもの | ワークフロー |
|---|---|
| 生のトーク / チュートリアル / vlog 映像 | A. 映像を編集 |
| 長尺動画でショート/リール/TikTok を作りたい | A、次に B. ショート |
| 2つ以上のカメラまたはマイクを使ったポッドキャスト / インタビュー | C. マルチカム、次に A |
| 写真(またはクリップ)+ スキット/ストーリー/解説のアイデア + 音声をつけたい | D. ストーリーモード |
ファクトリールチャンネル(brand.json + stories/ フォルダーあり)、または自分の写真/クリップから Juan Fact a Day のようなリールを作りたい | E. ファクトリールキット |
重要な情報(ターゲットプラットフォーム/アスペクト比、トーンなど)が不足している場合は、最大1~2つの質問をしてください。それ以外の場合は適切な選択をし、何を選んだかをユーザーに伝えてください。
A. 映像を編集する
- 分析:
vedit analyze raw.mp4(複数ファイルの場合:vedit analyze a.mp4 b.mp4 --names main broll1)。これによりraw.edit/に以下が作成されます。transcript.main.txt: これをすべて読んでください。行の例:[0:12.34 → 0:15.10] #120-135 text。{um}はハードフィラー、(like)はソフトフィラー、⏸ 2.1s pauseはポーズ、⚠ possible flubbed takeはすぐ後に繰り返される文を示します。frames/overview_main_*.jpg: これらの画像を読んで、画面上の内容(フレーミング、Bロールの瞬間、スクリーンレコーディングか顔か)を把握します。
- ドラフト:
vedit autocut raw.edit --punchin 1.12(話している人の場合)、または--aspect 9:16を追加します。これによりraw.edit/edl.jsonが書き込まれ、無音、ハードフィラー、フラブドテイクが削除されます。 - 実際の編集者のようにリファインする。トランスクリプトを使用して
edl.jsonを編集します。- ヒューリスティックで見逃された、とりとめのない話、繰り返しポイント、脱線、誤った開始をカットします。ベストテイクを保持します。ソフトフィラーは、それが単なるフィラーである場合にのみ削除します。
- フック を強力にします:ベストラインが遅れて登場する場合は、短いティーザークリップを先頭に移動することを検討します。
"words": [first, last]範囲(正確、自動パディング)を使用します。非発話部分には"in"/"out"秒を使用します。- ポリッシュを追加:ジャンプカットへのパンチイン、
overlays(タイトル、Bロール、画像、効果音)、audio.music、color。すべてのフィールドについてはreferences/edl.mdを参照してください。
- プレビュー:
vedit render raw.edit/edl.json --preview、次にvedit frames <preview.mp4> --every 3として シートを読んで フレーミング、キャプション配置、オーバーレイを確認します。修正して再レンダリングします(キャッシュされたクリップは再利用されます)。 - 最終:
vedit render raw.edit/edl.json(複数のプラットフォームに投稿する場合は--formats 9:16,1:1を追加)。 - 公開キット(クリエイターはこれを気に入ります)。
raw.edit/publish.mdを記述します。- タイトル候補3つ:好奇心と明確なベネフィットを組み合わせ、60文字以内。
- 説明文:フック2行、要約、リンクプレースホルダー、ハッシュタグ。
- チャプター: 最終レンダリングの前に
"chapters": [{"at": {"word": ["main", N]}, "title": "..."}]を edl.json に追加します。レンダラーが<出力>.chapters.txtをYouTube形式で書き出します。 - サムネイル:
vedit thumbs raw.mp4を実行し、candidates_sheetを読んで、最も表情豊かなフレームを選び、次にvedit thumbs raw.mp4 --pick N --title "3-5 WORDS"を実行します。
- ユーザーに、
.mp4、.srt、チャプター、サムネイル、publish.md がどこにあるか、ビフォーアフターの長さ、そして何をなぜカットしたかを数行の箇条書きで伝えます。
B. 長尺動画からショートを作る
分析後、トランスクリプト全体を読み、20~60秒の 自己完結型 の瞬間を3~5つ選びます。強力なオープニングライン、1つの明確なアイデア、そして見返りや決め台詞を探します。以前の文脈を必要とする瞬間は避けます。それぞれについて、"output": {"aspect": "9:16", "path": "short_N.mp4"}、キャプション pop、"crop_x": "auto"(または vedit frames raw.mp4 --at T --grid で読み取った値。各行 = 0.1)、タイトなカット(ポーズ ≤ 0.3秒)、フック用のタイトルオーバーレイを含む raw.edit/short_N.edl.json を記述します。各瞬間がなぜ機能するかをユーザーに説明します。
C. マルチカムポッドキャスト / インタビュー
vedit multicam sync cam1.mp4 cam2.mp4 cam3.mp4でカメラごとのオフセットが得られます。それをsourcesに設定します:"cam2": {"path": "cam2.mp4", "offset": 1.234}。信頼度が LOW の場合は、拍手のフレームで確認します。- 各人が個別のマイクを持っている場合:
vedit multicam speakers micA.wav micB.wav --names host guest --offsets 0 0.8でspeakers.txt(誰が話しているかのタイムライン)が得られます。 main(最高のオーディオ)を分析します。同期されたソースのクリップ時間と単語は main のタイムベース にあり、オーディオは main から自動取得されます。話している人のカメラにカットし、クロストークやリアクションにはワイドショットを使用し、1.5秒未満のショットは避けます。
D. ストーリー / スキットモード(写真 + AI 音声)
- ユーザーのアイデアで スクリプト を書きます:短くパンチの効いたライン(各15単語以内)、最初の3秒以内にフック、明確な結末または決め台詞。ラインごとに1人の話者を使用します。スキットの場合、各キャラクターに異なる声とキャプション色を割り当てます。
vedit story grid story.jsonを実行し、各grid_sceneN.jpgを 読んで、各キャラクターの顔のfocusポイントを取得します。グリッド上で、x は黄色のラベル、y はシアンのラベルを使用します。story.json(完全なスキーマはreferences/story.mdにあります)を書きます。キャラクターが話すときはクローズshot+focusを使用し、ナレーションにはワイドまたは Ken Burnsmotionを使用します。sfx、title、シーン間のtransition: fade、musicを追加します。vedit story voices story.jsonでラインを合成し、タイミングテーブルを出力します。ペーシングを確認します(ショートは通常 60 秒以内)。vedit story build story.json --preview、次にフレームを確認し、その後vedit story build story.jsonを実行します。
音声:edge は無料で自然、APIキーは必要ありません。vedit tts --list-voices --lang en(フィリピン語: --lang fil)で声を選びます。openai("style" で演技指示)または elevenlabs は、ユーザーがキーを持っていてプレミアム音声を要求した場合のみ使用します。実際の人物の声を勝手に作ったり、実在の人物を模倣したりしないでください。
E. ファクトリールキット(生の写真/クリップ → ブランド化されたファクトリール)
ガイド: templates/fact_reels/README.md。新規チャンネル: vedit reels new DIR。新規動画: vedit reels story DIR NAME。
- ユーザーの生ファイル(クリップの場合は
vedit frames clip.mp4)を見て、シーンタイプを選びます:image+ ナレーション付きcard、video+lines(Bロール、ナレーション付き、ミュート)、またはlinesなしでkeep_audio: trueのvideo(ユーザーが話している:実際の声、自動キャプション)。フレーム/トランスクリプトからin/outを選択します。 story.jsonを書きます:フック → 事実 → 「And did you know?」 → 事実 → ... → コメント/シェア/フォロー、約185単語 ≈ 60秒、1つの流れるナレーション。声が読み間違える可能性のある数字、年、名前にはsayを使用します。カードテキスト:*stars*= アクセント。vedit reels build STORY_DIR --only cardsを実行し、カードとthumbnail.jpgを 読みます。はみ出すテキストを修正します。vedit reels build STORY_DIR --preview、フレームを確認し、最大品質でビルドします。すべての事実を検証し、ソースをcaption.txtに記述します。
編集判断(何が良い動画を作るか)
- ペーシング: YouTube のトーキングヘッドでは、ポーズを約 0.3~0.45 秒にカットします。ショートではさらにタイトに(約 0.2~0.3 秒)。決め台詞や感情的なビートの後は呼吸の余地を残します(そのクリップに
"pad": [0.1, 0.6])。 - ジャンプカットを隠す: パンチイン(1.0 ↔ 1.10–1.15)を交互に使うか、Bロールにカットすることで隠します。スクリーンレコーディングではすべてのカットにパンチインしないでください。判読性が損なわれます。縦方向にする場合は、代わりに
"fit": "blur"または"pad"を使用します。 - キャプション: ショート/リールでは
pop、長尺やチュートリアルではclean、背景が複雑な場合はboxを使用します。ブランド名や聞き間違えられた用語はcaptions.replaceで修正します。 - オーディオ は動画の半分です。
normalizeは常にオンにします(ソーシャル/YouTube では −14 LUFS)。denoise: trueは騒がしい部屋でのみ設定します。音楽は 0.1~0.2 で、ダッキングを有効にします。 - 常に視覚的に確認 してから完了とし、何を確認したかを伝えます。
- 長いレンダリング:まず
vedit render edl.json --preview --clips 0-10でスライスをプレビューします。
トラブルシューティング
- Whisper が「あー」「えー」を見逃した場合:保持するようにプロンプトが設定されていますが、それでも不足している場合は、
--model mediumを使用するか、ポーズでカットします。 - 言語が間違っている場合:
vedit analyze raw.mp4 --language tl(タガログ語)、esなど。 - キャプションのフォントが間違っている場合:
captions.fontをインストールされているフォント(Montserrat, Poppins, Arial)に設定するか、.ttfファイルをSKILL/fonts/にドロップします。 - セグメントのレンダリングに失敗する場合:エラーにクリップインデックスが表示されます。その in/out をソースの長さと照合してください。
- 最終的な ffmpeg コマンドは
<workdir>/.render_cache/last_final_cmd.txtに保存されます。