Aby zbudować workflow generatora obrazów NSFW z AI w n8n, połącz listę scen z modelem text-to-image dla dorosłych, a potem zapisuj gotowy obraz przed rozpoczęciem następnego. Na samodzielnie hostowanym n8n społecznościowy węzeł SpicyAPI obsługuje wycenę, wysyłanie, oczekiwanie i pobranie. Na n8n Cloud użyj szablonu z wbudowanym HTTP Request: pakiet nie jest obecnie zweryfikowany do bezpośredniej instalacji w Cloud.
Dla pierwszej serii fikcyjnej dorosłej postaci wybierz Z-Image Spicy przy 1024 × 1536 i wyłączonym rozwijaniu promptu. Bazowa cena to $0.01235 za obraz, więc sześć udanych żądań kosztuje $0.07410 opłat za generowanie. Ustaw limit na element, pierwszą próbę pozostaw ręczną i przechowuj rzeczywiste pliki w folderze projektu. Hosting n8n i magazyn plików kosztują osobno.
Poniższy workflow tworzy wieczorną serię portretów jednej fikcyjnej dorosłej postaci. Dostarczasz opis i sześć scen; n8n powtarza przygotowanie oraz dostawę. Zachowa spójny pisany brief, ale samo text-to-image nie gwarantuje identycznej twarzy. n8n nie zmienia też polityki modelu: dodanie automatyzacji do ograniczonego API nie czyni go uncensored.
To tutorial konfiguracji na podstawie bieżącego kodu pluginu, katalogu modeli i dokumentacji n8n. Przykład jest proponowanym workflow, nie raportem z nowego testu sześciu obrazów. Publiczne ilustracje wyjaśniają konfigurację; nie dowodzą działania modeli.
Co zbudujesz
Kolejność jest następująca:
Manual Trigger → Build scene list → Split Out → Build prompts → Loop Over Items → SpicyAPI Generate → Google Drive Upload → powrót do pętli.
Pętla przetwarza jedną scenę naraz. Węzeł generowania kończy zadanie i pobiera obraz, Drive go zapisuje, dopiero potem zaczyna się następna scena. Wyjście Done kończy gotową serię.
To ważne dla zestawu, nie pojedynczego obrazu. Jeśli czwarta scena zawiedzie, pierwsze trzy powinny już być w folderze. Odzyskasz czwartą i przejdziesz do pozostałych zamiast ponownie zamawiać całość. Obraz otrzymuje też rozpoznawalną nazwę, gdy dane sceny nadal są dostępne.
Węzeł SpicyAPI już przetwarza wiele elementów wejściowych. Pętlę dodajemy konkretnie dla zapisu przed następnym elementem; nie jest potrzebna tylko do wysyłania kilku promptów. Większe generowanie wieloelementowe przyda się później, lecz pojedyncze obrazy łatwiej zrozumieć podczas nauki różnic między wykonaniem, zadaniem i pobranym plikiem.
Pierwsza wersja nie potrzebuje AI Agent, frontendu, Telegrama ani modelu piszącego prompty. Dodasz je, gdy rozwiążą realny problem. Na razie ich pominięcie daje jedno jasne miejsce edycji postaci, jedno miejsce zmiany sceny i jeden folder wyników.
Wybierz model przed szablonem
W postaciach dla dorosłych model wybierasz przed automatyzacją. Szablon może mieć pomocny formularz i atrakcyjną demonstrację, a nadal korzystać z endpointu odmawiającego zamierzonego materiału. Część ogólnych przykładów n8n dodaje własną listę blokad NSFW. Import bez zmian zachowa to zachowanie.
W tym poradniku istotne są następujące text-to-image SpicyAPI:
| Model | Cena bez rozwijania promptu | Rozmiar | Kiedy pasuje |
|---|---|---|---|
| Z-Image Spicy | $0.01235 za obraz | Szerokość i wysokość po 256–1536 pikseli; domyślnie 1024 × 1536 | Pierwsza seria portretów z endpointem dla dorosłych i niewielką ceną |
| Z-Image Spicy Pro | $0.019 za obraz | Szerokość i wysokość po 256–2560 pikseli; domyślnie 1024 × 1024 | Końcowy obraz potrzebuje boku powyżej 1536 |
| Z-Image Turbo | $0.010 za obraz | Obsługiwane proporcje; domyślnie 1:1 | Tańszy pilot lub koncepcja z własnym zestawem parametrów |
Dwie rodziny Spicy są opisane jako endpointy unrestricted dla dorosłych. To podany zakres produktu, nie nowy zmierzony odsetek przyjęcia każdego promptu. Wybierz zadanie, które chcesz automatyzować, a przed rozbudową wykonaj mały pilot z własnym briefem.
Pro pasuje do większego płótna; nazwa nie dowodzi lepszego zachowania twarzy. Jeśli potrzebujesz tylko 1024 × 1536, standardowe Spicy to przyjmuje. Płać za Pro według konkretnego wymagania, nie założenia, że droższa nazwa naprawia zmiany postaci.
Nie kopiuj ustawień między wierszami jak jednego API. Spicy i Pro używają width oraz height. Turbo używa aspect_ratio, ma limit promptu 1000 znaków. Prompty Spicy nie mają wymuszonego limitu znaków. Te endpointy przyjmują tekst, nie referencje; dodanie obrazka do workflow nie stworzy nieudostępnionej funkcji referencji.
Na pierwszą serię wyłącz rozwijanie promptu. Piszesz celowy opis postaci i konkretną scenę. Expander dodaje transformację między instrukcjami i zadaniem, utrudniając ustalenie wpływu słów. Zmienia też standardowe Spicy na $0.0133 i Turbo na $0.016 za obraz. Pro ma jedną stawkę.
Na pierwszy raz wybierz standardowe Spicy, jawnie 1024 × 1536 i domyślnie wyłączone rozwijanie. Przykład ma wtedy jeden rozmiar i prosty rachunek. Po otwarciu zapisanych obrazów zdecydujesz o szerszej kompozycji, większym płótnie lub edytorze dla mocniejszej tożsamości.
Zainstaluj węzeł i połącz konto
Pakiet, klucz i szablony HTTP Cloud opisuje oficjalny poradnik węzła SpicyAPI n8n. Potem wykonaj konfigurację scen lub referencji dla tego workflow.
Bezpośrednia instalacja potrzebuje samodzielnie hostowanego n8n dopuszczającego pakiety społecznościowe. W Settings odszukaj Community Nodes i zainstaluj @spicyapi/n8n-nodes-spicyapi. Opublikowana wersja to 0.1.1. Jeśli administrator wyłączył instalację, poproś go o włączenie lub instalację; ponowne szukanie w wybieraku niczego nie doda.
Opublikowanie pakietu nie oznacza weryfikacji n8n. Cloud dopuszcza zweryfikowane community nodes, a ten nie jest w tej kategorii. Użytkownicy Cloud powinni przejść do HTTP poniżej. Rozróżnienie wynika z dokumentacji instalacji węzłów n8n, nie ograniczenia API obrazów.
Po instalacji dodaj węzeł SpicyAPI i credential. Pobierz klucz z konsoli kluczy SpicyAPI, wklej w API Key i zachowaj Base URL https://api.spicyapi.ai. Zapisz i przetestuj połączenie. Klucz należy do credential, nie promptu, Edit Fields ani udostępnionego eksportu.
Udany test potwierdza osiągalność konta. Nie oznacza już wygenerowanego obrazu, dostępności modelu dla wszystkich wejść ani salda dużej partii. Sprawdź saldo przed pilotem, pozostaw harmonogram nieaktywny do uruchomienia ręcznej ścieżki.
Jeśli węzeł jest, ale modele się nie ładują, sprawdź credential i połączenie zamiast promptu. Awaria listy modeli jest problemem konfiguracji. Możesz też w Model wybrać ID i wpisać dokładny identyfikator publiczny, ale to nie naprawi klucza ani nie ominie reguł parametrów.
Tutaj identyfikator to alibaba/z-image-spicy/text-to-image. Nazwa strony rodziny i ID API mają inne role: strona wyjaśnia produkt, pełny ID wybiera dokładne zadanie. We węźle używaj pełnego ID zamiast krótszego sluga witryny.
Najpierw wygeneruj i zapisz jeden obraz
Przed listą sześciu scen połącz Manual Trigger z jednym SpicyAPI. Resource Image, Operation Generate, Z-Image Spicy lub ID powyżej. Media Inputs pozostaw puste, bo to text-to-image.
Użyj kompletnego promptu startowego:
Fotografia redakcyjna Mary, fikcyjnej 34-letniej kobiety z ciemnymi lokami do ramion, brązowymi oczami, delikatnie kanciastą twarzą i małym złotym wisiorkiem. Ma nieprzezroczystą ciemnozieloną satynową suknię wieczorową na cienkich ramiączkach. Stoi przy wysokim oknie mieszkania o zmierzchu, lekko opiera dłoń na zasłonie i spokojnie, pewnie patrzy ku kamerze. Portret do pasa, ciepłe światło wnętrza zmieszane z chłodnym niebieskim wieczorem, naturalna skóra, realistyczne fałdy tkaniny, oszczędny romantyczny nastrój, bez innych osób.
Prompt opisuje konkretną dorosłą postać i jedną widoczną chwilę. Ustawia kamerę, wskazuje ważny ubiór i oddziela ciepłe wnętrze od chłodnego okna. Nie wymaga odtworzenia rozbudowanej opowieści w pojedynczym obrazie.
Model Parameters ustaw na szerokość 1024, wysokość 1536, rozwijanie false. Seed pozostaw nieustawiony. W Additional Parameters zachowaj {}. To pole może nadpisać widoczny prompt i model, więc zapomniana wartość powoduje inne wysyłane dane niż formularz.
Max Cost per Item (USD) ustaw na 0.015. To ponad $0.01235, lecz znacznie poniżej domyślnych $2 za element. W opcjach pozostaw Wait for Completion i Download Output włączone. Nazwa binarnego pola to data. Pierwszy Max Wait Time zachowaj domyślny; węzeł korzysta z deadline zadania zamiast bezterminowego czekania.
Uruchom raz. Węzeł wycenia przed utworzeniem zadania i porównuje limit. Gdy zadanie się powiedzie i wynik jest gotowy, pobiera obraz do danych binarnych. Otwórz Binary wyjścia i obejrzyj lub pobierz data.
Teraz powinny zgadzać się trzy rzeczy: sukces zadania, otwierający się obraz i rozsądna zgodność z briefem. Sukces ze złym strojem to kwestia kreatywna. Błędny credential to konfiguracja. Sukces bez zapisanego pliku to dostawa. Rozdzielenie chroni przed kupnem kolejnego generowania, gdy pierwszy obraz po prostu nie dotarł do celu.
Oceniaj obraz w rozmiarze użycia. Dla profilu companion twarz musi być czytelna małym cropem. Dla rozdziału ważniejsza może być poza i pokój. Jeśli wisiorek odciąga uwagę, uprość przed serią. Przy zbyt neutralnej minie zmień spojrzenie lub pozę zamiast dwunastu ogólnych przymiotników jakości.
Dodaj po Generate Google Drive. Resource File, Operation Upload, Input Data Field Name data. Wybierz credential Drive i folder projektu, uruchom upload na udanym wyniku. Otwórz plik w Drive. Ten upload musi działać przed partią, bo sześć udanych generowań może inaczej dać sześciokrotną diagnostykę brakującego pliku.
Przygotuj jeden brief postaci i sześć różnych scen
Dla spójnego zestawu umieść wygląd i styl fotografii w dwóch wielorazowych polach. Scenę zmieniaj osobno. Masz większą kontrolę niż przy modelu wymyślającym nowy prompt portretu co obraz: widzisz stałe i zmienne elementy.
Po Manual Trigger dodaj Edit Fields, nazwij Build scene list. W Manual Mapping utwórz:
| Pole | Typ | Przykładowa wartość |
|---|---|---|
seriesId | String | mara-evening-v1 |
characterBase | String | Wiek, twarz, włosy, wisiorek i nieprzezroczysta zielona satynowa suknia fikcyjnej dorosłej |
styleBase | String | Fotografia redakcyjna, naturalna faktura, realistyczna tkanina, oszczędny romantyczny nastrój |
scenes | Array | Sześć poniższych obiektów scen |
Dla characterBase użyj pełnego zdania: „Mara jest fikcyjną 34-letnią kobietą z ciemnymi lokami do ramion, brązowymi oczami, delikatnie kanciastą twarzą i małym złotym wisiorkiem, ubraną w nieprzezroczystą ciemnozieloną satynową suknię na cienkich ramiączkach”. Dla styleBase: „Fotografia redakcyjna, naturalna faktura skóry, realistyczne fałdy tkaniny, oszczędny romantyczny nastrój, tylko jedna dorosła postać”.
Nie pakuj wszystkich preferencji w pole postaci. Uśmiech, siedzenie, okno i niebieskie światło są wyborami sceny. Stała baza może kolidować z późniejszym stojącym portretem w ciepłym świetle. Baza opisuje kto, scena co widzi odbiorca.
Wklej poniższe jako wartość Array scenes:
[
{"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."}
]Sześć promptów tworzy małą sesję zamiast sześciu niezwiązanych zadań. Pokój, ubiór i postać pozostają, zmieniają się dystans, poza i uwaga. Jest różnorodność historii lub profilu bez zmiany wszystkiego naraz.
Publiczny przykład jest w pełni ubrany. Dla projektu dla dorosłych dostosuj dozwolony ubiór i atmosferę do fikcyjnego dorosłego briefu. Pisz wizualnie i konkretnie. Sama etykieta kategorii nie określa bliskiego portretu, dramatycznej mody wieczorowej ani spokojnego pokoju.
Nie zaczynaj od sześciu trudnych póz całej sylwetki. Szeroki obraz daje więcej elementów do rozłożenia i utrudnia ocenę twarzy. Bliski portret sceny czwartej pozwala porównać cechy bez pokoju zajmującego większość kadru.

