HiAPI
블로그

사용 가이드

Seedance 2.5 텍스트 투 비디오: hiapi API로 숏폼 클립 만들기

실제 프롬프트, 실제 클립, 그리고 이를 반복 가능한 숏폼 파이프라인으로 바꾸는 비동기 워크플로.

Aug 17, 2026
Seedance 2.5 텍스트 투 비디오: hiapi API로 숏폼 클립 만들기

숏폼은 물량 게임입니다. TikTok, Reels, Shorts는 모두 게시 빈도에 보상을 주지만, 게시물마다 B-roll 소재를 직접 촬영하는 것은 확장이 불가능합니다. Seedance 2.5의 텍스트 투 비디오 엔드포인트는 단 한 번의 API 호출로 단일 프롬프트를 동기화된 오디오가 포함된 완성된 세로형 클립으로 바꿔줍니다. 카메라도, 편집 타임라인도, 별도 더빙도 필요 없습니다.

이 가이드는 우리가 hiapi API를 통해 엔드투엔드로 생성한 실제 클립 하나를 처음부터 끝까지 다룹니다. 정확한 프롬프트, 이를 만들어낸 비동기 워크플로, 검증된 가격, 그리고 흩어진 개별 클립이 아닌 숏폼 세트를 제작하기 위한 바로 사용 가능한 대량 생산 패턴까지 살펴봅니다. 세 가지 seedance-2.5 엔드포인트 전체의 파라미터 레퍼런스는 전체 API 가이드를 참고하세요.

숏폼 콘텐츠에 텍스트 투 비디오가 적합한 이유

숏폼 플랫폼은 영화급 길이를 요구하지 않습니다. 매끄럽게 반복 재생되고 1초 안에 시청자를 사로잡는 6~15초 클립의 꾸준한 공급을 요구합니다. seedance-2.5/text-to-video는 이 요구에 정확히 부합합니다:

  • 클립당 최대 30초, TikTok/Reels/Shorts용 9:16을 포함한 7가지 화면 비율 지원.
  • 네이티브 오디오 동기화 — 모델이 프롬프트의 동작에 맞춰 환경음과 오디오 단서를 생성하며, 무음 클립을 만든 뒤 나중에 더빙하는 방식이 아닙니다.
  • 11개 언어 프롬프트 지원 — 숏폼 캠페인을 현지화하는 경우 유용합니다.
  • 두 가지 해상도(480p 및 720p) — 저비용으로 초안을 생성하고, 실제로 게시할 클립에만 720p 요금을 지불할 수 있습니다.

실제 클립, 처음부터 끝까지

이 가이드를 위해 생성한 클립입니다. 카페 숏폼용으로 세로 구도로 촬영한 라떼 아트를 붓는 클로즈업입니다.

우리가 제출한 정확한 프롬프트, 편집 없이:

커피를 내리는 바리스타의 안정적인 손이 스테인리스 스틸 밀크 저그에서 흰색 세라믹 에스프레소 컵으로 스팀 밀크를 붓고, 우유 줄기가 실시간으로 형성되는 로제타 라떼 아트 소용돌이로 접혀 들어가며, 따뜻한 골든 아워 빛이 카운터를 비스듬히 스치고, 배경의 크루아상과 페이스트리는 부드럽게 흐릿하고, 클로즈업 세로 구도, 은은한 김이 피어오르고, 카페 환경음.

파라미터: aspect_ratio: "9:16", resolution: "720p", duration: 8. 위 출력은 실제 편집되지 않은 작업 결과입니다 — 8.06초이며, 붓는 소리와 카페 배경 웅성거림은 후반 작업이 아니라 모델이 직접 생성한 것입니다.

API 워크플로

seedance-2.5/text-to-video는 hiapi의 비동기 작업 API로 실행됩니다 — 제출, 폴링, 다운로드. 동기 비디오 엔드포인트는 없으며, 모든 클립은 백그라운드 작업입니다.

import time
import requests

API_KEY = "YOUR_HIAPI_KEY"
BASE = "https://api.hiapi.ai/v1"

