HiAPI
블로그

사용 가이드

HiAPI API의 flux-3-max/text-to-video로 숏폼 영상 제작하기

엔드투엔드 워크플로: 스토리보드 기획, 프롬프트 오케스트레이션, 카메라 무브먼트, 네이티브 오디오, 그리고 실행 가능한 요청

Nov 3, 2026
封面图:骨白色纸页层层错位堆叠,如套印偏移,其间夹入一张锈红色纸页,下方仅有平直投影。

숏폼 영상이 프롬프트 오케스트레이션 문제인 이유

텍스트 투 비디오에서 실패하는 대부분의 팀은 같은 이유로 실패합니다. 그들은 장면 전체를 묘사하는 하나의 거대한 프롬프트를 작성하고 모델이 완성된 30초 영상을 반환하기를 기대합니다. 생성은 그렇게 작동하지 않습니다. 모델은 호출당 하나의 연속 샷만 생성하며, 각 호출은 피사체, 동작, 구도, 사운드에 대한 작고 자족적인 결정입니다.

실제로 견고한 멘탈 모델은 오케스트레이션입니다. 당신은 하나의 영상을 프롬프트하는 것이 아니라 일련의 샷을 연출한 다음 조립합니다. 하나의 숏폼 작품(제품 티저, 소셜 훅, 내레이션 설명)은 보통 4~8개의 샷으로 구성됩니다. 각 샷은 하나의 임무만 담당합니다. 설정, 시연, 전환, 마무리. 이 분해를 받아들이는 순간 API는 더 이상 슬롯머신이 아니라 당신이 통제하는 파이프라인 안의 렌더링 단계가 됩니다.

이것이 중요한 이유는 텍스트 투 비디오의 실패 양상이 대부분 품질 실패가 아니라 연속성 실패이기 때문입니다. 개별 샷은 아름다워 보일 수 있지만, 다음 샷에서 캐릭터가 다르거나, 빛의 방향이 다르거나, 카메라가 갑자기 흔들리면 그 샷은 여전히 쓸 수 없습니다. 이런 문제는 요청이 나가기 전에 샷을 어떻게 기획하고 묘사하느냐로 해결됩니다. 거대한 프롬프트에 형용사를 더하는 것으로 해결되지 않습니다.

이 가이드의 나머지 부분은 HiAPI에서 flux-3-max/text-to-video를 호출하는 이 워크플로를 엔드투엔드로 안내합니다. 대본을 샷으로 분해하고, 샷별 프롬프트를 작성하고, 카메라 무브먼트를 통제된 차원으로 다루고, 네이티브 오디오를 사용해 별도 오디오 단계를 건너뛰고, 모든 것을 작고 재현 가능한 요청 루프로 감싸는 방법입니다.

API를 호출하기 전에 샷 기획하기

코드를 작성하기 전에 대본을 샷 리스트로 바꾸세요. 샷 리스트는 순수한 데이터 구조입니다. 생성 호출마다 하나의 항목이 대응되며, 각 항목은 명확한 목적을 가집니다. 다음 구조는 중간 표현으로 적합합니다.

[
  {
    "id": "s1",
    "role": "establish",
    "subject": "ceramic pour-over coffee dripper on a wooden counter",
    "framing": "medium close-up, three-quarter angle",
    "durationIntent": "short",
    "camera": "slow push in",
    "audio": "quiet room tone, soft steam"
  },
  {
    "id": "s2",
    "role": "demonstrate",
    "subject": "hot water spiraling over coffee grounds",
    "framing": "tight overhead macro",
    "durationIntent": "short",
    "camera": "locked off",
    "audio": "water pouring, gentle hiss"
  }
]

