「画像生成まで自動化したい。」
そう思い、今日は n8nとComfyUIのAPI連携 に挑戦しました。
正直、画像生成は重い作業だろうしまずまずの難関だと思っていました。
しかし、結果から言うと……
ComfyUIの自動起動には大きな引っかかりなく成功しました!
まずはAPI連携
ComfyUIで作成したワークフローを API形式(JSON) でエクスポート。
n8nのHTTP Requestノードから
POST /prompt
copy
へ送信します。
最初は
-
Prompt has no outputs
-
404エラー
など様々なエラーが出ましたが、一つずつ原因を潰していきました。
その結果、
n8nからComfyUIへ画像生成指示を送れるようになりました。
CPU環境でも十分実用的だった
今回試した設定は
-
DreamShaper 8
-
384×384
-
Steps 8
-
CFG 7
当初は5分以上かかっていましたが、
画像サイズやStepsを見直した結果
約104秒
まで短縮。
さらに
320×320では
74秒
まで短くなりました。
CPUのみの古いPCとしては、かなり現実的な速度です。
解説動画用の背景画像なら十分使えそうです。
生成完了も取得
画像生成だけで終わりではありません。
ComfyUIには
/history/{prompt_id}
copy
というAPIがあり、
生成完了後に
-
filename
-
status
-
completed
まで取得できます。
さらに
/view
copy
APIを利用することで、
画像そのもの(Binary) をn8n側へ取得することにも成功しました。
ここまでは完璧でした。
そして現れた、最大の敵
最後に
Read/Write Files from Disk
ノードで
画像を保存しようとしました。
……
やっぱりダメ。
The file is not writable
copy
No file(s) found
copy
The file or directory does not exist
copy
……
これまで何度このノードに泣かされてきたことか。
今回は
-
/home/zuw
-
/tmp
どちらも試しました。
それでも失敗。
GitHubでも同様の報告が複数あり、
どうやらDocker環境では同じ問題に遭遇している人が少なくないようです。
発想を変える
ここで考え方を変えました。
そもそも
n8nが画像を保存し直す必要があるのか?
今回の構成では
ComfyUIが
output
copy
フォルダへ画像を保存しています。
なら
FFmpegはその画像を直接読めばいい。
わざわざ
Read Binary
↓
Write File
copy
を挟む必要はありません。
つまり
n8n
↓
ComfyUI
↓
ComfyUI output
↓
FFmpeg
copy
という流れです。
n8nは
「指揮者」
として
-
APIを呼ぶ
-
完了を待つ
-
ファイル名を管理する
だけに徹する設計へ変更することにしました。
今日の成果
今日だけで
✅ ComfyUI API連携
✅ n8nから画像生成
✅ 生成完了待機
✅ 画像取得
まで完成。
Read/Write Files from Diskには今回も苦しめられましたが、
「そのノードを使わなくても目的は達成できる」
という新しい設計が見えてきました。
ホームラボ構築を始めて数日。
少しずつですが、
RSS → AI → 画像生成 → 動画生成
という、自分が目指していた自動化パイプラインの形が見え始めています。
次はいよいよ、
FFmpegと組み合わせて、解説動画の自動生成へ進みます。


コメント