Ilustracja: bliski portret akcentuje cechy przechowywane w wielorazowym opisie postaci.
Podziel sceny i zbuduj finalne prompty
Po Build scene list dodaj Split Out. Field to Split Out: scenes, Include All Other Fields, Destination Field Name: scene. Wyjście ma sześć elementów, każdy zachowuje seriesId, characterBase, styleBase i własny obiekt scene. Ustawienia opisuje dokumentacja Split Out.
Przed dalszą pracą otwórz wyjście. Pierwszy element ma scene.sceneId równe 01, drugi 02. Jeden element z sześcioma scenami oznacza złe pole podziału. Brak opisu postaci oznacza złe Include. Obie naprawy tutaj nie kosztują generowania.
Dodaj Edit Fields Build prompts, zachowaj pola wejścia. Dodaj String sceneId w Expression {{ $json.scene.sceneId }}. Dodaj String prompt z {{ $json.characterBase + '. ' + $json.styleBase + '. ' + $json.scene.scene }}. Dokumentacja Edit Fields opisuje pola i wyrażenia.
Wyrażenie łączy trzy części zwykłego tekstu. Nie prosi LLM o parafrazę postaci lub reinterpretację sceny. Sprawdź sześć finalnych promptów: identyczne bazy postaci i stylu, zmienne tylko zakończenie sceny.
Upewnij się, że wyrażenie jest obliczane, nie zapisane dosłownie. Podgląd ma pełny opis, nie nawiasy i $json. undefined wskazuje inną nazwę utworzonego pola. Dokładna pisownia characterBase, styleBase i scene ma znaczenie.
Dla późniejszego arkusza zachowaj ten układ. Wiersz może zawierać seriesId, sceneId i scenę, stałe pola postaci oraz stylu dołączasz przed Build prompts. Pierwsze sześć obrazów nie potrzebuje arkusza, ale stabilne ID ułatwią przejście.
Nie dodawaj między węzłami AI Agent tylko dla wyrafinowanego wyglądu. Wprowadza koszt tekstu, opóźnienie i odmowę na innym etapie. Endpoint obrazów może wspierać brief, a opcjonalny model promptu odmawiać napisania. Wtedy odmowa poprzedza obraz. Zachowaj własny gotowy prompt i wysyłaj bezpośrednio do zadania.
Zapisz obraz, zanim zacznie się następna scena
Po Build prompts dodaj Loop Over Items, Batch Size 1. Wyjście Loop do Generate, Generate do Drive Upload, Upload z powrotem do Loop Over Items. Done jest końcem serii. Reset wyłącz: sześć elementów to lista skończona, nie odtwarzanie wejścia bez końca. Zobacz dokumentację Loop Over Items.
Stały pilot promptu Generate zastąp {{ $json.prompt }}. Zachowaj działający model, wymiary, limit i pobieranie. Pętla przekazuje jeden element, więc każda iteracja pokazuje jeden pełny prompt.
Kluczowy jest powrót z Upload. Bezpośredni powrót Generate rozpoczyna następny obraz przed zapisem. Użycie Done zamiast Loop pomija ścieżkę sceny. Prześledź graf: scena do Generate, plik do Upload, skończony zapis wraca po następną scenę.
W Drive zachowaj Input Data Field Name data. File Name: {{ $('Build prompts').item.json.seriesId + '-' + $('Build prompts').item.json.sceneId + '-' + $binary.data.fileName }}. Dodaje ID serii i sceny do pobranej nazwy z prawdziwym rozszerzeniem. Wybierz folder pilota. Pola opisuje operacja upload Google Drive.
Dlaczego odwołanie do Build prompts? Generate zwraca rekord zadania i binary, nie kopiuje automatycznie własnych pól scen do JSON. Łączenie elementów n8n odzyskuje wcześniejsze seriesId i sceneId. Bieżące $json.sceneId po Generate może dać pustą nazwę, bo JSON opisuje teraz zadanie.
Dla jednego obrazu Upload potrzebuje tylko data. Inne zadanie z wieloma zasobami daje dodatkowe data_1, data_2 itd. Jeden Upload data nie zapisze wszystkich. Przy późniejszej zmianie zadania nie zakładaj, że pierwszy plik jest całą odpowiedzią.
Uruchom ponownie tylko scenę 01 w tablicy. Potwierdź nazwę z serią i sceną oraz otwarcie w folderze. Potem przywróć sześć obiektów i wykonaj całość. Ta dodatkowa próba sprawdza pętlę i nazwę przed sześcioma płatnymi żądaniami.
Końcowy folder powinien mieć rozpoznawalną sekwencję, nie anonimowe pobrania. Zapisany obraz jest użytecznym końcem. URL wyniku i podgląd n8n pomagają podczas generowania, lecz nie są docelowym trwałym folderem.