나중에 재시도를 줄여주는 몇 가지 기획 규칙이 있습니다.

  • 샷당 하나의 아이디어. 샷 묘사에 "그다음"이 들어간다면 분리하세요. 모델은 연속된 동작 하나를 처리할 때 일련의 박자보다 훨씬 잘 처리합니다.
  • 정확한 초가 아니라 길이 의도를 표현하세요. 샷이 빠른 컷인지 긴 정지인지 결정하고 이를 의도로 표현하세요. 정확한 타이밍은 프레임 단위 정밀 제어가 가능한 편집/조립 단계에 속합니다.
  • 구도 어휘를 일찍 고정하세요. wide, medium, close-up, overhead, low angle 같은 용어를 선택하고 모든 샷에서 그대로 재사용하세요. 일관된 어휘는 더 일관된 결과를 만듭니다.
  • 연속성 앵커를 기획하세요. 무엇이 변하지 않는지 결정하세요. 캐릭터 묘사, 의상, 색조, 하루 중 시간, 빛의 방향. 이것을 공유 프리픽스로 한 번 작성하고 모든 프롬프트에서 재사용하세요.
  • 검토에서는 순서가 중요합니다. 대본 순서대로 생성하면 조각을 고립된 클립으로 보는 대신 최종 재생 순서대로 검토할 수 있습니다.

샷 리스트가 존재하면 API 호출은 기계적이 됩니다. 바로 이것이 원하는 상태이며, 호출을 재시도 가능하고 재현 가능하게 만듭니다.

flux-3-max/text-to-video용 샷별 프롬프트 작성하기

좋은 샷별 프롬프트는 대화체가 아니라 구조화되어 있습니다. 하나의 긴 자유 형식 문자열을 쓰는 대신 소수의 레이블이 붙은 단락으로 각 프롬프트를 구성하세요. 이렇게 하면 프롬프트가 diff 가능하고 재사용 가능하며, 단일 요소가 잘못됐을 때 조정하기 쉽습니다.

5단 구성

  1. 피사체 — 누구 또는 무엇인지, 결정한 연속성 세부 사항(외형, 의상, 제품 특징)을 포함합니다.
  2. 동작 — 하나의 연속된 움직임이나 상태를 현재 시제로 묘사합니다.
  3. 환경 — 장소, 하루 중 시간, 빛의 질감, 색조.
  4. 카메라 — 구도와 무브먼트, 고정한 어휘를 사용합니다. 다음 섹션에서 자세히 다룹니다.
  5. 오디오 — 이 샷의 앰비언스와 폴리 의도.

고정된 순서로 조합하세요. 그러면 자신의 디버깅도 일관되게 유지됩니다.

CONTINUITY = (
    "a minimalist ceramic pour-over coffee dripper, matte white, "
    "on a warm oak counter, soft morning window light from the left, "
    "muted natural palette"
)

def shot_prompt(subject, action, setting, camera, audio):
    return (
        f"{subject}. {action}. {setting}. "
        f"Camera: {camera}. Audio: {audio}."
    )

prompt = shot_prompt(
    subject=f"{CONTINUITY}",
    action="steam rising steadily as water slowly blooms the coffee grounds",
    setting="kitchen counter at dawn, shallow depth of field",
    camera="medium close-up, slow push in, no shake",
    audio="quiet room tone, soft water pour, faint steam hiss",
)

샷을 시각적으로 일관되게 유지하기

가장 지렛대 효과가 큰 습관 하나는 공유 연속성 블록입니다. 모든 피사체 단락 맨 앞에 두고 전체 시퀀스의 모든 샷에서 동일하게 유지하세요. 특정 샷이 시각적으로 흔들릴 때 문제를 이분할할 수 있습니다. 연속성 블록의 문제인가, 샷 특정 동작의 문제인가?

흔들림을 줄이는 두 가지 습관이 더 있습니다.

  • 모순되는 형용사를 피하세요. "시네마틱 다큐멘터리 핸드헬드 정지"는 서로 충돌하는 세 가지 지시입니다. 하나를 고르세요.
  • 빛은 한 번만 묘사하세요. 연속성 블록이 왼쪽 아침 빛이라고 했다면, 후속 샷에 위쪽 형광등을 도입하지 마세요. 그 전환이 의도된 경우가 아니라면요.

프롬프트에서 생략할 것

