KO ▾
NSFW Video Generator

성인 비디오 파이프라인용 무검열 API

NSFW 영상 대본 LLM API: 텍스트 전용 워크플로우

NSFW 영상 대본 LLM API는 프로젝트의 텍스트 부분을 담당합니다: 개요, 장면 목록, 대화 및 기타 도구를 위한 프롬프트를 작성합니다. 비디오는 생성하지 않으며, 이 페이지는 해당 위치를 보여줍니다.

업데이트

터미널에서 빈 필름 프레임으로 스크립트 페이지가 흐르는 illustration로, 텍스트 전용 LLM 비디오 워크플로우를 보여줍니다

주요 포인트

  1. API는 텍스트 전용입니다. 이미지, 오디오 또는 비디오가 아닌 대본, 촬영 목록 및 프롬프트를 생성합니다.
  2. JSON 모드를 사용하여 파싱 가능한 장면 목록을 얻으세요. 톤과 규칙을 설정하는 시스템 프롬프트를 사용하세요.
  3. 100,000 토큰 컨텍스트 창을 사용하면 모든 요청에 전체 스토리 바이블을 유지할 수 있습니다.
  4. 캐릭터는 성인이어야 하며, 미성년자가 관련된 성적인 콘텐츠는 절대 허용되지 않습니다.

비디오 파이프라인에서 LLM의 역할

NSFW 영상 대본 LLM API 워크플로우를 구축 중이라면, 먼저 업무 분담을 결정해야 합니다. 언어 모델은 텍스트를 작성하고, 별도의 비디오 모델, 편집자 또는 촬영 팀이 영상을 만듭니다. 이 서비스는 첫 번째 부분만 제공합니다: 콘텐츠 거부 없이 합법적인 성인용으로 응답하도록 조정된 하나의 오픈 웨이트 텍스트 모델로, OpenAI 호환 엔드포인트 뒤에 위치합니다. 프레임 렌더링, 음성 합성 또는 이미지 생성을 하지 않으며, 임베딩이나 파인튜닝도 제공하지 않습니다.

이것은 여전히 피션, 롤플레이 및 동반자 스타일 스토리텔링 등 성인 대상 프로젝트 제작과 관련된 많은 작업을 커버합니다. 모델은 시놉시스를 초안으로 작성하고, 장면으로 나누며, 대화와 내레이션, 촬영 목록을 작성하고, downstream의 비디오 도구를 위한 프롬프트를 작성할 수 있습니다. NSFW 파이프라인 페이지는 이 텍스트 단계가 스택의 나머지 부분과 어떻게 연결되는지 설명합니다.

모든 요청에 적용되는 고정 규칙 하나: 미성년자가 관련된 성적인 콘텐츠 없음. 시스템 프롬프트를 작성하여 모든 캐릭터가 성인이 되도록 하고, 이를 사후 고려사항이 아닌 프로젝트의 요구사항으로 처리하세요.

네 단계로 구성된 파이프라인

스크립트 워크플로우는 각 호출이 하나의 작업을 수행하고 구조화된 출력을 다음 단계로 전달할 때 가장 잘 작동합니다. 실용적인 레이아웃은 다음과 같습니다:

  1. 스토리 바이블. 캐릭터(모두 성인), 배경, 톤 및 반복되는 세부 사항을 포함한 하나의 문서입니다. 한 번 작성하고 모든 호출에 보냅니다.
  2. 개요 작성. 한 번의 호출로 premise를 8~15개의 beat 요약으로 변환합니다.
  3. 장면 대본. 각 beat마다 한 번의 호출로 바이블과 이전 장면의 연속성을 바탕으로 대화, 액션 라인, 내레이션을 생성합니다.
  4. 촬영 목록 및 프롬프트. 장면당 최종 호출은 JSON 형식으로 반환합니다: 샷, 지속 시간, 카메라 노트 및 비디오 도구를 위한 프롬프트 문자열.

이렇게 분할하면 출력물이 짧아져 검토가 용이하며, 마음에 들지 않을 경우 재생성 비용도 절감됩니다. 또한 실패한 호출의 비용은 전체 대본이 아닌 한 장면 분량에 그칩니다.

규칙을 설정하는 시스템 프롬프트

시스템 프롬프트는 톤, 형식, 제한 사항을 정의하는 곳입니다. 거부 행동이 없는 모델도 지시는 따르므로, 프롬프트의 질이 대본의 질을 결정합니다. 장르, 시점, 제외할 요소 등을 명확히 지정하세요. 성인 대상 픽션을 위한 시작점은 다음과 같습니다:

SYSTEM = '''You are a screenwriter for adult-audience fiction videos.
All characters are adults aged 25 or older, and you state each age in the character sheet.
Write in present tense, third person, with short visual action lines.
Keep dialogue natural and under 25 words per line.
Build tension and character through setting, glances and subtext.
Never include minors in any role or reference.
Follow the story bible exactly; do not change names, ages or relationships.
When asked for JSON, return only the JSON object.'''

