February 21, 2026

Seedance 2.0 API で EC 向け AI 商品動画を作成する方法

Seedance 2.0 API を使って商品写真から EC 向け動画を生成。5 種類の動画タイプ、バッチパイプライン、マルチプラットフォーム書き出し。完全な Python コード付き。

Seedance 2.0 API で EC 向け AI 商品動画を作成する方法

カタログの全商品に動画が必要です。1枚の商品写真が、わずか3分以内で洗練された動画広告に変わります。撮影クルーも、スタジオレンタルも、ポストプロダクションの工程も不要です。Seedance 2.0 — ByteDance の最新動画生成モデル — は、シンプルな API コールで静止画の商品画像を放送品質のクリップに変換します。このガイドでは、EC 向けの5種類の動画タイプ、カタログ全体のバッチパイプライン、マルチプラットフォーム書き出し戦略を解説します。すべてのコードサンプルは本番環境対応の Python です。

商品動画が重要な理由(そしてスタジオが時代遅れになる理由)

動画付きの商品ページは、動画なしのページを常に上回ります。Shopify の商品メディアベストプラクティスによると、商品ページに動画を追加したマーチャントは、エンゲージメントとコンバージョン率が明らかに向上しています。Amazon 自身のセラーガイドラインも、すべてのリスティングに動画を積極的に推奨しており、A+ コンテンツプログラムでは動画付きページが検索結果で優先されます。

「動画が効果的であること」と「実際に動画を制作すること」のギャップは、歴史的に非常に大きなものでした。スタジオ時間、照明、機材、撮影者、基本的な編集を含む1本の商品動画撮影は、通常 SKU あたり $500〜$2,000 かかります。200商品のカタログなら、1つのファイルもアップロードする前に6桁の費用が発生します。

従来のスタジオSeedance 2.0 API
動画1本あたりのコスト$500〜$2,000$0.02〜$0.15
納期3〜10営業日60〜180秒
必要な準備スタジオ、クルー、機材商品写真1枚
500 SKU への拡張$250K〜$1M以上$75未満
反復速度再撮影が必要プロンプトを変更して再生成
アスペクト比バリエーションフォーマットごとに個別編集パラメータ1つの変更

経済性は比較になりません。AI 商品動画生成は $50,000 のブランドフィルムを置き換えるものではありません。ほとんどの EC チームが完全にスキップするか、厳しいマージンで外注している、SKU ごとの繰り返し動画作業を置き換えるものです。

300 SKU を持つ中規模 Shopify ストアの計算を考えてみましょう。カタログ全体の従来のスタジオ動画:$150K〜$600K、さらに数か月のスケジュール調整と制作期間。同じカタログに対する Seedance 2.0 API:合計 $50 未満、午後の数時間で完了。パイプライン構築の開発者工数を加味しても、投資収益率は桁違いに高くなります。

この変化は、10年前に商品写真で起きたことと同じパターンです。スタジオは消えませんでしたが、定型作業は自動化ソリューションに移行しました。動画も同じ軌道をたどっていますが、より速いペースで進んでいます。

動画によるコンバージョンの根拠

業界レポートは一貫して、動画付きの商品ページが動画なしのページを上回ることを示しています。Shopify 自身の調査では、動画がページ滞在時間を増加させ、顧客が購入する商品をよりよく理解できるようにすることで返品率を低下させることが強調されています。Amazon は、動画付きリスティングが検索結果でより高いクリックスルー率を達成していると報告しています。

具体的な数値はカテゴリーや市場によって異なりますが、方向性は明確です:動画はより多くの商品を販売します。問題は動画が効果的かどうかではありませんでした。問題は ROI が制作コストを正当化するかどうかでした。API 価格では、その計算は決着がついています。

セットアップ:API キーとベースコード

EvoLink アカウントと API キーが必要です。EvoLink は、わかりやすい REST API で Seedance 2.0 へのアクセスを提供します。まだアカウントを設定していない場合は、スタートガイドで手順を確認してください。

唯一の依存パッケージをインストールします:

pip install requests

GPU 不要。モデルのダウンロード不要。管理するインフラ不要。API がすべての計算をサーバーサイドで処理します。ローカルマシンは HTTP リクエストを送信し、動画 URL を受信するだけです。

以下が完全なベースコードです。このガイドのすべてのサンプルは、この基盤の上に構築されています:

import requests
import time

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.evolink.ai/v1"

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}


def generate_video(payload: dict) -> dict:
    """Submit a video generation request and return the task response."""
    response = requests.post(
        f"{BASE_URL}/videos/generations",
        headers=headers,
        json=payload
    )
    response.raise_for_status()
    return response.json()


def wait_for_video(task_id: str, poll_interval: int = 5, timeout: int = 300) -> dict:
    """Poll a task until it completes or fails. Returns the final task object."""
    elapsed = 0
    while elapsed < timeout:
        resp = requests.get(f"{BASE_URL}/tasks/{task_id}", headers=headers)
        resp.raise_for_status()
        task = resp.json()
        status = task.get("status")

        if status == "completed":
            print(f"✅ Video ready: {task['output']['video_url']}")
            return task
        elif status == "failed":
            raise RuntimeError(f"Task failed: {task.get('error', 'Unknown error')}")

        print(f"⏳ Status: {status} ({elapsed}s elapsed)")
        time.sleep(poll_interval)
        elapsed += poll_interval

    raise TimeoutError(f"Task {task_id} did not complete within {timeout}s")


def create_and_wait(payload: dict) -> dict:
    """Generate a video and wait for the result. Returns the completed task."""
    task = generate_video(payload)
    task_id = task["task_id"]
    print(f"🎬 Task created: {task_id}")
    return wait_for_video(task_id)

以下のすべてのコード例はこの共通セットアップを使用します。 各動画タイプ固有のペイロードのみを示します。

create_and_wait 関数はフルライフサイクルを処理します:ジョブを送信し、完了するまでポーリングし、動画 URL を返します。動画 URL は24時間で期限切れになるため、速やかにダウンロードするか、アセット管理システムに直接パイプしてください。

ポーリングアプローチは、インタラクティブなスクリプトや小規模バッチに適しています。数百の商品を処理する本番パイプラインでは、callback_url パラメータ(バッチパイプラインセクションで解説)がポーリングのオーバーヘッドを完全に排除します。

以下のすべてのコード例は、異なるペイロード辞書で create_and_wait(payload) を呼び出します。上記のセットアップコードが唯一のボイラープレートです。

無料の EvoLink API キーを取得 →

動画タイプ 1:360° 商品回転

ターンテーブル回転は EC 動画の主力です。白背景の商品写真1枚が、なめらかに回転するショーケースに変わります。かつてはモーター付きターンテーブルと入念なライティングが必要だった種類のクリップです。このフォーマットはどこでも機能します:Amazon リスティング、Shopify 商品ページ、ソーシャル広告。

