본문으로 건너뛰기

n8n NSFW AI 이미지 생성 워크플로: 캐릭터 시리즈 만들고 저장하기

n8n으로 성인 캐릭터 여섯 장면을 준비하고 비용을 제한하며 파일을 저장하세요. 기존 작업을 복구해 중복 결제를 피하는 NSFW 이미지 워크플로입니다.

작성자
Lydia
발행
읽는 시간
약 29분
수정
따뜻한 버건디 아파트 조명과 차가운 밤 림라이트 속 초록 새틴 이브닝드레스를 입은 가상의 성인 여성.

n8n NSFW AI 이미지 생성 워크플로는 장면 목록을 성인 대상 텍스트 이미지 모델에 연결하고 각 완성 이미지를 저장한 뒤 다음 장면을 시작하면 됩니다. 자체 호스팅 n8n에서는 SpicyAPI 커뮤니티 노드가 견적, 제출, 대기, 다운로드를 처리합니다. n8n Cloud에서는 내장 HTTP Request 템플릿을 쓰세요. 현재 패키지는 Cloud 직접 설치용 검증을 받지 않았습니다.

첫 가상 성인 캐릭터 시리즈에는 프롬프트 확장을 끈 Z-Image Spicy와 1024 × 1536을 쓰세요. 기본 이미지당 $0.01235이므로 성공 요청 여섯 번의 이미지 생성료는 $0.07410입니다. 항목별 비용 제한을 설정하고 첫 실행은 수동으로 하며 실제 이미지 파일을 프로젝트 폴더에 보관하세요. n8n 호스팅·파일 저장 비용은 별도입니다.

아래 워크플로는 가상 성인 한 명의 저녁 초상 시리즈를 만듭니다. 캐릭터 설명과 여섯 장면을 제공하면 n8n이 준비·전달을 반복합니다. 글로 쓴 캐릭터 기획을 일관되게 유지하지만 텍스트 이미지 생성만으로 동일한 얼굴을 보장하지는 않습니다. n8n은 모델의 콘텐츠 정책도 바꾸지 않습니다. 제한 이미지 API에 자동화 노드를 붙여도 uncensored가 되지 않습니다.

현재 플러그인 소스, 모델 카탈로그, n8n 문서에 기반한 설정 튜토리얼입니다. 예시는 새 6장 테스트 보고서가 아닌 워크플로 제안입니다. 공개 일러스트는 구성을 설명하며 모델 성능을 입증하는 샘플이 아닙니다.

만들 워크플로

순서는 다음과 같습니다.

Manual Trigger → Build scene list → Split Out → Build prompts → Loop Over Items → SpicyAPI Generate → Google Drive Upload → 루프로 돌아가기.

루프는 장면 하나씩 실행합니다. 생성 노드가 장면을 완료하고 다운로드하면 Drive 노드가 저장하고, 그 후 다음 장면이 시작합니다. 완료 시리즈는 루프의 Done 출력에서 끝납니다.

한 장이 아닌 세트를 만들 때 순서가 중요합니다. 4번 장면이 실패해도 1~3번은 폴더에 저장돼 있어야 합니다. 시리즈 전체를 다시 시작하지 않고 4번을 복구한 뒤 나머지를 계속할 수 있습니다. 장면 정보가 아직 있을 때 알아볼 수 있는 파일명도 붙입니다.

SpicyAPI 노드는 이미 여러 입력 항목을 처리할 수 있습니다. 여기서 루프를 더하는 목적은 다음 항목 전에 결과를 저장하기 위해서이며 여러 프롬프트를 보내는 데 반드시 필요한 것은 아닙니다. 큰 다중 항목 노드는 나중에 유용할 수 있지만 실행, 작업, 다운로드 파일을 배우는 단계에는 한 장씩 처리하는 흐름이 이해하기 쉽습니다.

첫 버전에는 AI Agent, 프런트엔드, Telegram, 프롬프트 작성 언어 모델이 필요 없습니다. 실제 문제를 해결할 때 추가하면 됩니다. 지금은 캐릭터를 고칠 곳 하나, 장면을 바꿀 곳 하나, 결과 폴더 하나가 명확하게 남습니다.

템플릿보다 이미지 모델 먼저 고르기

성인 캐릭터 작업은 자동화보다 모델 선택이 먼저입니다. 도움이 되는 입력 양식과 세련된 데모가 있어도 원하는 자료를 거부하는 엔드포인트를 쓸 수 있습니다. 일반 n8n 이미지 예시 중에는 자체 NSFW 차단 목록을 의도적으로 더한 것도 있습니다. 그대로 가져오면 그 동작도 유지됩니다.

이 가이드에 관련된 SpicyAPI 텍스트 이미지 옵션은 다음입니다.

모델확장을 끈 생성 가격크기 제어이 워크플로에 맞는 때
Z-Image Spicy이미지당 $0.01235너비·높이 각각 256–1536픽셀, 기본 1024 × 1536성인 대상 엔드포인트와 적당한 요청 비용으로 초상 시리즈 시작
Z-Image Spicy Pro이미지당 $0.019너비·높이 각각 256–2560픽셀, 기본 1024 × 1024최종 이미지의 한 변이 1536픽셀보다 커야 할 때
Z-Image Turbo이미지당 $0.010지원 화면비 선택, 기본 1:1자체 매개변수로 저비용 워크플로 파일럿이나 콘셉트 제작

