업로드한 사진에서는 캐릭터가 의도한 모습 그대로입니다. 하지만 2초 뒤 어깨끈 하나가 두 개로 바뀌거나, 목선 모양이 바뀌거나, 손이 천 위로 지나간 뒤 자수 디테일이 돌아오지 않습니다. NSFW 캐릭터 제작자에게 의상은 캐릭터를 알아보는 외형의 일부일 수 있습니다. 얼굴이 아름답다고 그 클립을 사용할 수 있는 것은 아닙니다.
먼저 중요한 의상 디테일을 보이게 하고, 이를 숨기거나 바꾸는 동작을 줄이세요. 선명한 시작 사진과 구체적인 움직임 요청서는 수정할 기반을 주지만 의상을 고정하지는 않습니다. 현재 SpicyAPI의 Seedance 2.5 Spicy에는 의상 잠금, 의상 마스크, 레퍼런스 강도 제어가 없습니다.
이 가이드는 완전한 5초 예시, 의상 실패 유형별 수정, 현재 비용을 제공합니다. 직접 만든 승인된 가상 성인 캐릭터나 처리할 권리와 동의가 있는 소재를 사용하세요.
먼저 의상이 바뀌었는지 움직였을 뿐인지 확인하세요
새틴의 반사광 때문에 남색이 옅어 보일 수 있습니다. 주름이 자수를 숨길 수도 있습니다. 어깨끈이 머리카락이나 손 뒤로 사라져도 의상은 바뀌지 않았을 수 있습니다. 재시도 비용을 내기 전에 정상 속도로 재생한 뒤 의심스러운 움직임 직전과 디테일이 다시 보여야 할 시점 이후에 멈춰 보세요.
실제로 무엇이 바뀌었는지 확인하세요.
| 보이는 현상 | 비교할 부분 | 다음에 도움이 되는 수정 |
|---|---|---|
| 회전 중 색이 밝아 보임 | 원래 조명에서 돌아오나요? 솔기는 제자리에 있나요? | 의상 설명을 고치기 전에 조명을 안정시키세요. |
| 끈 하나가 두 개로 다시 나타남 | 손이나 머리카락이 지나가기 전후의 보이는 연결점을 세세요. | 원본에서 연결점을 선명하게 하고 가리는 것을 옮기세요. |
| 작은 패턴이 깜박이지만 의상 형태는 유지됨 | 업로드 사진에서 예상 시청 크기로 무늬가 읽히나요? | 구도에서 의상을 키우거나 승인된 무늬를 단순화하세요. |
| 목선이나 잠금 장치가 다른 디자인이 됨 | 캐릭터가 멈춘 뒤 재단, 테두리, 잠금 장치를 비교하세요. | 디자인 변경에 앞선 회전이나 접촉을 줄이세요. |
의상이 완전히 정지할 필요는 없습니다. 필요한 연속성은 자연스러운 주름 속에서도 같은 구조를 유지하는 것입니다. 같은 끈, 목선, 잠금 장치, 알아볼 수 있는 장식이어야 합니다.
기존 이미지→영상 예시에서 Seedance 2.5 Spicy 클립은 재킷이 두 어깨에서 미끄러져 내려가게 합니다. 프롬프트는 바람이 가장자리를 들어 올리면서 의상을 알아볼 수 있게 유지하라고 요청했습니다. 이는 의상의 특정 위치가 중요할 때 “keep the outfit recognizable”이 너무 모호한 이유를 보여줍니다.
보존할 부분이 보이는 사진을 준비하세요
예시에는 승인된 의상 디자인을 가진 31세 가상 캐릭터 Zoe를 사용하세요. 불투명한 남색 캐미솔에 어깨마다 끈 하나, 목선을 따라 크림색 파이핑, 이미지 왼쪽에 해당하는 앞면 상단의 초승달 자수 하나가 있습니다. 바지는 검은색입니다. 목표 클립은 조용한 프로필 미리보기입니다. 시청자를 보고 자세를 조금 바꾼 뒤 한 손을 허리에 둡니다.
허리 바로 아래부터 머리 위까지 담긴 승인된 시작 이미지를 만드세요. 양쪽 어깨와 목선이 분명해야 합니다. 중요한 끈을 머리카락이 가린다면 묶으세요. 초승달은 사람들이 영상을 볼 크기에서도 알아볼 만큼 커야 합니다. 이미 흐린 점으로 보이는 장식 바느질은 프롬프트 문구만으로 믿을 만한 연속성 표시가 되지 않습니다.
업로드 전에 스틸을 자세히 보세요. 원본의 이중 끈, 미완성 솔기, 주름을 가로지르는 문양은 이미 의상 문제입니다. 스틸에서 고친 뒤 승인된 이미지와 캐릭터를 비교하세요. 생성을 쉽게 하려고 정해진 의상을 함부로 다시 디자인하지 마세요. 복잡한 의상이 필수라면 중요한 부분에 구도상 더 많은 공간을 주세요.
이 진단에는 부드럽고 비교적 고른 빛을 사용하세요. 강하게 움직이는 그림자, 깜박이는 색 조명, 광택 있는 천은 색 변화와 렌더링 변화를 구분하기 어렵게 합니다. 단순한 움직임을 사용할 수 있는지 확인한 뒤 다른 쇼트에서 극적인 조명을 되살릴 수 있습니다.

