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

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

オープンソースのPythonツール「AI Shorts Generator」のインストール方法と使い方を学びましょう。YouTube動画やローカル動画を、文字起こし、AIによる見どころの評価、自動クロップ、字幕、任意のフック付きの縦型クリップに変換できます。

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

AI Shorts Generatorとは?

AI Shorts Generatorは、OpusClipやVidyo.aiなどの短編動画SaaS製品に代わる、無料でオープンソースのツールです。YouTubeのURLまたはローカル動画ファイルを受け取り、有望な場面を見つけて、透かしやクリップ生成前のクレジット消費なしで、そのまま投稿できる短編動画としてレンダリングします。

このプロジェクトは、ローカル文字起こしとLLMプロバイダーを組み合わせています。faster-whisperがタイムスタンプ付きの文字起こしを作成し、OpenAI、Gemini、またはMuAPIがその内容を分析して、候補となるハイライトを特定・順位付けします。

処理済み縦型ショートの例

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

  1. ダウンロードまたは読み込み: YouTube動画をダウンロードするか、ローカル動画のパスを読み込みます。
  2. 文字起こし: faster-whisperがローカルでタイムスタンプ付きの文字起こしを生成します。
  3. 分類: 選択したLLMが、インタビュー、ポッドキャスト、チュートリアル、Vlogなど、コンテンツの種類とテンポを判定します。
  4. ハイライトの順位付け: LLMが、強いフック、感情のピーク、暴露、対立、引用しやすい発言、物語の山場、実用的な価値などのシグナルを使って場面を評価します。
  5. 重複の削除: 重複する候補をスコアに基づいて重複排除します。
  6. クリップの選択: --nオプションに従って、順位の高い候補を選択します。
  7. レンダリング: 各候補を指定したアスペクト比に自動的にクロップします。無効にしない限り、文脈に応じたAIフックが冒頭に追加されます。

主な機能

  • YouTubeとローカル動画に対応: 動画URL、またはコンピューターに保存済みのファイルを処理できます。
  • ハイライトの自動選択: 短編コンテンツとして有望な場面を見つけます。
  • 縦型レンダリング: 短編動画プラットフォームに適した9:16動画を生成します。
  • 複数出力: --nを使って、1つのソースから複数のハイライトをレンダリングします。
  • AI生成フック: 文脈に応じた冒頭フックを追加できます。--no-hookで無効にできます。
  • 字幕、翻訳、ボイスオーバー: これらのコンテンツ処理機能を1つのワークフローに統合しています。
  • ローカルWebインターフェース: 複数の動画をキューに追加し、レンダリングオプションを画面上で設定できます。
  • APIを利用可能: APIを通じて、他のプロジェクトにジェネレーターを組み込めます。

必要条件

開始する前に、環境に以下がそろっていることを確認してください。

  • Python 3.10以降
  • OpenAI、Gemini、またはMuAPIのAPIキー
  • リポジトリのクローンに使用するGit
  • requirements.txtに記載されたPythonパッケージ

Geminiには1日あたりの上限付き無料枠があります。OpenAIは有料で、MuAPIはサブスクリプション不要の従量課金制有料アクセスを提供しています。キーはGoogle AI Studio、OpenAI Platform、またはMuAPIから取得してください。

インストールとセットアップ

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

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

2. 仮想環境を作成する

プロジェクトのパッケージが他のインストール環境と競合しないよう、分離されたPython環境を作成します。

python -m venv venv

Windowsでは、次のコマンドで有効化します。

venv\Scripts\activate

LinuxまたはmacOSでは、次のコマンドで有効化します。

source venv/bin/activate

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

pip install -r requirements.txt

4. 環境ファイルを設定する

プロジェクトディレクトリにある.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で選択したプロバイダーの有効なAPIキーだけが必要です。OpenAIとGeminiのモデル設定は任意です。

Whisper設定を選択する

LOCAL_WHISPER_MODELには、tiny、base、small、medium、またはlarge-v3を指定できます。READMEでは初期設定としてbaseを使用しています。

LOCAL_WHISPER_DEVICEには、auto、cpu、またはcudaを指定できます。CPUまたはCUDA処理を明示的に強制する必要がない限り、autoのままにしてください。

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

YouTubeのURLをmain.pyに渡します。

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

処理が完了すると、レンダリングされたクリップはoutputディレクトリに保存されます。

AI生成ショート動画の結果

出力を制御する

次の例では、縦型クリップを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 です。デフォルトは 720 です。
  • --language: en などのWhisper言語コードを強制指定します。デフォルトでは自動検出が使用されます。
  • --no-hook: AIが生成するフックを各クリップの冒頭に追加しないようにします。

ローカル動画を処理する

YouTube URLの代わりにローカルファイルのパスを指定できます。この例では、720解像度の縦型クリップを4つ生成し、中国語の文字起こしを強制します。

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

お使いのOSに適した絶対パスまたは相対パスを使用してください。フォルダー名やファイル名にスペースが含まれる場合は、パスを引用符で囲むと便利です。

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

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

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

python3 server.py

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

別のターミナルを開き、Webディレクトリに移動して静的HTTPサーバーを起動します。

cd web
python3 -m http.server 8000

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

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

高度なヒント

目的に合わせてアスペクト比を設定する

一般的な縦型ショート動画には --ratio 9:16 を使用します。正方形のクリップが必要な場合は --ratio 1:1 を使用してください。このプロジェクトでは、その他の比率も受け付けます。

検出が不確かな場合は言語を強制指定する

デフォルトでは言語が自動検出されます。話されている言語が分かっている場合は、--language にWhisper言語コードを指定します。たとえば --language en のように指定します。

レンダリングする候補数を選択する

デフォルトの --n 3 では、選択されたハイライトが3つ生成されます。長い元動画からより多くの候補を作成したい場合は増やし、最も有力な結果だけが必要な場合は減らしてください。

元の冒頭で十分な場合はフックを無効にする

生成されるフックは任意です。各クリップを選択した元動画のセグメントから直接開始したい場合は、--no-hook を追加します。

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

文字起こしのリソースを調整する

利用できるWhisperモデルは tiny から large-v3 まであります。使用するマシンに適したモデルを選択し、互換性のあるCUDA環境が利用できる場合にのみ LOCAL_WHISPER_DEVICE=cuda を使用してください。それ以外の場合は、auto によってアプリケーションがデバイスを選択します。

認証情報をコマンドの外で管理する

プロバイダーのキーはターミナルコマンドやソースコードに直接記述せず、.env に保存してください。リポジトリをフォークまたはコントリビュートする際は、値が入力された環境ファイルをコミットしないようにしてください。

まとめ

AI Shorts Generatorは、長いYouTube動画やローカル動画を短編クリップに変換するための、ローカルで実行できるオープンソースのワークフローを提供します。Python、LLMプロバイダー、ローカルWhisperの設定が完了すれば、コマンドラインから自動選択された複数のクリップを生成できます。また、ブラウザーベースのインターフェースで入力とレンダリングオプションを管理することもできます。

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