メインコンテンツへ移動
AIチュートリアル

PythonでYouTube動画をAI生成ショート動画に変換

YouTube動画やローカル動画を縦型クリップに変換する、オープンソースのPythonツール「AI Shorts Generator」のインストール方法と使い方を解説します。LLMとWhisperの設定、コマンドラインオプション、ローカルWeb環境の構築、ハイライト生成、アスペクト比、フック、実践的な最適化のヒントを紹介します。

PythonでYouTube動画をAI生成ショート動画に変換

AIショート動画ジェネレーターとは?

AIショート動画ジェネレーターは、長時間のYouTube動画やローカル動画ファイルを、すぐに投稿できる短いクリップへ変換する無料のオープンソースPythonプロジェクトです。ソース動画を自動的に文字起こしし、視聴者を引きつける可能性のある場面を特定し、重複する選択範囲を削除したうえで、縦型または指定したアスペクト比で最適な候補をレンダリングします。

このプロジェクトは、ショート動画SaaS製品に代わるセルフホスト型の選択肢として位置付けられています。クリップ開始前のクレジット表示や透かしは追加されません。さらに、字幕、翻訳、ボイスオーバー、コンテキストに応じた冒頭フック、コマンドラインインターフェース、ローカルWebインターフェース、他のプロジェクトに統合するためのAPIも備えています。

出力例

生成されたクリップを使って、スピーチ、インタビュー、ポッドキャスト、チュートリアルなどの長時間コンテンツを、モバイル向け動画に変換できます。

スピーチから生成された縦型ショート動画インタビューから生成された縦型ショート動画TEDトークから生成された縦型ショート動画

処理パイプラインの仕組み

  1. ソースの取得:プログラムがYouTube動画をダウンロードするか、指定したローカルファイルのパスを読み込みます。
  2. 文字起こし:faster-whisperがタイムスタンプ付きの文字起こしをローカルで作成します。この手順は、対応するすべてのLLMプロバイダーで共通です。
  3. コンテンツ分類:選択したLLMが、ソース動画がポッドキャスト、インタビュー、チュートリアル、Vlog、その他のコンテンツタイプのどれに近いかを判定します。また、素材に合わせてハイライト選定を調整できるよう、テンポも評価します。
  4. ハイライトのランキング:OpenAI、Gemini、またはMuAPIが文字起こしを分析し、フック、感情の高まり、強い意見、新たな発見、対立、引用に適した発言、ストーリーの山場、実用的な価値を探します。スコア0〜100のランキング付きハイライト候補を返します。
  5. 重複の排除:重複する候補をスコアに基づいて統合します。
  6. 上位N件の選択:--nオプションに基づいて、ランキング上位の候補を選択します。
  7. レンダリング:選択した各セグメントを自動的にクロップし、指定したアスペクト比でレンダリングします。無効にしない限り、AIが生成したコンテキスト対応のフックを冒頭に配置します。

要件

  • Python 3.10以降
  • OpenAI、Gemini、またはMuAPIのAPIキー
  • requirements.txtに記載されたPythonパッケージ

Geminiには1日あたりの上限がある無料枠が用意されています。OpenAIは有料、MuAPIはサブスクリプションなしの従量課金制です。プロバイダーの利用規約や料金は変更される可能性があるため、大量のコレクションを処理する前に各サービスを確認してください。

プロジェクトをインストールする

1. リポジトリをクローンする

git clone https://github.com/Colafornia/short-video-generator-AI.git
cd short-video-generator-AI

2. 仮想環境を作成する

Windowsでは、次のコマンドを実行します:

python -m venv venv
venv\Scripts\activate

LinuxまたはmacOSでは、次のコマンドを実行します:

python -m venv venv
source venv/bin/activate

仮想環境を使うと、ジェネレーターのパッケージをコンピューター上の他のPythonプロジェクトから分離できます。

3. 依存関係をインストールする

pip install -r requirements.txt

LLMとWhisperを設定する

プロジェクトディレクトリに.envファイルを作成します。LLM_PROVIDERにopenai、gemini、またはmuapiを設定し、対応するAPIキーを追加してください。

LLM_PROVIDER=openai

OPENAI_API_KEY=your_openai_key_here
OPENAI_MODEL=gpt-4o-mini

GEMINI_API_KEY=your_gemini_key_here
GEMINI_MODEL=gemini-2.5-flash

MUAPI_API_KEY=your_muapi_key_here

LOCAL_WHISPER_MODEL=base
LOCAL_WHISPER_DEVICE=auto

LLM_PROVIDERで選択したプロバイダーの有効なキーだけが必要です。OpenAIとGeminiのモデル項目は任意です。

Whisperモデルを選択する

LOCAL_WHISPER_MODELには、tiny、base、small、medium、またはlarge-v3を指定できます。デフォルト例ではbaseを使用しています。デバイスの選択には、auto、cpu、またはcudaを使用します。

