Reel編集 — レベル1(クリーン&ミニマル)
01-crudo/に録画された動画を、無音を除去し、カラオケ字幕、控えめな動き、フェードアウトを施した、確認用のクリーンな9:16縦型Reelに変換します。
基本ルール:最初は必ずDRAFT;最終版は、ユーザーが承認してから初めて作成します。有料サービスは、事前に確認なしに決して使用しないでください。
全処理はローカルかつ無料で実行できます(Python + FFmpeg + Whisper)。スクリプトは既にscripts/に含まれています。書き換えずにそのまま使用してください。
ステップ0 — ツールの準備(初回のみ)
まず python scripts/verificar_entorno.py を実行します:Python、FFmpeg(キットで使用するフィルタ込み)、Whisperの有無を確認し、不足しているものを表示します。すべてOKならステップ1へ進みます。そうでなければ、不足しているものを以下のコマンドで解決します。サイレントに存在確認を行い、不足しているものがあれば、親切なメッセージ(「ツールを準備しています。初回は数分かかります」)を添えてインストールします:
python --version
ffmpeg -version
ffprobe -version
python -c "import whisper"
不足している場合:
- Python:ユーザーにpython.orgからインストールしてもらい(「Add Python to PATH」にチェック)、ターミナルを再起動してもらいます。
- FFmpeg(Windows):
winget install Gyan.FFmpeg— その後ターミナルを再起動。Macの場合:brew install ffmpeg。 - Whisper:
pip install openai-whisper(初回はsmallモデルをダウンロード、無料で自分のコンピュータで動作します)。
インストールできないものがあれば、ブロックせずに、何が不足しているかを説明し、最も簡単な代替案を提示してください。
ステップ1 — 素材の確認
01-crudo/(および02-assets/内のリソース)にあるファイルをリスト表示します。- 動画が1つだけならそれを使用します。複数ある場合はどれを使うか尋ねます。フォルダが空の場合は、そこに動画をコピーするよう依頼します。
- 長さと音声の有無を確認します:
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "01-crudo/NOMBRE.mp4" - 必要最小限の1つの設定質問のみ行います(例:手動でカットしたい「えー」「あー」などのフィラーはありますか?)。そうでなければ、デフォルト値で進めます。
ステップ2 — DRAFTの生成
完全なパイプライン(文字起こし → 無音除去 → 縦型出力)を実行します:
python scripts/pipeline.py "01-crudo/NOMBRE.mp4"
各ステップの内容(個別に実行したり調整する場合に備えて):
| ステップ | スクリプト | 結果 |
|---|---|---|
Whisperによる文字起こし(small、単語レベル) | scripts/transcribir.py | 02-assets/subtitulos/NOMBRE.srt と .words.json |
| 無音除去(> 0.5秒、-35 dB) | scripts/limpiar_silencios.py | 02-assets/sin_silencios/NOMBRE.mp4 と .timeline.json |
| 9:16出力(字幕、ズーム、フェード付き) | scripts/exportar_reel.py | 03-output/NOMBRE.mp4 |
limpiar_silencios.py で利用可能な調整(ユーザーが要求した場合や結果に必要な場合のみ使用):
--silence-duration 0.35→ より短いポーズをカット(より速いテンポ)。--cut-range 開始 終了(繰り返し可)→ 元の動画の秒数で正確な範囲をカット。「えー」「あのー」「つまり」などのフィラーや撮り直しを除去する方法です:02-assets/subtitulos/NOMBRE.words.jsonを読み、その時間を特定し、範囲として指定します。カットが複数ある場合は、適用前に一覧をユーザーに表示します。--speed-range 開始 終了 速度(繰り返し可)→ 特定の範囲(元の動画の秒数)の速度を変更します。例:--speed 1.32 --speed-range 13 21.8 1.5。説明部分など遅い箇所をさらに速くし、重要な部分は通常速度に戻す場合に使用します。ユーザーが最大長(例:55秒)を指定した場合、--speedを調整してそれを満たし、ffprobeで測定します。--speed 1.1→ ピッチを維持しながらわずかに速度を上げます(0.5~2.0の間)。ユーザーが要求した場合のみ使用します。
調整を加えてクリーニングステップのみを再実行し、その後エクスポートする場合:
python scripts/limpiar_silencios.py "01-crudo/NOMBRE.mp4" --cut-range 12.4 13.1
python scripts/exportar_reel.py "02-assets/sin_silencios/NOMBRE.mp4" "02-assets/subtitulos/NOMBRE.srt" --output "03-output/NOMBRE_draft.mp4"
ドラフトは接尾辞 _draft を付けて保存し(さらに反復する場合は _draft2、_draft3…)、以前のバージョンを上書きしないようにします。pipeline.py を使用した場合は、出力を NOMBRE_draft.mp4 にリネームします。
スタイル標準(スクリプトに既に組み込み済み — 要求なしに変更しないでください)
- フォーマット:縦型 9:16、1080×1920、30 fps。
- カラオケ字幕:白暖色のテキスト、アクティブワードはソフトゴールド、半透明で控えめなネイビーブルーの背景、最大2行、セーフゾーン内(下端やアプリのボタンから離す)。
- 動き:低強度のズームとパン、最大2.5%。エフェクトを積み重ねたり、すでに充実した画像にさらにグラフィックを追加したりしない。
- 終了:フェードアウト(映像と音声)。
- 音声:元のクリーンな音声、-14 LUFSにノーマライズ、追加の音楽や装飾エフェクトはなし(開始音はオプションで各ユーザー独自のもの、下記参照)。
- テンポ:要点を凝縮。ユーザーがキーワードを強調したい場合は、ゴールドカラーを使用し、過剰にしない。
独自の開始音(オプション)
デフォルトでは、Reelに追加の音声は含まれません。ユーザーが最初に音声マークを付けたい場合は、そのユーザー自身のものでなければなりません:既にファイル(.wav または .mp3)を持っているか尋ねるか、独自のものを作成するのを手伝います(例:FFmpegやPythonで合成する、またはユーザーが使用する権利を持つリソースを使用)。その後、エクスポート時に音声にミックスされます:
python scripts/exportar_reel.py "02-assets/sin_silencios/NOMBRE.mp4" "02-assets/subtitulos/NOMBRE.srt" --sonido "ruta/a/mi_sonido.wav" --output "03-output/NOMBRE_draft.mp4"
- 音声を覆い隠してしまう場合は、
scripts/exportar_reel.pyのSOUND_VOLUME(デフォルト0.55)を下げます。 - 事前に確認し、使用許可を得ずに、サードパーティの音声や有料の音声をダウンロードしたり使用したりしないでください。
ステップ3 — ドラフトの最終確認
公開準備完了と言う前に:
03-output/にファイルが存在することを確認し、ffprobeで長さを測定します。- 2~3フレームを抽出し、字幕が表示されセーフゾーンからはみ出していないことを確認します:
確認後、ffmpeg -y -ss 5 -i "03-output/NOMBRE_draft.mp4" -frames:v 1 "03-output/_chequeo.png"_chequeo.pngを削除します。 - 元の長さと最終的な長さを比較します。
何か問題が発生した場合(Whisperが文字起こししない、FFmpegがエラーを出すなど)、問題を簡単な言葉で説明し、修正して再試行します。字幕の同期がずれていたり、途切れたりしているドラフトは提出しないでください。
ステップ4 — 提示と承認待ち
ユーザーが視聴できるようにドラフトを開きます:
- Windows:
start "" "03-output/NOMBRE_draft.mp4" - Mac:
open "03-output/NOMBRE_draft.mp4"
数行で要約します:
- ファイルのパスと長さ(元 → 最終)。
- カットしたもの(無音、および該当する場合はフィラーや手動トリミング)。
- 適用したもの(字幕、ズーム、フェード)。
最後に質問で締めくくります:「承認しますか、それとも調整したい点はありますか?」(音声、字幕、テンポ、ズーム、カット)。
明示的な承認を得るまで、最終版は生成しないでください。
ステップ5 — 反復と最終版の納品
- 変更を求められた場合:適用し、新しいドラフト(
_draft2)を生成し、ステップ3に戻ります。 - 承認された場合:同じエクスポートコマンドを使用して最終版を出力し、
--output "03-output/NOMBRE_final.mp4"とします。 - 最終ファイルのパスを伝え、Reels / TikTok / Shortsに公開するよう提案します。
ルール
- 有料サービス(API、クラウドエディタ、音楽ライブラリ、AI音声など)を使用する前に、必ず尋ねること。 標準フローには一切不要です。
- ローカルのWhisper で文字起こしします。動画を外部サービスにアップロードしないでください。
01-crudo/のファイルを削除または上書きしないこと。元のファイルは常に保持します。- 結果は
03-output/に、中間ファイルは02-assets/に保存します。 - 簡単な言葉で話すこと:相手は編集やプログラミングの知識がないかもしれません。
- ユーザーがレベル1の範囲外(複雑なアニメーション、モーショングラフィックス、複数カメラ、カラーグレーディングなど)を要求した場合は、正直に伝えます:このフローはクリーニング、字幕、控えめな動きをカバーします。別のステップとして行うことを提案します。