종횡비, 출력 길이, 기타 기술 파라미터는 산문에서 빼고 API가 노출할 때 요청 파라미터로 전달하세요. 산문은 샷이 무엇인지 설명하고, 파라미터는 어떻게 전달되는지 설명합니다. 둘을 섞으면 둘 다 수정하기 어려워집니다.

카메라 무브먼트 제어하기

카메라 무브먼트는 우연에 맡기기 가장 쉬운 차원이자, 시퀀스가 연출된 느낌을 주는지에 가장 크게 영향을 미치는 차원입니다. 지정하지 않으면 모델은 어떤 방식으로든 카메라를 움직입니다. 지정되지 않은 움직임은 흔들림으로 나타나며, 흔들림은 생성된 소재를 우연히 찍힌 것처럼 보이게 만듭니다.

무브먼트를 작은 폐쇄 어휘로 다루기

샷마다 카메라 언어를 즉흥적으로 만들지 마세요. 작은 무브먼트 세트를 정의하고 재사용하세요.

  • 고정 카메라 — 움직이지 않음. 제품 디테일과 클로즈업에 가장 안전한 선택.
  • 푸시 인 / 풀 아웃 — 피사체로 다가가거나 멀어짐. 강조와 공개에 적합.
  • 좌로 팬 / 우로 팬 — 수평 회전. 공간감 설정에 사용.
  • 업 틸트 / 다운 틸트 — 수직 회전. 신중하게 사용하세요. 극적인 느낌으로 읽힙니다.
  • 트래킹 — 피사체를 따라감. 앵커로 삼을 명확히 움직이는 피사체가 필요.

이를 샷 단락에 적고, 뒤에 나머지 움직임을 억제하는 부정 지시를 붙이세요. Camera: slow push in, no shake, no handheld drift.

부정 절이 중요합니다. "푸시 인"만 말하면 모델이 흔들림을 추가할 여지가 남습니다. "푸시 인, 흔들림 없음"은 범위를 좁힙니다.

무브먼트가 샷 역할에 봉사하게 하기

무브먼트는 편집에 봉사해야 합니다. 실용적인 매핑은 다음과 같습니다.

  • 설정 샷 — 명확한 하나의 움직임(느린 푸시 인 또는 부드러운 팬)으로 시선이 머물 지점을 제공.
  • 디테일 샷 — 고정 카메라. 디테일 자체가 시각적으로 밀도가 높으므로 움직임이 경쟁합니다.
  • 전환 — 인접 샷에 일관된 움직임(모두 푸시 인, 모두 같은 방향 팬)을 사용하면 전환 효과 없이도 컷이 의도된 것처럼 느껴집니다.
  • 히어로 샷 — 의도적인 움직임 하나. 절대 두 개를 조합하지 마세요.

샷당 하나의 무브먼트만

결합된 움직임("우로 팬하면서 푸시 인하고 업 틸트")은 흐릿한 결과를 만듭니다. 한 박자에 복잡한 카메라 무브먼트가 필요하면 두 샷으로 나누세요. 조립 단계에서 이어 붙일 수 있고, 컷에 대한 프레임 단위 제어도 유지됩니다.

시퀀스 내 무브먼트 일관성

작품 전체의 지배적 무브먼트를 미리 결정하세요. 예를 들어 "모든 샷은 느리게 푸시 인"처럼 정하고, 효과가 필요할 때만 벗어나세요. 무브먼트 방향이 일관된 시퀀스는 작가의 의도가 읽히고, 무작위 무브먼트의 시퀀스는 생성된 것처럼 읽힙니다.

파이프라인에서 네이티브 오디오 사용하기

네이티브 오디오 생성은 숏폼 파이프라인의 아키텍처를 바꿉니다. 전통적인 흐름에서는 먼저 무음 영상을 생성한 다음 별도 오디오 단계를 실행합니다. 텍스트 투 오디오 모델이거나 라이선스된 폴리 및 음악 라이브러리이고, 그다음 편집기에서 둘을 정렬합니다. 각 단계는 또 다른 서비스, 또 다른 자격 증명, 또 다른 실패 모드이며, 타이밍이 어긋날 수 있는 또 다른 지점입니다.

