HiAPI
블로그

사용 가이드

FLUX 3 프롬프트 레시피: 바로 복사해 붙여넣을 수 있는 영상 생성 예시

장면 설정, 카메라 운동, 오디오 프롬프트를 위한 실용적인 프롬프트 패턴

Oct 31, 2026
FLUX 3 提示词配方指南的博客封面图:近黑背景上,薄荷绿圆点如半调数据集般逐渐加密,并点缀深青色颗粒。
하나의 FLUX 3 영상 레시피: 장면 설정, 느린 돌리인과 포커스 이동, 그리고 원본 빗소리와 지직거리는 소리를 담은 오디오 프롬프트.

왜 레시피식 프롬프트가 자유식 프롬프트보다 더 잘 작동하는가

자유식 프롬프트는 머릿속에 떠오르는 어떤 것이든 타이핑할 수 있기 때문에 생산적으로 느껴진다. 하지만 그것은 재현 불가능한 결과를 만드는 가장 빠른 방법이기도 하다. 영상 결과가 잘못 나왔을 때, 육십 단어짜리 텍스트에서 어떤 부분이 문제를 일으켰는지 깔끔하게 판단할 방법이 없다.

레시피는 고정된 슬롯을 가진 프롬프트다. 매 요청마다 같은 순서로 같은 필드를 채우므로, 두 실행 사이에서 달라지는 것은 의도적으로 바꾼 그 한 가지 값뿐이다. 이는 세 가지 실질적인 이점을 준다:

  • 더 낮은 분산. 장면과 스타일에 안정된 표현을 쓰면 모델이 매 호출마다 의도를 재해석하지 않는다.
  • 더 빠른 디버깅. 카메라가 잘못됐다면 카메라 슬롯만 보면 된다 — 전체 문자열이 아니라.
  • 재사용성. 제품 촬영용으로 만든 레시피는 다른 피사체로 다시 채워도 예측 가능하게 작동한다.

레시피를 영상 생성을 위한 작은 내부 DSL로 생각하라. 템플릿을 한 번 작성한 다음, 요청 시 값을 넘긴다. 이 가이드의 나머지 부분에서는 이 DSL을 슬롯별로 구축하고, 복사해 붙여넣고 자신의 피사체에 맞게 조정할 수 있는 예시를 제공한다.

FLUX 3 프롬프트 레시피의 구조

견고한 FLUX 3 레시피는 고정된 순서로 조합되는 여섯 개의 슬롯을 가진다. 순서가 중요하다: 앞쪽 슬롯이 화면을 설정하고, 뒤쪽 슬롯이 그것을 다듬는다.

  1. 피사체 —— 카메라가 무엇을 찍는지, 구체적인 시각적 속성을 포함하여.
  2. 환경 —— 사건이 어디서 일어나는지: 장소, 하루 중 시간, 날씨, 배경 요소.
  3. 스타일 —— 외관: 조명 질감, 색조 팔레트, 렌즈 특성, 렌더링 의도.
  4. 운동 —— 화면 내부에서 무엇이 움직이며, 어떻게 움직이는지.
  5. 카메라 —— 시점 자체가 어떻게 움직이는지, 또는 정지해 있는지.
  6. 오디오 —— 영상 클립과 함께해야 할 분위기 사운드와 개별 음향 효과.

일반적인 템플릿은 다음과 같다:

Subject: <one clear subject with 2-3 visual attributes>
Environment: <location, time of day, background detail>
Style: <lighting, palette, lens and render character>
Motion: <what moves, direction, speed, and continuity>
Camera: <static or the exact camera move>
Audio: <ambient bed>; <discrete action sounds>

각 슬롯은 한두 개의 짧은 문장으로 유지하라. 슬롯 값이 지나치게 길면 디테일이 손실되는 가장 흔한 원인인데, 뒤쪽의 짧은 문장들이 앞쪽의 짧은 문장들과 주의를 두고 경쟁하기 때문이다. 하나의 슬롯에 문장 하나 이상이 필요하다면, 그것은 보통 두 개의 아이디어를 담고 있으므로 다른 슬롯이나 다른 실행으로 분리해야 한다.

장면 설정 레시피