高級腕時計の回転用ペイロードは以下の通りです:

payload = {
    "model": "seedance-2.0",
    "image_urls": [
        "https://your-cdn.com/products/watch-front.jpg"
    ],
    "prompt": (
        "@Image1 is a luxury wristwatch. The watch rotates slowly under "
        "dramatic studio lighting on a dark reflective surface. Light catches "
        "the polished metal case and sapphire crystal. Slow cinematic rotation. "
        "Premium advertisement quality."
    ),
    "duration": 8,
    "quality": "1080p",
    "aspect_ratio": "16:9"
}

result = create_and_wait(payload)

プロンプトの構造は重要です。どの商品でも一貫した結果を得るために、レイヤーに分解します:

レイヤー 1 — 被写体の特定。 @Image1 is a [product]. で始めます。これによりモデルがソース画像に固定されます。Seedance 2.0 が画像参照をどのように解釈するかの詳細は、@tags ガイドを参照してください。

レイヤー 2 — モーションの記述。 "Rotates slowly" は "spins" よりも効果的です。一定速度を暗示するためです。"smooth turntable rotation" や "360-degree rotation" を追加して動きのパターンを強化します。

レイヤー 3 — ライティングと環境。 モデルがよく反応するスタジオライティング用語:"dramatic studio lighting"、"soft diffused light"、"rim lighting"、"three-point lighting setup"。背景の選択 — ダークな反射面、白いサイクロラマ、グラデーション背景 — がトーン全体を決定します。

レイヤー 4 — 品質修飾子。 品質のキューで締めくくります:"premium advertisement quality"、"commercial-grade"、"4K product showcase"。これらの用語により、モデルはよりクリーンで洗練された出力を生成します。

回転動画のヒント

パラメータ推奨値理由
Duration6〜10秒完全な回転には、急いで見えないよう最低6秒が必要
Aspect ratio16:9 または 1:1Web/Amazon には 16:9、ソーシャルフィードには 1:1
Quality1080p商品コンテンツには常に 1080p
プロンプト内の背景ダーク反射面または白ブランドの商品ページの美観に合わせる

細かいディテールのある商品 — ジュエリー、腕時計、電子機器 — の場合は、duration を10秒に延長します。追加のフレームにより、モーションブラーのアーティファクトなく回転中の表面ディテールをモデルがレンダリングできます。

回転動画の背景戦略

ソース画像の背景は出力に大きく影響します。一般的なシナリオの対処法は以下の通りです:

白背景(理想的)。 白背景の標準的な EC 商品写真は完璧に機能します。モデルは商品を保持し、クリーンな回転モーションを生成します。白背景をそのまま維持するか、プロンプトで別の背景を記述できます。

透明背景(PNG)。 これも優れています。モデルはプロンプトの記述に基づいて背景を埋めるため、最終的な見た目を完全にコントロールできます。

雑多な背景やライフスタイル背景。 使用可能ですが予測性は低くなります。モデルが不要な背景要素を回転に取り込む場合があります。最良の結果を得るには、希望する背景を明示的に記述します:"on a clean white surface" または "on a dark gradient background"。

制御された背景のスタジオショット。 優れた出発点です。既存の写真にプロフェッショナルなライティングがある場合、モデルはそのライティング品質を動画に拡張します。

ソース写真の背景が雑多な場合は、プロンプトで希望する背景を明示的に記述してください。Seedance 2.0 は商品をクリーンな面に再配置できます。最良の結果を得るには、白背景または透明背景の商品写真から始めてください。ソース画像のベストプラクティスについては、画像から動画の基礎を参照してください。

ご自身の商品写真で試してみてください — 3分以内で結果が得られます。

動画タイプ 2:ヒーローショット(商品ローンチトレーラー)

ローンチトレーラーは期待感を生み出します。スモーク、光線、ドラマチックなアングル — 数秒に凝縮されたシネマティックなお披露目の瞬間です。このフォーマットは、第一印象がクリックスルー率を左右するソーシャル広告やランディングページのヒーローセクションで主流です。

payload = {
    "model": "seedance-2.0",
    "image_urls": [
        "https://your-cdn.com/products/headphones-lineup.jpg"
    ],
    "prompt": (
        "@Image1 shows premium over-ear headphones in four colors. "
        "Rapid four-frame flash cuts, each color freeze-framed. "
        "Extreme close-up of hinge mechanism unfolding in slow motion. "
        "Quick-cut lifestyle montage. Final lineup on white pedestal. "
        "Brand text fades in. Commercial-grade lighting."
    ),
    "duration": 10,
    "quality": "1080p",
    "aspect_ratio": "16:9"
}

result = create_and_wait(payload)

ヒーローショットのプロンプトは、回転とは異なるボキャブラリーを使用します。ここでは単一の連続動作ではなく、シーケンスを演出しています。各文をストーリーボードの1シーンとして考えてください。

ヒーローショットのプロンプトパターン

エマージェンス(出現): 商品がスモーク、フォグ、パーティクルから浮かび上がります。テック製品、フレグランス、プレミアム商品に効果的です。

@Image1 is [product]. It emerges from dense volumetric fog,
backlit by a single golden spotlight. Particles drift upward.
Slow reveal. Cinematic depth of field. Premium commercial aesthetic.

インパクトランディング(衝撃着地): 商品がエネルギーとともにフレームに落下します — スプラッシュ、シャッター、バースト。

@Image1 is [product]. It lands on a glossy black surface with a
subtle shockwave ripple. Dust particles scatter on impact.
Camera pushes in slowly. Dramatic rim lighting. High-end advertisement.

アセンブリ(組み立て): パーツが飛び集まって完成品を形成します。テック製品やモジュラー商品に最適です。

@Image1 is [product]. Individual components float in space, then
smoothly assemble into the final product. Each piece locks into
place with a satisfying precision. Clean white environment.
Studio lighting. Commercial quality.

ヒーローショットフォーマットは、より長い duration が効果的です。8〜12秒あれば、モデルがテンションを構築しリビールを完結させる余裕が生まれます。短いクリップは唐突に感じられ、長すぎるクリップは視聴者の注意を失うリスクがあります。

ヒーローショットの適切な使用場面

