YouTubeサムネイル自動生成ツールを作った

135 閲覧

どうも、コディです。

YouTubeに動画を上げるとき、毎回サムネイルを作るのが地味に面倒だったので、自動生成ツールを作りました。

何ができるか

動画ファイルまたはYouTube URLを入力すると、サムネイルに適したフレームを自動で選んでくれます。あとはスタイルプリセットを適用するだけで、いい感じのサムネイルが完成します。

Web UIも用意したので、ドラッグ&ドロップで動画をアップロードして、全フレーム × 全スタイルの組み合わせを一括プレビューできます。

スタイルプレビュー画面

フレーム選択・スコアリング画面

技術スタック

  • Python 3.11+
  • ffmpeg — 動画からのフレーム抽出
  • EasyOCR — テロップの多いフレームを自動除外
  • Pydantic — データモデル
  • Click — CLI

フレーム選択の仕組み

単にランダムにフレームを取るのではなく、以下のプロセスで最適なフレームを選びます。

  1. シーン検出 — 動画のシーン切り替わりを検出してサンプリングポイントを決定
  2. スコアリング — 各フレームをサムネイルとしての適性で評価
  3. テキスト検出フィルタ — EasyOCRでテロップが多いフレームを除外(テロップが被るとサムネとして微妙なので)

結果はキャッシュされるので、スタイルを変えて再生成するときは高速です。

スタイルプリセット

4つのスタイルを組み込みで用意しています。

スタイル特徴
type7_editorialフィルムトーン・暖色控えめ・洗練
type7_film褪せた暖色・ビネット・アナログ感
type7_morning朝霧ブルーグレー・柔らかい光・クール
type7_gallery超低彩度・高コントラスト・アート

実際に生成したサムネイルがこちらです。

type7_film スタイルで生成したサムネイル

type7_vivid_band スタイルで生成したサムネイル

ちなみに「type7」というスタイル名の由来にピンときた方はいるでしょうか。ポルシェ好きな読者なら気づくかも。笑

TOMLファイルを書けば独自のスタイルも追加できます。画像エフェクト(暗くする、ビネット、ブラーなど)、テキストの配置・フォント・色をすべてカスタマイズ可能です。

なぜ作ったか

既存のサムネイル作成ツールはテンプレートに手動で画像を当てはめるものが多く、「動画から自動でいい感じのフレームを選んでほしい」という部分が解決されていませんでした。特にテロップが入っているフレームを避けたいというニーズは、自分で使っていて強く感じていたポイントです。

もしニーズがあれば、これをサービスとして一般公開することも検討しようかなと思いますので、気になる方はよかったらハート押していってください。

今日も読んでくれてありがとう。