비디오 모델이 인라인으로 오디오를 생성하면 사운드와 화면이 같은 추론 단계에서 생성되므로 화면에서 일어나는 일과 자연스럽게 정렬됩니다. 물이 쏟아지는 순간 쏟아지는 소리가 쏟아지는 동작과 맞습니다. 이것은 정렬 작업을 거의 완전히 제거합니다.

두 파이프라인, 하나의 차이

Separate audio stage:            Native audio:
  shot -> video (silent)           shot -> video + audio
       -> audio generation              -> assemble
       -> alignment / mixing
       -> assemble

실질적인 이점은 움직이는 부품이 더 적다는 것입니다. 실질적인 제약은 사운드를 사후에 추가하는 것이 아니라 프롬프트 안에서 기획해야 한다는 것입니다.

사운드를 중심으로 샷 기획하기

오디오가 생성의 일부이므로 사후 추가가 아니라 샷의 일부로 작성하세요.

  • 주요 사운드를 명시하세요. Audio: water pouring, gentle hiss가 Audio: pleasant kitchen sounds보다 좋습니다.
  • 희박하게 유지하세요. 샷당 하나 또는 두 개의 명확한 요소. 계층화된 오디오 묘사는 종종 뭉개집니다.
  • 음악을 의식적으로 결정하세요. 편집기에서 작품 전체에 음악 베드를 깔 계획이라면 샷 오디오는 앰비언스만 유지하세요. 그래야 음악 트랙과 충돌하지 않습니다.
  • 사운드 연속성을 고려하세요. 시각적 연속성처럼 컷을 넘는 오디오 연속성도 도움이 됩니다. 인접 샷의 동일한 룸 톤은 시퀀스가 같은 장소처럼 느껴지게 합니다.

편집기가 여전히 이기는 지점

네이티브 오디오는 편집기를 대체하지 않습니다. 정렬 단계를 대체합니다. 최종 라우드니스 정규화는 여전히 필요하고, 음악을 사용한다면 대사와 폴리를 베드 아래로 낮추는 믹싱 단계도 필요합니다. 파이프라인에 이 비용을 예산으로 잡으세요. 다만 별도 생성 단계를 사용할 때보다 예산은 훨씬 적습니다.

실행 가능한 요청과 조립 흐름

샷 리스트와 프롬프트 빌더가 있으면 요청 계층은 얇습니다. 핵심 결정은 모델 호출 방식, 순서와 재시도 처리, 그리고 결과를 조립으로 전달하는 방식입니다.

오케스트레이션 루프

import time

SHOTS = [
    # your planned shot list from the earlier step
]

def generate_shot(shot, attempt=0):
    payload = {
        "model": "flux-3-max/text-to-video",
        "prompt": build_prompt(shot),
        # pass delivery parameters here, not in the prose:
        # aspect ratio, length, etc. per the API reference
    }
    try:
        return client.generate(payload)
    except TransientError:
        if attempt >= 3:
            raise
        time.sleep(2 ** attempt)
        return generate_shot(shot, attempt + 1)

def run_sequence(shots):
    results = {}
    for shot in shots:
        results[shot["id"]] = generate_shot(shot)
    return [results[s["id"]] for s in shots]

이 루프를 데모가 아니라 프로덕션 안전하게 만드는 세 가지가 있습니다.

  • 순서 있는 반복. 대본 순서대로 생성하면 부분 실패가 검토 가능한 프리픽스로 남고, 누락된 샷만 다시 실행하기도 간단합니다.
  • 키로 저장된 결과. 출력을 목록 위치가 아니라 샷 id로 저장하세요. 세 번째 샷이 실패하고 재생성되면 다시 추가하는 것이 아니라 키로 덮어써야 합니다.
  • 한계가 있는 재시도와 백오프. 일시적 실패는 모든 생성 API에서 정상입니다. 재시도 횟수를 제한해 나쁜 샷 하나가 전체 작업을 막지 않게 하세요.

조립으로 인계하기