두 Spicy 계열은 성인 대상 unrestricted 엔드포인트로 표시됩니다. 제공되는 제품 범위이며 모든 프롬프트의 새 측정 허용률은 아닙니다. 자동화할 작업을 지원하는 엔드포인트를 고르고 실제 창작 기획으로 작은 파일럿을 한 뒤 시리즈를 늘리세요.

Pro는 큰 전달 캔버스의 실용적 선택이지 얼굴을 더 정확히 유지한다는 이름의 근거는 아닙니다. 최종 초상이 1024 × 1536이면 기본 Spicy가 이미 받습니다. 비싼 이름이 캐릭터 드리프트를 고친다고 생각하기보다 구체적 요구로 Pro를 선택하세요.

같은 API인 것처럼 표 사이 설정을 복사하지 마세요. Spicy·Spicy Pro는 width, height를 씁니다. Turbo는 aspect_ratio를 쓰고 프롬프트는 1,000자로 제한됩니다. Spicy 프롬프트에는 강제 글자 제한이 없습니다. 텍스트를 받으며 참조 이미지는 받지 않습니다. 워크플로에 그림을 붙여도 공개하지 않은 참조 기능이 생기지 않습니다.

첫 시리즈는 프롬프트 확장을 끄세요. 의도한 캐릭터 설명과 특정 장면을 직접 쓸 것입니다. 확장은 지시와 이미지 요청 사이에 변환을 더해 결과를 만든 문구를 판단하기 어렵게 합니다. 기본 Spicy·Turbo 가격도 바뀝니다. 확장 켜기는 각각 장당 $0.0133·$0.016입니다. Pro는 표시 이미지 가격 하나입니다.

첫 실행은 기본 Spicy, 명시적 1024 × 1536, 기본 확장 끄기를 쓰세요. 아래 예시에 일관된 크기와 단순한 계산을 줍니다. 저장 이미지를 연 뒤 더 넓은 구도, 큰 캔버스, 강한 정체성 제어용 편집 모델이 필요한지 정할 수 있습니다.

노드 설치하고 계정 연결하기

패키지, API 키, n8n Cloud HTTP 템플릿은 공식 SpicyAPI n8n 노드 가이드를 여세요. 그다음 이 특정 워크플로의 장면·참조 설정을 따르세요.

직접 커뮤니티 노드 경로는 커뮤니티 패키지를 허용하는 자체 호스팅 n8n이 필요합니다. Settings의 Community Nodes에서 @spicyapi/n8n-nodes-spicyapi를 설치하세요. 게시 패키지 버전은 0.1.1입니다. 관리자가 설치를 비활성화했다면 활성화·설치를 요청하세요. 노드 선택기를 반복 검색해도 추가되지는 않습니다.

게시된 패키지가 n8n 검증을 뜻하지 않습니다. n8n Cloud는 검증 커뮤니티 노드를 허용하며 현재 패키지는 그 범주에 없습니다. Cloud 사용자는 아래 HTTP 템플릿으로 넘어가세요. 이미지 API 한계가 아닌 n8n 커뮤니티 노드 설치 문서에 따른 구분입니다.

설치 뒤 SpicyAPI 노드를 더하고 자격 증명을 만드세요. SpicyAPI 키 콘솔의 키를 API Key 필드에 넣고 기본 Base URL인 https://api.spicyapi.ai를 유지합니다. 저장하고 연결 테스트를 하세요. 키는 자격 증명에 두며 프롬프트, Edit Fields, 공유 워크플로 내보내기에 넣지 않습니다.

연결 테스트 성공은 계정에 접근할 수 있다는 뜻입니다. 이미 이미지를 생성했다거나 모델이 모든 입력을 받는다거나 큰 배치의 잔액이 충분하다는 뜻은 아닙니다. 파일럿 전 잔액을 확인하고 수동 경로가 작동할 때까지 예약 트리거를 끄세요.

노드는 보이지만 모델 선택기가 안 불러와지면 프롬프트를 다시 쓰기보다 자격 증명·연결부터 보세요. 모델 목록 실패는 설정 문제입니다. Model 필드 ID 모드에 정확한 공개 식별자를 넣을 수도 있지만 잘못된 키를 고치거나 매개변수 규칙을 우회하지 않습니다.

예시 식별자는 alibaba/z-image-spicy/text-to-image입니다. 계열 페이지 이름과 API 식별자는 역할이 다릅니다. 페이지는 제품을 설명하고 전체 식별자는 정확한 생성 작업을 선택합니다. 노드에는 짧은 사이트 slug 대신 전체 식별자를 쓰세요.

먼저 한 장 생성하고 저장하기

여섯 장면 목록 전에 Manual Trigger를 SpicyAPI 노드 하나에 연결하세요. Resource Image, Operation Generate를 선택합니다. Z-Image Spicy를 고르거나 위 식별자의 ID 모드를 쓰세요. 텍스트 이미지 요청이므로 Media Inputs는 비웁니다.

완전한 시작 프롬프트는 다음입니다.

어깨 길이의 짙은 곱슬머리, 갈색 눈, 부드럽게 각진 얼굴, 작은 금색 펜던트가 있는 가상의 34세 여성 Mara의 화보 사진. 가는 끈의 불투명한 짙은 초록 새틴 이브닝드레스를 입고 있습니다. 해 질 무렵 높은 아파트 창 옆에서 한 손을 커튼에 가볍게 얹고 차분한 자신감으로 카메라를 봅니다. 상반신 초상, 따뜻한 실내광과 차가운 푸른 저녁빛 혼합, 자연스러운 피부 질감, 실제적인 직물 주름, 절제된 로맨틱 분위기, 프레임에 다른 사람 없음.