def generate_clip(prompt: str, aspect_ratio: str = "9:16",
                   resolution: str = "720p", duration: int = 8) -> str:
    submit = requests.post(
        f"{BASE}/tasks",
        headers={"Authorization": f"Bearer {API_KEY}"},
        json={
            "model": "seedance-2.5/text-to-video",
            "input": {
                "prompt": prompt,
                "aspect_ratio": aspect_ratio,
                "resolution": resolution,
                "duration": duration,
            },
        },
        timeout=30,
    )
    task_id = submit.json()["data"]["taskId"]

    while True:
        poll = requests.get(
            f"{BASE}/tasks/{task_id}",
            headers={"Authorization": f"Bearer {API_KEY}"},
            timeout=30,
        ).json()["data"]
        if poll["status"] == "success":
            return poll["output"][0]["url"]   # 임시 링크 — 즉시 다운로드
        if poll["status"] == "fail":
            raise RuntimeError(poll)
        time.sleep(5)

clip_url = generate_clip(
    "커피를 내리는 바리스타의 안정적인 손이 스테인리스 스틸 밀크 저그에서 "
    "흰색 세라믹 에스프레소 컵으로 스팀 밀크를 붓고, "
    "우유 줄기가 실시간으로 형성되는 로제타 라떼 아트 소용돌이로 접혀 들어가며, "
    "따뜻한 골든 아워 빛이 카운터를 비스듬히 스치고, 배경의 크루아상과 페이스트리는 "
    "부드럽게 흐릿하고, 클로즈업 세로 구도, 은은한 김이 피어오르고, 카페 환경음."
)

# 출력 URL은 만료됩니다(expireAt 타임스탬프 포함) — 즉시 다운로드하여
# 자체 스토리지에 영구 저장하세요. 핫링크로 남겨두지 마세요
video_bytes = requests.get(clip_url, timeout=60).content
open("clip.mp4", "wb").write(video_bytes)

작업 응답은 원래 프롬프트를 절대 그대로 돌려주지 않습니다 — model, status, output, 타임스탬프만 반환합니다 — 따라서 나중에 클립을 재현하거나 변형해야 한다면 제출한 내용을 직접 기록해 두세요.

가격: 두 가지 티어, 1080p 없음

hiapi의 가격 엔드포인트에서 실시간으로 검증함 — seedance-2.5/text-to-video는 출력 초 단위로 과금되며, 두 가지 해상도 티어가 있고 1080p 옵션은 없습니다:

해상도 초당 가격 8초 클립
480p $0.1395 약 $1.12
720p $0.3019 약 $2.42

720p 초당 가격은 480p의 약 2.2배입니다 — 먼저 480p로 초안을 생성하고, 프롬프트가 다듬어진 뒤에만 720p 요금을 지불할 가치가 있습니다. 전체 파라미터와 가격 세부 정보는 seedance-2.5/text-to-video 모델 페이지에 있습니다. 요금은 2026-08 기준 유효하며 변경될 수 있으므로, 대량 배치 예산을 잡기 전에 해당 페이지를 확인하세요.

단일 클립이 아닌 숏폼 세트 제작하기

단일 클립은 데모일 뿐이며, 콘텐츠 캘린더에는 대량 생산이 필요합니다. 각 클립을 프롬프트를 키로 하는 멱등 작업으로 취급하면, 크래시 후 재실행해도 중복 과금되지 않습니다:

import hashlib

PROMPTS = [
    "바리스타가 스팀 밀크를 에스프레소 컵에 붓고, 로제타 라떼 아트가 형성되고, 골든 아워 빛, 클로즈업 세로 구도.",
    "신선한 핸드드립 커피가 필터를 통해 떨어질 때 피어오르는 김, 카페 창문을 통해 들어오는 아침 햇살, 세로 구도.",
    "한 손이 커피 원두 봉지를 나무 저울 위에 살짝 내려놓고, 원두가 자리를 잡고, 부드러운 카페 분위기, 클로즈업 세로 구도.",
]

def job_key(prompt: str) -> str:
    return hashlib.sha1(prompt.encode()).hexdigest()[:12]

results = {}
for prompt in PROMPTS:
    key = job_key(prompt)
    if key in results:          # 이번 라운드에서 이미 생성됨
        continue
    results[key] = generate_clip(prompt, resolution="480p", duration=6)
    # 각 결과를 즉시 영구 저장 — 위의 다운로드 단계 참조

