見出し画像

【5分で完成】 AIを使って、元動画からテロップ付き切り抜き動画を量産する方法 【Antigravity × Gemini】

いつも通り最初に結論から書いてしまうと、YouTubeのURLをAIに渡すだけで、AIが「一番盛り上がったシーン」を自動でピックアップして、日本語テロップ付きの切り抜き動画を作ってくれるようになった。

ということで、同じものを実際に動かせるように、環境構築から実行まで全手順を書く。参考にしてほしい。


そもそもこのツールは何をしてくれるの?

指定した「動画のURL」を読み込ませると、以下の作業を全自動でやってくれるツールだ。

  1. 動画の中から人間が感情的に盛り上がっている「ハイライトシーン」をAIが見つける

  2. そのシーンだけを自動で切り抜く

  3. 読みやすい日本語のテロップ(字幕)をつけて、見栄えのいいショート動画として保存する

要するに、「動画を見返す」「面白い部分を探す」「カットする」「テロップを入れる」という動画編集のめんどくさい工程を、URLを入れて1回エンターキーを押すだけで終わらせてしまう仕組みだ。

▼▼切り抜き動画 (OP動画、透かしロゴ、日本語テロップ追加)

仕組み

処理の流れはシンプルだ。まずは切り抜きたい動画のURLを取得。

URLを貼ると、まずyt-dlpが動画をダウンロードする。次にWhisperが音声を文字起こしして、タイムスタンプ付きのテキストを生成する。それをGeminiに投げると「感情が動いているシーン Top 5」をJSON形式で返してくれる。

そのタイムスタンプをffmpegに渡すと、該当箇所が動画として切り出される。最後にGeminiが日本語テロップを生成して、動画に焼き付けて完成だ。

1時間の動画でも文字起こしが終われば、あとは数分で出てくる。


ツールの作成手順(Windows / MacどちらもOK)


使うツール

  • Antigravity:Googleの開発ツール

  • yt-dlp:動画をダウンロードする専門ツール。ブラウザの動画ダウンロードサイトの強力版だと思えばいい。

  • Whisper:OpenAIが公開している音声認識ライブラリ。PCのローカル環境で動くので、何時間文字起こししてもタダだ。

  • Gemini API: GoogleのAI。今回は「この動画のどこが面白いか」の判定と、「日本語テロップの作成」という頭脳労働を担当している。

  • ffmpeg:プロの動画編集者も使う、動画切り抜き・結合の業界標準ソフト。

  • OpenCV / Pillow:Pythonの画像処理ライブラリ。ffmpegだけだと「バラエティ番組のような見やすいテロップ」を作るのが超面倒くさいので、こいつらを使って動画にハンコのようにテロップを焼き付けている。

かなりの量があるように見えるが、こちらで用意するのはGemini API、Antigravityだけだ。

1. Antigravityをインストール→Googleでログイン

この動画編集をしてくれる作業ツールだ。exeファイルをダウンロード後、起動してインストールまで進めてほしい。

起動後、どのフォルダで作業しますか?と尋ねられるので、適当に新規でフォルダを作ってみよう。

で、右側のAgentのタブ内に以下のプロンプトを貼り付けて実行。そのあとはAIが勝手にやってくれるので面倒な構築作業はいらない。

画像

#目的
-これから、YouTubeの長尺録画からAIを使って「一番面白いシーン」を自動抽出し、テロップ付きのショート動画を生成するPythonパイプラインを動かします。
#タスク
-実行に必要なツールをインストールしたいのですが、私のPC環境(MacかWindowsか)を判定した上で、以下の手順で環境を構築してください。まず、このプロジェクト用のPython仮想環境(venv)を作成し、アクティベートしてください。
-OSのパッケージマネージャー(MacならHomebrew等)を使って、動画処理ソフトの ffmpeg をシステムにインストールしてください。
次に、pipを使って以下のライブラリを仮想環境内にインストールしてください。
--yt-dlp
--openai-whisper
--google-genai
--opencv-python
--Pillow
-インストールが完了したら、各ツールが正常に動くかバージョン確認コマンドでテストしてください。
#制約事項
-もし途中でパスのエラーや権限エラーが出た場合は、私に聞かずに原因を調べて自動で自己解決し、最後までセットアップを完遂させてください。 エラーが起きても「〇〇エラーが出ました、どうしますか?」と質問してこないでください。

これだけで、AIが勝手にあなたのPCをスキャンして、必要なものを全て裏側でインストールしてくれる。

エラーが出ても「エラーが出た直して」と言えば全部解決する。これがバイブコーディングの真髄だ。人間はコマンドを覚える必要すらない。

唯一、自分自身で取得しなければならないのが、「Gemini APIキー」だ。これだけはAIが代行できないので、自分で取りに行く。


2. Gemini APIキーを取得する

Geminiは「どのシーンが面白いか判断してくれるAI」だ。これが切り抜きの心臓部になる。APIキーの取得はそこまで難しくないだろう。

まずGoogle AI Studio(aistudio.google.com)にアクセスする。

画面左下に「Get API key」というボタンがあるのでクリックする。

画像

APIキーを作成ボタンを押す。キーの名前はなんでも良い。プロジェクトも一緒に作成しよう。

画像

発行されたAPIキーを必ずコピーして保存しておく。この画面を閉じると再表示されないので注意が必要だ。