Ilustracja: zapisz bieżący obraz przed następną sceną pętli.
Ustal rzeczywisty budżet serii
Opłata to liczba udanych rozliczanych żądań razy właściwa stawka. Scena istniejąca tylko na liście nie kosztuje. Kolejne udane generowanie zamówione świadomie dla zastąpienia nielubianego obrazu kosztuje.
Dla sześciu scen z wyłączonym rozwijaniem:
| Plan | Standard Spicy po $0.01235 | Spicy Pro po $0.019 | Turbo po $0.010 |
|---|---|---|---|
| Pełny przebieg sześciu scen | $0.07410 | $0.11400 | $0.06000 |
| Pierwszy przebieg i sześć zamian | $0.14820 | $0.22800 | $0.12000 |
| Trzy warianty każdej z sześciu scen | $0.22230 | $0.34200 | $0.18000 |
To opłaty generowania, nie gwarancja użyteczności. Osiemnaście wariantów z sześcioma wybranymi oznacza opłatę za osiemnaście udanych obrazów. Niezawodne pobranie chroni ukończone zadania, nie czyni odrzuconych wariantów darmowymi.
Pole Max Cost ma inny cel. Plugin porównuje je z wyceną każdego elementu wejściowego przed utworzeniem jego zadania. Nie jest budżetem całego workflow sześciu scen. Domyślne $2 za element znacznie przewyższa cenę obrazu z przykładu. Zero wyłącza ten limit; nie oznacza darmowego generowania.
Sześć elementów z sufitem $0.015 daje sumę $0.09. To użyteczna górna granica sześciu wysłań, jeśli workflow nie dodaje elementów, nie zapętla ponownie, nie zmienia zadań i nie rozpoczyna dodatkowych wykonań. Obecna spodziewana baza standardu to mniej: $0.07410.
Dla Pro $0.015 zatrzyma tworzenie, bo wycena $0.019 przekracza limit. Świadomie podnieś np. do $0.025, co dopuszcza obecną stawkę. Suma sześciu sufitów to wtedy $0.15. Zmieniasz model i dopuszczalny koszt zamiast cichego przejścia na inną cenę.
Plugin obsługuje też konflikt ceny, pobierając nową wycenę i ponownie sprawdzając limit. Dla tej ochrony nie potrzebujesz osobnego węzła quote przy community node. Importowany wariant HTTP poniżej jest inną implementacją; nie zakładaj wszystkich automatycznych zachowań.
Przed harmonogramem pomnóż partię przez wykonania. Jeden przebieg standardu dziennie kosztuje przez trzydzieści dni $2.223 opłat przy bazie. Trzy warianty sceny dziennie kosztują $6.669. Podwojenie częstotliwości podwaja kwoty. Hosting lub abonament n8n, magazyn i opcjonalny model tekstowy dodajesz osobno.
Pozostaw workflow ręczny, dopóki nie wiesz, ilu kandydatów faktycznie potrzebujesz. Codzienny harmonogram odtwarzający już skończoną serię sześciu scen jest cyklicznym zamówieniem generowania. Przekazuj zaplanowanym przebiegom nowy projekt lub listę scen albo uwzględniaj tylko sceny nadal potrzebujące obrazu. Tanie żądanie może stać się drogie, gdy wyzwalacz powtarza je bez powodu.
Timeout nie upoważnia do ponownego generowania
Oczekiwanie i generowanie to różne czynności. Max Wait Time określa czas czekania węzła. Osiągnięcie limitu nie anuluje obrazu. Zadanie może skończyć się później, a udane generowanie nadal być rozliczone.
Załóżmy, że scena 04 zgłasza timeout w n8n. Nie klikaj od razu Execute Workflow ponownie z wszystkimi sześcioma scenami. Otwórz nieudane wykonanie, poszukaj identyfikatora utworzonego zadania w dostępnym wyjściu lub komunikacie błędu i najpierw pobierz to zadanie. Nie każdy błąd ma osobne pole JSON taskId, więc przeczytaj komunikat oraz tabelę wyjścia.
Dla węzła społecznościowego utwórz mały workflow odzyskiwania: Manual Trigger → SpicyAPI z Resource Task, Operation Get → węzeł magazynu. Wpisz istniejący identyfikator zadania. Jeśli nadal jest w kolejce lub działa, włącz Wait for Completion. Task Get domyślnie nie czeka. Pozostaw Download Output włączone i nazwę właściwości binarnej data, aby udany odzyskany obraz mógł przejść tą samą ścieżką przesyłania.
W tym osobnym workflow odzyskiwania nadaj uploadowi Drive nazwę z rozpoznaną serią i sceną: dla czwartej użyj {{ 'mara-evening-v1-04-' + $binary.data.fileName }}. Nie kopiuj wcześniejszego wyrażenia nazwy odwołującego się do Build prompts; tego węzła nie ma w workflow odzyskiwania. Zachowaj Input Data Field Name jako data i wybierz ten sam folder projektu.
Sprawdź, co rzeczywiście zgłasza zadanie. Trwające potrzebuje więcej czasu. Udane wymaga zapisania pliku. Nieudane lub wygasłe wymaga usunięcia wskazanej przyczyny, zanim nowe żądanie będzie użyteczne. Odmowa wybranego modelu nie jest timeoutem sieci, więc dłuższe czekanie ani ponawianie w ciasnej pętli nie rozwiąże takiej porażki.
Zadania failed lub expired zwykle zwalniają blokadę środków. Żądania odrzucone za treść zwykle nie są rozliczane, chyba że strona modelu mówi inaczej. Przy faktycznym żądaniu sprawdź rozliczenie i koszt zadania zamiast wnioskować z samego czerwonego węzła n8n. Zatrzymanie oczekiwania i nieudane generowanie nie są zamiennymi wynikami finansowymi.
Po odzyskaniu i zapisie 04 usuń 01–04 z listy i wykonaj 05, 06. Jeśli 04 rzeczywiście zawiodło i chcesz nowe, zachowaj 04 na pozostałej liście po naprawie wejścia. ID są stabilne nawet przy krótszej tablicy, więc nazwy pokazują miejsce obrazów.
Dlatego pętla pojedynczego elementu jest użyteczna. Pozostawia wcześniejsze ukończone sceny w magazynie, zanim późniejsza przerwie serię. Nie powoduje zniknięcia zewnętrznego zadania przy zatrzymaniu n8n, ale zmniejsza ilość pracy, którą trzeba później odtworzyć.
Zrozum zakres deduplikacji ponowień
Plugin dodaje wewnętrzny klucz idempotencji do tworzenia zadania. W ramach tego samego wykonania, przebiegu węzła i elementu użycie identycznego wejścia może odzyskać to samo żądanie tworzenia zamiast ślepo tworzyć duplikat. Przydaje się to przy utracie odpowiedzi sieciowej po przyjęciu zadania przez API.
Ochrona nie jest stałym sprawdzeniem „ten prompt już wygenerowano”. Nowe wykonanie ma inny zakres. Późniejsza iteracja ma inny indeks przebiegu. Zmiana promptu lub parametrów zmienia żądanie. Mogą stworzyć nowe płatne zadanie mimo znajomej sceny.
Dlatego stosuj trzy osobne reakcje na trzy różne problemy. Gdy komunikacja przy wysyłaniu była niepewna, odzyskaj istniejące zadanie przed zamówieniem kolejnego. Jeśli gotowy obraz nie został przesłany do magazynu, ponów przesłanie albo pobierz wynik istniejącego zadania. Jeśli obraz został zapisany, ale poza jest błędna, zmień scenę i świadomie zamów zamiennik.
Gdy dodasz automatyczne ponawianie, zachowaj je oszczędne. Pomaga przy przejściowych problemach transportu, ale nie jest mechanizmem selekcji twórczej. Niepoprawny rozmiar, błędne pole binarne lub niezgodne wejście pozostaną błędne w następnej próbie. Najpierw napraw ustawienie. Ponowienie węzła w obecnym zakresie wykonania różni się również od uruchomienia nowego workflow przez człowieka.
Dla zaplanowanej serii dodaj mały arkusz lub tabelę stanów scen, gdy ręczne odzyskiwanie stanie się niewygodne. Przydatne pola to seriesId, sceneId, status, identyfikator zadania i link zapisanego pliku. Przed generowaniem uwzględniaj tylko wiersze ready, a po przesłaniu oznacz scenę jako saved. Ponowienie ma wtedy istniejący identyfikator do pobrania, zamiast zgadywania, czy wcześniejsze żądanie dotarło do API.
Nie dodawaj tej ewidencji do pierwszej próby, chyba że jej potrzebujesz. Sześcioma ręcznie ocenianymi scenami można zarządzać przez edycję tablicy. Tabela staje się opłacalna przy cyklicznym wyzwalaczu bez nadzoru albo kilku osobach edytujących projekt. Jej wartość polega na zapobieganiu uznaniu gotowej sceny za nowe zamówienie, nie na tworzeniu większej papierologii.
Zachowuj pliki, nie tymczasowe linki
Podpisane linki wyników API działają około dwudziestu minut. To okno dostępu konkretnego podpisanego linku, nie obietnica zniknięcia zadania i jego zasobu w tej samej chwili. Pobierz istniejące zadanie, aby uzyskać aktualny dostęp, dopóki zasób jest przechowywany, a potem pobierz i zapisz obraz.
Jeżeli wkleisz URL wyniku do arkusza i wrócisz jutro, wygasły link może wyglądać jak utracone generowanie. Nie płać za odtworzenie obrazu tylko dlatego, że stary URL nie działa. Najpierw ponownie pobierz zadanie. W cyklicznym workflow zapisuj trwały link pliku Drive po przesłaniu, zamiast traktować tymczasowy link API jako gotowy zasób.
Przy włączonym Download Output plugin dostarcza dane binarne następnemu węzłowi. Przy wyłączonym masz rekord i linki, ale nie binarne data, które Drive może przesłać. Ciąg URL nie jest plikiem obrazu. Jeśli upload nie znajduje danych binarnych, sprawdź włączenie Download Output i zgodność nazwy pola z właściwością binarną generowania.
To ważne także dla frontendu. W tutorialu generatora bez kodu Leona van Zyla transkrypcja pokazuje udane wykonanie n8n i późniejszy błąd frontendu, bo obsługa odpowiedzi oczekiwała czegoś innego niż otrzymane binary. Lekcja: zbadaj odbiorcę obrazu przed obwinieniem generowania.
Odbiorca w Drive oczekuje pola binarnego. Strona internetowa może potrzebować stałego URL magazynu. Zapis do folderu lokalnego odbywa się na maszynie uruchamiającej n8n, która może być serwerem, a nie laptopem. Świadomie wybierz miejsce docelowe i otwórz tam jeden zapisany wynik przed dodaniem kolejnych scen.
Gdy przesłanie zawiedzie po generowaniu, zachowaj identyfikator zadania i ponów zapis. Sprawdź poświadczenia Drive, dostęp do folderu i pole data. Jeśli plik już jest w folderze, nie przesyłaj drugiej kopii tylko dlatego, że potwierdzenie ostatniego węzła było niejasne. Idempotencja zadania chroni tworzenie w swoim zakresie; nie usuwa automatycznie duplikatów wszystkich późniejszych uploadów.
W n8n Cloud użyj szablonu HTTP
Użytkownicy Cloud mogą korzystać z API przez wbudowane węzły bez instalacji niezweryfikowanego pakietu. Pobierz przykład z oficjalnego repozytorium SpicyAPI n8n i zaimportuj plik do n8n. Zacznij od struktury jednego obrazu, zamiast odtwarzać wszystkie funkcje węzła społecznościowego naraz.
Szablon zawiera węzeł Settings, żądanie wyceny, sprawdzenie budżetu, tworzenie zadania, sprawdzanie statusu z pętlą Wait i końcowe pobranie obrazu. Settings zaczyna z Z-Image Turbo i proporcjami. Zmień prompt na próbę fikcyjnej dorosłej postaci, pozostawiając obsługiwane pola modelu.
Utwórz poświadczenie HTTP Bearer Auth wymagane przez węzły API i wybierz je w GetQuote, CreateTask oraz GetTask. Klucz umieść w poświadczeniu. Końcowe DownloadImage pobiera podpisany URL zasobu i nie potrzebuje dodawania poświadczenia SpicyAPI do tego żądania magazynu.
Surowe odpowiedzi HTTP używają wrappera data, więc wyrażenia szablonu mogą odwoływać się do data.taskId albo data.output. Węzeł społecznościowy zwraca rekord zadania bez wrappera. Skopiowanie jego wyrażenia do surowego HTTP bez uwzględnienia wrappera może sprawić, że poprawna odpowiedź wyda się pusta.
Węzeł pobierania musi traktować odpowiedź jako plik. Dokumentacja HTTP Request opisuje Response Format File i ustawienie pola wyjścia. Sprawdź rzeczywiste pole binarne pobierania i skieruj na nie Drive Upload. Szablon pobiera pierwszy zasób wyniku; nie jest automatycznym downloaderem wielu zasobów.
Przy zmianie szablonu z Turbo na standardowe Spicy zmień wejście żądania razem z identyfikatorem modelu. Użyj szerokości i wysokości zamiast aspect_ratio. Zaktualizuj żądanie wyceny i tworzenia, aby opisywały ten sam obraz. Zmiana tylko Settings.model z pozostawieniem starego body nie jest poprawną migracją między schematami.
Na pierwsze wykonanie Cloud zachowaj jeden obraz. Klucz tworzenia szablonu opiera się na wykonaniu i indeksie elementu; nie jest bogatszym kluczem wejścia i przebiegu pętli pluginu. Nie otaczaj niezmienionego szablonu pętlą, zakładając przeniesienie zachowania ponowień węzła społecznościowego. Poprawna seria Cloud potrzebuje odrębnej tożsamości żądań scen i zgodnych wejść wyceny oraz tworzenia.
Przy pracy bez nadzoru ścieżka sprawdzania statusu też potrzebuje świadomego punktu zatrzymania. Przykład powtarza czekanie i sprawdzanie do stanu końcowego; nie udostępnia Max Wait Time z węzła społecznościowego. Przed harmonogramem ustaw odpowiedni timeout wykonania workflow. Jego zatrzymanie nadal nie anuluje zadania API. Odzyskaj istniejące przez GetTask przed nowym generowaniem.
Jeśli cena zmieni się między wyceną a tworzeniem, obsłuż zwrócony konflikt i uzyskaj nową wycenę. Plugin społecznościowy automatyzuje ten etap, ale przykładu HTTP nie traktuj jako identycznego w każdym szczególe. Wbudowana droga jest działającym początkiem Cloud; samodzielnie hostowany przepis z węzłem społecznościowym jest jednak prostszą opcją sześcioscenowej pętli tego poradnika.
Popraw serię bez płacenia za niepotrzebne zmiany
Po zapisaniu sześciu plików porównaj je jako zestaw. Najpierw sprawdź zamierzoną historię wizualną: ten sam wieczór, ubiór i dorosłą postać widzianą z różnych kątów. Potem zdecyduj, które konkretne obrazy wymagają zamienników. Nie uruchamiaj dobrych scen ponownie tylko dlatego, że jeden obraz jest słaby.
Przy zmianie twarzy zmniejsz różnice scen. Zachowaj włosy, strukturę twarzy, wisiorek, usuń nowy makijaż lub dramatyczny sygnał wieku pojedynczej sceny. Nowy kąt nadal zmienia wygląd; spójny brief kontroluje wejście, nie blokuje tożsamości.
Jeśli dokładna tożsamość jest konieczna, przestań próbować rozwiązać ją kolejnym akapitem przymiotników. Te tekstowe endpointy nie przyjmują zatwierdzonego portretu jako referencji. Przenieś wybrany obraz do modelu z rzeczywistym zadaniem referencyjnym albo edycji. Poradnik zachowania twarzy wyjaśnia ten odmienny workflow. Tutaj text-to-image ustala postać i sesję; edycji użyj, gdy głównym wymaganiem jest zachowanie zatwierdzonej twarzy.