어떤 애니메이션을 하기 전에 먼저 기본 장면을 확인하라. 운동과 카메라를 최소값 또는 정지 값으로 설정해 생성하고, 피사체, 환경, 스타일이 조화를 이루는지 점검하라. 정지 상태에서 틀린 장면은 움직여도 나아지지 않는다.

레시피: 실내 제품 장면

Subject: a matte ceramic mug, rounded handle, faint speckled glaze
Environment: a wooden kitchen counter, soft morning light from a window on the left, blurred shelves behind
Style: natural light, warm neutral palette, shallow depth of field, photorealistic
Motion: none
Camera: static
Audio: quiet room tone

레시피: 실외 설정 샷

Subject: a lone stone lighthouse on a low cliff
Environment: overcast coastal evening, wet rocks, distant whitecaps, heavy cloud layer
Style: desaturated cool palette, wide lens, cinematic realism
Motion: none
Camera: static
Audio: steady wind, distant surf

장면 슬롯을 안정적으로 유지하는 요소

  • 셀 수 있는 속성으로 피사체를 고정하라. "둥근 손잡이"와 "점박이 유약"은 "예쁜 컵"보다 범위를 더 좁힌다.
  • 광원과 방향을 명시하라. "왼쪽에서 들어오는 부드러운 아침 빛"은 검증 가능하지만, "좋은 조명"은 그렇지 않다.
  • 배경을 깊이에 따라 분리된 층으로 서술하라. 전경, 중경, 배경이라는 표현은 화면이 평면적인 배경판으로 붕괴되는 것을 막는다.
  • 시리즈에서 스타일 슬롯을 일관되게 유지하라. 두 클립을 함께 편집해야 한다면, 완전히 동일한 스타일 값을 재사용하라.

정지 장면이 올바르게 읽히면, 피사체, 환경, 스타일 슬롯을 동결하여 상수로 취급하고 운동을 조정할 수 있다.

운동과 카메라 언어 레시피

가장 흔한 프롬프트 실패는 피사체 운동과 카메라 운동을 한 문장에 섞는 것이다. "모델이 카메라 쪽으로 돌아설 때 느리게 다가가기"는 한 짧은 문장에 두 개의 변수를 담고 있어, 모델이 어느 것을 따랐는지 판단할 수 없다.

이들을 분리하라. 운동은 화면 내부에서 무슨 일이 일어나는지를 서술한다. 카메라는 시점이 어떻게 행동하는지를 서술한다. 각각을 따로 디버깅하라: 정지 카메라로 운동을 바꾸고, 그다음 고정된 피사체로 카메라를 바꿔라.

운동 표현 패턴

Motion: the steam above the mug drifts up and slightly right, slow and continuous
Motion: the flag ripples in short gusts, fabric folding toward the viewer
Motion: the subject turns their head from left to right over the shot, unhurried

유용한 운동 어휘: drifts, ripples, swells, settles, sweeps, pulses, unhurried, continuous. 동사 하나를 방향과 리듬에 결합하면 재현 가능한 결과를 얻는다.

카메라 표현 패턴

Camera: static, locked-off tripod shot
Camera: slow dolly in, ending close on the subject
Camera: gentle pan left to right, constant speed
Camera: slow orbit around the subject, keeping it centered
Camera: slight handheld sway, no travel

경험 법칙

  • 샷당 운동은 하나만. 한 클립에 두 개의 카메라 운동을 넣으면 보통 둘 사이에 끼어 둘 다 닮지 않은 결과를 낳는다.
  • 목표가 있는 운동에는 종점을 명시하라. "다가가며, 손잡이 가까이에서 끝남"은 모델에게 목적지를 준다.
  • "정지"를 명확히 말하라. 빈 카메라 슬롯은 요청하지 않은 드리프트를 초대하는 것이다.
  • 속도 부사를 일관되게 유지하라. 한 시리즈가 곳곳에서 "느리게"를 쓴다면, 한 클립에서 "빠르게"로 바꾸면서 다른 곳의 리듬이 맞기를 기대하지 마라.

클립이 이상하게 나오면 같은 레시피를 두 번 실행하라: 한 번은 운동을 0으로 하고 카메라를 활성화하고, 한 번은 카메라를 정지로 하고 운동을 활성화한다. 문제가 되는 슬롯이 바로 당신의 버그다.