특정 성인과 보이는 순간 하나를 설명합니다. 카메라 위치, 중요한 의상, 따뜻한 실내와 차가운 창빛을 지정합니다. 복잡한 이야기를 한 정지 이미지에서 재구성할 필요가 없습니다.

Model Parameters의 너비 1024, 높이 1536, 확장 false를 설정하세요. 파일럿 시드는 비워 둡니다. Additional Parameters는 빈 객체 {}로 유지하세요. 보이는 프롬프트·설정을 덮어쓸 수 있어 잊은 값 하나가 양식과 다른 요청을 보낼 수 있습니다.

Max Cost per Item (USD)는 0.015입니다. 현재 $0.01235보다 높고 기본 항목당 $2보다 훨씬 낮습니다. 생성 옵션의 Wait for Completion, Download Output을 켜고 바이너리 이름은 data를 쓰세요. 첫 이미지 Max Wait Time은 기본값을 유지합니다. 노드는 무기한 대기 대신 작업 마감 시간을 사용합니다.

한 번 실행하세요. 노드는 생성 전에 견적을 받고 비용 제한과 비교합니다. 작업 성공과 출력 준비 뒤 이미지를 바이너리로 다운로드합니다. 출력의 Binary 보기에서 data를 미리 보거나 다운로드하세요.

세 가지가 일치해야 합니다. 작업 성공, 바이너리 이미지 열림, 파일럿 기획을 합리적으로 따른 그림입니다. 잘못된 의상의 성공 작업은 창작 문제, 자격 증명 실패는 설정 문제, 파일이 아직 저장되지 않은 성공 작업은 전달 문제입니다. 나누면 원래 이미지가 목적지에 안 갔을 뿐인데 새 생성에 돈을 쓰는 일을 피합니다.

사용할 크기로 그림을 보세요. 컴패니언 프로필은 작은 크롭에서 얼굴이 읽혀야 하고 챕터 일러스트는 포즈·방이 더 중요할 수 있습니다. 펜던트가 방해하면 시리즈 전에 단순화하세요. 표정이 중립적이면 일반 품질 형용사 열두 개보다 시선·포즈를 바꾸세요.

이제 Generate 뒤에 Google Drive 노드를 더하세요. Resource File, Operation Upload, Input Data Field Name data를 고릅니다. Drive 자격 증명과 프로젝트 폴더를 선택하고 성공 출력으로 업로드를 실행하세요. Drive에서 파일을 엽니다. 배치 전에 첫 업로드를 끝내야 합니다. 그렇지 않으면 성공 생성 여섯 번 뒤 같은 파일 누락을 여섯 번 고칠 수 있습니다.

캐릭터 기획 하나와 서로 다른 여섯 장면 준비하기

일관된 세트를 위해 외모와 사진 스타일을 재사용 가능한 두 필드에 두고 장면은 따로 바꾸세요. 언어 모델이 매번 새 초상 프롬프트를 만들게 하는 것보다 고정·변경 부분이 보여 제어하기 쉽습니다.

Manual Trigger 뒤 Edit Fields를 더하고 Build scene list로 이름 붙이세요. Manual Mapping에서 다음 필드를 만듭니다.

필드유형예시 값
seriesIdStringmara-evening-v1
characterBaseString가상 성인의 나이, 얼굴, 머리, 펜던트, 불투명 초록 새틴 드레스
styleBaseString화보 사진, 자연스러운 질감, 실제적인 직물, 절제된 로맨틱 분위기
scenesArray아래 여섯 장면 객체

characterBase는 ‘Mara는 어깨 길이 짙은 곱슬머리, 갈색 눈, 부드럽게 각진 얼굴, 작은 금색 펜던트를 가진 가상 34세 여성으로, 가는 끈의 불투명한 짙은 초록 새틴 이브닝드레스를 입고 있다’라는 완전한 문장을 씁니다. styleBase는 ‘화보 사진, 자연스러운 피부 질감, 실제적인 직물 주름, 절제된 로맨틱 분위기, 성인 캐릭터 한 명만’입니다.

캐릭터 필드에 모든 선호를 넣지 마세요. ‘미소’, ‘앉기’, ‘창가’, ‘푸른 빛’은 장면 선택입니다. 기본에 고정하면 다음 따뜻한 조명의 서 있는 초상과 충돌할 수 있습니다. 기본은 누구인지, 장면은 그곳에서 무엇이 보이는지를 설명해야 합니다.

scenes Array 값에 다음을 붙이세요.

json
[
  {"sceneId":"01","scene":"Waist-up beside an apartment window at dusk, hand on the curtain, cool evening light and warm interior light, looking toward the camera."},
  {"sceneId":"02","scene":"Seated sideways on a velvet armchair in the same apartment, relaxed shoulders, hands resting separately, warm floor-lamp light, medium portrait."},
  {"sceneId":"03","scene":"Standing in the apartment doorway, one hand on the doorframe, softly playful expression, three-quarter portrait, warm light behind her."},
  {"sceneId":"04","scene":"Close portrait beside the window, curls tucked behind one ear, pendant visible, steady direct gaze, soft side light."},
  {"sceneId":"05","scene":"Standing on a quiet balcony at blue hour, dress moving slightly in the breeze, looking back toward the apartment, medium portrait."},
  {"sceneId":"06","scene":"Seated on the armchair near the window, looking down with a small smile, hands resting in her lap, gentle mixed evening light, waist-up portrait."}
]

