使用ガイド
HiAPI の grok-imagine/text-to-image でEC商品画像を生成する開発者向けガイド
プロンプトテンプレート、超ワイドなアスペクト比、そしてカタログ品質のビジュアル素材にそのまま使えるAPIリクエスト例
EC画像パイプラインでテキスト生成画像モデルを使う理由
どの商品カタログにも、スタジオ撮影では扱いにくい画像枠が大量にあります。40色展開の商品、四半期ごとに変わるギフトセット、昼前に5地域分のバリエーションを揃えなければならない特集バナー——これらはクリエイティブな問題になる前に、まずスケジュールの問題です。テキスト生成画像は、フラッグシップのメインビジュアルを撮るフォトグラファーの代わりにはなりません。担えるのは、そのメインビジュアルを取り巻く大量の反復作業です。
役割分担を明確にしておくことが重要です。grok-imagine/text-to-image が向いているのは、被写体をテキストで記述でき、構図を繰り返せるタスクです:
- バリエーション展開。 1つの基本構図から、複数のカラー、素材、パッケージ状態を派生させる。
- プレースホルダーと下書き枠。 レイアウトやマーチャンダイジングのレビューを、最終素材の到着前に進められるだけのカタログ品質の画像を出力する。
- コンセプト探索。 有料撮影を予約する前に、背景、雰囲気、構図をすばやく試す。
- 地域・フォーマット別バリエーション。 同じ商品を、ワイドなヒーローバナーや正方形のグリッドタイル向けに再構成する。
契約上の再現性が求められる用途には向きません。規制対象の訴求表現、正確なラベルのタイポグラフィ、精密な素材の表面表現、そして実物の法的に検証可能な描写が必要なあらゆる内容は、撮影または管理されたレンダリングパイプラインに任せるべきです。テキスト生成画像モデルは生成的です——ロゴを近似して描くことはあっても、正確に再現することはありません。
実務的な分け方は、作業をキューとして捉えることです。高コストで高忠実度の作業は人に。反復可能で記述可能な大量作業はモデルに。そして生成と公開の間に人によるレビューを挟む。この分担を受け入れれば、エンジニアリング上の課題はごく普通のものになります。出力の一貫性をどう保つか、店舗が実際に使うアスペクト比にどう対応するか、そして張り付きなしでバッチをどう回すか、です。
本ガイドの残りでは、これらの問いを HiAPI プラットフォームに沿って順に解き、最後にあなた自身の商品カタログ向けに調整できるリクエスト構造を示します。