프로젝트마다 조정하세요. 누아르 미스터리와 로맨스 코미디는 서로 다른 지시가 필요하며, 프롬프트 내 한 줄 스타일 예시가 형용어 구절 나열보다 모델을 더 잘 유도합니다.

JSON 모드에서 장면 목록 생성

촬영 목록 단계에서는 코드가 읽을 수 있는 출력이 필요합니다. JSON 모드는 파싱 가능한 객체를 강제합니다. response_format={"type": "json_object"}를 전달하고, 프롬프트에서 키 이름을 지정하며 온도를 낮게 유지하세요. 이 예시는 이 사이트의 base URL과 모델 ID uncensored를 사용하여 Python openai 패키지를 사용합니다.

import json, os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.nsfwvideogenerator.cc/v1",
    api_key=os.environ["NOTRACK_API_KEY"],
)

SYSTEM = open("system_prompt.txt").read()
BIBLE = open("story_bible.txt").read()

def shot_list(scene_text):
    resp = client.chat.completions.create(
        model="uncensored",
        messages=[
            {"role": "system", "content": SYSTEM},
            {"role": "user", "content": (
                "Story bible:\n" + BIBLE +
                "\n\nScene script:\n" + scene_text +
                "\n\nReturn a JSON object with key 'shots': a list of objects with "
                "'number', 'seconds', 'camera', 'action' and 'video_prompt'."
            )},
        ],
        response_format={"type": "json_object"},
        temperature=0.3,
        seed=7,
    )
    data = json.loads(resp.choices[0].message.content)
    return data["shots"]

for shot in shot_list(open("scene_03.txt").read()):
    print(shot["number"], shot["seconds"], shot["video_prompt"])

전달하기 전에 결과를 검증하세요. shots가 존재하고, seconds이 숫자이며, 프롬프트 문자열이 비어 있지 않은지 확인하세요. 구문 분석이 실패하면 한 번 재시도하세요. 실패하거나 거부된 요청은 요금이 부과되지 않으므로 재시도는 오류가 있는 호출에 대해 추가 비용이 들지 않습니다.

크리에이티브 텍스트에 중요한 설정

각 단계마다 다른 설정이 필요하며, API는 일반적인 설정을 그대로 전달합니다: temperature, top_p, stop, seed 및 빈도 페널티와 존재 페널티.

  • 개요 및 대화: 다양성을 위해 온도를 0.8~1.0으로 설정합니다. 두세 가지 변형을 생성하고 하나를 선택하세요.
  • 촬영 목록: 온도를 0.2~0.3으로 설정하고, 동일한 입력의 재실행이 비교 가능하도록 고정된 seed을 사용하세요.
  • 반복: 긴 장면은 때로 같은 구문을 반복할 수 있습니다. 0.3과 같은 작은 빈도 페널티가 도움이 됩니다.
  • 길이 제어: max_tokens은 선택 사항이지만, 장면당 800자 제한은 출력을 간결하게 유지합니다. "END SCENE"과 같은 stop 시퀀스를 사용하면 모델이 작성하도록 지시한 마커에서 출력을 종료할 수 있습니다.
  • 스트리밍: 작가가 출력을 실시간으로 확인하는 경우 stream: true을 활성화하세요. 스트림은 종료될 때까지 동시성 슬롯을 보유한다는 점을 기억하세요.

quickstart에는 지원되는 모든 매개변수가 나열되어 있으며, 엔드포인트는 POST /v1/chat/completions과 GET /v1/models입니다.

연속성을 위한 100k 컨텍스트 창 사용

연속성 오류는 생성된 대본에서 흔히 발생합니다. 이름이 바뀌거나, 나이가 달라지거나, 소품이 사라지는 식입니다. 컨텍스트 창은 프롬프트와 완성을 합쳐 100,000 토큰이며, 이는 스토리 바이블 전체, 개요, 여러 완성된 장면을 모든 호출에 포함하기에 충분히 큽니다. 이 규모의 프로젝트에는 검색 시스템이 필요하지 않습니다. 사실을 붙여넣고 모델이 매번 읽도록 하세요.

컨텍스트는 무료는 아니지만 저렴합니다. 바이블과 개요가 총 20,000 토큰이고 50개의 장면을 작성하며, 각 호출이 약 600 토큰을 반환한다고 가정해 보세요:

  • 입력: 50 x 20,000 = 1,000,000 토큰 x 입력 토큰 100만 개당 $0.15 = $0.15
  • 출력: 50 x 600 = 30,000 토큰 x 출력 토큰 100만 개당 $0.50 = $0.015
  • 총계: 50개 장면 모두에 대해 $0.165

동일한 50개 장면 위에 촬영 목록 단계를 추가하면 입력 3,000 토큰, 출력 500 토큰이 발생하며, 입력 150,000 토큰은 $0.0225, 출력 25,000 토큰은 $0.0125가 들어갑니다. 이는 추가로 $0.035가 들어가는 비용입니다. 전체 대본과 촬영 목록 비용은 약 $0.20이며, 이는 API 키 페이지에서 청구할 수 있는 $0.50의 무료 체험 크레딧보다 적습니다.