ヒーローショットが最適なのは以下のケースです:

  • 商品ローンチ。 ソーシャルメディアやランディングページでの新商品発表。ドラマチックなリビールが期待感を醸成し、プレミアムなポジショニングを示します。
  • 季節キャンペーン。 ホリデーセール、ブラックフライデー、新コレクションのドロップ。シネマティックな品質が、キャンペーンを標準的なプロモーションコンテンツの上に引き上げます。
  • 広告クリエイティブ。 Facebook、Instagram、TikTok の広告は、ドラマチックな商品リビールの訴求力から恩恵を受けます。これらのクリップは、スクロール中心のフィードで注目を集めます。
  • Web サイトヒーローセクション。 ファーストビューでの自動再生ヒーローショットは、ブランド品質を即座に伝えます。パフォーマンス上の問題を避けるため、ヒーローバナーの duration は6秒以内に抑えてください。

ヒーローショットは、顧客が情報的なコンテンツを求める商品詳細ページにはあまり適していません。ドラマはトップオブファネルのマーケティングに取っておき、商品ページ自体には回転動画やマクロ動画を使用してください。

EC 以外も含むプロンプトエンジニアリングのヒントや、Seedance 2.0 がシネマティックな用語をどのように解釈するかについては、専用のプロンプトガイドをご確認ください。

動画タイプ 3:ライフスタイルコンテキスト

白背景の静止商品写真はコンバージョンを生みます。しかしライフスタイル画像 — 文脈の中で、使用されている、実際の環境にある商品 — は感情的なつながりを構築します。ライフスタイル動画は、顧客に「あの商品が欲しい」ではなく「あの生活が欲しい」と思わせるフォーマットです。

Seedance 2.0 はマルチ画像入力をサポートしています。商品には @Image1 を、配置したい環境やシーンには @Image2 を使用します。モデルは自然なライティングとパースペクティブで商品をシーンに合成します。

payload = {
    "model": "seedance-2.0",
    "image_urls": [
        "https://your-cdn.com/products/ceramic-mug.jpg",
        "https://your-cdn.com/scenes/cafe-table-morning.jpg"
    ],
    "prompt": (
        "@Image1 is a handmade ceramic coffee mug. @Image2 is a cozy "
        "café table by a window on a rainy morning. The mug sits on the "
        "table, steam rising gently from fresh coffee. Soft natural light "
        "from the window. Shallow depth of field. A hand reaches in and "
        "wraps around the mug. Warm, inviting atmosphere. Lifestyle "
        "advertisement quality."
    ),
    "duration": 8,
    "quality": "1080p",
    "aspect_ratio": "9:16"
}

result = create_and_wait(payload)

実際にどのように見えるかをご紹介します — 絵の中のキャラクターが、フレームの前に置かれた商品(コーヒーカップ)に手を伸ばしています:

このデモは、@Image1(キャラクター/商品の参照)が視覚的に一貫性を保ちながら、モデルが小道具や環境との自然なインタラクションを生成する様子を示しています。同じ原則は、あらゆる商品イン・コンテキスト動画に適用されます。

@Image2 の参照は、テキスト記述だけから環境をハルシネーションするのではなく、モデルに作業するための具体的な環境を与えます。これにより、より現実的で一貫性のある結果が得られます。@tags システムは最大9枚の画像をサポートしているため、複雑なシーン用に複数の参照画像をレイヤーできます。

カテゴリー別ライフスタイルシーンの提案

商品カテゴリーシーンプロンプトキーワード
ドリンクウェアカフェテーブル、キッチンカウンター、屋外パティオsteam rising, morning light, cozy atmosphere
腕時計ハンドルを握る手首、ラップトップのあるデスク、アウトドアアドベンチャーnatural wrist movement, lifestyle context, candid feel
ヘッドホン電車の通勤者、公園のランナー、デスクの学生wearing naturally, ambient environment, in-use
スキンケア洗面台、スパ、ベッドサイドテーブルsoft lighting, clean aesthetic, self-care moment
家具日光の入るリビングルーム、スタイリングされたアパートメントroom context, natural scale, interior design
バッグストリートスタイル、空港ターミナル、オフィスエントランスwalking motion, casual carry, urban setting

ライフスタイル動画の鍵は具体性です。"A person using the product" では汎用的な結果になります。"A hand reaches in and wraps around the mug" は意図のある瞬間を作り出します。マクロなコンセプトではなく、ミクロなアクションを記述してください。

単一画像 vs. デュアル画像のライフスタイル

1枚の商品画像だけでもライフスタイル動画を生成できます — シーンはプロンプトで完全に記述します。デュアル画像モード(@Image1 + @Image2)は、モデルがテキスト記述だけでなくシーンの視覚的参照を持つため、より一貫した環境を生成します。

各アプローチの使い分け:

  • 単一画像 + 記述的プロンプト: 手軽で簡単。シーンが汎用的な場合(例:"on a desk"、"in a kitchen")に適しています。2枚目の参照画像を用意する必要がありません。
  • デュアル画像(商品 + シーン参照): より高品質な合成。特定の環境が重要な場合に使用します — 特定のカフェの雰囲気、ブランドの小売スペース、ブランドガイドラインに合わせたキュレーションされたライフスタイルセッティング。

デュアル画像モードでは、シーン参照は自分の写真である必要はありません。ストックフォトも環境参照として十分に機能します。モデルは @Image2 からライティング、カラーパレット、空間レイアウトを抽出し、@Image1 のコンテキスト化に使用します。

アスペクト比の変更に注意:Instagram Reels や TikTok 向けのライフスタイルコンテンツは 9:16 を使用します。動画を配信するプラットフォームにアスペクト比を合わせてください。詳細は下記のマルチプラットフォーム書き出しセクションをご覧ください。

動画タイプ 4:素材クローズアップ(マクロディテール)

テクスチャはプレミアム商品を売ります。レザーの質感、アルミニウムのブラッシュ仕上げ、カシミアセーターの織り — これらのディテールは、ワイドショットでは伝えられない方法で品質を訴求します。表面ディテールをゆっくりと明らかにするマクロクローズアップ動画は、高級品やハンドメイド商品で最もコンバージョンの高いフォーマットの一つです。

payload = {
    "model": "seedance-2.0",
    "image_urls": [
        "https://your-cdn.com/products/leather-wallet.jpg"
    ],
    "prompt": (
        "@Image1 is a full-grain leather bifold wallet. Extreme macro "
        "close-up. The camera slowly glides across the leather surface, "
        "revealing grain texture and hand-stitched seams. Shallow depth "
        "of field with creamy bokeh. Warm directional lighting rakes "
        "across the surface, emphasizing every pore and fiber. The camera "
        "pulls back gradually to reveal the full wallet. Luxury product "
        "photography in motion."
    ),
    "duration": 8,
    "quality": "1080p",
    "aspect_ratio": "16:9"
}

result = create_and_wait(payload)

マクロプロンプトのボキャブラリー

