← ブログ

GLM-5とWaveSpeedで構築するAIクリエイティブパイプライン

GLM-5がプロンプトを生成し、WaveSpeedが画像と動画を作成する、APIで連携したフルAIクリエイティブパイプラインの構築方法を解説します。

1 min read
GLM-5とWaveSpeedで構築するAIクリエイティブパイプライン

こんにちは、Doraです。短いプロモクリップを仕上げるためだけに、ツールを行ったり来たりし続けていました。ブリーフはある場所、画像は別の場所、動画はまた別の場所、メモはあちこちに散らばっている。どれも難しくはないのですが……煩雑でした。そこで、もっとシンプルなものを試すことにしました。プレーンなブリーフから完成したクリップまで、常に行き来することなく到達できる、安定したエンドツーエンドの道筋です。これを**GLM-5**クリエイティブパイプラインと呼んでいます。2週間にわたり、3つの短いコンセプトとクライアント作業からの断片でテストしました。派手ではありません。でも、作業が軽くなった気がします。

構築するもの(エンドツーエンドの概要)

短いブリーフから6〜10秒の動画まで、小さなイテレーションの余地はあってもフィーチャーハントのない、一本の道を求めていました。全体の形はこのようなものです:

  • 短いブリーフ(2〜3文)を書く。トーン、被写体、制約事項。
  • GLM-5がそれを明確なシーン描写に変換する。
  • FLUXまたはSeedreamが、WaveSpeedを使って推論を予測可能に保ちながら静止画を生成する。
  • WAN 2.5またはSeedanceが、承認済みの静止画からモーションを構築する。
  • GLM-5がアウトプットをレビューし、全面的な書き直しではなく、細かな編集案を提案する。

自分に課したルールがいくつかあります:

  • プロンプトは短く、構造的に保つ。毎回同じフィールドを使用:Subject(被写体)、Setting(設定)、Style(スタイル)、Motion notes(モーションメモ)、Constraints(制約)。
  • バッチは小さく。1回の実行で最大3コンセプト。頭をクリアに保ち、比較しやすくなりました。
  • 気に入ったものはシードを固定する。バリエーションは後で、作業中ではなく。

実際には、このパイプラインによってクリック数と迷いが減り、純粋な作業時間が減る以上の効果がありました。3回目の実行では、典型的な90分のコンセプト〜クリップ作業から約15分を削れました。より大きな勝利は精神的なもの:選択肢が減り、「Xを試してみたら?」という寄り道が減りました。それこそが求めていたものです。

ステップ1 — GLM-5がブリーフからシーン描写を生成

小さなブリーフから始めました:「窓際のセラミックマグに降り注ぐ暖かい朝の光。柔らかな湯気。ミニマリストで落ち着いた雰囲気。9:16のソーシャルストーリー用。ブランドカラー:ミュートなティールアクセント。」

GLM-5はスタイルの多様性に優れた創作において卓越していると、Zhipu AIの公式ドキュメントに記載されています。GLM-5に求めていたのは賢さではありませんでした。レンダラーが従えるような、一貫したシーンカードという構造が欲しかったのです。要求して使い続けたフォーマットはこちらです:

  • シーンタイトル
  • ショットタイプ(例:ミディアムクローズアップ)
  • 構図(三分割法、ネガティブスペースのメモ)
  • ライティング
  • パレット
  • テクスチャ/素材
  • モーションメモ(ある場合)
  • ハード制約(顔なし、フレーム内にテキストなし、出力サイズ)

最初のパスは冗長に感じました。GLM-5がムードを説明しすぎていたのです。こう指示しました:「各フィールドを1文に。具体的な名詞とカメラ用語を使用。」それでほとんど解決しました。2回目の実行では、画像プロンプトにきれいにマッピングされる、簡潔なカードが得られるようになりました。

小さな勝利:以前引っかかったことのある「禁止」項目(余分な手、迷い込んだロゴ、顔が映る反射)をGLM-5に追加するよう頼みました。後処理が減りました。完璧ではないですが、サプライズが少なくなりました。

この部分は最初から時間を節約してくれたわけではありません:後の判断疲れを節約してくれたのです。5つの異なるプロンプトスタイルの間で迷う必要がなくなりました。1つに統一できました。