HiAPI で grok-imagine/text-to-image が提供するもの
HiAPI 上で、grok-imagine/text-to-image は単一の統合APIインターフェース経由でアクセスするモデル識別子です。欲しい画像を説明するテキストプロンプトを送ると、生成された画像アセットが返ります。概念的にはこれがすべての取り決めです——統合時の多くのつまずきは過剰な前提から生まれるため、率直に言っておく価値があります。
計画にあたって重要な範囲の注意点がいくつかあります:
プロンプト駆動であり、参照画像駆動ではありません。 得られる構図は提供されたテキストから生まれます。ある画像枠が実物の正確な再現を要求するなら、このモデルは適切なツールではありません。記述に忠実な描写で許容される用途に使いましょう。
すべてが同じインターフェースを通ります。 認証、リクエスト構造、レスポンス処理はモデル固有の方言ではなく、HiAPI プラットフォームの慣例に従います。つまり、このモデル用に書いたコードは、プラットフォーム上の他のどの画像モデルとも同じ骨格になり、クライアント層をスリムに保てます。
プロンプトが最重要の制御面です。 構造化フィールドや参照画像でモデルを導かないため、プロンプトの規律がほとんどの責任を負います。次のセクションでそれをテンプレート化します。
課金はプラットフォームの計量方式に従い、現在の料金は料金パネルで確認できます。 カタログ実行ごとに生成する画像数でキャパシティを計画し、数値は料金パネルで確認してください。固定値を計画書にハードコードしないでください。
文書化されていない調整可能パラメータの存在を仮定しないでください。 依拠するリクエストschemaにないパラメータがあるなら、それに依存するパイプラインを組まないでください。文書化されたリクエスト面を取り決めとみなし、モデル固有の挙動はビジネスロジックの外に追い出しましょう。
有用なメンタルモデル:HiAPI は安定した統合エントリを提供し、grok-imagine/text-to-image はそのドアの向こうにあるものです。統合は常にこのエントリを指すようにしましょう。
一貫した商品ビジュアルのためのプロンプトテンプレート設計
カタログ全体の一貫性はモデル自体の属性ではなく、プロンプト設計の属性です。各プロンプトを場当たり的に書くと、すべての画像が別々の撮影のように見えます。解決策は、プロンプトを固定モジュールに分解し、商品を記述するモジュールだけを変化させることです。
4モジュールテンプレート
[SUBJECT] 商品とは何か、および主要な素材/色の属性
[STAGING] 画面内での配置:アングル、クロップ、支持面、比率
[LIGHTING] ライトの位置、柔らかさ、色温度、影の表現
[BACKGROUND] 表面、被写界深度、環境、余白
[CONSTRAINTS] 含めてはいけないもの:文字、ウォーターマーク、余計な小道具、人物
同じカタログバッチ内では、STAGING、LIGHTING、BACKGROUND、CONSTRAINTS をバイト単位で同一に保ちます。SUBJECT だけが商品ごとに変わります。この規律だけで、グリッドはおおむね調和して見えます。
EC実戦テンプレート
Studio product photograph of {product_name}, {material}, {color}, {finish}.
Centered three-quarter view, product fills roughly 60% of frame height,
resting on a matte neutral surface. Soft large-source key light from
upper left, gentle fill from right, subtle contact shadow directly
beneath. Seamless light-grey background with clean negative space
above the product. No text, no logos, no watermarks, no props, no people.
商品データベースから {product_name}、{material}、{color}、{finish} を埋めます。残りはコードベース内の定数で、バージョン管理されたテンプレートファイルに置き、template_version 文字列を生成ログに書き込むのが望ましいです。そうすればビジュアルスタイルがずれたときに、テンプレートが変わったのかモデルが変わったのかを判断できます。
実用ルール
- 順序よりも安定性が重要。 モジュール順を決めたら、同じカタログ内では決して変えない。
- ブランドではなく素材を記述する。 「ヘアラインアルミ」は誘導できるが、商標はできない。
- 被写体を前に置く。 具体的な名詞句を先頭に置き、構図のアンカーにする。
- 否定項目を明示する。 商品作業では
CONSTRAINTSモジュールは任意ではない——余計な文字や小道具は画像が使えなくなる最も一般的な原因。 - まず3商品でテストし、それから300商品を生成する。 テンプレートの欠陥はカタログ規模に比例して増幅する。
プロンプトをコードとして扱いましょう:バージョン管理し、変更をレビューし、生成されたアセットを常にそれを生んだテンプレートバージョンに紐付けます。

