AI編集者開発のリアル(5) サムネイルの手間をゼロに:LLM×画像生成で毎回作るのをやめた話

AI編集者開発のリアル(5) サムネイルの手間をゼロに:LLM×画像生成で毎回作るのをやめた話 — AI 編集者, サムネイル, 自動化 AIテキスト

こんにちは、パレイド思想部です。

前回はLLMによる記事生成の流れを紹介しました。

第5回は「サムネイル」の話です。記事を書くたびに Canva を開いて、タイトルをコピペして、フォントを調整して、書き出してアップロードして——この作業、毎回やっていました。ai-editor の目的は「ブログ運営の全工程を自動化する」なので、当然ここにも手が届くはずです。

既に技術的な紹介はしていますので、ワークフロー効率化の視点を主に解説します。

ビフォー:毎回の Canva 作業

前提として、典型的な手作業での手順は下記の通りでした。

  1. Canva を開いてテンプレートを複製
  2. タイトルテキストを書き換え
  3. Magic 機能で AI で背景画像を生成
  4. PNG で書き出し
  5. WordPress メディアライブラリにアップロード
  6. 記事のアイキャッチに紐付け

一枚あたり 10〜15 分。月 20 本書けば累計 3〜4 時間が消える計算です。しかも「どのテンプレートを使ったか」の一貫性が崩れやすく、古い記事と新しい記事でデザインがバラバラになりがちでした。

アフター:ai-editor のサムネイル自動生成

現在の ai-editor では、記事のフロントマターとタイトルを渡すと、PNG を自動生成して WordPress にアップロードするところまで一気に行います。内部では次の流れが走ります。

LLM でキャッチコピー生成
  ↓
画像バックエンドで背景生成 (Diffusers or ComfyUI or ソリッドカラー)
  ↓
Pillow でテキストオーバーレイ合成
  ↓
WordPress REST API でメディアアップロード+アイキャッチ設定

技術選定:AI 生成と Pillow の役割分担

サムネイル画像を丸ごと AI に生成させる方法もありますが、文字が崩れたり、記事ごとに品質がばらつく問題があります。そこで 背景画像だけ AI(Stable Diffusion)で生成し、タイトル文字や装飾は Pillow で合成する 方式を採用しました。

(2026年3月追記) Nano Banana2 の登場で、文字や構造の崩れないサムネイル生成が現実的となりました。 この記事ではローカルLLMの利用をメリットとして、引き続き実践的な使用方法として紹介しています。

方式の比較

方式メリットデメリット
AI で全部生成1プロンプトで完結文字が崩れる・品質が不安定
Stable Diffusion等 で背景 + Pillow で文字背景はリッチ、文字は確実に読めるVRAM 必要・起動が重い
ComfyUI で背景 + Pillow で文字ワークフロー再現性が高いComfyUI サーバーは別途必要
Pillow のみ(テンプレート)依存ゼロ・高速・安定デザインの多様性は限られる

ai-editor では ComfyUI で背景を生成し、Pillow でタイトル文字を合成する 方式を採用しています。ComfyUI は API 経由でワークフローを実行するため再現性が高く、モデル(realvisXL 等)を固定すればブランドに合った背景を安定して出力できます。Stable Diffusion等のAPI利用でも問題ありません。

ポイントは、文字を AI に描かせると崩れてしまう文字の配置・フォント・装飾は Pillow で確実に制御することです。

テンプレートを YAML で定義する

よく使うデザインのパラメータは YAML ファイルに切り出しています。 フォント、背景色等、以前の手作業でもやっていたルールに沿って設定していきます。

# tools/publish/thumbgen/templates/default.yaml
width: 1200
height: 630
bg_color: [30, 30, 40]
accent_color: [100, 180, 255]
font_path: assets/fonts/NotoSansJP-Bold.ttf
title_size: 64
subtitle_size: 32
logo: assets/logo_white.png
logo_pos: [80, 60]
# templates/tech.yaml  ← 技術記事用
bg_color: [15, 25, 45]
accent_color: [80, 220, 160]
title_size: 56

記事のフロントマターに thumbnail_template: tech と書くだけで切り替わります。これが「自分のブログに合ったデザインをテンプレート化する」実態です。新しいカテゴリが増えたら YAML を一枚追加するだけでよく、コードは触りません。

LLM によるキャッチコピー生成

タイトルをそのまま載せると長すぎる場合があります。そこで LLM にサブタイトル(20 字程度のキャッチコピー)を生成させています。

def generate_subtitle(title: str, llm_client) -> str:
    prompt = (
        f"次のブログ記事タイトルに対して、サムネイル用の短いキャッチコピーを"
        f"20文字以内で1行だけ出力してください。\nタイトル: {title}"
    )
    return llm_client.chat(prompt).strip()

モデルはローカル LLM の軽量モデル(’gemma3:4b’, qwen2.5:7b など)で十分です。コストを節約しながら、毎回サブタイトルの生成に使えます。

WordPress API を組み合わせればサムネイルの一括変換も

上記は1つの記事でのサムネイル処理ですが、当サイトでは WordPress API と組み合わせて、連載シリーズのサムネイルを一括で置換する、等の利用を行っています。 たとえば背景や構図の変更を複数の記事に適用したい場合、これまで1つずつ手作業で行わなければならなかった作業がほぼCLI一発で完了します。 これにより、時間を大幅に短縮しつつ、一定の品質が期待ができるようになりました。

項目ビフォーアフター
作業時間5〜10 分/記事10〜30 秒
デザイン一貫性テンプレート管理が属人的YAML テンプレートで統一
バックエンドCanva(GUI)Pillow + オプションで Diffusers

まとめ

設計の核心は「AI 生成の多様性」より「テンプレートの再現性」を優先した点です。サムネイルはブランドの顔でもあるので、毎回同じクオリティで出力できることの方が、凝った一枚を作るより長期運用では価値があります。Diffusers や ComfyUI は「使いたいときに使う」オプションとして残しておくのがちょうどいいバランスでした。

次回予告: 第6回は「連載シリーズの管理」に踏み込みます。

タイトルとURLをコピーしました