ステップ2 — FLUX / SeedreamがWaveSpeed経由で画像を生成

FLUXとSeedreamは性格が異なるので、両方を試しました。FLUXはクリーンでデザイン的な静止画を生成しました。Seedreamは少し自由奔放でしたが、セラミックや木のテクスチャで美しい発見をすることがありました。両方をWaveSpeed経由で動かすことで、多数のフラグをいちいち管理することなく、ステップ、シード、スケジューラーを標準化できました。

フィールドメモ:

  • WaveSpeedの再現性が重要でした。フレームが気に入ったら、シードを固定してガイダンスとステップだけを微調整しました。「良い偶然」を再現可能にしてくれました。
  • アスペクトは最初からターゲット出力(9:16)に設定しました。後からトリミングすると、湯気が常に変に見えました。
  • プロンプトはGLM-5から来たものに限定しました。詩的な装飾なし。味気ないですが、奇妙なエッジが減りました。

摩擦:手と窓。反射は人物を作り出すことが大好きです。制約に「人物なし、シルエットなし、人物の反射なし」を追加し、ネガティブガイダンスを少し高めに設定しました。ノイズが減りました。

静止画1枚あたりの実行時間は、マシンによって「すぐ」から「コーヒーをおかわりする間」まで幅がありました。シーンごとに8〜12の候補を生成し、2枚に絞り込みました。すぐに選べない場合は、プロンプトが十分に絞り込まれていないことを意味します。画像を探し続けるのではなく、小さな編集を加えてGLM-5に戻ります。

ステップ3 — WAN 2.5 / Seedanceが静止画から動画を生成

ここは通常、迷子になる部分:モーションオプションが多すぎる。自分を2つのモードに制限しました:わずかなパララックスと緩やかなカメラムーブ。WAN 2.5はパララックスを説得力を持って処理しました。Seedanceは湯気の微動やソフトフォーカスのシフトといったマイクロムーブメントが得意でした。

静止画からモーションへのハンドオフチェックリスト:

  • ターゲット解像度(テスト用1080x1920)でクリーンなPNGをエクスポート。
  • タイトなモーションメモを提供(例:「2〜3°ドリーイン、マグのハンドルを三分割の位置に保つ、ループに適した湯気の流れ」)。
  • 長さを6〜8秒に制限。長いクリップはぼやけて、モデルのアーティファクトに注目が集まりました。

サプライズ:

  • テクスチャのちらつき。粒状の釉薬は静止画では素晴らしく見えて、モーションでノイジーになります。アニメートすることがわかっている場合は、ステップ2でテクスチャの強度を下げました。
  • 角付近のエッジの歪み。中央の構図の方が安定していました。オフアクシスのマグはゴムのように曲がりました。

最高の実行は見えないようでした。うまくいくと、モデルのことを考えるのをやめて、ただ光が息をするのを眺めるだけになりました。うまくいかないと、すぐに崩れました。大抵はモーションを求めすぎたためです。

ステップ4 — GLM-5がアウトプットをレビューし、イテレーションを提案

GLM-5を穏やかなセカンドオピニオンとして再び呼び入れました。依頼したことは:

  • 最終クリップを元のブリーフと比較する。
  • 不一致(パレット、ムード、制約)を指摘する。
  • クリップごとに5つではなく、1つの小さな変更を提案する。

これは思った以上に役立ちました。GLM-5は一貫してカラーのずれを見つけました。ある実行では、ティールのアクセントが暖かい光に対して冷たく感じられると指摘しました:背景の微妙な色相シフトで修正できました。

しかし、時に過剰になることもあり、新しい小道具やテキストオーバーレイを提案してきました。ルールを設定することで押し戻しました:「新しい名詞なし。ライティング、カラー、モーション強度のみ調整。」それでイテレーションが地に足のついたものになりました。

ここのループは短かった:1回のメモパス、1回の修正パス。それでも満足できない場合は、こだわり続けるのではなくコンセプトを棚上げにしました。その自制心がパイプラインの肥大化を防ぎました。

フルコード(Python、WaveSpeed SDK)