원본 오디오 프롬프트 레시피

오디오는 사후 추가가 아니라 하나의 슬롯이다. 장면을 쓰듯이 프롬프트에 그것을 쓰라: 서술적이고, 구체적이며, 두드러짐 순서로 정렬하라.

오디오를 분위기 저음층, 그다음 개별 이벤트로 구조화하고 세미콜론으로 구분하라:

Audio: <continuous background sound>; <one-off action sound>; <one-off action sound>

레시피: 분위기 중심 클립

Audio: low room hum with faint refrigerator cycling; a single ceramic clink near the middle

레시피: 환경 중심 클립

Audio: layered coastal wind, distant surf rolling in and out; one sharp gull call early

실현 가능한 프롬프트 작성하기

  • 감정이 아니라 원천을 명시하라. "마른 풀을 스치는 바람"은 렌더링 가능하지만, "평온한 분위기"는 그렇지 않다.
  • 시간 표현을 신중하되 의도적으로 사용하라. near the middle, early, at the end는 프롬프트를 클립의 특정 시점에 매핑한다.
  • 분위기와 이벤트를 분리하라. 하나의 연속 저음층에 한두 개의 장식 음향 효과가 더해지면, 동등한 비중의 다섯 개 소음 목록보다 더 명확하게 읽힌다.
  • 저음층을 장면과 유형상 일치시켜라. 실외 절벽 샷에 실내 방 저음이 깔리면 모순이며, 모델은 그것을 어떻게든 해결해야 한다.

오디오 슬롯이 너무 많은 내용을 떠안고 있다면, 운동을 조정하기 전에 그것을 줄여라. 사운드는 보통 가장 단순화하기 쉬운 슬롯이며, 레시피가 과도하게 지정되었는지 판단하는 가장 빠른 신호다.

레시피 반복: 한 번에 하나의 변수만 바꾸기

반복 규율은 프롬프트 엔지니어와, 그럴듯해 보일 때까지 재추첨을 반복하는 사람을 구분하는 핵심이다.

루프

  1. 기준선을 동결하라. 현재 레시피를 온전히 저장하고 그 출력을 기록하라.
  2. 슬롯 하나만 바꿔라. 문장이 아니라 — 슬롯 하나. "Camera: static"을 "Camera: slow dolly in"으로 바꾸는 것이 한 번의 변경이다.
  3. 동일한 피사체와 장면으로 생성하고 기준선과 비교하라.
  4. 차이를 기록하라. 개선되었다면 그 변경을 기준선 레시피로 승격하라.
  5. 반복하라, 레시피가 목표 샷 유형에 대해 안정적으로 작동할 때까지.

실용적인 습관

  • 레시피 시리즈마다 초안 파일 하나를 유지하라. 무엇을 바꿨는지, 무엇이 눈에 띄는 차이를 만들었는지 기록하라.
  • 슬롯 하나의 세 가지 변형을 일괄 테스트하라, 세 슬롯에 각각 하나의 변형을 넣는 대신; 생성할 때마다 더 많이 배운다.
  • 적극적으로 되돌려라. 한 변경이 두 번의 실행 후에도 애매하다면 버려라. 애매한 개선은 쌓이기를 기다리는 회귀다.
  • 어떤 슬롯 변경 후에도 재테스트하라, 건드리지 않은 슬롯이라도. 슬롯은 어텐션을 통해 상호작용하며, 더 큰 운동 문장이 장면 디테일을 밀어낼 수 있다.

레시피가 완성되는 기준은 특정 클립 하나가 좋아 보이는 것이 아니라, 같은 템플릿의 서로 다른 세 가지 채우기가 모두 올바르게 보이는 것이다.

코드에서 프롬프트 레시피 버전 관리 및 재사용

레시피를 코드베이스 곳곳에 흩어진 문자열이 아니라 구조화된 데이터로 저장하라. 레시피당 작은 JSON 또는 YAML 파일 하나면 차이 비교, 템플릿화, 롤백을 공짜로 얻는다.