利用可能なデバイスをプログラムに選択させる場合は、LOCAL_WHISPER_DEVICE=autoのままにしてください。対応するCUDA環境がある場合はcudaを、CPU処理を明示的に選択する場合はcpuを使用します。

最初のショート動画を生成する

YouTube URLをmain.pyに渡します:

python main.py "https://www.youtube.com/watch?v=video_id"

デフォルトでは、プログラムが9:16のアスペクト比で3本のクリップをレンダリングし、ソースのダウンロード解像度に720を使用します。レンダリングされたファイルはoutputディレクトリに保存されます。

本数、比率、解像度を指定する

次のコマンドは、3つのハイライトを選択し、縦型動画としてフォーマットし、ソース解像度に1080を指定します:

python main.py "https://www.youtube.com/watch?v=video_id" \
  --n 3 \
  --ratio 9:16 \
  --resolution 1080
  • --n はレンダリングするクリップ数を指定します。デフォルトは 3 です。
  • --ratio ではカスタム比率を指定できます。縦型ショートには 9:16、正方形の出力には 1:1 を使用します。
  • --resolution はソース動画のダウンロード解像度を指定します。ドキュメントでサポートされている値は 360、480、720、1080 です。

ローカル動画を処理する

YouTube URLの代わりにローカルファイルのパスを指定できます。次の例では、720解像度で縦型クリップを4本作成し、Whisperに音声を中国語として処理させます。

python main.py "/Users/Admin/Folder/video.mp4" \
  --n 4 \
  --ratio 9:16 \
  --resolution 720 \
  --language zh

デフォルトの言語設定は auto です。自動検出が適切でない場合や、動画で話されている言語がすでに分かっている場合は、en などのWhisper言語コードを --language に指定します。

自動生成フックを無効にする

AI生成フックはデフォルトで有効です。冒頭に新しいフックを挿入せずにハイライトをレンダリングするには、--no-hook を追加します。

python main.py "https://www.youtube.com/watch?v=video_id" --no-hook

選択したセグメントにすでに印象的な冒頭がある場合や、ショートをソースとまったく同じ位置から開始したい場合に便利です。

ローカルWebインターフェースを使用する

Web版では、複数の動画をキューに追加し、レンダリングオプションを調整できます。LLMプロバイダーとAPI認証情報は引き続き .env から読み込まれます。インターフェースが扱うのは動画入力とレンダリングオプションのみです。

1. バックエンドを起動する

python3 server.py

2. フロントエンドを配信する

プロジェクトディレクトリで別のターミナルを開き、次を実行します。

cd web
python3 -m http.server 8000

3. インターフェースを開く

ブラウザーでhttp://localhost:8000/shorts-generator-ui.htmlにアクセスします。

高度な使用方法のヒント

用途に合わせてアスペクト比を選ぶ

標準的な縦型ショート動画には 9:16 を使用します。正方形の出力が必要な場合は 1:1 を選択し、異なるレイアウトにはジェネレーターがサポートする別の比率を指定します。

テスト中はクリップ数を制限する

初期設定時は --n 1 を指定します。これにより、API認証情報、文字起こしの動作、言語設定、フック、出力サイズを確認する間にレンダリングされるクリップ数を減らせます。

python main.py "https://www.youtube.com/watch?v=video_id" --n 1 --resolution 360

必要に応じて言語を固定する

言語の自動検出は便利ですが、ソース言語が分かっている場合は --language を明示的に設定すると役立ちます。このオプションはWhisperによる文字起こしに適用されます。

ローカル文字起こし設定を調整する

ハイライト分析に外部LLMプロバイダーを使用していても、文字起こしはローカルで実行されます。使用するマシンのリソースに応じて、.env でWhisperモデルとデバイスを選択してください。READMEにはこれらの設定が記載されていますが、すべての用途に適したモデルを1つに限定していません。

プロバイダー設定とインターフェースの選択を分ける

CLIからWebインターフェースに切り替えても、設定済みのLLMプロバイダーは変わりません。OpenAI、Gemini、MuAPIの間で切り替える場合は、.env の LLM_PROVIDER と対応するAPIキーを更新してください。

公開前に生成クリップを確認する

ハイライトシステムは、文字起こしの分析とバイラリティフレームワークを使用して候補を自動選択します。投稿する前に、output 内のファイルを確認し、クロップ、文字起こし、コンテキスト、オプションのフックが意図した用途に適していることを確かめてください。

まとめ

AI Shorts Generatorは、ローカルWhisper文字起こし、LLMベースのハイライト検出、重複排除、ランキング、自動クロップを1つのオープンソースワークフローに統合します。依存関係をインストールし、.env でプロバイダーを設定すれば、コマンドラインからYouTube URLまたはローカルファイルを処理できます。ローカルWebインターフェースを使えば、動画をキューに追加し、レンダリングオプションを視覚的に選択できます。

このプロジェクトはMITライセンスで提供されています。問題の報告、変更のコントリビュート、リポジトリのフォークはGitHubから行えます。