이 여섯 프롬프트는 관련 없는 요청보다 작은 촬영 세트입니다. 방, 의상, 캐릭터는 유지하며 거리, 포즈, 관심 방향을 바꿉니다. 한 번에 모두 변경하지 않고도 이야기·프로필에 충분한 변화를 얻습니다.

공개 예시는 모두 옷을 입고 있습니다. 성인 대상 프로젝트에서는 허용되는 의상·분위기를 자신의 가상 성인 기획에 맞추세요. 지시는 시각적으로 구체적이어야 합니다. 성숙한 카테고리 이름만으로는 친밀한 클로즈 초상, 극적인 저녁 패션, 편안한 방 중 무엇을 원하는지 알 수 없습니다.

어려운 전신 포즈 여섯 개부터 시작하지 마세요. 넓은 구도는 배열할 것이 많고 얼굴 차이를 보기 어렵게 합니다. 4번 클로즈 초상은 방이 프레임 대부분을 차지하지 않아 대표 얼굴 특징을 비교할 수 있다는 점에서 유용합니다.

거울 옆 클로즈 일러스트에서 Mara의 짙은 곱슬머리, 갈색 눈, 금색 펜던트, 초록 새틴 드레스가 보입니다.

일러스트: 클로즈 초상은 재사용 캐릭터 설명에 유지한 외모 특징을 강조합니다.

장면 분리하고 최종 프롬프트 만들기

Build scene list 뒤 Split Out을 더하세요. Field to Split Out은 scenes, Include는 All Other Fields, Destination Field Name은 scene입니다. 출력은 여섯 항목이어야 합니다. 각 항목은 seriesId, characterBase, styleBase와 자신의 scene 객체를 유지합니다. Split Out 문서를 따르는 설정입니다.

계속하기 전에 출력을 여세요. 첫 항목의 scene.sceneId는 01, 둘째는 02여야 합니다. 여섯 장면을 담은 항목 하나뿐이면 분리 필드가 틀렸고, 캐릭터 설명이 사라졌으면 Include가 틀렸습니다. 여기서 고치는 데 생성료는 없습니다.

다른 Edit Fields를 더해 Build prompts로 이름 붙입니다. 들어오는 필드는 유지합니다. Expression 모드 String인 sceneId에 {{ $json.scene.sceneId }}, String prompt에 {{ $json.characterBase + '. ' + $json.styleBase + '. ' + $json.scene.scene }}를 넣으세요. Edit Fields 문서는 필드·표현식을 설명합니다.

작은 표현식은 일반 텍스트 세 조각을 합칩니다. 언어 모델에게 캐릭터를 바꿔 말하거나 장면을 재해석하도록 하지 않습니다. 여섯 최종 프롬프트를 모두 보세요. 캐릭터·스타일 기본은 같고 끝의 장면만 달라야 합니다.

표현식을 문자 그대로 저장하지 않고 계산하는지 확인하세요. 미리보기에 중괄호와 $json이 아니라 완전한 사진 설명이 보여야 합니다. undefined가 있으면 만든 필드명과 다릅니다. characterBase, styleBase, scene의 정확한 철자가 중요합니다.

나중에 스프레드시트를 쓰더라도 같은 구조를 유지하세요. 한 행에 seriesId, sceneId, 변화하는 장면을 담고 Build prompts 전에 고정 캐릭터·스타일을 붙일 수 있습니다. 첫 여섯 장에 표가 필수는 아니지만 안정된 장면 ID가 다음 이동을 쉽게 합니다.

더 정교해 보이기 위해 AI Agent를 사이에 넣지 마세요. 텍스트 모델 요금, 지연, 다른 단계의 거부가 늘 수 있습니다. 이미지 엔드포인트는 성인 기획을 지원하지만 선택적인 프롬프트 작성 모델은 작성 자체를 거부할 수 있습니다. 그러면 생성 전에 거부됩니다. 준비한 프롬프트를 선택 이미지 작업에 직접 보내세요.

다음 장면 전에 현재 이미지 저장하기

Build prompts 뒤 Loop Over Items, Batch Size 1을 더하세요. Loop 출력을 SpicyAPI Generate에, Generate를 Google Drive Upload에, Upload를 Loop Over Items에 다시 연결합니다. Done은 완료 시리즈의 끝입니다. Reset은 끄세요. 무한히 입력을 재생성하는 루프가 아닌 유한 여섯 항목입니다. n8n Loop Over Items 문서를 참고하세요.

Generate의 파일럿 고정 프롬프트를 {{ $json.prompt }}로 바꿉니다. 성공 파일럿과 같은 모델, 크기, 비용 제한, 다운로드 설정을 유지하세요. 루프가 한 항목씩 주므로 각 차례 완전한 장면 프롬프트 하나가 보여야 합니다.

중요한 연결은 Upload에서 루프로 돌아가는 선입니다. Generate에서 직접 돌아가면 저장 전에 다음 장면이 시작합니다. Loop 대신 Done에 연결하면 장면별 경로를 건너뜁니다. 손으로 그래프를 따라가 보세요. 한 장면이 Generate에, 파일이 Upload에, 완료 업로드가 다음 장면으로 돌아갑니다.