생성 루프는 매니페스트, 즉 출력 참조가 붙은 샷 리스트를 산출하고 거기서 끝나야 합니다. 조립은 그 매니페스트를 소비하는 별도 단계입니다. 각 클립을 의도한 길이로 자르고, 전환을 적용하고, 음악 베드를 깔고, 라우드니스를 정규화합니다.

{
  "sequence": [
    {"id": "s1", "clip": "out/s1.mp4", "trim": "keep_first_portion"},
    {"id": "s2", "clip": "out/s2.mp4", "trim": "keep_first_portion"}
  ],
  "audioStrategy": "native_bed_plus_music"
}

조립과 생성을 분리해야 전체 파이프라인이 재현 가능해집니다. 샷 하나를 재생성하고 매니페스트에 넣은 다음 다른 것은 건드리지 않고 최종 컷을 다시 렌더링할 수 있습니다.

프로덕션 체크리스트와 흔한 함정

숏폼 파이프라인은 지루한 부분이 지루해질 때 신뢰할 수 있습니다. 생산량을 확대하기 전에 이 점검을 실행하세요.

일관성

  • 연속성 블록이 시퀀스의 모든 샷에서 완전히 동일합니다.
  • 샷 어휘가 즉흥적이지 않고 폐쇄적이며 재사용됩니다.
  • 빛의 방향과 색조가 한 번만 선언되고 이후에 모순되지 않습니다.
  • 샷을 순서대로 검토하세요. 클립을 고립해서 보면 연속성 문제가 보이지 않습니다.

재시도와 멱등성

  • 결과는 샷 id를 키로 저장해 재생성이 중복되지 않고 덮어쓰게 합니다.
  • 재시도는 한계가 있고 백오프를 사용합니다. 영구적으로 실패하는 샷은 조용히 실패하는 것이 아니라 크게 실패해야 합니다.
  • 샷 매니페스트는 생성된 콘텐츠의 유일한 진실 원천입니다. 출력과 함께 영속화하세요.

비용 제어

생성은 모델이 만들어내는 작업량으로 과금되므로 주요 지렛대는 얼마나 많은 샷을 생성하는지와 얼마나 자주 재생성하는지입니다. 실용적인 제어 방법은 생성 전에 샷 리스트를 고정하고, 나머지를 렌더링하기 전에 각 시퀀스의 대표 샷 하나를 검토하고, 이미 검토를 통과한 샷을 투기적으로 다시 굴리는 것을 피하는 것입니다. 생산량을 기획할 때 웹사이트 가격 패널의 현재 가격을 확인하세요.

출력 검토

  • 클립을 하나씩 보는 대신 실제 재생 속도로 각 시퀀스를 엔드투엔드로 시청하세요.
  • 화면과 오디오를 대조하세요. 사운드가 그 순간과 맞습니까?
  • 특히 처음 2초를 확인하세요. 숏폼의 주의는 바로 거기서 얻거나 잃습니다.
  • 잘 알려진 참조 프롬프트 세트를 작게 유지하고, 품질이 떨어지는 것 같을 때 새 출력을 그것과 비교하세요.

흔한 함정

  • 거대한 프롬프트. 장면 전체를 묘사하는 프롬프트 하나는 길고 초점 없는 샷을 만듭니다. 분해하세요.
  • 산문에 길이를 쓰기. 타이밍은 프롬프트 산문이 아니라 편집 단계에서 표현하세요.
  • 무작위 카메라 무브먼트. 지정되지 않은 움직임은 흔들립니다. 움직임을 지정하고 나머지는 억제하세요.
  • 오디오를 독립적인 제품 결정으로 다루기. 사운드는 샷에서 기획하고 편집기에서 믹싱하세요.

이 가이드의 워크플로(샷 기획, 프롬프트 구조화, 카메라 무브먼트 제어, 네이티브 오디오 사용, 매니페스트로 오케스트레이션)는 flux-3-max/text-to-video를 예측 불가능한 생성기에서 당신이 소유한 파이프라인 안의 신뢰할 수 있는 렌더링 단계로 바꿉니다.

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

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

API 문서 보기