店舗向けの超ワイドなアスペクト比を計画する
アスペクト比は最後に後回しにされがちな設計判断です。よくある順序はこうです。きれいな正方形画像を生成する。そしてトップページのヒーローにはもっとずっとワイドな絵が必要だと気づく。トリミングして商品の上部3分の1を失う。まず比率を計画しましょう。
生成前に画像枠を棚卸しする
店舗を見て回り、商品画像を載せるすべての異なるフレーム形状をリストアップします:グリッドタイル、商品詳細ページのギャラリー、カテゴリバナー、トップページのヒーロー、メールヘッダー、そして有料メディアの配置枠。各枠には形状があり、形状はクラスタ化します。グループに分け、個々の画像ではなくグループ単位で生成しましょう。
超ワイドがもたらす変化
ワイドなキャンバスは正方形を引き伸ばしたものではありません。幅が高さに対して増えると:
- 水平のセーフエリアが広がり、垂直のセーフエリアが狭まる。 上端や下端に近いものは、小さなビューポートでのレスポンシブクロップで切られる可能性があります。
- 被写体の比率を決める必要がある。 正方形で妥当なサイズの中央配置商品は、超ワイドでは小さな島になります。意図的に大きくするか、商品が片側を占める構図を受け入れるか。
- 余白が鍵になる。 ワイドなフレームはしばしばテキストオーバーレイ、価格バッジ、CTAを載せます。その領域をプロンプトで明示的に確保します——例えば「右側3分の1は見出しテキスト用にクリーンで無地の背景を保つ」。
- 光のグラデーションが引き伸ばされる。 正方形で効果的な柔らかいビネットも、ワイドでは汚れのように見えることがあります。ライティングの記述はシンプルで方向性を保ちましょう。
ワイドなクロップに耐える構図パターン
- 商品を左、余白を右。 ヒーローバナーで最も安全なパターン。
- 商品を中央、両側に十分なマージン。 同じ素材を正方形にクロップする必要がある場合に適する。
- 商品を右、環境を左。 左側を表面やテクスチャが担うライフスタイルバナーに適する。
必要な最大幅のターゲットで生成する
1つの素材がワイドなヒーローと正方形タイルの両方を担う必要があるなら、ワイドなフレーム構図で1バージョンを生成し、レイアウト側で正方形クロップを計画します——あるいは同じテンプレートからstagingモジュールを変えて2バージョンを生成します。避けるべきは、狭いフレーム構図で生成し、ワイド版もうまくいくと期待することです。
想定アスペクト比は商品IDと同じテンプレートメタデータに書き込み、ストレージ内のすべての素材がどの画像枠向けに構築されたかを把握できるようにします。