{
  "id": "product-mug-v3",
  "slots": {
    "subject": "a matte ceramic mug, rounded handle, faint speckled glaze",
    "environment": "wooden kitchen counter, soft morning light from the left, blurred shelves behind",
    "style": "natural light, warm neutral palette, shallow depth of field, photorealistic",
    "motion": "steam drifts up and slightly right, slow and continuous",
    "camera": "static, locked-off tripod shot",
    "audio": "low room hum; a single ceramic clink near the middle"
  }
}

요청 시 고정된 슬롯 순서로 프롬프트를 조합하라, 그러면 문자열을 수작업으로 이어 붙일 일이 결코 없을 것이다:

def compose(recipe):
    slots = recipe["slots"]
    return "\n".join([
        f"Subject: {slots['subject']}",
        f"Environment: {slots['environment']}",
        f"Style: {slots['style']}",
        f"Motion: {slots['motion']}",
        f"Camera: {slots['camera']}",
        f"Audio: {slots['audio']}",
    ])

버전 관리 규칙

  • 동작이 바뀔 때마다 id를 올려라. product-mug-v2에서 product-mug-v3로 가면 어떤 클립이 어느 레시피에서 나왔는지 알 수 있다.
  • 파일 옆에 변경 로그를 유지하라. 버전당 한 줄: 어느 슬롯이 바뀌었고, 왜 바뀌었는지.
  • 어떤 버전이 배포된 출력을 만들어 냈다면 절대 제자리에서 편집하지 마라. 새 버전을 추가하고, 비교를 위해 이전 버전을 보존하라.
  • 보내기 전에 필수 슬롯을 검증하라. 누락된 오디오 슬롯은 예상보다 출력을 더 크게 조용히 바꾼다.

레시피가 버전 관리에 들어가면, 회귀 문제는 기억력 테스트가 아니라 git bisect 문제가 된다.

레시피를 파이프라인에 투입하기

레시피가 확장되는 이유는 그것이 데이터이기 때문이다. 그래서 자동화된 생성 워크플로에 쉽게 투입할 수 있다.

파이프라인 형태

  1. 레시피 저장소 —— 버전 관리된 레시피 파일, 샷 시리즈당 하나.
  2. 채우기 단계 —— 실행 변수(피사체, 제품명, 장소)를 동결된 슬롯에 주입한다.
  3. 조합 단계 —— 고정된 슬롯 순서로 프롬프트를 렌더링한다.
  4. 생성 단계 —— HiAPI.ai 통합 API를 통해 FLUX 3에 보내고, 레시피 id를 요청과 함께 기록한다.
  5. 품질 검사 —— 자동화된 검토와 레시피 자체의 수용 기준에 대한 표본 검사를 함께 수행한다.
  6. 기록 —— 출력 참조, 레시피 id, 모든 실행 변수를 함께 저장한다.

일괄 처리 가이드

  • 피사체가 아니라 레시피별로 일괄 처리하라. 템플릿을 공유하는 실행은 비교하기 쉽고 추론 비용도 낮다.
  • 튜닝 중에는 레시피당 동시성을 제한하라; 불안정한 레시피의 병렬 실행은 잡음만 증폭시킨다.
  • 상수를 재사용하라. 피사체, 환경, 스타일 슬롯은 보통 한 배치에서 공유되며; 운동과 카메라만 샷마다 다르다.

실제로 문제를 잡아내는 품질 검사

  • 슬롯 충실도: 출력이 지정된 피사체 속성과 지정된 조명 방향을 포함하는가?
  • 단일 운동 테스트: 카메라가 움직인다면, 그것이 요청한 그 하나의 운동인가?
  • 오디오 매칭: 분위기 저음층이 존재하며, 개별 힌트가 대략 당신이 배치한 위치에 있는가?
  • 편집 호환성: 시퀀스의 인접 클립이 색조 팔레트와 리듬을 공유하는가?

레시피 하나, 피사체 하나, 정지 카메라로 시작하라. 장면을 확인하고, 운동을 층으로 더하고, 오디오 저음층을 추가한 다음, 자동화하라. 클립 하나를 수동으로 생성하든, 파이프라인에서 백 개를 생성하든, 레시피 형식은 변하지 않는다.

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

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

API 문서 보기