Product Photo Generation について
Product Photo Generationは、each::sense APIで商品写真を生成するスキルです。ECやマーケティング向けに多様なシーンやスタイルを作成でき、提供した商品画像を使った合成や、セッションによるシリーズの一貫性維持にも対応します。
主な機能
- 01EC向け・ライフスタイル商品画像の生成
- 02スタジオ撮影、フラットレイ、ディテール撮影
- 03提供した商品画像をシーンに配置
- 04セッションによるシリーズの一貫性維持
- 05maxとecoモードの選択
活用シーン
- 01オンラインストア用の白背景カタログ画像を作成
- 02マーケティング用のライフスタイル画像を制作
- 03商品シリーズで統一感のある画像を生成
- 04構図や撮影スタイルを素早く試作
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ eachlabs/ skills --skill product-photo-generationインストール後、Claude Code で/product-photo-generationを入力して読み込まれたか確認します。
同梱ファイルreferences/SSE-EVENTS.md
詳細
商品写真の生成
each::sense API を使用して、プロフェッショナルな商品写真を生成します。あらゆる商品について、ECサイトですぐに使える画像、ライフスタイル写真、スタジオ品質の商品ビジュアルを作成できます。
概要
each::sense API を使うと、次の用途に適した高品質な商品写真を生成できます。
- ECサイト向け商品写真 - オンラインストア向けの、すっきりとしたプロフェッショナルな画像
- ライフスタイルシーンの画像 - 実際の生活環境に置かれた商品の画像
- 白背景の商品写真 - カタログやマーケットプレイスで使われる標準的な画像
- スタジオ照明のセットアップ - 高級感のある商品プレゼンテーション向けのプロフェッショナルな照明
- マーケティングビジュアル - 広告やプロモーション向けの目を引く画像
image_urls を使って独自の商品画像を指定し、実際の商品をプロフェッショナルなスタイルのシーンに配置することもできます。
クイックスタート
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Generate a professional product photo of a minimalist ceramic coffee mug on a white background with soft studio lighting"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
商品写真のスタイル
| スタイル | 説明 | 最適な用途 |
|---|---|---|
| 白背景 | 純白の背景に商品をすっきりと配置 | ECサイト、マーケットプレイス、カタログ |
| ライフスタイル | 実生活のシーンや環境に置かれた商品 | ソーシャルメディア、ブランドストーリー |
| フラットレイ | 小物を配置した俯瞰写真 | ファッション、食品、アクセサリー |
| 使用シーン | 実際に使用されている、または自然な環境にある商品 | マーケティングキャンペーン、広告 |
| ヒーローショット | インパクトを与えるドラマチックな照明とアングル | ホームページのバナー、注目商品 |
| ディテールショット | 質感や職人技に焦点を当てたクローズアップ | 高級品、ハンドメイド商品 |
ユースケースの例
白背景の商品写真
すっきりとした白背景を使った、標準的なECサイト向け商品写真です。
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Professional product photo of a stainless steel water bottle on pure white background, centered composition, soft box lighting from above and sides, no shadows, e-commerce style, 4K quality"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
ライフスタイルシーンの商品写真
憧れを感じさせる実生活のシーンに商品を配置します。
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Lifestyle product photography of premium wireless headphones on a modern wooden desk, morning light through window, MacBook and coffee cup in soft focus background, warm and inviting atmosphere"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
フラットレイ構図
相性のよい小物を配置した俯瞰写真です。
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Flat lay product photography of a leather wallet, arranged with sunglasses, car keys, and a fountain pen on marble surface, overhead shot, even lighting, editorial style composition"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
ドラマチックな照明のヒーローショット
マーケティング素材向けの、インパクトのある商品画像です。
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Hero shot of a luxury perfume bottle, dramatic side lighting creating elegant shadows, dark moody background with subtle gradient, glass reflections and caustics, premium advertising quality"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
ディテール/マクロショット
商品の質感や職人技に焦点を当てたクローズアップです。
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Macro detail shot of handcrafted leather bag stitching, extreme close-up showing texture and quality of leather grain, shallow depth of field, warm directional lighting highlighting craftsmanship"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
使用中/アクションショット
実際に商品を使用または実演している様子です。
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Action product shot of running shoes in motion, dynamic angle showing flexibility, slight motion blur on background, athletic track setting, energetic and sporty atmosphere"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
季節/テーマ別のショット
特定の季節や祝日に合わせたスタイリングの商品写真です。
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Holiday themed product photo of a scented candle surrounded by pine branches, dried oranges, and cinnamon sticks, warm cozy lighting, festive winter atmosphere, gift-ready presentation"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
サイズ比較ショット
大きさがわかるよう、基準となる物と一緒に商品を写します。
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Product scale photo of a compact Bluetooth speaker next to a smartphone and coffee cup for size reference, clean white background, even lighting, showing portable dimensions clearly"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
パッケージショット
開封体験を伝えるため、パッケージと一緒に商品を写します。
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Product and packaging photo of premium skincare bottle emerging from elegant black box, tissue paper visible, unboxing moment, luxury presentation, soft lighting on neutral background"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
独自の商品画像を使用する
image_urls を使って実際の商品写真を指定し、商品をプロフェッショナルなスタイルのシーンに配置します。
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Place this product in a modern kitchen setting, morning light, marble countertop, lifestyle photography style"}],
"model": "eachsense/beta",
"stream": true,
"image_urls": ["https://example.com/my-product.jpg"],
"mode": "max"
}'
カスタム背景の商品写真
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Put this product on a pure white background with professional studio lighting, remove existing background, e-commerce ready"}],
"model": "eachsense/beta",
"stream": true,
"image_urls": ["https://example.com/raw-product-photo.jpg"],
"mode": "max"
}'
商品写真のベストプラクティス
照明のガイドライン
- ソフトボックス照明 - ECサイト向け写真を均一に照らします
- リムライト - 背景から商品を際立たせます
- 窓からの自然光 - 温かみのある自然なライフスタイル感を演出します
- ドラマチックなサイドライト - 奥行きと高級感を加えます
- 拡散したトップライト - 強い影を抑えます
構図のヒント
- ECサイト向け写真では、重要な商品を中央に配置します
- ライフスタイル写真では、三分割法を使います
- テキストを重ねるための余白を確保します
- プラットフォームで求められるアスペクト比を考慮します
- ストーリーを伝える背景要素を含めます
背景の選択
- マーケットプレイスの要件に合わせて純白(#FFFFFF)を使用します
- 高級商品にはグラデーション背景を使用します
- ライフスタイル感を演出するには、シーンに合った環境を使用します
- 商品を引き立てる補色を使用します
- 職人仕上げの商品には、質感のある表面を使用します
プロンプトのヒント
商品写真に効果的なプロンプトには、次のような表現が含まれます。
照明の表現:
- 「ソフトボックス照明」、「自然な窓からの光」、「ドラマチックなサイド照明」
- 「リムライト」、「逆光」、「拡散した頭上からの照明」
- 「ゴールデンアワーの暖かみ」、「クールなスタジオ照明」
アングルの指定:
- 「目線の高さからの撮影」、「45度のアングル」、「真上からの俯瞰撮影」
- 「ローアングルのヒーローショット」、「斜めからのビュー」、「正面からの撮影」
背景の詳細:
- 「真っ白な背景」、「グレーのグラデーション背景」
- 「大理石の表面」、「木製のテーブル」、「コンクリートの質感」
スタイルの参考例:
- 「ECサイト風」、「エディトリアル品質」、「雑誌広告」
- 「カタログ写真」、「Instagram風」、「プレミアムブランド風」
小道具と背景設定:
- 「ミニマルな小道具」、「ライフスタイル要素」、「季節の飾り」
- 「調和するアクセサリー」、「自然の要素」
モードの選択
| モード | 最適な用途 | 出力品質 |
|---|---|---|
max | ヒーローショット、マーケティング素材、プレミアム商品 | 最高品質、詳細なレンダリング |
eco | 素早い試行、カタログ写真の一括作成、コンセプトのテスト | 高速生成、良好な品質 |
最終的なマーケティング素材やヒーロー画像には、max モードを使用してください。迅速なプロトタイピングや複数のバリエーションの素早い生成には、eco モードを使用してください。
商品シリーズ向けの複数ターンセッション
session_id を使って、商品ラインやカタログシリーズ全体の一貫性を保ちます。
商品シリーズのセッションを開始する
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Generate a product photo of a blue ceramic coffee mug on white background with soft natural lighting, minimalist style"}],
"model": "eachsense/beta",
"stream": true,
"session_id": "product-catalog-2024",
"mode": "max"
}'
一貫したスタイルで続ける
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Now generate the matching red ceramic mug in the same style and lighting setup"}],
"model": "eachsense/beta",
"stream": true,
"session_id": "product-catalog-2024",
"mode": "max"
}'
バリエーションを追加する
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Create a lifestyle version showing both mugs on a breakfast table with croissants"}],
"model": "eachsense/beta",
"stream": true,
"session_id": "product-catalog-2024",
"mode": "max"
}'
エラー処理
| エラー | 原因 | 解決策 |
|---|---|---|
| 401 Unauthorized | API キーが無効または設定されていません | X-API-Key ヘッダーが正しく設定されていることを確認してください |
| 400 Bad Request | リクエスト本文の形式が正しくありません | JSON の構文と必須フィールドを確認してください |
| 429 Rate Limited | リクエストが多すぎます | 指数バックオフを実装してください |
| 500 Server Error | サービスが一時的に利用できません | 少し待ってから再試行してください |
指数バックオフで再試行する
for i in 1 2 3; do
response=$(curl -s -w "%{http_code}" -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Professional product photo of wireless earbuds on white background"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}')
http_code="${response: -3}"
if [ "$http_code" -eq 200 ]; then
echo "${response%???}"
break
fi
sleep $((2**i))
done