モデルは特定の撮影技法用語に強く反応します。マクロ効果を制御するためにこれらを使用してください:

  • "Extreme macro close-up" — 表面ディテールへのタイトなフレーミングをトリガー
  • "Shallow depth of field" / "creamy bokeh" — 背景をぼかし、ディテールを際立たせる
  • "Raking light" / "directional lighting" — 影を通じて表面テクスチャを強調
  • "Camera glides across" — なめらかな横方向の動き、テクスチャを段階的に明らかにする
  • "Surface texture reveal" — 素材の品質にフォーカスする明示的な指示

素材別プロンプト

レザー: 質感、ステッチ、パティーナにフォーカス。暖色系ライティングを使用。

Extreme macro on full-grain leather surface. Raking warm light reveals
natural grain variation and hand-stitched seam detail. Camera drifts
slowly across the material. Shallow depth of field.

メタル(ブラッシュ/ポリッシュ): 反射、加工痕、精度にフォーカス。

Extreme close-up of brushed stainless steel surface. Cool directional
light creates long specular highlights across machined grooves. Camera
tracks along the edge. Mirror-like reflections shift with the angle.

ファブリック/テキスタイル: 織りパターン、繊維ディテール、ドレープにフォーカス。

Macro view of cashmere knit fabric. Soft diffused light reveals
individual fiber structure and weave pattern. Camera slowly pans
across the textile. Gentle motion shows natural drape and softness.

木目: 年輪、仕上げ、自然な色彩変化にフォーカス。

Extreme macro of walnut wood surface with oil finish. Warm side
lighting reveals growth rings and natural color variation. Camera
glides along the grain direction. Rich, organic texture detail.

これらの素材クローズアップは、商品リスティングの2番目または3番目の動画として特に効果的です。顧客が商品全体を見た後(回転動画またはヒーローショット)、マクロディテール動画が品質の印象を強化します。これらのリビールを強化するカメラワーク技法については、カメラムーブメントガイドを参照してください。

動画タイプ 5:開封リビール

開封動画が YouTube やソーシャルプラットフォームで人気な理由は、購入体験をシミュレートするからです。パッケージを開ける期待感、商品の最初の一目、美しくデザインされた開封の満足感 — このフォーマットは、購入という感情のピークに訴えます。

payload = {
    "model": "seedance-2.0",
    "image_urls": [
        "https://your-cdn.com/products/smartwatch-boxed.jpg"
    ],
    "prompt": (
        "@Image1 is a premium smartwatch in its retail packaging. "
        "Hands gently lift the box lid, revealing tissue paper inside. "
        "The tissue parts to unveil the watch nestled in a molded insert. "
        "Soft overhead lighting. The watch face catches the light as "
        "it's lifted from the box. Close-up of the clasp clicking shut "
        "on a wrist. Smooth, deliberate pacing. Unboxing experience "
        "video. Premium commercial quality."
    ),
    "duration": 12,
    "quality": "1080p",
    "aspect_ratio": "9:16"
}

result = create_and_wait(payload)

開封フォーマットは長い duration が最適です — 10〜15秒 — 始まり(密封された箱)、中間(リビール)、終わり(使用中またはディスプレイ中の商品)のストーリーを語るためです。短いクリップは物語の弧を切り詰め、感情的なペイオフを失います。

開封プロンプトの構造

効果的な開封プロンプトは三幕構成に従います:

第1幕 — パッケージ(2〜3秒)。 パッケージを確立します。密封された箱と手の関わり、パッケージの素材、ブランド要素を記述します。

第2幕 — リビール(4〜6秒)。 蓋が開きます。ティッシュペーパー、フォームインサート、保護層が開きます。商品が初めて目に見えるようになります。これが感情のピークです — 感覚的なディテールで記述してください。

第3幕 — 商品(3〜5秒)。 商品が持ち上げられ、ディスプレイされ、または使用されます。腕時計が手首に装着される。イヤホンが耳に入る。スマートフォンの画面が点灯する。これで購入のファンタジーが完成します。

独特な、またはプレミアムなパッケージを持つ商品の場合は、箱が映った写真を入力画像として使用してください。白背景の商品写真しかない場合は、プロンプトでパッケージを記述し、モデルに生成させてください。実際のパッケージの参照画像を提供すると、より一貫した結果が得られます。

ここでは 9:16 の縦型フォーマットが主流です。開封コンテンツは主に Instagram Reels、TikTok、YouTube Shorts で配信されるためです。商品ページ用には、よりタイトなフレーミングの 16:9 編集を検討してください。カメラムーブメントガイドでは、開封シーケンスを強化するドラマチックなリビールやトップダウンアングルの記述方法を解説しています。

マーケティングアセットとしてのパッケージ

プレミアムブランドはパッケージデザインに多額の投資をしており、開封動画はその投資がカメラ上で成果を発揮する場です。商品に独特なパッケージ(カスタムボックス、マグネット式クロージャー、エンボスロゴ、ブランディング入りティッシュペーパー)がある場合は、入力画像が商品単体ではなく、パッケージ状態を捉えていることを確認してください。

高級パッケージのない商品 — 標準的な茶色の箱、ポリメーラー、最小限のリテールパッケージ — でも、理想的な開封体験を作成できます。地味なパッケージの商品でも、魅力的な開封動画を制作できます。プロンプトはリビールの瞬間に集中してください — 閉じた箱と中の商品のコントラスト。パッケージが標準的であっても、ストーリーの弧が動画を支えます。

動画タイプの組み合わせで完全なリスティングを構築

最も効果的な商品リスティングは、複数の動画タイプを組み合わせて使用します。商品ページの強力な組み合わせ:

  1. ヒーローショット(1本目の動画)— 注目を集め、プレミアムなポジショニングを確立
  2. 360° 回転(2本目の動画)— あらゆる角度から商品を紹介
  3. マクロクローズアップ(3本目の動画)— 素材ディテールで品質を証明
  4. ライフスタイルコンテキスト(4本目の動画)— 顧客が所有をイメージできるようにする

同じ商品のソーシャルメディアプロモーションでは、ヒーローショットまたは開封リビール(どちらもフィードでのスクロール停止に最適化)をリードに、ライフスタイルや回転コンテンツでリターゲティングします。

1枚の商品写真から5種類すべてを1回のパイプライン実行で生成できます。次のセクションのバッチシステムがこれを自動的に処理します。

マルチプラットフォーム書き出し:すべてのチャネルに対応するアスペクト比

1本の商品動画は有用です。チャネルが必要とするすべてのフォーマットで同じ動画があれば、それはシステムです。各プラットフォームにはアスペクト比の好み、自動再生の動作、最適な duration が異なります。単一の動画を生成��てクロップするとコンポジションが崩れます。各比率でネイティブに生成すれば、すべての画面に正しくフレーミングされた動画が得られます。