Ilustracja: zmieniaj pozę, kamerę i otoczenie, zachowując charakterystyczny wygląd oraz strój.
Jeżeli nastrój jest zbyt zwykły, zmień jeden widoczny element: spojrzenie, kierunek światła, odległość kamery albo materiał sukienki. „Więcej NSFW” nie określa zamierzonego obrazu. Fikcyjna dorosła postać oglądająca się na miękko oświetlonym balkonie to inna kompozycja niż bliski portret z bezpośrednim spojrzeniem, choć oba należą do projektu dla dorosłych.
Jeśli poza staje się niejasna, uprość fizyczne instrukcje. Scena druga celowo rozdziela spoczywające dłonie zamiast zamawiać trudną interakcję z kilkoma rekwizytami. Dodaj jedną interakcję po udanej prostej pozie. Automatyzacja konsekwentnie wysyła przygotowaną serię, lecz nadal musisz dać modelowi moment możliwy do narysowania.
Gdy kadr ucina ważny element, zmień kadrowanie lub wymiary przed żądaniem większej szczegółowości. Standardowy portret Spicy wygodnie pokazuje postać do pasa, ale cała sylwetka może potrzebować wyraźniej określonej odległości kamery. Większe płótno Pro daje więcej pikseli; nie poszerza automatycznie pola widzenia ani nie naprawia instrukcji kompozycji.
Zachowaj seed, prompt i wymiary zatwierdzonego ujęcia, jeżeli chcesz kontrolowanej powtórki. Seed pomaga utrzymać wariację przy tych samych ustawieniach; zmiana sceny lub rozmiaru zmienia rysowane zadanie. W endpointach Spicy seed zero wybiera losowy seed. Stały niezerowy pomaga porównywać, ale nie gwarantuje identycznej twarzy we wszystkich scenach.
Na koniec oddziel obraz technicznie udany od użytecznego. Tabela opłat powinna uwzględniać każdego udanego rozliczanego kandydata. Liczba gotowej serii powinna obejmować tylko zachowane obrazy. Jeśli sześć finałów wymaga dwunastu kandydatów, zaplanuj dwanaście, a potem popraw słabe instrukcje, aby kolejna seria potrzebowała mniej zamienników.
Pytania przed włączeniem harmonogramu
Czy samo n8n jest generatorem NSFW?
Nie. n8n łączy wejścia, żądania API i miejsca plików. Wybrany endpoint obrazów określa możliwości generowania i zakres treści. Opcjonalny agent piszący prompty albo importowany szablon może nakładać własne ograniczenia, zanim wywołane zostanie zadanie obrazu.
Czy można bez pisania skryptu?
Przepis samodzielnie hostowany używa wizualnych węzłów, krótkiej tablicy scen i dwóch małych wyrażeń. Nadal trzeba wybrać model, utworzyć poświadczenia i poprawnie połączyć pętlę. Droga HTTP w Cloud wymaga większej uwagi przy wejściu JSON i odpowiedziach zadań; omija instalację pakietu, nie całą konfigurację API.
Czy darmowy szablon n8n czyni obrazy darmowymi?
Nie. Importowanie workflow i płacenie za żądanie obrazu są osobnymi sprawami. Przykład wykorzystuje płatne żądania API, a hosting lub abonament n8n mogą dodać kolejny koszt. Użyteczna liczba to cena generowania pomnożona przez zamówionych udanych kandydatów.
Czy automatyzować publikację po generowaniu?
Przy nowej serii postaci zakończ na zapisanych plikach i najpierw oceń obrazy. Późniejsze kroki dostarczenia możesz dodać przy ustalonym miejscu docelowym i wymaganiach twórczych. Workflow niezawodnie zapisujący sześć scen już jest użyteczny; automatyczna publikacja publiczna to osobne działanie z innymi wymaganiami.
Zacznij jednym ręcznym obrazem i jednym udanym uploadem. Potem rozbuduj sześć scen z limitem i pętlą zapisu przed następną. Przy awarii odzyskaj istniejące zadanie przed zamówieniem nowego. Dostajesz praktyczny workflow n8n dla dorosłych postaci: zrozumiałe wejście, przewidywalny koszt żądań i pliki do odnalezienia.