Drive Upload의 Input Data Field Name은 data를 유지하세요. File Name은 {{ $('Build prompts').item.json.seriesId + '-' + $('Build prompts').item.json.sceneId + '-' + $binary.data.fileName }}입니다. 실제 다운로드 파일명 앞에 시리즈·장면 ID를 붙이며 실제 확장자를 유지합니다. 파일럿 프로젝트 폴더를 고르세요. Google Drive 업로드 작업에 필드가 문서화돼 있습니다.

왜 Build prompts로 돌아가 참조할까요? 생성 노드는 작업 기록과 바이너리를 출력하며 맞춤 장면 필드를 JSON에 자동 복사하지 않습니다. n8n 항목 연결로 앞의 대응하는 seriesId, sceneId를 가져옵니다. Generate 뒤 현재 $json.sceneId를 쓰면 JSON이 작업을 설명하므로 이름이 빌 수 있습니다.

한 출력 이미지의 이 방식에는 data만 필요합니다. 다른 작업이 여러 에셋을 반환하면 추가 바이너리는 data_1, data_2처럼 이름 붙습니다. data에 맞춘 Drive 업로드 하나가 추가 필드를 모두 자동 업로드하지는 않습니다. 나중에 작업을 바꾸면 첫 저장 파일이 전체 응답이라고 조용히 가정하지 마세요.

배열에 01만 남겨 다시 실행하세요. 파일명에 시리즈·장면이 있고 선택 폴더에서 열리는지 확인한 뒤 여섯 객체를 복원해 전체 시리즈를 실행합니다. 유료 여섯 요청 전에 새 루프·이름 표현식을 확인하는 단일 장면 단계입니다.

최종 폴더는 익명 다운로드 여섯 개가 아닌 알아볼 수 있는 순서여야 합니다. 저장 이미지가 워크플로의 유용한 끝입니다. API 출력 URL·n8n 실행 미리보기는 생성 중 도움이 되지만 만들려는 영구 프로젝트 폴더는 아닙니다.

이미지 생성과 파일 저장을 장면 하나씩 거친 뒤 다음 장면으로 이동하는 워크플로 도식.

일러스트: 루프가 다음 장면을 시작하기 전에 현재 이미지를 저장하세요.

시리즈의 실제 예산 설정하기

이미지 요금은 성공한 과금 요청 수에 해당 이미지 가격을 곱한 것입니다. 목록에만 있는 장면은 청구되지 않습니다. 마음에 들지 않은 것을 대체하려고 일부러 요청한 다른 성공 생성은 청구됩니다.

확장을 끈 여섯 장면 예시는 다음입니다.

계획기본 Spicy $0.01235Spicy Pro $0.019Turbo $0.010
여섯 장면 한 번씩$0.07410$0.11400$0.06000
첫 실행과 대체 여섯 번$0.14820$0.22800$0.12000
여섯 장면마다 후보 세 장$0.22230$0.34200$0.18000

생성료이며 모든 결과를 쓸 수 있다는 주장은 아닙니다. 후보 열여덟 장에서 여섯 장을 남기면 성공 이미지 열여덟 장의 비용입니다. 안정적 다운로드는 완료 작업 낭비를 막지만 버린 창작 후보를 무료로 만들지는 않습니다.

Max Cost는 역할이 다릅니다. 플러그인이 각 항목 생성 전 해당 견적과 비교합니다. 여섯 장면 전체 워크플로 예산이 아닙니다. 기본 항목당 $2는 예시 가격보다 훨씬 큽니다. 0은 제한을 끄며 무료 생성을 뜻하지 않습니다.

장면 여섯 개에 항목당 $0.015이면 제한 합은 $0.09입니다. 항목 추가, 반복 루프, 작업 변경, 추가 실행이 없다면 여섯 제출의 유용한 상한입니다. 현재 기본 Spicy 예상 생성료는 더 낮은 $0.07410입니다.

Pro는 $0.019 견적이 $0.015를 넘어 생성 전에 멈춥니다. Pro를 고르면 제한도 의도적으로 높이세요. $0.025면 현재 견적을 허용하고 여섯 제한 합은 $0.15입니다. 다른 비용으로 조용히 대체하는 대신 모델과 허용 지출을 모두 바꾸는 것입니다.

가격 변경 충돌에도 플러그인은 재견적을 받고 제한을 다시 확인합니다. 이 커뮤니티 경로에 별도 견적 노드를 만들 필요는 없습니다. 아래 HTTP 대체 예시는 별도 구현이므로 모든 자동 동작이 같다고 가정하지 마세요.

예약 전 배치 비용에 실행 수를 곱하세요. 기본 요금으로 매일 기본 Spicy 여섯 장면을 30일 실행하면 $2.223, 장면마다 후보 세 개면 $6.669입니다. 빈도를 두 배로 하면 비용도 두 배입니다. n8n 구독·서버, 저장, 선택 텍스트 모델은 별도입니다.

실제로 필요한 후보 수를 알 때까지 수동으로 두세요. 이미 완성한 여섯 장면을 매일 재생성하면 반복 생성 주문입니다. 예약에는 새 프로젝트·장면 목록을 주거나 아직 이미지가 없는 장면만 넣으세요. 이유 없이 트리거가 반복하면 저렴한 요청도 비싸집니다.

타임아웃은 새 이미지 주문 허가가 아님