動作する HiAPI リクエストを構築する
統合の骨格は意図的に退屈に保ちます。それこそが望ましい姿です。プロンプトを組み立て、認証情報とモデル識別子を付けて HiAPI エンドポイントへ送り、返却されたアセットを処理します。
フローの概要
import os, requests
HIAPI_BASE = "https://api.hiapi.ai" # confirm exact base in platform docs
HEADERS = {
"Authorization": f"Bearer {os.environ['HIAPI_API_KEY']}",
"Content-Type": "application/json",
}
def build_prompt(product, template):
return template.format(
product_name=product["name"],
material=product["material"],
color=product["color"],
finish=product["finish"],
)
def generate_image(prompt, aspect_ratio="1:1"):
payload = {
"model": "grok-imagine/text-to-image",
"prompt": prompt,
"aspect_ratio": aspect_ratio,
}
resp = requests.post(
f"{HIAPI_BASE}/v1/images/generations",
headers=HEADERS, json=payload, timeout=120,
)
resp.raise_for_status()
return resp.json()
公開前に、エンドポイントパスと正確なパラメータ名はプラットフォームの現行ドキュメントと照合して確認すべき対象として扱ってください——このコードが示すのは構造であり、凍結されたschemaではありません。重要な属性は:
- モデル識別子はコードではなくデータ。
"grok-imagine/text-to-image"は設定に置き、モデル変更は設定変更だけで済むようにする。 - プロンプトは組み立てられるもので、決して手入力しない。 1つの
build_prompt関数、1つのテンプレートソース。 - 比率は呼び出しのパラメータ。 リクエストの一部であり、画像枠の棚卸しに基づいて選ぶべきで、後処理のクロップとして適用するものではない。
- キーは環境変数から。 リポジトリに認証情報を置かない。
後で必要になる情報を記録する
各リクエストについて永続化する:リクエストID、商品ID、テンプレートバージョン、アスペクト比、完全なプロンプト文字列、モデル識別子、タイムスタンプ、返却されたアセット参照。マーチャンダイザーがあるタイルがなぜおかしいのかと尋ねてきたとき、このログは午後ではなく数秒で答えを出します。
クライアントをスリムに保つ
呼び出しを小さな関数で包み、アセット参照か型付きの失敗を返します。カタログジョブはHTTPを知るべきではなく、HTTP層は商品を知るべきではありません。この分離が、次セクションのリトライロジックを短く保ちます。
出力、リトライ、バッチジョブを扱う
生成は簡単な部分です。画像パイプラインを信頼できるものにするすべては、レスポンスが返ってきた後に起こります。
公開前に検証する
返却された各アセットは、カタログ画像枠に入る前に自動ゲートを通すべきです:
- 存在し、デコード可能か? ダウンロードできても解析に失敗するファイルは、ローンチ当日に爆発するサイレント障害。
- 形状が画像枠に合っているか? 期待する比率ではなく、リクエストした比率に対して寸法を確認する。
- 制約が守られているか? テンプレートが文字を禁止しているなら、文字が検出されたアセットをフラグする——軽量分類器でも、小バッチならサンプルの人手抜き取りでも十分。
- 人によるレビューを通ったか? 顧客向けのあらゆるコンテンツにレビュー工程を設ける。承認状態はアセットレコード上のフィールドであり、Slackメッセージではない。
失敗を区別してリトライする
すべての失敗が同じではなく、同等に扱うとキャパシティを浪費します。
- 転送・レート制限エラー: ジッター付き指数バックオフでリトライし、少数の試行回数に制限する。
- サーバー障害: バックオフ付きで数回リトライし、その後その項目を失敗としてマークして続行する。
- schema・検証エラー: 決してリトライしない——同じように失敗する。ログを記録してアラートする。
- 品質拒否: 盲目的にリトライしない。まったく同じプロンプトの再実行は似た結果を生みがち。単一の変数——通常は被写体の記述——を調整し、そのリトライで修正プロンプトを使ったことを記録する。
ジョブキーを (product_id, template_version, aspect_ratio) にして、各試行を冪等にします。クラッシュしたワーカーは二重にコストをかけずに復旧できるべきです。
ループではなくキューでバッチを回す
少数の画像を超えるあらゆるジョブでは、作業をキューとして組織します:
- 列挙 商品データベースと画像枠の棚卸しから対象出力を得て、
pending状態のジョブレコードを生成する。 - 処理 ジョブを処理する際に並行数を制限する——控えめに始め、レイテンシが安定しているのを観察してから上げる。
- 永続化 各結果をオブジェクトストレージの決定的なキーに保存し、生成メタデータ付きのアセットレコードを書き込む。
- 報告 バッチ状況:試行数、成功数、失敗数、レビュー拒否数、総リトライ数。成功数だけでなくこのサマリーを公開する。
dry-runモードを追加し、APIを呼ばずに各プロンプトを組み立てて記録します。これは数千SKU規模でテンプレートの欠陥を捕まえる最も安価な方法です。
商品画像を本番公開する前のチェックリスト
最初のカタログバッチを公開する前にこのチェックリストを実行してください。
プロンプト品質
- テンプレートが被写体、配置、ライティング、背景、制約のモジュールに分割されている。
- 1回のカタログ実行内で変化するのは被写体モジュールのみ。
- 否定制約が明示され、文字、ウォーターマーク、余計な小道具を含む。
- テンプレートがバージョン管理され、バージョン文字列が各アセットレコードに書き込まれている。
- 素材と色の極端なケースを代表する少なくとも3商品で抜き取り確認済み。
比率カバレッジ
- 店舗の各画像枠に記録された比率と対応する配置パターンがある。
- 超ワイド素材はワイドフレームで構図され、テキストオーバーレイ用の余白が確保されている。
- レスポンシブクロップがサポートする最小ビューポートで確認済み。
パイプライン信頼性
- APIキーは環境から読み込まれ、リポジトリにコミットされていない。
- モデル識別子とエンドポイントは設定にあり、プラットフォームの現行ドキュメントと照合済み。
- リトライ戦略が転送、サーバー、検証、品質の失敗を区別している。
- ジョブが商品、テンプレートバージョン、比率に対して冪等。
- 各リクエストがプロンプト、比率、モデル、タイムスタンプ、返却アセット参照を記録している。
レビューと運用
- 顧客向けアセットに人手承認ゲートが設定されている。
- バッチサマリーが成功だけでなく失敗とレビュー拒否を報告する。
- dry-runモードが利用可能で、大規模バッチ前に実際に使われた。
- プラットフォームの料金パネルで現行の課金レートを確認し、画像数でキャパシティを計画済み。
すべてにチェックが入り、サンプルバッチが他人の寄せ集めではなく1回の調和した撮影のように見えたら、公開準備完了です。