プラットフォームアスペクト比推奨 Duration備考
Amazon 商品ページ16:96〜8秒クリーン、情報的。リスティングでの自動再生。
Shopify 商品ページ16:96〜10秒自動再生ヒーローまたはギャラリー埋め込み。
Instagram Reels9:168〜10秒目を引く、速いテンポが好まれる。
TikTok9:168〜15秒トレンドスタイル、ダイナミックなトランジション。
Facebook フィード1:16〜8秒フィード面積を最大化するスクエア。
Pinterest 動画ピン1:1 または 9:166〜15秒モバイルでは縦型が最もパフォーマンスが高い。
Web サイトヒーローバナー16:94〜6秒短いループ、自動再生、音声なし。
YouTube Shorts9:168〜15秒TikTok と同様のフォーマット。
メールキャンペーン16:94〜6秒GIF フォールバック、ファイルサイズを小さく。

すべてのアスペクト比を一括生成

シンプルなループで、チャネルが必要とするすべてのアスペクト比で同じ商品動画を生成します:

platform_configs = [
    {"name": "amazon",    "aspect_ratio": "16:9", "duration": 8},
    {"name": "instagram", "aspect_ratio": "9:16", "duration": 10},
    {"name": "facebook",  "aspect_ratio": "1:1",  "duration": 8},
    {"name": "website",   "aspect_ratio": "16:9", "duration": 5},
]

base_prompt = (
    "@Image1 is a premium wireless speaker. The speaker rotates slowly "
    "on a matte black surface under soft studio lighting. Clean, minimal "
    "aesthetic. Commercial product video quality."
)

tasks = []
for config in platform_configs:
    payload = {
        "model": "seedance-2.0",
        "image_urls": ["https://your-cdn.com/products/speaker.jpg"],
        "prompt": base_prompt,
        "duration": config["duration"],
        "quality": "1080p",
        "aspect_ratio": config["aspect_ratio"]
    }
    task = generate_video(payload)
    tasks.append({"platform": config["name"], "task_id": task["task_id"]})
    print(f"📐 {config['name']} ({config['aspect_ratio']}): {task['task_id']}")
    time.sleep(1)  # Rate limiting

# Collect results
for t in tasks:
    result = wait_for_video(t["task_id"])
    print(f"✅ {t['platform']}: {result['output']['video_url']}")

これはすべてのバリアントを並列で送信し(レート制限として1秒間の間隔)、完了したものから結果を収集します。100商品 x 4プラットフォームのカタログの場合、400本の動画が TV エピソード1本を見る程度の時間で生成されます。

このパターンは4つのバリアントをすべて送信し、完了したものから結果を収集します。合計生成時間は1本の動画とほぼ同等です。4つすべてがサーバーサイドで並列処理されます。

ネイティブ比率がクロップに勝る理由

プロンプトはアスペクト比間で同一のままです。Seedance 2.0 はクロップではなく、各アスペクト比にネイティブに合わせてシーンを再構成し、フレーミングと空間レイアウトを調整します。回転動画の 9:16 縦型バージョンは商品を中央に配置し、より多くのヘッドルームを確保します。1:1 スクエアバージョンはフレーミングを引き締め、フィードでの商品視認性を最大化します。

従来の動画編集では、16:9 のマスターファイルをクロップしてマルチプラットフォーム対応します。9:16 へのセンタークロップはフレームの両側を失います。1:1 へのクロップはコンテキストを失います。Seedance 2.0 では、各比率がゼロから生成されます。モデルが各形状に適切にシーンを構成します。回転動画の 9:16 縦型バージョンは、商品により多くの縦方向の余白を持たせます。1:1 スクエアバージョンは、ソーシャルフィードでの商品視認性を最大化するためにフレーミングを引き締めます。商品は常にフレームの適切な割合を占めます。

プラットフォーム別プロンプト調整

同じベースプロンプトがアスペクト比間で機能しますが、各プラットフォームのコンテンツスタイルに最適化できます:

  • Amazon/Shopify (16:9): クリーンで情報的に。派手なトランジションを避ける。商品を明確に見せることに集中。
  • Instagram Reels (9:16): より速いテンポが効果的。より多くの視覚的動きのために、プロンプトに "dynamic" や "energetic" を追加。
  • TikTok (9:16): さらにダイナミックに。"Quick cuts"、"trend-style transitions"、"bold camera movements" が TikTok のビジュアル言語に合致。
  • Facebook フィード (1:1): スクエアフォーマットは強い中央構図が必要。商品を中央に記述:"product centered in frame"。
  • Web サイトヒーロー (16:9): 控えめさが勝ち。"Slow, hypnotic motion" と "seamless loop" がキーワード。これらの動画は無音で自動再生されるため、ナラティブよりもビジュアル品質が重要。

サポートされているすべてのアスペクト比を含む完全な API パラメータドキュメントは、動画生成 API ドキュメントを参照してください。

バッチパイプライン:CSV カタログから動画ライブラリへ

個別の API コールはテストに適しています。本番の EC では、商品カタログを読み込み、すべての SKU の動画を生成し、失敗を処理し、出力を整理するパイプラインが必要です。このセクションでそのパイプラインを構築します。

商品カタログを含む CSV ファイルから始めます:

name,image_url,category,style
Leather Bifold Wallet,https://cdn.example.com/wallet.jpg,accessories,rotation
Wireless Earbuds Pro,https://cdn.example.com/earbuds.jpg,electronics,hero
Ceramic Pour-Over Set,https://cdn.example.com/pourover.jpg,kitchen,lifestyle
Merino Wool Scarf,https://cdn.example.com/scarf.jpg,apparel,macro
Smart Fitness Watch,https://cdn.example.com/watch.jpg,electronics,unboxing

style 列は、このガイドで取り上げた5種類の動画タイプにマッピングされます。完全なパイプラインは以下の通りです:

import csv
import os
import time
import requests
from pathlib import Path

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.evolink.ai/v1"
OUTPUT_DIR = Path("./product_videos")
OUTPUT_DIR.mkdir(exist_ok=True)

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

# Prompt templates keyed by style
STYLE_PROMPTS = {
    "rotation": (
        "@Image1 is a {name}. The product rotates slowly on a clean surface "
        "under professional studio lighting. Smooth 360-degree turntable "
        "rotation. Commercial product showcase quality."
    ),
    "hero": (
        "@Image1 is a {name}. The product emerges dramatically from soft "
        "volumetric fog with a golden backlight. Particles drift upward. "
        "Cinematic slow reveal. Premium advertisement quality."
    ),
    "lifestyle": (
        "@Image1 is a {name}. The product is shown in a natural lifestyle "
        "setting, being used in an everyday context. Warm natural lighting. "
        "Shallow depth of field. Authentic lifestyle commercial."
    ),
    "macro": (
        "@Image1 is a {name}. Extreme macro close-up. The camera glides "
        "across the surface, revealing material texture and craftsmanship "
        "details. Shallow depth of field. Raking directional light. "
        "Luxury product detail shot."
    ),
    "unboxing": (
        "@Image1 is a {name} in retail packaging. Hands lift the lid to "
        "reveal the product inside. Tissue paper parts. The product is "
        "lifted out and displayed. Soft overhead lighting. Premium "
        "unboxing experience video."
    ),
}