대기와 생성은 다릅니다. Max Wait Time은 노드의 결과 대기 시간을 정하며 한도에 도달해도 외부 이미지 작업을 취소하지 않습니다. 이후 완료될 수 있고 성공 생성은 청구될 수 있습니다.

장면 04가 n8n에서 타임아웃이라고 해 봅시다. 여섯 장면 전체로 Execute Workflow를 곧바로 다시 누르지 마세요. 실패 실행의 출력·오류 메시지에서 만든 작업 ID를 찾아 먼저 조회합니다. 모든 오류에 별도 taskId JSON 필드가 있는 것은 아니므로 표와 메시지를 둘 다 읽으세요.

커뮤니티 경로에서는 Manual Trigger → Resource Task, Operation Get의 SpicyAPI → 저장 노드라는 작은 복구 흐름을 만드세요. 기존 ID를 넣습니다. queued·running이면 Wait for Completion을 켭니다. Task Get은 기본 대기를 하지 않습니다. Download Output을 켜고 바이너리는 data로 유지해 성공 복구 파일을 같은 업로드로 보냅니다.

별도 복구 흐름에서는 아는 시리즈·장면으로 이름을 붙이세요. 4번은 {{ 'mara-evening-v1-04-' + $binary.data.fileName }}입니다. 없는 Build prompts를 참조하는 이전 이름 표현식을 복사하지 마세요. Input Data Field Name은 data, 폴더는 같은 프로젝트입니다.

실제 상태를 보세요. running은 더 기다리고, succeeded는 파일 저장을 하며, failed·expired는 새 요청 전에 해당 오류를 해결해야 합니다. 모델 거부는 네트워크 타임아웃이 아닙니다. 더 기다리거나 짧은 루프 재제출로 해결되지 않습니다.

실패·만료는 보통 예약 금액을 해제합니다. 콘텐츠 거부는 모델 페이지가 다르게 안내하지 않으면 보통 청구되지 않습니다. 실제 요청은 빨간 n8n 노드만 보고 정하지 말고 정산·비용을 보세요. 대기 노드 중단과 생성 작업 실패는 같은 과금 결과가 아닙니다.

04를 복구·저장하면 목록에서 01~04를 빼고 05, 06을 실행하세요. 04가 실제 실패했고 새 생성을 원하면 입력 수정 뒤 장면 04를 남은 목록에 유지합니다. 배열이 짧아져도 장면 ID는 그대로여서 파일 위치를 알 수 있습니다.

한 항목 루프가 유용한 이유입니다. 뒤 장면의 중단 전에 앞 장면을 저장합니다. n8n이 멈출 때 외부 작업을 없애지는 못해도 이후 재구성할 작업량을 줄입니다.

재시도가 중복 제거할 수 있는 범위 이해하기

플러그인은 생성에 내부 멱등 키를 붙입니다. 같은 실행, 노드 실행, 항목 안에서 같은 입력이면 맹목적 중복 대신 같은 생성 요청을 복구할 수 있습니다. API가 받았지만 네트워크 응답이 사라졌을 때 유용합니다.

이는 영구적인 ‘이 프롬프트는 이미 생성됨’ 검사가 아닙니다. 새 워크플로 실행은 범위가 다르고 이후 루프 차례는 run index가 다릅니다. 프롬프트·매개변수 변경도 요청을 바꿉니다. 보이는 장면이 익숙해도 새 유료 작업을 만들 수 있습니다.

그래서 세 문제에 대응도 나누세요. 제출 통신이 불확실하면 기존 작업 복구, 완성 이미지 업로드 실패면 업로드 반복이나 기존 출력 조회, 저장했지만 포즈가 틀리면 장면 변경과 의도한 대체 요청입니다.

자동 재시도는 적당히 두세요. 임시 전송 오류에는 유용하지만 창작 선택 엔진은 아닙니다. 틀린 크기, 바이너리 필드, 호환 안 되는 입력은 다음에도 틀립니다. 먼저 설정을 고치세요. 기존 실행 안의 노드 재시도와 사람이 새 실행을 시작하는 것도 다릅니다.

예약 시리즈에서 수동 복구가 불편해지면 작은 장면 상태표를 쓰세요. seriesId, sceneId, 상태, 작업 ID, 저장 링크가 유용합니다. 생성 전 ready 행만 넣고 업로드 뒤 saved로 표시합니다. 재시도는 이전 제출 여부를 추측하는 대신 기존 ID를 조회합니다.

필요하지 않으면 첫 파일럿에 장부를 만들지 마세요. 수동 검토 여섯 장면은 배열 수정으로 관리할 수 있습니다. 무인 반복 트리거나 여러 편집자가 있으면 표가 가치 있습니다. 서류 증가가 아니라 같은 완료 장면을 새 주문으로 다루지 않게 하는 것이 가치입니다.

임시 출력 링크가 아니라 파일 보관하기

API 서명 출력 링크는 약 20분 지속합니다. 특정 링크의 접근 시간이지 작업·저장 에셋도 동시에 사라진다는 약속은 아닙니다. 에셋이 보관된 동안 기존 작업에서 현재 접근 링크를 받아 다운로드·저장하세요.

URL을 표에 붙이고 내일 열면 만료가 생성 분실처럼 보일 수 있습니다. 오래된 URL이 안 열린다고 재생성에 결제하지 마세요. 먼저 작업을 다시 조회하세요. 반복 워크플로는 임시 API 링크 대신 업로드 뒤 지속적인 Drive 링크를 저장합니다.