일러스트이며 Seedance 프레임이 아닙니다. 끈 연결점과 목선을 읽기 쉽게 하고 손은 보존할 디테일 아래에 두세요.
완전한 5초 움직임 요청서
Seedance 2.5 Spicy 이미지→영상 Playground를 열고 승인된 사진을 시작 프레임으로 업로드하세요. 이 시각적 연습에는 5초, 720p, 오디오 끄기를 선택하세요. 이 경로는 4~30초의 정수 길이를 지원합니다. 5초는 제안된 테스트 길이이며 특별한 일관성 모드가 아닙니다.
다음 완전한 프롬프트를 시도하세요.
One continuous medium shot of the fictional adult woman in the opening image. She looks toward the camera, gives a small relaxed smile and makes a slight change of stance without turning her back. Her right hand rises beside her waist, briefly brushes the outer side seam below the camisole, then rests at her waist. Keep the neckline and both shoulder straps visible throughout. The fabric forms small natural folds but stays in place; the hand does not pull the garment, cross its neckline or cover the crescent. Steady camera and soft unchanged lighting. End with a brief relaxed hold. No cut or outfit transformation.
손은 살펴볼 디테일 아래에 있습니다. 자세 변화는 이전에 안 보인 등 디자인을 요구하지 않습니다. 마지막 정지는 움직임 후 구조를 비교하게 해줍니다.
여전히 의상이 바뀐다면 다음 시도에서 손 접촉을 제거하세요. 손에 관한 두 문장을 다음으로 바꾸세요.
Both hands remain relaxed beside her waist, clear of the camisole. She makes the small stance change, then holds the pose.
같은 원본과 출력 설정을 유지하세요. 의상이 이제 유지된다면 제스처를 다시 설계할 유용한 이유가 됩니다. 제스처가 일어날 시점 전에도 바뀐다면 손 설명을 추가하기보다 시작 이미지와 자세 변화를 살피세요.
손이 끈이나 잠금 장치를 지나갈 때
가장 유용한 프레임은 숨겨진 디테일이 돌아오는 순간인 경우가 많습니다. 끈이 접촉 전에는 보이고 접촉 중에는 가려지며 이후 두 개가 된다면 프롬프트가 색을 잊은 것이 문제가 아닙니다. “navy”를 다섯 번 반복해도 의상에 연결되는 끈의 개수는 설명되지 않습니다.
다음 시도에서는 제스처를 연결점에서 떨어뜨리세요. 허리에 손을 두거나, 팔꿈치 아래 소매를 스치거나, 목선을 넘지 않고 얼굴 쪽으로 손을 올리면 손가락 뒤 작은 디테일을 재구성하도록 요구하지 않고도 분위기를 유지할 수 있습니다. 캐릭터에 맞는 제스처를 선택하고 모든 연기를 정지된 자세로 바꾸지 마세요.
접촉이 필수라면 한 번의 짧은 접촉과 분명한 떼기를 설명하세요. 손 뻗기, 잡기, 당기기, 회전, 머리 쓸어 넘기기를 같은 짧은 클립에 몰아넣지 마세요.
닫힌 로브에는 캐미솔과 다른 유지 지시가 필요합니다. 겹친 앞판과 묶인 벨트가 선명한 스틸을 준비하세요. 승인된 벨트에 고리 두 개와 늘어진 끝 두 개가 있다면 원본이 실제로 보여주는지 확인하세요. 소매 제스처에는 다음을 쓰세요.
The fictional adult adjusts the sleeve cuff with one brief touch, then releases it and rests both hands below the belt. Keep the opaque robe fully closed with the same overlapping panels, centered tied belt, two loops and two hanging ends; small sleeve folds are natural, but neither hand pulls the knot or front panels.
매듭이 손가락과 합쳐진다면 접촉을 제거하거나 별도의 소매 디테일 쇼트로 컷하세요. 당기기를 요구하면서 잠금 상태를 유지하라는 것은 동작과 모순될 수 있습니다. 생성 전에 의상을 제자리에 두는 쇼트인지 의도적으로 바꾸는 쇼트인지 결정하세요.
회전이 새로운 등이나 옆면 디자인을 만들어낼 때
정면 사진은 앞쪽 끈 두 개를 완벽히 보여도 등에 대해서는 아무것도 알려주지 않을 수 있습니다. 전체 회전은 그 빠진 시점을 요구합니다. 앞 디테일을 나열한 문장은 승인된 등 구조를 제공하지 못합니다.
짧은 미리보기는 원본이 뒷받침하는 각도에서 멈추세요. 시작 스틸을 필요한 약간의 3/4 측면 구도로 이미 준비하고 그 시점 안에서 작은 움직임을 요청하세요. 시작 사진이 바뀌므로 승인 전에 원래 의상과 비교하세요.
이야기에 등이 정말 필요하면 같은 끈 개수, 천, 옆 솔기, 잠금 장치를 가진 승인된 뒷모습 이미지를 준비하세요. 믿을 만한 편집 선택은 종종 컷입니다. 정면 클립 다음에 별도로 준비한 뒷모습 클립을 배치하세요. 연속 회전 대신 두 디자인을 모두 통제할 수 있습니다.