STYLE_DEFAULTS = {
    "rotation":  {"duration": 8,  "aspect_ratio": "16:9"},
    "hero":      {"duration": 10, "aspect_ratio": "16:9"},
    "lifestyle": {"duration": 8,  "aspect_ratio": "9:16"},
    "macro":     {"duration": 8,  "aspect_ratio": "16:9"},
    "unboxing":  {"duration": 12, "aspect_ratio": "9:16"},
}


def submit_video_task(name: str, image_url: str, style: str) -> str:
    """Submit a single video generation task. Returns task_id."""
    prompt_template = STYLE_PROMPTS.get(style, STYLE_PROMPTS["rotation"])
    defaults = STYLE_DEFAULTS.get(style, STYLE_DEFAULTS["rotation"])

    payload = {
        "model": "seedance-2.0",
        "image_urls": [image_url],
        "prompt": prompt_template.format(name=name),
        "duration": defaults["duration"],
        "quality": "1080p",
        "aspect_ratio": defaults["aspect_ratio"],
    }

    resp = requests.post(
        f"{BASE_URL}/videos/generations", headers=headers, json=payload
    )
    resp.raise_for_status()
    return resp.json()["task_id"]


def poll_task(task_id: str, timeout: int = 300) -> dict:
    """Poll until task completes or fails."""
    elapsed = 0
    while elapsed < timeout:
        resp = requests.get(f"{BASE_URL}/tasks/{task_id}", headers=headers)
        resp.raise_for_status()
        task = resp.json()

        if task["status"] == "completed":
            return task
        elif task["status"] == "failed":
            raise RuntimeError(f"Task {task_id} failed: {task.get('error')}")

        time.sleep(5)
        elapsed += 5

    raise TimeoutError(f"Task {task_id} timed out after {timeout}s")


def download_video(url: str, filepath: Path):
    """Download a video file from a URL."""
    resp = requests.get(url, stream=True)
    resp.raise_for_status()
    with open(filepath, "wb") as f:
        for chunk in resp.iter_content(chunk_size=8192):
            f.write(chunk)
    print(f"💾 Saved: {filepath}")


def process_catalog(csv_path: str, max_retries: int = 2):
    """Process an entire product catalog CSV into videos."""
    # Phase 1: Submit all tasks
    pending = []
    with open(csv_path, "r") as f:
        reader = csv.DictReader(f)
        for row in reader:
            name = row["name"]
            image_url = row["image_url"]
            style = row.get("style", "rotation")

            for attempt in range(max_retries + 1):
                try:
                    task_id = submit_video_task(name, image_url, style)
                    pending.append({
                        "name": name,
                        "task_id": task_id,
                        "style": style,
                    })
                    print(f"🎬 Submitted: {name} ({style}) → {task_id}")
                    time.sleep(1)  # Rate limiting: 1 request per second
                    break
                except requests.exceptions.RequestException as e:
                    if attempt < max_retries:
                        print(f"⚠️  Retry {attempt + 1} for {name}: {e}")
                        time.sleep(3)
                    else:
                        print(f"❌ Failed to submit {name}: {e}")

    # Phase 2: Collect results
    results = []
    for item in pending:
        try:
            task = poll_task(item["task_id"])
            video_url = task["output"]["video_url"]

            # Generate safe filename
            safe_name = item["name"].lower().replace(" ", "-")
            filename = f"{safe_name}_{item['style']}.mp4"
            filepath = OUTPUT_DIR / filename

            download_video(video_url, filepath)
            results.append({
                "name": item["name"],
                "style": item["style"],
                "file": str(filepath),
                "status": "success"
            })
        except Exception as e:
            print(f"❌ Failed: {item['name']}: {e}")
            results.append({
                "name": item["name"],
                "style": item["style"],
                "file": None,
                "status": f"error: {e}"
            })

    # Summary
    success = sum(1 for r in results if r["status"] == "success")
    print(f"\n📊 Complete: {success}/{len(results)} videos generated")
    return results


# Run it
results = process_catalog("products.csv")

パイプラインは2つのフェーズで動作します。フェーズ 1 はすべてのタスクを(レート制限付きで)高速に送信し、タスク ID を保存します。フェーズ 2 は各タスクをポーリングし、結果をダウンロードします。これにより並列性が最大化されます — すべての動画がサーバーサイドで同時に生成されます。

ポーリングの代わりにコールバックを使用

大規模なカタログ(100商品以上)では、ポーリングは非効率になります。callback_url パラメータを使用して、各動画の完了時に Webhook を受信します。完全な Webhook ペイロード仕様については、API ドキュメントのコールバックパラメータを参照してください。

payload = {
    "model": "seedance-2.0",
    "image_urls": ["https://your-cdn.com/products/item.jpg"],
    "prompt": "@Image1 is a product. Smooth rotation. Studio lighting.",
    "duration": 8,
    "quality": "1080p",
    "aspect_ratio": "16:9",
    "callback_url": "https://your-server.com/webhooks/video-ready"
}

Webhook エンドポイントは、動画 URL を含む完了したタスクオブジェクトの POST を受信します。これによりポーリングが完全に排除され、結果を非同期で処理できます — 動画のダウンロード、商品データベースの更新、CDN へのプッシュを1つの Webhook ハンドラーで実行できます。

パイプラインのヒント

  • レート制限: リクエストは1秒に1回に抑えてください。バーストでの送信はスロットリングを引き起こす可能性があります。
  • 動画 URL の有効期限: 24時間以内にダウンロードしてください。上記のパイプラインは即座にダウンロードしますが、コールバックを使用する場合は、Webhook ハンドラーが迅速にダウンロードするようにしてください。
  • リトライロジック: ネットワークエラーは発生します。パイプラインは失敗した送信を3秒のバックオフで最大2回リトライします。
  • 出力の整理: ファイル名規則 {product-name}_{style}.mp4 により、動画ライブラリが閲覧しやすくなります。商品ごとに複数のアスペクト比を生成する場合は、ファイル名にアスペクト比を追加してください。
  • 冪等性: どの商品にすでに動画があるかを追跡してください。タスクを送信する前に、出力ファイルがすでに存在するか確認します。これにより、部分的な失敗後にパイプラインを再実行した際の重複生成を防げます。
  • コスト監視: 実行ごとに生成された動画数をログに記録してください。動画1本あたり数セントなのでコストは低く抑えられますが、暴走ループや設定ミスの CSV が意図せず数千のリクエストを送信する可能性があります。確認プロンプトや --dry-run フラグを追加してください。