Download Output을 켜면 다음 노드용 바이너리가 있습니다. 끄면 작업·링크는 있지만 Drive용 data가 없습니다. URL 문자열은 파일이 아닙니다. 업로드가 바이너리를 못 찾으면 다운로드 옵션과 바이너리 필드명이 맞는지 확인하세요.

나중의 프런트엔드에도 중요합니다. Leon van Zyl의 노코드 이미지 튜토리얼 대본에는 n8n 성공 뒤 응답 처리가 이미지 바이너리와 다른 것을 기대해 프런트엔드 오류가 나는 과정이 있습니다. 생성 탓 전에 이미지 소비자를 확인하라는 교훈입니다.

Drive는 바이너리 필드, 웹페이지는 영구 저장 URL이 필요할 수 있습니다. 로컬 폴더 쓰기는 n8n 기기에서 일어나며 노트북이 아닌 서버일 수 있습니다. 목적지를 의도적으로 고르고 장면 추가 전에 그곳 파일 하나를 여세요.

생성 뒤 업로드 실패는 ID를 저장하고 저장만 재시도하세요. Drive 자격 증명, 폴더 접근, data를 봅니다. 파일이 이미 있으면 마지막 확인이 불명확했다고 복사본을 또 올리지 마세요. 작업 멱등성은 범위 안의 생성만 보호하며 모든 후속 업로드를 자동 중복 제거하지 않습니다.

n8n Cloud에서는 HTTP 템플릿 사용하기

Cloud 사용자는 검증 안 된 패키지 없이 내장 노드로 API를 쓸 수 있습니다. 공식 SpicyAPI n8n 저장소의 파일을 내려받아 가져오세요. 커뮤니티 기능을 한 번에 재구현하지 말고 한 이미지 구조부터 시작합니다.

템플릿에는 Settings, 견적, 예산 검사, 생성, Wait 루프를 포함한 상태 검사, 마지막 다운로드가 있습니다. Settings는 Z-Image Turbo와 화면비로 시작합니다. 지원 필드를 유지하며 프롬프트만 가상 성인 파일럿으로 바꾸세요.

API 노드의 HTTP Bearer Auth 자격 증명을 만들고 GetQuote, CreateTask, GetTask에서 선택합니다. 키는 자격 증명에 넣습니다. 마지막 DownloadImage는 서명 에셋 URL을 받으므로 저장 요청에 SpicyAPI 자격 증명을 추가할 필요가 없습니다.

raw HTTP 응답에는 data 래퍼가 있어 템플릿은 data.taskId, data.output을 참조합니다. 커뮤니티 노드는 래퍼 없는 기록을 반환합니다. 래퍼를 고려하지 않고 표현식을 복사하면 유효한 응답이 빈 것처럼 보일 수 있습니다.

다운로드 응답은 파일로 다뤄야 합니다. HTTP Request 문서는 Response Format File과 출력 필드를 설명합니다. 실제 바이너리를 확인해 Drive Upload에 지정하세요. 템플릿은 첫 출력 에셋을 다운로드하며 다중 에셋 자동 다운로더가 아닙니다.

Turbo에서 기본 Spicy로 바꾸면 모델 식별자뿐 아니라 입력도 바꾸세요. aspect_ratio 대신 너비·높이입니다. 견적과 생성 모두 같은 이미지를 설명하도록 변경합니다. Settings.model만 바꾸고 기존 본문을 남기는 것은 올바른 스키마 이동이 아닙니다.

첫 Cloud 실행은 실행당 한 장으로 두세요. 생성 키는 실행·항목 index 기반이며 커뮤니티의 입력·루프 run 키보다 단순합니다. 그대로 루프에 넣고 커뮤니티 재시도 동작이 옮겨졌다고 생각하지 마세요. 올바른 Cloud 배치는 장면별 요청 정체성과 맞는 견적·생성 입력이 필요합니다.

무인 폴링에는 중단점도 정해야 합니다. 예시는 종결까지 대기·상태를 반복하고 커뮤니티 Max Wait Time을 제공하지 않습니다. 예약 전에 적절한 워크플로 타임아웃을 설정하세요. 중단해도 API 작업은 취소되지 않습니다. 새 생성 전에 GetTask로 기존 작업을 복구합니다.

견적과 생성 사이 가격이 바뀌면 충돌을 해결하고 새 견적을 받으세요. 커뮤니티는 자동 재견적을 하지만 HTTP 예시를 모든 점에서 동일하게 보지 마세요. 내장 경로는 Cloud 출발점으로 작동하지만 여기서 가르치는 여섯 장면 루프에는 자체 호스팅 커뮤니티 방식이 더 간단합니다.

엉뚱한 수정에 결제하지 않고 시리즈 개선하기

여섯 파일을 저장한 뒤 세트로 비교하세요. 같은 저녁, 의상, 성인 캐릭터가 여러 각도에서 의도한 이야기를 전달하는지 먼저 묻습니다. 그다음 대체할 특정 프레임을 고릅니다. 하나가 약하다고 좋은 장면까지 다시 실행하지 마세요.

얼굴이 달라지면 장면 간 변경을 줄이세요. 머리 설명, 얼굴 구조, 펜던트를 유지하고 한 장면에만 있는 새 화장·강한 나이 단서를 빼세요. 새 각도도 얼굴의 보이는 모습을 바꿀 수 있습니다. 글의 일관성은 입력 제어이지 얼굴 정체성 잠금은 아닙니다.