일러스트이며 Seedance 회전 테스트의 프레임이 아닙니다. 별도 쇼트를 만들기 전에 필요한 양쪽 시점에서 의상을 승인하세요.
SpicyAPI의 Spicy 작업은 시작 이미지 하나와 선택적 마지막 이미지를 받습니다. 호환되는 승인된 마지막 포즈를 목표로 쓸 수 있지만 중간의 의상을 보장하지는 않습니다. 두 사진의 의상 구조를 맞추세요. 목선이 다른 두 번째 사진은 해결책이 아니라 충돌하는 목표를 만듭니다.
별도의 일반 Seedance 2.5 레퍼런스→영상 작업은 새로 구성하는 쇼트에 여러 레퍼런스 이미지를 받습니다. 승인된 앞뒤 모습이 있는 요청서에 맞을 수 있지만 다른 작업이며 다른 콘텐츠 경로입니다. Spicy에서 허용된 NSFW 요청이 그곳에서도 동일하게 작동한다고 가정하지 마세요. 현재 Spicy 이미지→영상 작업에는 별도의 레퍼런스 이미지 입력이 없습니다.
자수, 레이스 같은 테두리, 프린트가 계속 바뀔 때
의상 구조와 표면 디테일을 분리하세요. 끈과 목선은 맞지만 작은 반복 패턴이 움직인다면 회전을 줄여 평가할 수 있습니다. 모든 바느질을 빠짐없이 설명하는 것은 실용적인 제작 계획이 되기 어렵습니다.
독창적인 가상 의상이라면 작은 반복을 많이 넣기보다 읽기 쉬운 무늬 하나를 고려하거나 기존의 중요한 디테일을 가까이 보여주세요. 고정된 의상 디자인이라면 승인된 디자인을 유지하고 구도를 바꾸세요. 의상을 크게, 프린트를 가로지르는 움직임을 적게, 조명을 깨끗하게 만드세요. 알아볼 특징이 목선 근처라면 작은 프로필 미리보기에 전신 구도가 필요하지 않을 수 있습니다.
구조는 안정됐고 남은 문제가 보이는 디테일 부족이라면 720p에서 1080p로 바꿀 만합니다. 높은 설정이 패턴을 유지한다는 증거는 아닙니다. 목선이 이미 바뀌고 있다면 픽셀을 늘려도 잘못된 목선이 더 선명해질 수 있습니다. Spicy 4K 옵션은 업스케일 단계이며 별도의 의상 보존 제어가 아닙니다.
의뢰받은 납품에서 정확한 로고, 프린트, 테두리가 유지돼야 한다면 비슷한 실패가 몇 번 이어진 뒤에는 새 생성에만 의존하지 마세요. 안정적인 짧은 구간, 준비된 대체 쇼트, 모션 트래킹과 합성 기술을 갖춘 편집자를 사용하세요. 한 프레임에 붙인 패치는 완성된 영상 수정이 아닙니다. 주름, 원근, 빛, 앞을 지나가는 손을 따라가야 합니다. 현재 Spicy 작업에는 국소 의상 마스크나 “repair only this area” 영상 모드가 없습니다.
클립을 늘리기 전에 수정 예산을 계산하세요
| Seedance 2.5 Spicy 설정 | 5초 견적 | 추가 지출로 얻는 것 |
|---|---|---|
| 720p, 시작 이미지만 | $2.16 | 의상 디테일을 읽을 수 있는 짧은 테스트. |
| 720p, 시작과 마지막 이미지 | $2.16 | 같은 가격이며 마지막 포즈를 목표로 합니다. 중간은 아닙니다. |
| 1080p, 시작 이미지만 | $5.40 | 의상 구조가 안정된 뒤 더 세밀한 디테일. |
720p 5초 시도 세 번은 $6.48입니다. 원래 제스처, 손 접촉 없음, 작은 회전을 비교할 수 있습니다. 같은 1080p 시도 세 번은 $16.20입니다. 의심되는 원인을 하나씩 바꾸면 같은 긴 프롬프트를 반복하는 것보다 더 많은 정보를 얻습니다.
카탈로그는 480p도 초당 $0.216, 5초 $1.08로 표시합니다. 큰 실루엣이나 명확한 잠금 변화 확인에 유용할 수 있습니다. 그 크기에서 읽을 수 없는 섬세한 자수를 승인할 근거로는 부적절합니다. 나중에 높은 해상도로 생성하는 것은 다른 작업이며 앞선 움직임을 재현한다는 보장은 없습니다.
현재 각 Spicy 해상도에서 오디오 켜기와 끄기의 표시 요율은 같습니다. 오디오 끄기는 연습을 이미지에 집중시킬 뿐 할인은 없습니다. 짧은 쇼트에서 유지할 만한 의상과 동작을 얻기 전에는 30초 버전에 돈을 쓰지 마세요.
완성된 쇼트를 확인하세요
가까운 접촉이나 의도적인 의상 변화가 있는 성인 장면은 움직일 수 있는 의상과 유지할 디테일을 분명히 구분해야 합니다. 의도적인 의상 전환에는 호환되는 마지막 이미지를 쓰고 “change clothes”와 “keep everything unchanged”를 함께 넣지 마세요.
시드를 원본, 프롬프트, 설정과 함께 저장해 특정 시도를 기록할 수 있습니다. 시드는 의상 잠금이 아니며 동작이나 원본을 바꾼 뒤 동일한 의상을 보장하지 않습니다.
정상 시청 크기에서 완성 쇼트를 승인한 뒤 접촉 순간, 가장 큰 회전, 마지막 정지를 확인하세요. 세 부분이 모두 승인된 구조를 보여주면 자연스러운 천 움직임이 있어도 유용할 수 있습니다. 다른 의상으로 끝난다면 그 변화를 도입한 동작이나 원본으로 돌아가세요.
승인된 쇼트를 API로 실행하세요
환경에 SPICY_API_KEY를 설정하고 SPICY_IMAGE_URI를 시작 이미지의 접근 가능한 URL이나 업로드된 spicy:// URI로 설정하세요. 이 Python 3 예시는 가격을 확인한 뒤 새 쇼트 하나를 제출합니다.
import json
import os
import urllib.request
import uuid
base = "https://api.spicyapi.ai/api/v1"
headers = {"Authorization": "Bearer " + os.environ["SPICY_API_KEY"],
"Content-Type": "application/json", "User-Agent": "SpicyAPI-Blog/1.0"}
settings = {
"duration_seconds": 5,
"resolution": "720p",
"generate_audio": False
}
settings["prompt"] = 'One continuous medium shot. The adult gives a small smile and shifts her stance slightly. Keep the neckline and both shoulder straps visible, the outfit in place, and the camera fixed.'
settings["image_url"] = os.environ["SPICY_IMAGE_URI"]
payload = {"model": "bytedance/seedance-2.5-spicy/image-to-video", "input": settings}
def post(path, body):
request = urllib.request.Request(base + path, json.dumps(body).encode(), headers)
with urllib.request.urlopen(request, timeout=60) as response:
result = json.load(response)
if result.get("code") != 200:
raise RuntimeError(result)
return result["data"]
quote = post("/jobs/quote", payload)
if input(f"Maximum charge ${quote['maxCharge']}. Type yes to generate: ") != "yes":
raise SystemExit("Stopped before generation")
headers["Idempotency-Key"] = str(uuid.uuid4())
print("Request key:", headers["Idempotency-Key"], flush=True)
task = post("/jobs/createTask", {**payload, "quoteId": quote["quoteId"],
"expectedCost": quote["estimatedCost"]})
print("Task ID:", task["taskId"])같은 요청을 복구할 수 있도록 출력된 요청 키를 보관하세요. 새 쇼트에는 새 키를 사용합니다. 작업 API 문서는 결과 전달과 복구를 설명합니다.
반복 쇼트에서는 Agent가 승인된 입력 파일을 사용하게 하세요. CLI spicyapi tasks create --model bytedance/seedance-2.5-spicy/image-to-video --input-file input.json --wait; MCP에는 그 모델과 입력으로 spicyapi_task_create를 호출하도록 요청하고, Skill에는 “Use the spicyapi Skill to generate this approved shot and return the result.”라고 요청하세요. CLI와 MCP는 생성 전에 가격을 표시합니다. Agent 통합 문서를 확인하세요.