基本を超えたスケーリング

1,000 SKU を超えるカタログの場合、以下の強化を検討してください:

並行ポーリング。 上記のパイプラインはタスクを順次ポーリングします。Python の concurrent.futures.ThreadPoolExecutor を使用して複数のタスクを並列でポーリングし、合計の経過時間を短縮します。

データベーストラッキング。 インメモリの results リストを、実行間で永続化される SQLite データベースまたはシンプルな JSON ファイルに置き換えます。タスク ID、完了ステータス、出力ファイルパス、タイムスタンプを追跡します。これにより、中断後にパイプラインを再開できます。

CDN アップロード。 ダウンロード後、CDN(S3、CloudFront、Cloudflare R2)に自動アップロードし、パブリック URL を保存します。これにより、ホスティングインフラへのファイル転送の手作業が不要になります。

メタデータ生成。 動画と一緒に JSON マニフェストを生成し、商品名、動画タイプ、アスペクト比、duration、CDN URL を含めます。このマニフェストは、自動化されたリスティング更新のために CMS や商品情報管理(PIM)システムに直接フィードされます。

EC 向けプロンプトテンプレートライブラリ

最も一般的な EC 商品カテゴリー向けのコピー&ペースト対応プロンプトです。各テンプレートは指定された商品タイプ用に設計されており、そのカテゴリーの商品写真と直接使用できます。{name} プレースホルダーに商品名を入れ替えてください。

ECOMMERCE_PROMPTS = {
    "jewelry": {
        "prompt": (
            "@Image1 is {name}. Extreme close-up on a black velvet surface. "
            "The piece rotates slowly under pinpoint spotlights. Light refracts "
            "through gemstones, casting prismatic reflections. Shallow depth of "
            "field. The camera pulls back to reveal the full piece. Luxury "
            "jewelry advertisement quality."
        ),
        "duration": 10,
        "aspect_ratio": "1:1",
    },
    "electronics": {
        "prompt": (
            "@Image1 is {name}. The device sits on a minimal desk setup. "
            "Screen illuminates, casting a soft glow. Camera orbits slowly, "
            "showing ports, buttons, and build quality from every angle. "
            "Clean, modern aesthetic. Tech product showcase."
        ),
        "duration": 10,
        "aspect_ratio": "16:9",
    },
    "apparel": {
        "prompt": (
            "@Image1 is {name}. The garment is displayed on an invisible "
            "mannequin form, rotating slowly. Fabric moves naturally with "
            "gentle airflow, showing drape and texture. Soft diffused "
            "studio lighting. Clean white background. Fashion e-commerce "
            "product video."
        ),
        "duration": 8,
        "aspect_ratio": "9:16",
    },
    "food_beverage": {
        "prompt": (
            "@Image1 is {name}. Steam rises gently. Camera pushes in slowly "
            "from a wide tabletop shot to an appetizing close-up. Warm, "
            "golden-hour lighting. Shallow depth of field. Ingredients or "
            "garnishes are visible in beautiful detail. Food photography "
            "in motion."
        ),
        "duration": 8,
        "aspect_ratio": "1:1",
    },
    "furniture": {
        "prompt": (
            "@Image1 is {name}. Placed in a styled modern living room with "
            "natural light streaming through large windows. Camera dollies "
            "slowly around the piece, showing form and proportion in context. "
            "Warm afternoon light. Interior design showcase quality."
        ),
        "duration": 10,
        "aspect_ratio": "16:9",
    },
    "cosmetics": {
        "prompt": (
            "@Image1 is {name}. The product sits on a marble surface with "
            "soft pink and gold tones. A gentle pour or squeeze dispenses "
            "the product, showing color and texture. Macro close-up of the "
            "formula. Smooth, luxurious pacing. Beauty brand advertisement."
        ),
        "duration": 8,
        "aspect_ratio": "9:16",
    },
    "sports_gear": {
        "prompt": (
            "@Image1 is {name}. Dynamic presentation against a dark "
            "background with dramatic side lighting. The product rotates "
            "with energy — quick cuts between angles showing key features. "
            "Subtle motion graphics energy. Athletic brand commercial style."
        ),
        "duration": 8,
        "aspect_ratio": "16:9",
    },
    "home_decor": {
        "prompt": (
            "@Image1 is {name}. Displayed in a curated shelf vignette with "
            "complementary objects. Soft natural light. Camera slowly racks "
            "focus from background to the product. Cozy, aspirational "
            "interior styling. Lifestyle brand aesthetic."
        ),
        "duration": 8,
        "aspect_ratio": "1:1",
    },
}


def generate_from_template(category: str, name: str, image_url: str) -> dict:
    """Generate a video using a category-specific prompt template."""
    template = ECOMMERCE_PROMPTS[category]
    payload = {
        "model": "seedance-2.0",
        "image_urls": [image_url],
        "prompt": template["prompt"].format(name=name),
        "duration": template["duration"],
        "quality": "1080p",
        "aspect_ratio": template["aspect_ratio"],
    }
    return create_and_wait(payload)


# Example usage
result = generate_from_template(
    category="jewelry",
    name="18K gold pendant necklace with emerald",
    image_url="https://your-cdn.com/products/emerald-pendant.jpg"
)

これらのテンプレートは出発点です。ライティングの記述やカメラワークをブランドのビジュアルアイデンティティに合わせて調整してください。完全なプロンプトガイドでは、Seedance 2.0 の出力を微調整するための高度なテクニックを解説しています。

ブランドに合わせたテンプレートのカスタマイズ

すべてのブランドにはビジュアル言語があります。Apple はクリーンな白い環境と精密でゆっくりとしたカメラワークを使用します。Nike はダイナミックなハイコントラストライティングと速いカットを使用します。商品動画は、ブランドの確立された美学を反映すべきです。

以下の軸に沿ってテンプレートを修正してください:

  • ライティングトーン: アーティザン/ラグジュアリーブランドにはウォーム(ゴールド、アンバー)。テックにはクール(ブルー、シルバー)。ミニマリストブランドにはニュートラル(ホワイト、ソフト)。
  • カメラスピード: プレミアムなポジショニングにはゆっくりとした意図的な動き。若者向けやスポーツブランドにはより速くダイナミックな動き。
  • 背景: ダークな背景はラグジュアリーを示す。白い背景はクリーン/モダンを示す。環境的な背景はライフスタイルを示す。
  • ペーシングのボキャブラリー: "Slow, measured" vs. "dynamic, energetic" vs. "calm, meditative" — これらの言葉がモデルの出力テンポに直接影響します。

