Seedance 2.0 API로 이커머스 AI 상품 영상 제작하기
Seedance 2.0 API를 사용하여 상품 사진에서 이커머스 영상을 생성하세요. 5가지 영상 유형, 배치 파이프라인, 멀티 플랫폼 내보내기. 완전한 Python 코드 포함.

카탈로그의 모든 상품에는 영상이 필요합니다. 이제 상품 사진 한 장으로 3분 이내에 완성도 높은 영상 광고를 만들 수 있습니다. 촬영팀도, 스튜디오 대여도, 후반 작업 일정도 필요 없습니다. Seedance 2.0 — ByteDance의 최신 영상 생성 모델 — 은 간단한 API 호출 하나로 정적인 상품 이미지를 방송 품질의 클립으로 변환합니다. 이 가이드에서는 이커머스를 위한 5가지 영상 유형, 전체 카탈로그 대상 배치 파이프라인, 멀티 플랫폼 내보내기 전략을 안내합니다. 모든 코드 예제는 프로덕션 환경에서 바로 사용할 수 있는 Python입니다.
상품 영상이 중요한 이유 (그리고 스튜디오가 구식이 되는 이유)
영상이 포함된 상품 리스팅은 일관되게 영상이 없는 리스팅보다 높은 성과를 보입니다. Shopify의 상품 미디어 모범 사례에 따르면, 상품 페이지에 영상을 추가한 판매자는 참여도와 전환율이 측정 가능하게 높아졌습니다. Amazon 자체 셀러 가이드라인도 모든 리스팅에 영상을 적극 권장하고 있으며, A+ Content 프로그램에서는 영상이 포함된 페이지를 검색 결과에서 우선 표시합니다.
"영상이 효과적이라는 것을 아는 것"과 "실제로 영상을 제작하는 것" 사이의 격차는 역사적으로 매우 컸습니다. 스튜디오 시간, 조명, 장비, 촬영 기사, 기본 편집을 포함한 상품 영상 촬영 한 건의 비용은 일반적으로 SKU당 $500~$2,000입니다. 200개 상품이 있는 카탈로그라면 파일 하나 업로드하기도 전에 6자리 비용이 발생합니다.
| 기존 스튜디오 | Seedance 2.0 API | |
|---|---|---|
| 영상당 비용 | $500~$2,000 | $0.02~$0.15 |
| 소요 시간 | 영업일 기준 3~10일 | 60~180초 |
| 필요한 준비물 | 스튜디오, 촬영팀, 장비 | 상품 사진 한 장 |
| 500 SKU로 확장 | $250K~$1M+ | $75 미만 |
| 수정 속도 | 재촬영 필요 | 프롬프트 변경 후 재생성 |
| 화면 비율 변형 | 포맷별 별도 편집 | 파라미터 하나 변경 |
경제성은 비교 자체가 불가능합니다. AI 상품 영상 생성은 $50,000짜리 브랜드 필름을 대체하는 것이 아닙니다. 대부분의 이커머스 팀이 완전히 건너뛰거나 높은 비용으로 외주를 주는 반복적인 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)
이후의 모든 코드 예제는 이 동일한 설정을 사용합니다. 각 영상 유형에 고유한 payload만 표시합니다.
create_and_wait 함수는 전체 라이프사이클을 처리합니다: 작업 제출, 완료까지 폴링, 영상 URL 반환. 영상 URL은 24시간 후 만료되므로 즉시 다운로드하거나 자산 관리 시스템으로 직접 파이프하세요.
폴링 방식은 인터랙티브 스크립트와 소규모 배치에 적합합니다. 수백 개의 상품을 처리하는 프로덕션 파이프라인에서는 callback_url 파라미터(배치 파이프라인 섹션에서 다룸)를 사용하면 폴링 오버헤드를 완전히 제거할 수 있습니다.
아래의 모든 코드 예제는 서로 다른 payload 딕셔너리로 create_and_wait(payload)를 호출합니다. 위의 설정 코드가 필요한 유일한 보일러플레이트입니다.
영상 유형 1: 360° 상품 회전
턴테이블 회전은 이커머스 영상의 핵심입니다. 흰색 배경의 상품 사진 한 장이 부드럽게 회전하는 쇼케이스 영상이 됩니다 — 이전에는 모터 구동 턴테이블과 세심한 조명이 필요했던 종류의 클립입니다. 이 포맷은 어디서나 작동합니다: Amazon 리스팅, Shopify 상품 페이지, 소셜 광고.
다음은 럭셔리 시계 회전을 위한 payload입니다:
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." 이러한 용어들은 모델이 더 깔끔하고 세련된 결과물을 출력하도록 유도합니다.
회전 팁
| 파라미터 | 권장 값 | 이유 |
|---|---|---|
| Duration | 6~10초 | 전체 회전에 최소 6초가 필요하며, 그렇지 않으면 급하게 보임 |
| Aspect ratio | 16:9 또는 1:1 | 16:9는 웹/Amazon용, 1:1은 소셜 피드용 |
| Quality | 1080p | 상품 콘텐츠에는 항상 1080p |
| 프롬프트 내 배경 | 어두운 반사면 또는 흰색 | 브랜드의 상품 페이지 미학에 맞추기 |
복잡한 디테일이 있는 상품 — 주얼리, 시계, 전자기기 — 의 경우 duration을 10초로 늘리세요. 추가 프레임이 모델에게 모션 블러 아티팩트 없이 회전 중 표면 디테일을 렌더링할 여유를 줍니다.
회전 영상을 위한 배경 전략
소스 이미지의 배경은 출력에 크게 영향을 미칩니다. 일반적인 시나리오를 처리하는 방법은 다음과 같습니다:
흰색 배경 (이상적). 흰색 배경의 표준 이커머스 상품 사진이 완벽하게 작동합니다. 모델이 상품을 보존하고 깨끗한 회전 동작을 생성합니다. 흰색 배경을 유지하거나 프롬프트에서 다른 배경을 설명할 수 있습니다.
투명 배경 (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)
히어로 샷 프롬프트는 회전과 다른 어휘를 사용합니다. 여기서는 단일 연속 동작이 아닌 시퀀스를 연출합니다. 각 문장을 스토리보드의 한 장면으로 생각하세요.
히어로 샷 프롬프트 패턴
등장(The Emergence): 상품이 연기, 안개 또는 파티클에서 솟아오릅니다. 테크 제품, 향수, 프리미엄 상품에 적합합니다.
@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.
임팩트 랜딩(The Impact Landing): 상품이 에너지와 함께 프레임에 착지합니다 — 스플래시, 산산조각, 폭발.
@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.
조립(The Assembly): 부품들이 날아와 완성된 상품을 형성합니다. 테크 및 모듈형 제품에 적합합니다.
@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 광고는 극적인 상품 공개의 중단력(stopping power)에서 이점을 얻습니다. 이 클립들은 스크롤이 많은 피드에서 주의를 끕니다.
- 웹사이트 히어로 섹션. 자동 재생되는 히어로 샷이 스크롤 위에서 즉시 브랜드 품질을 전달합니다. 성능 문제를 피하려면 히어로 배너에서 duration을 6초 이하로 유지하세요.
히어로 샷은 고객이 정보성 콘텐츠를 원하는 상품 상세 페이지에는 적합하지 않습니다. 극적인 연출은 퍼널 상단 마케팅에 남겨두고, 상품 페이지 자체에는 회전 영상과 매크로 영상을 사용하세요.
이커머스 외의 프롬프트 엔지니어링 팁과 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. 듀얼 이미지 라이프스타일
상품 이미지 하나만으로도 라이프스타일 영상을 생성할 수 있습니다 — 프롬프트에서 장면을 완전히 설명하면 됩니다. 듀얼 이미지 모드(@Image1 + @Image2)는 모델이 텍스트 설명이 아닌 장면의 시각적 참조를 갖기 때문에 더 일관된 환경을 생성합니다.
각 접근 방식을 사용할 때:
- 단일 이미지 + 설명적 프롬프트: 빠르고 간편합니다. 장면이 일반적일 때(예: "on a desk," "in a kitchen") 적합합니다. 두 번째 참조 이미지를 소싱할 필요가 없습니다.
- 듀얼 이미지 (상품 + 장면 참조): 더 높은 품질의 합성. 특정 환경이 중요할 때 사용합니다 — 특정 카페 미학, 브랜드 리테일 공간, 브랜드 가이드라인에 맞는 큐레이팅된 라이프스타일 세팅.
듀얼 이미지 모드에서 장면 참조는 자체 사진일 필요가 없습니다. 스톡 사진도 환경 참조로 잘 작동합니다. 모델이 @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.
이러한 소재 클로즈업은 상품 리스팅에서 두 번째 또는 세 번째 영상으로 특히 강력합니다. 고객이 전체 상품(회전 또는 히어로 샷)을 본 후, 매크로 디테일 영상이 품질 인식을 강화합니다. 이러한 공개를 향상시키는 카메라 움직임 기법에 대해서는 카메라 움직임 가이드를 참조하세요.
영상 유형 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초 — 시작(밀봉된 박스), 중간(공개), 끝(사용 또는 전시 중인 상품)이 있는 스토리를 전달하기 때문입니다. 짧은 클립은 서사적 흐름을 단절시키고 감정적 보상을 잃게 합니다.
언박싱 프롬프트 구조
효과적인 언박싱 프롬프트는 3막 구조를 따릅니다:
1막 — 패키지 (2~3초). 포장을 확립합니다. 밀봉된 박스와 상호작용하는 손, 포장 재질, 브랜드 요소를 설명합니다.
2막 — 공개 (4~6초). 뚜껑이 열립니다. 티슈페이퍼, 폼 인서트, 보호 레이어가 갈라집니다. 상품이 처음으로 보입니다. 이것이 감정의 절정입니다 — 감각적 디테일로 설명하세요.
3막 — 상품 (3~5초). 상품이 들어 올려지거나, 전시되거나, 사용됩니다. 시계가 손목에 채워집니다. 이어버드가 귀에 들어갑니다. 폰 화면이 켜집니다. 이것이 구매 환상을 완성합니다.
독특하거나 프리미엄 포장이 있는 상품의 경우, 박스가 보이는 사진을 입력 이미지로 사용하세요. 흰색 배경 위 상품 사진만 있다면, 프롬프트에서 포장을 설명하고 모델이 생성하도록 하세요. 실제 포장의 참조 이미지를 제공할 때 결과가 더 일관적입니다.
9:16 세로 포맷이 여기서 지배적인 이유는 언박싱 콘텐츠가 주로 Instagram Reels, TikTok, YouTube Shorts에서 소비되기 때문입니다. 상품 페이지에서는 더 타이트한 프레이밍의 16:9 편집을 고려하세요. 카메라 움직임 가이드에서는 언박싱 시퀀스를 향상시키는 극적인 공개와 탑다운 앵글 설명 방법을 다룹니다.
마케팅 자산으로서의 패키징
프리미엄 브랜드는 패키징 디자인에 많은 투자를 합니다 — 그리고 언박싱 영상은 그 투자가 카메라 앞에서 효과를 발휘하는 곳입니다. 독특한 포장(커스텀 박스, 자석 잠금, 엠보싱 로고, 브랜딩된 티슈페이퍼)이 있는 상품이라면, 입력 이미지가 상품 자체만이 아닌 포장된 상태를 캡처하도록 하세요.
럭셔리 포장이 없는 상품 — 표준 갈색 박스, 폴리 메일러, 최소한의 리테일 포장 — 에서도 영감을 주는 언박싱 경험을 만들 수 있습니다. 평범한 포장의 상품도 매력적인 언박싱 영상을 만들 수 있습니다. 프롬프트를 공개 순간에 집중하세요 — 닫힌 박스와 내부 상품 사이의 대비. 포장이 표준적이더라도 서사적 흐름이 영상을 이끌어갑니다.
완전한 리스팅을 위한 영상 유형 조합
가장 효과적인 상품 리스팅은 여러 영상 유형을 함께 사용합니다. 상품 페이지에 강력한 조합:
- 히어로 샷 (첫 번째 영상) — 주의를 끌고 프리미엄 포지셔닝을 확립
- 360° 회전 (두 번째 영상) — 모든 각도에서 상품을 보여줌
- 매크로 클로즈업 (세 번째 영상) — 소재 디테일을 통해 품질을 증명
- 라이프스타일 컨텍스트 (네 번째 영상) — 고객이 소유를 시각화하도록 도움
동일 상품의 소셜 미디어 프로모션에서는 히어로 샷 또는 언박싱 공개(둘 다 피드에서 엄지를 멈추도록 최적화)로 시작한 후, 라이프스타일과 회전 콘텐츠로 리타겟팅하세요.
한 장의 상품 사진으로 5가지 유형 모두를 한 번의 파이프라인 실행으로 생성할 수 있습니다. 다음 섹션의 배치 시스템이 이를 자동으로 처리합니다.
멀티 플랫폼 내보내기: 모든 채널을 위한 화면 비율
하나의 상품 영상은 유용합니다. 채널이 필요로 하는 모든 포맷의 동일한 영상은 시스템입니다. 각 플랫폼은 서로 다른 화면 비율 선호도, 자동 재생 동작, 최적 duration을 가집니다. 단일 영상을 생성하고 잘라서 맞추면 구도가 파괴됩니다. 각 비율로 네이티브하게 생성하면 모든 화면에 맞게 올바르게 프레이밍된 영상을 얻습니다.
| 플랫폼 | 화면 비율 | 권장 Duration | 참고 |
|---|---|---|---|
| Amazon 상품 페이지 | 16:9 | 6~8초 | 깔끔하고 정보적. 리스팅 내 자동 재생. |
| Shopify 상품 페이지 | 16:9 | 6~10초 | 히어로 자동 재생 또는 갤러리 임베드. |
| Instagram Reels | 9:16 | 8~10초 | 시선을 끄는, 빠른 페이싱 선호. |
| TikTok | 9:16 | 8~15초 | 트렌딩 스타일, 다이나믹 전환. |
| Facebook 피드 | 1:1 | 6~8초 | 피드 면적 최대화를 위한 정사각형. |
| Pinterest 비디오 핀 | 1:1 또는 9:16 | 6~15초 | 모바일에서 세로형이 가장 좋은 성과. |
| 웹사이트 히어로 배너 | 16:9 | 4~6초 | 짧은 루프, 자동 재생, 오디오 없음. |
| YouTube Shorts | 9:16 | 8~15초 | TikTok 포맷과 유사. |
| 이메일 캠페인 | 16:9 | 4~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 에피소드를 보는 시간 동안 생성됩니다.
이 패턴은 4개 변형을 모두 제출한 후 완료되는 대로 결과를 수집합니다. 총 생성 시간은 단일 영상과 거의 동일합니다 — 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."
- 웹사이트 히어로 (16:9): 절제가 승리합니다. "Slow, hypnotic motion"과 "seamless loop"이 핵심 용어입니다. 이 영상들은 소리 없이 자동 재생되므로 내러티브보다 시각적 품질이 더 중요합니다.
지원되는 모든 비율을 포함한 전체 API 파라미터 문서는 영상 생성 API 문서를 참조하세요.
배치 파이프라인: CSV 카탈로그에서 영상 라이브러리로
개별 API 호출은 테스트에 적합합니다. 프로덕션 이커머스에는 파이프라인이 필요합니다: 상품 카탈로그를 읽고, 모든 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단계에서 모든 작업을 빠르게 제출(속도 제한 포함)하고 task ID를 저장합니다. 2단계에서 각 작업을 폴링하고 결과를 다운로드합니다. 이를 통해 병렬성을 극대화합니다 — 모든 영상이 서버 측에서 동시에 생성됩니다.
폴링 대신 콜백 사용
대규모 카탈로그(100개 이상 상품)에서는 폴링이 비효율적입니다. callback_url 파라미터를 사용하여 각 영상이 완료될 때 웹훅을 수신합니다. 전체 웹훅 페이로드 사양은 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"
}
웹훅 엔드포인트가 영상 URL을 포함한 완료된 작업 객체와 함께 POST를 수신합니다. 이를 통해 폴링을 완전히 제거하고 결과를 비동기적으로 처리할 수 있습니다 — 영상 다운로드, 상품 데이터베이스 업데이트, CDN으로 푸시를 단일 웹훅 핸들러에서 수행합니��.
파이프라인 팁
- 속도 제한: 요청을 초당 1개로 유지합니다. 버스트 제출은 스로틀링을 유발할 수 있습니다.
- 영상 URL 만료: 24시간 이내에 다운로드합니다. 위 파이프라인은 즉시 다운로드하지만, 콜백을 사용하는 경우 웹훅 핸들러가 즉시 다운로드하도록 보장하세요.
- 재시도 로직: 네트워크 오류는 발생합니다. 파이프라인은 실패한 제출을 3초 백오프로 최대 2회 재시도합니다.
- 출력 정리:
{product-name}_{style}.mp4파일명 규칙이 영상 라이브러리를 탐색 가능하게 유지합니다. 상품당 여러 비율을 생성하는 경우 파일명에 화면 비율을 추가하세요. - 멱등성: 이미 영상이 있는 상품을 추적합니다. 작업을 제출하기 전에 출력 파일이 이미 존재하는지 확인합니다. 이를 통해 부분 실패 후 파이프라인을 재실행할 때 중복 생성을 방지합니다.
- 비용 모니터링: 실행당 생성된 영상 수를 로깅합니다. 영상당 몇 센트의 비용으로 비용은 낮게 유지되지만, 무한 루프나 잘못 구성된 CSV가 의도치 않게 수천 건의 요청을 제출할 수 있습니다. 확인 프롬프트나
--dry-run플래그를 추가하세요.
기본을 넘어서는 확장
1,000 SKU 이상의 카탈로그에서는 다음 개선 사항을 고려하세요:
동시 폴링. 위 파이프라인은 작업을 순차적으로 폴링합니다. Python의 concurrent.futures.ThreadPoolExecutor를 사용하여 여러 작업을 병렬로 폴링하면 총 실행 시간을 줄일 수 있습니다.
데이터베이스 추적. 메모리 내 results 리스트를 실행 간에 유지되는 SQLite 데이터베이스 또는 간단한 JSON 파일로 대체합니다. task ID, 완료 상태, 출력 파일 경로, 타임스탬프를 추적합니다. 이를 통해 중단 후 파이프라인을 재개할 수 있습니다.
CDN 업로드. 다운로드 후 CDN(S3, CloudFront, Cloudflare R2)에 자동으로 업로드하고 공개 URL을 저장합니다. 이를 통해 호스팅 인프라로 파일을 전송하는 수동 단계를 제거합니다.
메타데이터 생성. 영상과 함께 상품명, 영상 유형, 화면 비율, duration, CDN URL을 포함하는 JSON 매니페스트를 생성합니다. 이 매니페스트는 자동화된 리스팅 업데이트를 위해 CMS 또는 상품 정보 관리(PIM) 시스템에 직접 피드됩니다.
이커머스용 프롬프트 템플릿 라이브러리
가장 일반적인 이커머스 상품 카테고리를 위한 복사하여 붙여넣기 프롬프트입니다. 각 템플릿은 지정된 상품 유형에 맞게 설계되었으며 해당 카테고리의 모든 상품 사진에 직접 사용할 수 있습니다. {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과 품질 설정에 따라 달라집니다. 표준 8초 1080p 품질 영상은 몇 센트입니다. 전체 카탈로그에 대해 500개의 상품 영상을 생성해도 대부분의 구성에서 $100 미만입니다. 현재 요금은 EvoLink 가격을 확인하세요. 스튜디오가 영상당 $500~$2,000을 청구하는 것과 비교하면, API 비용은 어떤 규모에서든 사실상 무시할 수 있는 수준입니다.
실제 사람 모델 사진을 입력으로 사용할 수 있나요?
Seedance 2.0은 딥페이크 악용을 방지하기 위해 사실적인 인간 얼굴 생성에 제한이 있습니다. 상품 전용 사진은 제한 없이 작동합니다. 사람과 함께 상품을 보여줘야 하는 경우 — 모델 위의 의류, 손목 위의 시계 — 사실적인 초상화 대신 일러스트나 스타일화된 인간 참조를 사용하세요. 또는 프롬프트에서 인간 요소를 설명하고(예: "a hand reaches into frame") 얼굴 사진을 입력으로 제공하는 대신 모델이 생성하도록 하세요.
영상 생성에 얼마나 걸리나요?
일반적인 생성 시간은 duration과 품질 설정에 따라 60~180초입니다. 720p에서 5초 영상은 약 1분 만에 완료됩니다. 1080p에서 15초 영상은 최대 3분이 걸릴 수 있습니다. 이 가이드의 배치 파이프라인은 폴링을 통해 타이밍을 자동으로 처리합니다. 프로덕션 시스템에서는 폴링 대신 완료 시 웹훅을 수신하는 callback_url 파라미터를 사용하세요.
브랜드 로고나 텍스트 오버레이를 추가할 수 있나요?
두 가지 접근 방식이 있습니다. 첫째, 프롬프트에 텍스트 설명을 포함합니다 — "Brand name fades in at the end" 또는 "Logo watermark in lower right corner." 모델이 텍스트와 유사한 요소를 생성할 수 있지만, 정확한 타이포그래피는 보장되지 않습니다. 둘째, 더 안정적으로, 텍스트 없이 영상을 생성하고 FFmpeg, After Effects 또는 원하는 영상 편집 도구를 사용하여 후반 작업에서 로고, 타이틀 또는 하단 자막을 합성합니다. 두 번째 접근 방식이 브랜드 에셋에 대한 정확한 제어를 제공합니다.
영상 품질이 상업적 사용에 충분한가요?
1080p 품질에서 출력물은 상품 리스팅, 소셜 미디어 광고, 웹사이트 히어로 섹션에 적합합니다. 시각적 품질은 대부분의 이커머스 팀이 기본 스튜디오 설정으로 제작하는 것과 동등하거나 그 이상입니다. 하이엔드 브랜드 캠페인이나 방송 TV의 경우, AI 생성 영상을 프리비즈(previz) 또는 시작점으로 사용한 후 기존 후반 작업으로 정제할 수 있습니다. 이커머스 사용 사례의 대다수 — Amazon, Shopify, 소셜 광고, 이메일 캠페인 — 에서 출력물은 프로덕션 준비가 완료된 상태입니다.
입력에 가장 적합한 이미지 형식과 해상도는 무엇인가요?
JPEG과 PNG 모두 작동합니다. 투명도가 있는 PNG는 깨끗한 배경 교체가 필요한 상품에 이상적입니다. 해상도는 가능한 가장 높은 품질의 소스 이미지를 제공하세요 — 최소 1024x1024 픽셀. 모델이 높은 해상도 입력에서 더 많은 디테일을 추출하며, 이는 매크로 클로즈업과 회전 영상에서 특히 눈에 띕니다. 눈에 보이는 아티팩트가 있는 심하게 압축된 JPEG은 생성된 영상에 그대로 전달되므로 피하세요.
오디오나 음악이 포함된 영상을 생성할 수 있나요?
Seedance 2.0은 영상에 맥락에 맞는 사운드 이펙트를 추가하는 generate_audio 파라미터를 지원합니다. 상품 영상에서 앰비언트 스튜디오 사운드나 미묘한 스우시 효과가 프리미엄 느낌을 향상시킬 수 있습니다. 그러나 대부분의 이커머스 플랫폼은 소리 없이 영상을 자동 재생하므로, 시각적 품질이 훨씬 더 중요합니다. 특정 음악이나 보이스오버가 필요하면 후반 작업에서 추가하세요. API는 오디오 기반 생성을 위한 audio_urls도 지원합니다 — 자세한 내용은 멀티모달 참조 문서를 참조하세요.
Shopify나 Amazon과 어떻게 통합하나요?
워크플로우는 다음과 같습니다: 영상 생성 → MP4 다운로드 → 플랫폼에 업로드. Shopify의 경우 관리자 또는 Shopify API를 통해 영상을 상품 미디어에 직접 업로드합니다. Amazon의 경우 Seller Central의 "동영상 관리" 섹션 또는 SP-API를 통해 업로드합니다. 전체 루프를 자동화하려면 callback_url이 있는 배치 파이프라인을 사용하세요 — 웹훅 핸들러가 영상을 다운로드하고 자동으로 플랫폼 API로 푸시할 수 있습니다. 멀티모달 참조 문서에서 통합 구축을 위한 전체 API 응답 형식을 다룹니다.
스튜디오에서 API로: 새로운 영상 파이프라인
5가지 영상 유형이 이커머스 상품 영상의 전체 스펙트럼을 커버합니다: 상품 페이지용 360° 회전, 런칭용 히어로 샷, 감정적 연결을 위한 라이프스타일 컨텍스트, 품질 인식을 위한 매크로 클로즈업, 소셜 콘텐츠를 위한 언박싱 공개. 각 유형에는 상품 사진 한 장과 API 호출 한 번이 필요합니다.
배치 파이프라인은 CSV 카탈로그를 완전한 영상 라이브러리로 변환합니다. 멀티 플랫폼 내보내기는 채널이 필요로 하는 모든 화면 비율을 한 번에 생성합니다. 프롬프트 템플릿 라이브러리는 모든 상품 카테고리에 대한 복사하여 붙여넣기 시작점을 제공합니다.
전체 워크플로우 — 상품 사진에서 모든 판매 채널에 게시된 영상까지 — 가 수 주에서 수 시간으로 압축됩니다. 단일 개발자가 이전에 프로덕션 팀, 스튜디오, 후반 작업 편집자가 필요했던 영상 파이프라인을 운영할 수 있습니다.
이것은 기존 영상 제작 대비 점진적 개선이 아닙니다. 구조적 전환입니다. 이커머스 영상의 병목은 창의적 비전이 아니었습니다 — 비용과 물류였습니다. 단일 영상이 몇 센트에 불과하고 2분이면 만들어질 때, 질문은 "어떤 상품이 영상을 가질 자격이 있는가?"에서 "왜 모든 상품에 영상이 없는가?"로 바뀝니다.
한 개 상품으로 시작하세요. 회전 영상을 생성하세요. 3분 후 결과를 확인하세요. 그런 다음 전체 카탈로그로 확장하세요. API는 영상 한 개를 생성하든 만 개를 생성하든 동일합니다.
영상 제작 파이프라인을 교체하세요. EvoLink 무료 가입 →
이 시리즈의 이전 글: Seedance 2.0 프롬프트 가이드 · 멀티모달 @Tags 가이드 · 카메라 움직임 가이드 · 이미지-투-비디오 튜토리얼