次に、プロジェクトフォルダの中に `.env` というファイルを作り、以下の形式で貼り付ける。

GEMINI_API_KEY=ここにコピーしたAPIキーを貼る

これだけで設定は完了だ。
ちなみに、.envもAIにお願いすればやってくれるが、リスクはあるので注意しよう。もし仮にAPIキーが外部に漏れて悪用されると、Geminiを使った分請求されるハメになるのだ。まぁお支払い方法を設定していなければ請求はされないが。


3. プログラム本体を入手して配置する

ここまでで自分がやる作業は完成した。環境構築は 1. ですでにAIが終わらせてくれている。

最後に必要なのは、実際に動く「プログラム本体」だ。 以下から、今回僕が作成した自動化スクリプトのセットをダウンロードしてほしい。

ダウンロードしたZIPファイルを解凍すると、

main.pyというファイルやいくつかのフォルダが入っているはずだ。 これらをすべて、手順1でAntigravityに作らせた作業フォルダの中に直接ドラッグ&ドロップで放り込んでしまおう。

あとはAIに「このプログラムを使って動画を作って」と発注するだけだ。 右側のチャット欄に、さっきのように以下のプロンプトをそのままコピペして送信してみてほしい。URLの部分は、あなたが切り抜きたいYouTube動画のURLに変更すること。

※解凍したファイルをAIに渡した状態で以下のプロンプトをコピペ。
自分のPCの中に必要なツールを入れたので作業を開始してください。 以降は以下の条件に従って、指定したURLから自動的にハイライト動画を生成してください。

前提条件:このフォルダ内に配置したmain.py などの私のプログラム一式を使って実行すること。先の手順で作ったvenv環境をアクティベートしてから処理すること。途中でパスや権限のエラーが出ても私に質問せず、エラーログを読み込んで自己解決して最後まで完遂すること。

タスク:以下のYouTube動画のリンクを読み込み、ハイライトシーンを切り抜いてください。生成するテロップはYouTuber風のポップなスタイルにしてください。もし長尺の配信アーカイブなどで無音時間が長い場合は、引数(start-timeやmax-durationなど)を各自で判断・活用して高速に処理してください。

URL: https://www.youtube.com/watch?v=xxxxxxx

数分経つと以下のようなメッセージが出てくるだろう。Antigravity内で再生できるので、気に入ったクオリティになるまで修正も楽ちんだ。

画像

カスタマイズ方法

1. 自分専用のOP動画やロゴ(透かし)に変更する

お渡ししたファイルには僕が作ったロゴ画像やOP動画が入っており、作成した切り抜き動画にはそれらが挿入されてしまう。

OPやロゴを変更したい場合:
あなたが用意したオリジナルのOP動画(mp4)やロゴ画像(png)を、Antigravityのフォルダ内にドラッグ&ドロップで放り込んだ後、チャット欄でAIにこう指示すればいい

今後、プログラムを実行したとき、OP動画には新しく追加した (あなたのOP動画ファイル名).mp4 を使い、透かしロゴには (あなたのロゴ画像名).png を使うように、Pythonのコードを書き換えてください。

OP動画やロゴが「そもそも不要」な場合:
元から入っているOP動画とロゴ画像を、フォルダから削除するだけでいい。

このプログラムは非常に優秀で、「あ、OP動画のファイルが見つからないな。じゃあOPもロゴも無しで出力しよう」と自動で空気を読んで、エラーを出さずに本編のみで処理を完結させてくれる設計になっている。

2. テロップのスタイルを変える

2種類のスタイルが選べる。

# バラエティ番組風(黄色文字・黒い縁取り)
python main.py "https://youtu.be/..." --style variety

# YouTuber風(オレンジ文字・極太の白縁)
python main.py "https://youtu.be/..." --style pop

別途自分の好きなスタイルに改造して欲しい。好きな動画のテロップ部分をスクショし、それをAIに投げる。で、こんな感じのデザインに変えてといえば大方良いものを投げてくれるだろう。

3. 長時間動画の狙ったパートだけ切り抜く

2時間ある録画から「30分〜40分のパート」だけを切り抜きたい場合は、こう指定する。これもAIに投げればいい。

python main.py "https://youtu.be/..." --start-time 30 --max-duration 10

`--start-time 30` が「30分から開始」で、`--max-duration 10` が「10分間だけ処理」という意味だ。

文字起こしにかかる時間が1/12になるので、長尺動画の狙ったパートを検証するときにとても重宝する。

4. 自動でフィラー(えー、あの、など)を消す

少しカスタマイズすれば、「えー」「あの、」みたいなフィラーも消すことができる。動画のURLを投げるときに以下のプロンプトを添えよう。

その次から作成する切り抜き動画では勝手にフィラーが消された状態で出てくる。

テロップを生成する clipper/subtitles.py の中のプロンプト(指示文)を書き換えてください。 新しいルールとして、「えー」「あのー」「そのー」などの不要なフィラー(ケバ)はテロップから完全に取り除いて出力するようにGeminiへの指示を追加してください。

いいなと思ったら応援しよう!

コメント

コメントするには、 ログイン または 会員登録 をお願いします。
【5分で完成】 AIを使って、元動画からテロップ付き切り抜き動画を量産する方法 【Antigravity × Gemini】|jiyoung@実務に活かせるAI
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1