창에는 프롬프트와 답변이 모두 들어야 한다는 점을 명심하세요. 20,000 토큰의 바이블은 충분한 여지를 남기지만, 95,000 토큰의 프롬프트는 완성에 거의 여지가 없습니다.

출력 검토 및 수정

생성된 모든 장면을 초안으로 취급하세요. 세 가지 확인 사항으로 비디오 도구에 도달하기 전에 대부분의 문제를 잡을 수 있습니다. 첫째, 일관성 검사를 실행하세요: 완성된 대본을 스토리 바이블과 함께 다시 보내고 이름, 나이, 위치 또는 타임라인이 다른 곳을 모델이 나열하도록 요청하세요. 낮은 온도로 두 번째 호출은 저렴하며 눈으로 놓친 편차를 자주 찾아냅니다. 둘째, 대사를 소리 내어 읽으세요. 화면에서는 괜찮아 보이는 줄도 말로 하면 어색할 수 있으며, 성우 또는 TTS 도구는 이를 즉시 드러냅니다. 셋째, 촬영 지속 시간이 계획한 길이와 합산되는지 확인하세요. 모델은 산술에 느슨하므로 모델이 작성한 합계를 신뢰하기보다 코드에서 seconds 필드를 합산하세요.

장면이 기대에 미치지 못할 때 전체 시스템 프롬프트를 다시 작성하지 마세요. 사용자 메시지에 하나의 수정 지시사항을 추가하세요. 예를 들어 "짧은 액션 라인" 또는 "더 많은 대화, 적은 설명"과 같이 하세요. 그리고 해당 장면만 재생성하세요. 바이블과 시스템 프롬프트를 고정하고 한 번에 하나의 지시사항만 변경하면 어떤 변경이 도움이 되었는지 명확해집니다. seed 매개변수는 여기서 유용합니다. 고정된 시드와 작은 프롬프트 수정은 수정의 효과를 분리합니다.

제한 사항, 정직함 및 다음 단계

구축하기 전에 몇 가지 명확한 제약 사항이 있습니다. 모델은 텍스트 전용이므로 모든 비디오, 이미지 및 음성 트랙은 다른 도구에서 제공해야 합니다. 독립적인 제공업체가 운영하는 하나의 오픈 웨이트 모델이며, 주요 벤더의 공식 API가 아닙니다. 품질은 프롬프트에 따라 다르므로 모든 대본에 대해 사람의 검토 단계를 계획하세요. 출력을 초안으로 취급하세요.

처리량에 대해, 전체 키는 8개의 동시 요청과 분당 300개를 허용하며, 체험 키는 2개와 60개를 허용합니다. 장면을 병렬로 작성하는 경우 작업자 풀 크기를 일치시켜야 합니다. rate_limited 또는 concurrency과 함께 429이 발생하면 속도를 늦춰야 합니다. Retry-After: 5 헤더가 있는 경우 서비스가 잠시 과부하 상태이므로 5초를 기다렸다가 다시 시도하세요. 프롬프트는 학습에 사용되지 않습니다.

유료 크레딧은 최소 $20 충전부터 시작하며, $500까지 정액 충전 시 $50부터 +5%, $100부터 +10%, $200부터 +15% 보너스를 제공합니다. 결제는 암호화폐만 지원하며, TRC20 네트워크의 USDT 또는 Base 네트워크의 USDC로 결제할 수 있으며 크레딧은 만료되지 않습니다. 현재 약관은 pricing page에서 확인하세요. 위의 프로젝트와 같은 경우 $20으로 수십 편의 완성된 대본을 작성할 수 있습니다.

질문과 답변

API가 비디오 자체를 생성할 수 있나요?

아니요. 이 API는 텍스트 전용 LLM입니다. 스크립트, 장면 목록 및 프롬프트를 작성하며, 비디오 생성은 별도의 도구를 사용하여 수행합니다.

어떤 콘텐츠가 제한되나요?

네. 미성년자가 관련된 성적 콘텐츠는 절대 허용되지 않습니다. 이 모델은 합법적인 성인용으로 설계되었으며, 프로젝트의 모든 캐릭터는 성인으로 설정해야 합니다.

구문 분석 가능한 샷 목록을 어떻게 얻나요?

response_format을 json_object로 설정하고, 프롬프트에서 키 이름을 지정하며, 온도를 약 0.3으로 낮춘 후 json.loads로 결과를 검증한 후 사용하세요.

완전한 스크립트 작성 비용은 얼마인가요?

20,000 토큰의 스토리 바이블과 각 600 토큰 가량의 50개 장면을 사용하면, 입력 토큰 100만 개당 $0.15, 출력 토큰 100만 개당 $0.50 기준 작성 패스 비용은 약 $0.165입니다.

키는 양식 하나만 작성하면 받을 수 있습니다

계정을 생성하고 키를 복사한 후 기본 URL을 변경하세요. 설정은 이것으로 끝입니다.