ブランドのマスタープロンプトプレフィックス — すべての商品動画プロンプトの前に追加する用語のセット — を構築し、カタログ全体に一貫して適用してください。これにより、単一のスタジオセットアップから得られる一貫性を模倣し、数百の商品動画にわたる視覚的な統一感が生まれます。

FAQ

商品動画の生成にはいくらかかりますか?

料金は duration と品質設定に依存します。1080p 品質の標準的な8秒動画は数セントです。カタログ全体で500本の商品動画を生成しても、ほとんどの設定で $100 をはるかに下回ります。現在のレートは EvoLink の料金ページで確認してください。スタジオが動画1本あたり $500〜$2,000 を請求するのと比較すると、API のコストはどのスケールでも事実上無視できる水準です。

実際の人物モデル写真を入力として使用できますか?

Seedance 2.0 には、ディープフェイクの悪用を防ぐため、リアルな人物の顔の生成に制限があります。商品のみの写真は制限なく使用できます。商品を人物と一緒に表示する必要がある場合 — モデルが着用する衣服、手首の腕時計 — フォトリアリスティックな肖像画ではなく、イラストやスタイライズされた人物の参照を使用してください。あるいは、プロンプトで人物の要素を記述し(例:"a hand reaches into frame")、顔写真を入力として提供する代わりにモデルに生成させてください。

動画生成にはどのくらい時間がかかりますか?

一般的な生成時間は、duration と品質設定に応じて60〜180秒です。720p の5秒動画は約1分で完了します。1080p の15秒動画は最大3分かかる場合があります。このガイドのバッチパイプラインは、ポーリングを通じてタイミングを自動的に処理します。本番システムでは、ポーリングの代わりに callback_url パラメータを使用して完了時に Webhook を受信してください。

ブランドロゴやテキストオーバーレイを追加できますか?

2つのアプローチが有効です。まず、プロンプトにテキストの記述を含めます — "Brand name fades in at the end" や "Logo watermark in lower right corner"。モデルはテキスト風の要素を生成できますが、正確なタイポグラフィは保証されません。2つ目の、より確実な方法として、テキストなしで動画を生成し、FFmpeg、After Effects、または任意の動画編集ツールを使用してポストプロダクションでロゴ、タイトル、ローワーサードを合成します。2つ目のアプローチにより、ブランドアセットを正確にコントロールできます。

動画品質は商用利用に十分ですか?

1080p 品質では、出力は商品リスティング、ソーシャルメディア広告、Web サイトのヒーローセクションに適しています。ビジュアル品質は、ほとんどの EC チームが基本的なスタジオセットアップで制作するものと同等か、それ以上です。ハイエンドのブランドキャンペーンやテレビ放送では、AI 生成動画をプリビズまたは出発点として使用し、従来のポストプロダクションで磨きをかけることをお勧めします。EC のユースケースの大部分 — Amazon、Shopify、ソーシャル広告、メールキャンペーン — では、出力はそのまま本番利用可能です。

入力に最適な画像フォーマットと解像度は?

JPEG と PNG の両方が使用できます。透明背景を持つ PNG は、クリーンな背景置換が必要な商品に理想的です。解像度については、利用可能な最高品質のソース画像を提供してください — 最低1024x1024ピクセル。モデルは高解像度の入力からより多くのディテールを抽出します。これはマクロクローズアップや回転動画で特に顕著です。目に見えるアーティファクトを持つ過度に圧縮された JPEG は避けてください。これらは生成された動画にそのまま持ち越されます。

オーディオや音楽付きの動画を生成できますか?

Seedance 2.0 は generate_audio パラメータをサポートしており、動画にコンテキストに応じた効果音を追加します。商品動画では、アンビエントなスタジオサウンドや控えめなスウーシュがプレミアム感を高めることができます。ただし、ほとんどの EC プラットフォームは動画を無音で自動再生するため、ビジュアル品質の方がはるかに重要です。特定の音楽やナレーションが必要な場合は、ポストプロダクションで追加してください。API はオーディオガイド生成用の audio_urls もサポートしています — 詳細はマルチモーダルリファレンスドキュメントを参照してください。

Shopify や Amazon とどのように統合しますか?

ワークフローは:動画を生成 → MP4 をダウンロード → プラットフォームにアップロードです。Shopify の場合、管理画面または Shopify API を通じて商品メディアに直接動画をアップロードします。Amazon の場合、Seller Central の「動画の管理」セクションまたは SP-API を通じてアップロードします。フルループを自動化するには、callback_url 付きのバッチパイプラインを使用します — Webhook ハンドラーが動画をダウンロードし、プラットフォームの API に自動的にプッシュできます。マルチモーダルリファレンスドキュメントでは、インテグレーション構築のための完全な API レスポンスフォーマットを解説しています。

スタジオから API へ:新しい動画パイプライン

5種類の動画タイプが EC 商品動画の全スペクトラムをカバーします:商品ページ用の360°回転、ローンチ用のヒーローショット、感情的なつながりのためのライフスタイルコンテキスト、品質認識のためのマクロクローズアップ、ソーシャルコンテンツ用の開封リビール。各タイプに必要なのは、1枚の商品写真と1回の API コールです。

バッチパイプラインは CSV カタログを完全な動画ライブラリに変換します。マルチプラットフォーム書き出しは、チャネルが必要とするすべてのアスペクト比を一括で生成します。プロンプトテンプレートライブラリは、あらゆる商品カテゴリーのコピー&ペースト対応の出発点を提供します。

ワークフロー全体 — 商品写真からすべての販売チャネルでの公開動画まで — が数週間から数時間に圧縮されます。1人の開発者が、以前は制作チーム、スタジオ、ポストプロダクション編集者を必要としていた動画パイプラインを運用できます。

これは従来の動画制作に対する段階的な改善ではありません。構造的な変化です。EC 動画のボトルネックはクリエイティブなビジョンではありませんでした。コストとロジスティクスでした。1本の動画が数セントで2分で完成するとき、問いは「どの商品に動画が必要か?」から「なぜすべての商品に動画がないのか?」に変わります。

1つの商品から始めましょう。回転動画を生成してください。3分で結果を確認できます。そしてカタログ全体にスケールしてください。1本の動画を生成するのも1万本を生成するのも、API は同じです。

動画制作パイプラインを置き換えましょう。EvoLink に無料登録 →


このシリーズの過去の記事:Seedance 2.0 プロンプトガイド · マルチモーダル @Tags ガイド · カメラムーブメントガイド · 画像から動画チュートリアル

Ready to get started?

Top up and start generating cinematic AI videos in minutes.