オーケストレーションはシンプルに保ちました。1つのPythonスクリプトがいくつかの小さなヘルパーでステップを繋ぎます:

  • Subject、Setting、Style、Motion、Constraintsを保存するBriefクラス。
  • プロンプトをフォーマットし、シーンカードをdictにパースするglm5()ヘルパー。
  • FLUXまたはSeedreamでWaveSpeedを呼び出し、シード、ステップ、ネガティブプロンプトを渡すimages()ヘルパー。
  • モーションメモ付きでWAN 2.5またはSeedanceに静止画を渡すvideo()ヘルパー。
  • サムネイルや短いGIFをGLM-5にフィードバックしてアライメントメモを得るreview()ヘルパー。

安定させた2つの細部:

  • 決定論的なパスで結果をディスクに書き込みました:run_id/scene_01/flux_seed1234.png。遡りやすくなりました。
  • パラメータを小さなYAMLファイルにアウトプットの隣に記録しました。クリップが正しく見えたとき、なぜそうなったかを正確に把握できました。

貼り付け大会にならないよう、ここにコードは掲載しません。上記の構造は、自分のスタックで再現するのに十分なはずです。WaveSpeedをすでに使っているなら、ランダム性をどこで固定し、どこでドリフトを許容するかを選ぶことが主な作業です。

10アセットのコスト内訳

コストはプロバイダーやモデル設定によって大きく異なるため、これは約束ではなく、テストからの実用的な範囲として捉えてください。ここでの10アセットとは、シーンごとに8〜12の静止画候補を持つ、10本の短い縦型クリップ(各1シーン)を意味します。

  • GLM-5のプロンプティングとレビュー:軽め。GLM-5 APIの価格は入力$1.00/M、出力$3.20/Mで、Claude Opus 4.6(入力$5/M、出力$25/M)よりも大幅に安価です。私の実行では、各アセットで約2〜3回の短いやりとりと1回のレビューを使用しました。使用量ベースの料金であれば、10アセットで通常数ドル程度です。
  • 画像生成:主な変動要因。シーンごとに8〜12の候補を中程度のステップで生成した場合、従量課金制プランでアセットあたり中〜高一桁ドルのコストになりました。自前のGPUでバッチ処理すればより安くなります。
  • 動画生成:これも変動します。シンプルなパララックスクリップはコストが低く、物理的なモーションはより高くなります。私のメモでは、アセットあたりの静止画と同程度、時にやや高めになりました。

混合モデル、控えめな設定で10アセットの概算合計:バリエーションを多めにした完全クラウドベースであれば低いセンター台、画像ステップを自己ホストしてモーションのみ支払う場合は大幅に安くなります。厳格にする(12の代わりに6候補、1回のモーションパス)なら3分の1カットできます。バリエーションを追いかけると、すぐに2倍になります。シードと小さなイテレーションルールが請求額を抑えるのに役立ちます。

拡張:LoRA、アップスケーリング、バッチ処理の追加

ベースが安定してきたら、いくつかの拡張を試しました。

  • ブランドテクスチャ用のLoRA:セラミック釉薬と背景の紙のために小さなアクセントパックをトレーニングしました。シーン間でマテリアルの一貫性を保つのに役立ちました。コツは適度なウェイトでした。強すぎるLoRAはすべてを同じ見た目に引き込んでしまいます。
  • 緩やかなアップスケーリング:モーションの後にのみアップスケールし、前にはしません。事前アップスケールはアーティファクトを強調しました。ディテールを保持する軽いモデルでの事後アップスケールは、マグにポアを作り出さずエッジをクリーンに保ちました。
  • バッチ処理:各コンセプトがユニットとして移動するキューを追加しました。異なるブリーフのステップを混在させない。厳格に聞こえますが、「もう1回だけ試してみよう」という螺旋から救ってくれました。

維持しなかったもの:

  • パイプライン内の自動キャプション。ビジュアルを「動く画像」ではなく「コンテンツ」の方向に引っ張ってしまいました。キャプションは外で、公開に近いタイミングで行います。
  • 積極的なスタイルミックス。グリッドでは見栄えが良く、モーションでは疲れて見えました。

これが合う人:予測可能な道筋と小さく安定した成果が好きなメーカー。スリルを感じない人:派手さや高いバリアンスのアートを求める人たち。それはそれで構いません。

GLM-5クリエイティブパイプラインを賢くするのではなく、静かにすることを目指しました。良い日には、そんな感じがします:マグ、いくつかの光、そしていつもより少ないタブ。それで十分です。