Stable Diffusionで大量の画像を効率的に生成したいけれど、毎回手動で設定を変更するのは大変ですよね。そんな悩みを解決するのが、今回紹介するStable Diffusion自動化ツールです。このツールを使えば、設定ファイルに書いた通りに自動的に複数の画像を生成し、プログレスバーでリアルタイムに進捗を確認できます。
デモンストレーション
CLI実行の様子
ターミナルでの実際の実行画面。カラフルなプログレスバーとリアルタイム進捗表示が確認できます。
プロジェクトリポジトリ
完全なソースコード、ドキュメント、設定例、コントリビューションガイドラインが含まれています。
事前準備:環境のセットアップ
Stable Diffusion WebUIの起動
まず最初に、Stable Diffusion WebUIをAPI対応モードで起動する必要があります。通常の起動コマンドに以下のオプションを追加してください。
Windows環境の場合:
.\webui.bat --listen --api
Linux・Mac環境の場合:
./webui.sh --listen --api
ここで重要なのは、--listen
と--api
の両方のオプションを指定することです。--listen
オプションは外部のマシンからの接続を許可し、--api
オプションはREST APIエンドポイントを有効にします。これらがないと、自動化ツールからWebUIにアクセスできません。
プロジェクトのセットアップ
プロジェクトをダウンロードまたはクローンした後、以下のコマンドで依存関係をインストールします。
cd stable-diffusion-api-automate
npm install
次に、環境設定ファイルを作成します。
cp .env.example .env
作成された.env
ファイルを編集して、WebUIのURLを設定します。
# 必須:WebUI APIのURL
SD_WEBUI_URL=http://192.168.100.105:7860
# オプション:デフォルトのファイルパス
CONFIGS_FILE=prompts/configs.jsonl
OUTPUT_DIR=out
URLは実際のWebUIが動作している環境に合わせて変更してください。ローカル環境ならhttp://localhost:7860
、別のマシンで動作している場合はそのIPアドレスを指定します。
基本的な使い方
設定ファイルの作成
画像生成の設定は、JSONL(JSON Lines)形式のファイルに記述します。デフォルトではprompts/configs.jsonl
が使用されます。基本的な設定例を見てみましょう。
{"prompt": "1girl, solo, green tracksuit, black hair, brown eyes, mischievous smile", "negative_prompt": "worst quality, bad quality", "width": 720, "height": 1280, "sampler_name": "Euler a", "steps": 28, "cfg_scale": 7, "seed": -1, "batch_size": 1, "n_iter": 2, "hires_fix": false}
{"prompt": "1girl, solo, red dress, blonde hair, blue eyes, gentle smile", "negative_prompt": "worst quality, bad quality", "width": 720, "height": 1280, "sampler_name": "Euler a", "steps": 28, "cfg_scale": 7, "seed": -1, "batch_size": 1, "n_iter": 1, "hires_fix": false}
各行が一つの画像生成設定を表しており、以下のパラメータを指定できます。
-
prompt
: ポジティブプロンプト(生成したい要素) -
negative_prompt
: ネガティブプロンプト(避けたい要素) -
width
,height
: 画像の解像度 -
sampler_name
: サンプリング手法("Euler a", "DPM++ 2M Karras"など) -
steps
: サンプリングステップ数 -
cfg_scale
: CFGスケール値 -
seed
: ランダムシード(-1で自動生成) -
batch_size
: 一度に生成する画像数 -
n_iter
: 繰り返し回数 -
hires_fix
: 高解像度修正の有効/無効
実行コマンド
最もシンプルな実行方法は以下のコマンドです。
npm start
このコマンドを実行すると、カラフルなプログレスバーとともに画像生成が開始されます。画面には以下のような表示が現れます。
🚀 Starting Stable Diffusion automation...
📸 [████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 30.0% Config 3/10
🔄 Iter 1/2: [████████████████░░░░░░░░░░░░░░] 57.1% Step 16/28 | Overall: [████████░░░░░░░░░░░░░░░░░░░░] 28.6% ETA: 25.1s
詳細な進捗表示
プログレスバーの表示内容を詳しく説明します。
全体の進捗: 📸 [プログレスバー] パーセンテージ Config 現在/総数
- 設定ファイル全体の処理進捗を表示
現在の生成状況:
- 単一画像の場合:
🔄 [プログレスバー] パーセンテージ Step ステップ数/総ステップ数 ETA: 予想残り時間
- 複数反復の場合:
🔄 Iter 現在/総数: [個別プログレス] | Overall: [全体プログレス] ETA: 予想残り時間
安全な終了方法
生成途中で停止したい場合は、キーボードのz
キーを押してください。これにより、現在の処理を完了してから安全に終了します。
🛑 Graceful exit requested. Will finish current config and exit...
強制終了が必要な場合はCtrl+C
を使用できますが、この場合は現在の生成が途中で中断される可能性があります。
実用的な設定例とユースケース
キャラクターのバリエーション生成
同じキャラクターの異なる表情や衣装を生成したい場合の設定例:
{"prompt": "1girl, solo, school uniform, black hair, brown eyes, happy smile", "negative_prompt": "worst quality, bad quality", "width": 512, "height": 768, "sampler_name": "Euler a", "steps": 20, "cfg_scale": 7, "seed": -1, "batch_size": 1, "n_iter": 3, "hires_fix": false}
{"prompt": "1girl, solo, school uniform, black hair, brown eyes, serious expression", "negative_prompt": "worst quality, bad quality", "width": 512, "height": 768, "sampler_name": "Euler a", "steps": 20, "cfg_scale": 7, "seed": -1, "batch_size": 1, "n_iter": 3, "hires_fix": false}
{"prompt": "1girl, solo, school uniform, black hair, brown eyes, shy smile", "negative_prompt": "worst quality, bad quality", "width": 512, "height": 768, "sampler_name": "Euler a", "steps": 20, "cfg_scale": 7, "seed": -1, "batch_size": 1, "n_iter": 3, "hires_fix": false}
ファッションスタイルの比較
季節ごとのファッションや職業別の衣装を比較生成する場合:
{"prompt": "1girl, solo, spring floral dress, light cardigan, casual sneakers, mischievous smile", "negative_prompt": "worst quality, bad quality", "width": 720, "height": 1280, "sampler_name": "Euler a", "steps": 28, "cfg_scale": 7, "seed": 12345, "batch_size": 1, "n_iter": 2, "hires_fix": false}
{"prompt": "1girl, solo, summer tank top, denim shorts, sun hat, confident pose", "negative_prompt": "worst quality, bad quality", "width": 720, "height": 1280, "sampler_name": "Euler a", "steps": 28, "cfg_scale": 7, "seed": 12345, "batch_size": 1, "n_iter": 2, "hires_fix": false}
{"prompt": "1girl, solo, autumn sweater, plaid skirt, knee-high boots, thoughtful expression", "negative_prompt": "worst quality, bad quality", "width": 720, "height": 1280, "sampler_name": "Euler a", "steps": 28, "cfg_scale": 7, "seed": 12345, "batch_size": 1, "n_iter": 2, "hires_fix": false}
固定シードを使用することで、同じキャラクターの異なる衣装バリエーションを生成できます。
パラメータ比較テスト
異なるサンプリング手法やCFGスケールの効果を比較したい場合:
{"prompt": "masterpiece, 1girl, portrait, detailed face, soft lighting", "negative_prompt": "worst quality, bad quality", "width": 512, "height": 512, "sampler_name": "Euler a", "steps": 20, "cfg_scale": 7, "seed": 999, "batch_size": 1, "n_iter": 1, "hires_fix": false}
{"prompt": "masterpiece, 1girl, portrait, detailed face, soft lighting", "negative_prompt": "worst quality, bad quality", "width": 512, "height": 512, "sampler_name": "DPM++ 2M Karras", "steps": 20, "cfg_scale": 7, "seed": 999, "batch_size": 1, "n_iter": 1, "hires_fix": false}
{"prompt": "masterpiece, 1girl, portrait, detailed face, soft lighting", "negative_prompt": "worst quality, bad quality", "width": 512, "height": 512, "sampler_name": "Euler a", "steps": 20, "cfg_scale": 12, "seed": 999, "batch_size": 1, "n_iter": 1, "hires_fix": false}
高度なオプション設定
コマンドラインオプション
ツールには様々なコマンドラインオプションが用意されています。
# 詳細ログモード
npm start -- --verbose
# メタデータファイルの保存
npm start -- --save-meta
# カスタム設定ファイルの使用
npm start -- --configs-file my-custom-prompts.jsonl
# カスタム出力ディレクトリの指定
npm start -- --output-dir ./my-images
# 設定ファイルの内容ログを無効化
npm start -- --disable-log-config
# 複数オプションの組み合わせ
npm start -- --verbose --save-meta --configs-file fashion-configs.jsonl --output-dir ./fashion-renders
メタデータファイルの活用
--save-meta
オプションを使用すると、各画像と一緒に詳細なメタデータファイルが保存されます。
{
"config": {
"prompt": "1girl, solo, green tracksuit, black hair, brown eyes",
"negative_prompt": "worst quality, bad quality",
"width": 720,
"height": 1280,
"sampler_name": "Euler a",
"steps": 28,
"cfg_scale": 7,
"seed": -1,
"batch_size": 1,
"n_iter": 2,
"hires_fix": false
},
"response": {
"info": {
"seed": 2605429855
},
"timestamp": "2025-08-14T12:34:56.789Z",
"filename": "1723648392847-2605429855.png",
"seed": 2605429855
}
}
このメタデータファイルは、後で同じ設定で画像を再生成したり、成功した設定を分析したりする際に非常に有用です。
ファイル管理と出力構造
出力ディレクトリの構造
生成された画像は日付ベースで自動的に整理されます。
out/
└── 2025-08-14/
├── 1723648392847-2605429855.png
├── 1723648392847-2605429855.meta.json
├── 1723648394123-2605429856.png
└── 1723648394123-2605429856.meta.json
ファイル名の形式は[タイムスタンプ]-[実際のシード値].png
となっており、生成順序と使用されたシード値が一目で分かります。
設定ファイルの管理
複数の用途に応じて、異なる設定ファイルを作成することを推奨します。
prompts/
├── configs.jsonl # デフォルト設定
├── fashion-configs.jsonl # ファッション関連
├── character-configs.jsonl # キャラクター生成
├── landscape-configs.jsonl # 風景画
└── test-configs.jsonl # テスト用設定
使用する際は--configs-file
オプションで指定します。
npm start -- --configs-file prompts/fashion-configs.jsonl
トラブルシューティング
接続エラーの対処法
症状: ❌ Error generating images: fetch failed
原因と対処法:
- WebUIが起動していない → WebUIを
--api
オプション付きで起動 - URLが間違っている →
.env
ファイルのSD_WEBUI_URLを確認 - ファイアウォールがブロックしている → ポート7860の通信を許可
プログレスが更新されない場合
症状: プログレスバーが長時間動かない
原因と対処法:
- サーバーが重い処理を実行中 → しばらく待機
- 複雑なプロンプトや高解像度設定 → パラメータを下げて試行
- メモリ不足 →
batch_size
やn_iter
を小さくする
生成が失敗する場合
症状: 特定の設定で生成が失敗する
原因と対処法:
- プロンプトに無効な文字が含まれている → 特殊文字を除去
- 解像度が高すぎる → より小さな解像度でテスト
- モデルが読み込まれていない → WebUIでモデルが正しく選択されているか確認
JSONエラーの対処法
症状: SyntaxError: Unexpected token
原因と対処法:
- 設定ファイルのJSON形式が間違っている → オンラインJSONバリデータで確認
- 改行コードの問題 → テキストエディタで改行コードを確認
- 文字エンコーディングの問題 → UTF-8で保存し直す
メモリ不足エラー
症状: 生成途中でプロセスが停止する
対処法:
-
batch_size
を1に設定 -
n_iter
を小さくする - 解像度を下げる
- WebUIのVRAM使用量を確認
効率的な作業フロー
段階的なアプローチ
- 小規模テスト: まず1〜2個の設定で動作確認
- パラメータ調整: 期待する結果が得られるまで設定を微調整
- バッチ実行: 最終的な設定でまとめて実行
設定の再利用
成功した設定は別ファイルに保存しておき、後で参照できるようにします。
# 成功した設定をバックアップ
cp prompts/configs.jsonl prompts/successful-configs-2025-08-14.jsonl
時間の有効活用
大量生成の際は、実行時間を予め計算します。例えば、ステップ数28、10個の設定、各設定で2回反復の場合、約30〜60分程度かかることが予想されます。
まとめ
このStable Diffusion自動化ツールを使うことで、手動では非常に時間がかかる大量の画像生成を効率的に行うことができます。設定ファイルの準備からトラブルシューティングまで、この記事で紹介した内容を参考に、ぜひ実際の制作現場で活用してください。
特に重要なポイントは以下の通りです:
- WebUIは必ず
--listen --api
オプション付きで起動する - 設定ファイルはJSONL形式で作成し、段階的にテストする
- プログレスバーでリアルタイムに進捗を確認できる
-
z
キーでいつでも安全に終了できる - メタデータファイルを活用して設定の再現性を確保する
このツールを使いこなせば、創作活動やビジネス用途での画像生成作業が格段に効率化されることでしょう。
プロジェクトリポジトリ
本記事で紹介したツールの完全なソースコード、詳細なドキュメント、実用的な設定例、コントリビューションガイドラインをご確認いただけます。