정확한 정체성이 필수면 형용사 문단으로 해결하려 멈추세요. 텍스트 전용 작업은 채택 초상을 참조로 받지 않습니다. 실제 참조·편집 작업 모델로 가져가세요. 얼굴 보존 가이드가 다른 경로를 설명합니다. 여기서는 텍스트 이미지로 캐릭터·촬영을 정하고 승인 얼굴 보존이 핵심이 되면 편집을 씁니다.

따뜻한 아파트 빛을 뒤로 하고 블루아워 발코니에서 초록 새틴 드레스를 입고 돌아보는 성인 Mara의 그래픽노블 일러스트.

일러스트: 대표 외모·의상을 유지하며 포즈, 각도, 배경을 바꾸세요.

분위기가 평범하면 시선, 빛 방향, 카메라 거리, 드레스 소재 중 하나를 바꾸세요. ‘더 NSFW’는 그림을 지정하지 않습니다. 부드러운 발코니에서 돌아보는 성인과 직접 눈맞춤 클로즈 초상은 둘 다 성인 프로젝트여도 다른 구도입니다.

포즈가 혼란스러우면 신체 지시를 단순화하세요. 2번 장면은 여러 소품과 복잡한 상호작용 대신 떨어져 놓인 손입니다. 단순 포즈가 작동한 뒤 상호작용 하나를 추가합니다. 자동화는 준비 시리즈를 일관되게 보내지만 그릴 수 있는 순간을 주어야 한다는 요구는 없애지 않습니다.

중요한 것이 잘리면 높은 디테일 전에 구도·크기를 바꾸세요. 기본 Spicy 초상은 상반신을 편하게 담지만 전신은 카메라 거리를 더 명시해야 할 수 있습니다. 큰 Pro 캔버스는 픽셀을 늘리며 시야를 자동 확대하거나 구도 지시를 고치지 않습니다.

통제된 반복에는 승인 프레임의 시드, 프롬프트, 크기를 남기세요. 시드는 같은 설정에서 변화를 안정시키지만 장면·크기 변경은 그릴 문제를 바꿉니다. Spicy의 0 시드는 무작위 요청입니다. 고정된 0이 아닌 시드는 비교에 유용하며 모든 장면의 같은 얼굴을 보장하지 않습니다.

기술 성공과 유용함도 구분하세요. 생성료 표에는 모든 성공 과금 후보를, 완성 시리즈 수에는 실제 남긴 이미지를 셉니다. 여섯 최종에 후보 열두 개면 열두 개를 예산에 넣고 약한 장면 지시를 개선해 다음 시리즈의 대체를 줄이세요.

예약을 켜기 전에 묻는 질문

n8n 자체가 NSFW 이미지 생성기인가요?

아닙니다. 입력, API 요청, 파일 목적지를 연결합니다. 이미지 엔드포인트가 생성 능력·콘텐츠 범위를 정합니다. 선택 프롬프트 에이전트나 가져온 템플릿은 이미지 호출 전에 자체 제한을 둘 수 있습니다.

스크립트 없이 가능한가요?

자체 호스팅 방식은 시각 노드, 짧은 장면 배열, 작은 표현식 둘을 씁니다. 모델 선택, 자격 증명, 올바른 루프 연결은 필요합니다. Cloud HTTP는 JSON·응답에 더 주의해야 합니다. 패키지 설치를 피하지 모든 API 설정을 피하는 것은 아닙니다.

무료 n8n 템플릿이면 이미지도 무료인가요?

아닙니다. 워크플로 가져오기와 이미지 결제는 별개입니다. 예시는 유료 API이며 n8n 호스팅·구독이 더해질 수 있습니다. 생성 가격에 요청한 성공 후보 수를 곱한 숫자가 유용합니다.

생성 뒤 게시도 자동화할까요?

새 캐릭터 시리즈는 파일 저장에서 끝내고 먼저 그림을 검토하세요. 목적지·창작 요구가 정해지면 전달을 더할 수 있습니다. 여섯 장면을 안정적으로 저장하는 흐름 자체로 유용합니다. 자동 공개 게시에는 다른 요구가 있는 별도 행동입니다.

수동 이미지 한 장과 성공 업로드 하나부터 시작하세요. 비용 제한·다음 장면 전 저장 루프로 여섯 목록을 늘립니다. 실패하면 새 주문 전에 기존 작업을 조회하세요. 이해할 입력, 예측 가능한 요청 비용, 나중에 찾을 수 있는 파일을 가진 실용적인 성인 캐릭터 n8n 워크플로가 됩니다.

다른 언어 English · 日本語 · Deutsch · Français · Español · Português (Brasil) · Русский · Italiano · Polski

가이드를 직접 활용해 보세요

워크플로 보기

Google Sheets에서 NSFW 갤러리를 계획하세요.

NSFW 크리에이터 아이디어를 적은 시트를 체계적인 이미지 대기열로 바꾸세요. 한 번 실행할 때 Z-Image Turbo로 콘셉트를 최대 네 개 생성하고, 각 이미지를 프롬프트·상태·결과 링크와 나란히 놓고 검토할 수 있습니다.

직접 해 보기

실행한 만큼만 결제하세요. 요금제도, 구독도 없습니다.

사용 모델: MiniMax H3 · ByteDance Seedance 2.0 Fast