먼저 전체 세트를 480p로 생성하고, 어떤 클립이 실제로 캠페인에 적합한지 평가한 뒤, 승자 클립만 720p로 다시 실행하세요. 일회성 제작이 아닌 대량 생산이 필요할 때, 이 2단계 습관이 비용에서 가장 큰 레버리지입니다.

Seedance 2.0과의 비교

Seedance 2.0을 사용해 봤다면, 2.5의 텍스트 투 비디오 계층은 동일한 제출-폴링-다운로드 작업 형태를 유지합니다 — 통합 측면의 변화는 없습니다. 파이프라인을 이전하기 전에 알아둘 실질적 차이는 다음과 같습니다: 2.5는 기본적으로 각 클립에 네이티브 오디오 동기화를 추가하며, 해상도 단계가 더 단순합니다(2.0에는 추가 단계가 있었지만 2.5는 480p/720p만). 워크플로가 2.5가 제공하지 않는 해상도에 의존한다면, 동등성을 가정하기 전에 해당 모델 자체 페이지에서 현재 사양을 확인하세요.

자주 묻는 질문

seedance-2.5/text-to-video는 1080p를 지원하나요? 아니요 — 2026-08 기준으로 해당 모델은 480p와 720p만 제공합니다. 1080p 출력이 필요하다면 이 엔드포인트를 중심으로 파이프라인을 구축하기 전에 모델 카탈로그에서 이를 지원하는 모델을 찾아보세요.

오디오는 실제인가요, 아니면 별도로 추가해야 하나요? 모델이 작업의 일부로 생성합니다 — 위 데모 클립의 붓는 소리와 카페 배경 웅성거림은 후반 작업이 아닙니다. 브랜드 전용 음악이나 내레이션이 필요하다면 이후에 자체 오디오를 얹을 수 있습니다.

클립 하나를 생성하는 데 얼마나 걸리나요? 작업 완료 시간은 길이와 해상도에 따라 달라집니다. 대략 클립당 1분에서 몇 분 정도이며, 고정 대기 시간을 가정하지 말고 반드시 폴링하세요.

동일한 프롬프트를 여러 플랫폼에서 화면 비율만 바꿔 재사용할 수 있나요? 네 — aspect_ratio는 프롬프트와 분리된 파라미터이므로, 같은 프롬프트를 장면 설명을 다시 쓰지 않고도 TikTok/Reels용 9:16으로, YouTube용 16:9로 다시 제출할 수 있습니다.

다운로드 전에 출력 URL이 만료되면 어떻게 하나요? 작업을 다시 제출해야 합니다 — output[0].url은 expireAt 타임스탬프에 묶인 임시 링크이며 영구 저장소가 아닙니다. 작업이 success를 보고한 후 즉시 각 클립을 다운로드하고 영구 저장하세요.

핵심 요점

  • seedance-2.5/text-to-video는 숏폼 콘텐츠용 프롬프트 입력, 클립 출력 엔드포인트입니다 — 초안과 소셜 채우기 콘텐츠에는 480p, 클립이 최종 결과물일 때는 720p를 선택하세요.
  • 클립 단위가 아닌 길이 기준으로 예산을 잡으세요: 720p 초당 비용은 480p의 약 2.2배이므로, 8초 720p 클립의 비용은 이미 약 $2.42입니다.
  • 작업 출력 URL은 만료됩니다 — 폴링 성공 직후 다운로드하여 영구 스토리지에 저장하세요.
  • 네이티브 오디오 동기화 덕분에 숏폼 채우기 콘텐츠에는 대개 별도 더빙이나 음향 처리가 필요하지 않습니다.
  • 이 모델은 현재 1080p 티어가 없습니다 — 해당 티어가 있다고 가정하고 파이프라인을 구축하기 전에 모델 페이지를 확인하세요.

직접 사용해 볼 준비가 되셨나요? seedance-2.5/text-to-video 모델 페이지에서 전체 파라미터 레퍼런스를 확인하거나, hiapi의 전체 비디오 모델 카탈로그를 둘러보며 Kling 3.0 Turbo 같은 이미지 투 비디오 옵션과 비교해 다음 숏폼 배치를 준비하세요.

영구 AI 아티팩트로 빌드 시작하기

API 키를 받아 태스크 기반의 하나의 API로 이미지, 비디오, 오디오 모델을 호출하세요.

API 문서 보기