Pular para o conteúdo principal

Fluxo n8n para gerar imagens NSFW com IA: crie e salve uma série de personagem

Monte um fluxo NSFW de imagens no n8n. Prepare seis cenas, limite custos, salve arquivos e recupere tarefas existentes sem pagar duas vezes.

Autor
Lydia
Publicado
Leitura
32 min de leitura
Atualizado
Uma mulher adulta fictícia de vestido verde de cetim, enquadrada pela luz quente bordô de um apartamento e por uma luz fria de contorno noturno.

Para montar um fluxo n8n de geração de imagens NSFW com IA, conecte uma lista de cenas a um modelo adulto de texto para imagem e salve cada imagem concluída antes de começar a próxima. No n8n auto-hospedado, o nó comunitário SpicyAPI cuida de cotação, envio, espera e download. No n8n Cloud, use o template com HTTP Request nativo: o pacote ainda não é verificado para instalação direta no Cloud.

Para uma primeira série de personagem adulto fictício, use Z-Image Spicy em 1024 × 1536 com expansão de prompt desativada. O preço base é $0.01235 por imagem, então seis solicitações bem-sucedidas custam $0.07410 em tarifas de geração de imagens. Defina um limite de custo por item, mantenha a primeira execução manual e guarde os arquivos reais em uma pasta do projeto. Hospedagem n8n e armazenamento são custos separados.

O fluxo abaixo cria uma série de retratos noturnos de uma personagem adulta fictícia. Você fornece a descrição e seis cenas; o n8n repete preparação e entrega. Ele mantém consistente a descrição escrita do personagem, mas texto para imagem sozinho não garante um rosto idêntico. Além disso, n8n não muda a política de conteúdo do modelo: adicionar um nó de automação a uma API restrita de imagens não a torna sem censura.

Este é um tutorial de configuração baseado no código atual do plugin, catálogo de modelos e documentação do n8n. O exemplo é um fluxo proposto, não um relato de um novo teste de seis imagens. As ilustrações públicas explicam a montagem; não são amostras que comprovam o desempenho dos modelos.

O que você vai montar

A sequência é:

Manual Trigger → Build scene list → Split Out → Build prompts → Loop Over Items → SpicyAPI Generate → Google Drive Upload → retorno ao loop.

O loop executa uma cena por vez. O nó de geração conclui e baixa a imagem da cena, o nó Drive a salva e só então a próxima começa. A saída Done do loop é onde termina a série concluída.

Essa ordem importa ao criar um conjunto, em vez de uma imagem isolada. Se a cena quatro falhar, as cenas um a três já devem estar na pasta. Você recupera a quatro e continua com as restantes, em vez de reiniciar a série inteira. Isso também dá a cada imagem um nome reconhecível enquanto suas informações de cena ainda estão disponíveis.

O nó SpicyAPI já processa vários itens de entrada. Acrescentamos um loop especificamente para salvar cada resultado antes de avançar; ele não é necessário só para enviar vários prompts. Um nó maior de geração com vários itens pode ajudar depois, mas um fluxo de uma imagem por vez facilita entender execução, tarefa e arquivo baixado no início.

Você não precisa de AI Agent, frontend, Telegram nem de um modelo de linguagem para escrever prompts nesta primeira versão. Eles podem ser acrescentados quando resolverem um problema real. Por enquanto, removê-los deixa um lugar claro para editar o personagem, outro para mudar a cena e uma pasta clara com os resultados.

Escolha o modelo de imagem antes do template

No trabalho com personagens adultos, a escolha do modelo vem antes da automação. Um template pode ter um formulário útil ou uma demonstração refinada e ainda usar um endpoint que recusa seu material. Alguns exemplos genéricos de geração no n8n também acrescentam deliberadamente uma lista própria de bloqueio NSFW. Importá-los sem alterações mantém esse comportamento.

Para este guia, estas são as opções relevantes de texto para imagem da SpicyAPI:

ModeloPreço de geração com expansão desativadaControles de tamanhoQuando serve a este fluxo
Z-Image Spicy$0.01235 por imagemLargura e altura, cada uma de 256–1536 pixels; padrão 1024 × 1536Começar uma série de retratos com endpoint adulto e custo modesto por pedido
Z-Image Spicy Pro$0.019 por imagemLargura e altura, cada uma de 256–2560 pixels; padrão 1024 × 1024A imagem final precisa de um lado maior que 1536 pixels
Z-Image Turbo$0.010 por imagemEscolha de proporção suportada; padrão 1:1Um piloto de fluxo ou exploração de conceitos de menor custo, com seus próprios parâmetros

As duas famílias Spicy são listadas como endpoints adultos irrestritos. Esse é o escopo informado do produto, não uma nova taxa medida de aceitação de todos os prompts possíveis. Selecione o endpoint que suporta a tarefa a automatizar e faça um piloto pequeno com sua proposta criativa real antes de ampliar a série.

Pro é uma escolha prática para uma tela maior de entrega; o nome não prova que preserva melhor o rosto. Se o retrato final só precisa de 1024 × 1536, o Spicy padrão já aceita o tamanho. Pagar pelo Pro deve atender a uma exigência concreta, não à suposição de que um nome mais caro corrige variação de personagem.

Não copie configurações entre as linhas como se fossem a mesma API. Spicy e Spicy Pro usam width e height. Turbo usa aspect_ratio, e seu prompt tem limite de 1.000 caracteres. Os prompts Spicy não têm limite de caracteres imposto. Esses endpoints recebem texto, não imagens de referência; acrescentar uma foto ao fluxo não cria uma capacidade de referência que eles não oferecem.

Deixe a expansão de prompt desativada na primeira série. Você escreverá uma descrição deliberada do personagem e uma cena específica. Um expansor acrescenta outra transformação entre instruções e pedido de imagem, dificultando saber qual redação produziu o resultado. Ele também muda o preço no Spicy padrão e no Turbo: com expansão, custam respectivamente $0.0133 e $0.016 por imagem. Pro tem um único preço listado por imagem.

Na primeira execução, escolha Spicy padrão, configure explicitamente 1024 × 1536 e use a expansão desativada padrão. Isso dá ao exemplo um tamanho consistente e uma conta de custo simples. Depois de abrir as imagens salvas, você decide se precisa de composição mais ampla, tela maior ou modelo de edição para controle mais forte de identidade.

Instale o nó e conecte sua conta

Para pacote, configuração da chave de API e templates HTTP do n8n Cloud, abra o guia oficial do nó n8n da SpicyAPI. Depois siga a preparação de cenas ou referências abaixo para este fluxo específico.

O caminho direto pelo nó comunitário exige uma instância n8n auto-hospedada que permita pacotes comunitários. Abra Settings, encontre Community Nodes e instale @spicyapi/n8n-nodes-spicyapi. A versão publicada do pacote é 0.1.1. Se o administrador desativou a instalação de nós comunitários, peça que habilite ou instale o pacote; procurar repetidamente no seletor não o adicionará.

Publicação do pacote não significa verificação pelo n8n. O n8n Cloud permite nós comunitários verificados, e esse pacote ainda não está nessa categoria. Usuários do Cloud devem ir à seção de template HTTP abaixo. A distinção segue a documentação de instalação de nós comunitários do n8n, não uma limitação da API de imagens.

Após instalar, adicione um nó SpicyAPI e crie sua credencial. Obtenha a chave no console de chaves da SpicyAPI, cole no campo API Key da credencial e mantenha a Base URL padrão, https://api.spicyapi.ai. Salve e use o teste de conexão. A chave pertence à credencial, não a um prompt, nó Edit Fields ou exportação compartilhada do fluxo.

Um teste de credencial bem-sucedido comprova que a conta é acessível. Não significa que você já gerou imagem, que o modelo está disponível para toda entrada ou que há saldo para um lote grande. Confira o saldo antes do piloto e mantenha qualquer gatilho agendado inativo até o caminho manual funcionar.

Se o nó aparecer, mas o seletor de modelos não carregar, comece pela credencial e conexão em vez de reescrever o prompt. Uma falha ao buscar a lista é um problema de configuração. Você também pode selecionar o modo ID no campo Model e digitar o identificador público exato, mas um ID não corrige chave inválida nem contorna regras dos parâmetros.

Neste exemplo, o identificador é alibaba/z-image-spicy/text-to-image. O nome da página da família e o identificador da API têm funções diferentes: a página explica o produto, enquanto o identificador completo seleciona a tarefa exata. Use o identificador completo no nó; não substitua pelo slug mais curto do site.

Gere e salve uma imagem primeiro

Antes de montar a lista de seis cenas, conecte um Manual Trigger a um nó SpicyAPI. Selecione Resource Image e Operation Generate. Escolha Z-Image Spicy ou use o modo ID com o identificador acima. Deixe Media Inputs vazio, pois este é um pedido de texto para imagem.

Use este prompt inicial completo:

Fotografia editorial de Mara, uma mulher fictícia de 34 anos com cachos escuros até os ombros, olhos castanhos, rosto suavemente angular e pequeno pingente de ouro. Ela usa um vestido de noite de cetim verde-escuro opaco com alças finas. Está ao lado de uma janela alta de apartamento ao anoitecer, uma mão apoiada suavemente na cortina, olhando para a câmera com confiança tranquila. Retrato da cintura para cima, luz interna quente combinada com luz azul fria do entardecer, textura natural da pele, dobras realistas do tecido, atmosfera romântica contida, nenhuma outra pessoa no enquadramento.

O prompt descreve uma adulta específica e um momento visível. Dá à câmera uma posição, informa quais roupas importam e separa luz interna quente da janela mais fria. Não exige reconstruir uma história elaborada em uma imagem estática.

Defina Model Parameters com largura 1024, altura 1536 e expansão de prompt false. Deixe a seed sem valor neste piloto. Em Additional Parameters, mantenha o objeto vazio {}. Esse campo pode substituir prompt e configurações visíveis; um valor esquecido ali pode fazer o nó enviar algo diferente do formulário.

Defina Max Cost per Item (USD) como 0.015. É maior que o preço atual de $0.01235 e bem menor que o padrão de $2 por item do nó. Nas opções de geração, mantenha Wait for Completion e Download Output ativados. Use data como nome da propriedade binária. Mantenha Max Wait Time no padrão para a primeira imagem; o nó usa o prazo da tarefa, em vez de esperar indefinidamente.

Execute uma vez. O nó obtém a cotação antes de criar a tarefa e a compara com o limite. Quando a tarefa tem sucesso e a saída fica pronta, baixa a imagem em dados binários. Abra a visualização Binary da saída e visualize ou baixe data.

Três coisas devem concordar: tarefa bem-sucedida, imagem binária que abre e imagem razoavelmente alinhada ao piloto. Uma tarefa bem-sucedida com roupa errada é um problema criativo. Credencial falha é configuração. Uma tarefa bem-sucedida ainda sem arquivo salvo é entrega. Separar isso evita gastar com outra geração quando a imagem original só não chegou ao destino.

Observe a imagem no tamanho de uso. Em um cartão de perfil de companhia, o rosto precisa ser legível em um recorte pequeno. Em uma ilustração de capítulo, pose e sala podem importar mais. Se o pingente distrair do rosto, simplifique antes de ampliar a série. Se a expressão for neutra demais, mude olhar ou pose em vez de acrescentar uma dúzia de adjetivos genéricos de qualidade.

Agora acrescente um nó Google Drive depois de Generate. Selecione Resource File, Operation Upload e Input Data Field Name data. Escolha a credencial Drive e uma pasta de projeto, depois execute o upload com a saída bem-sucedida da geração. Abra o arquivo salvo no Drive. Conclua esse primeiro upload antes do lote; caso contrário, seis gerações bem-sucedidas podem fazer você depurar o mesmo problema de arquivo ausente seis vezes.

Prepare uma descrição de personagem e seis cenas diferentes

Para um conjunto coerente, mantenha aparência do personagem e estilo fotográfico em dois campos reutilizáveis. Mude a cena separadamente. Isso é mais controlável que pedir a um modelo de linguagem para inventar um prompt novo para cada imagem, porque você vê quais partes permanecem fixas e quais variam.

Adicione um nó Edit Fields depois de Manual Trigger e nomeie Build scene list. Em Manual Mapping, crie estes campos:

CampoTipoValor de exemplo
seriesIdStringmara-evening-v1
characterBaseStringIdade, rosto, cabelo, pingente e vestido verde de cetim opaco da personagem adulta fictícia
styleBaseStringFotografia editorial, textura natural, tecido realista, atmosfera romântica contida
scenesArrayOs seis objetos de cena abaixo

Em characterBase, use uma frase completa: “Mara é uma mulher fictícia de 34 anos com cachos escuros até os ombros, olhos castanhos, rosto suavemente angular e pequeno pingente de ouro, usando vestido de noite de cetim verde-escuro opaco com alças finas.” Em styleBase, use “Fotografia editorial, textura natural da pele, dobras realistas do tecido, atmosfera romântica contida, apenas um personagem adulto.”

Evite colocar toda preferência no campo de personagem. “Sorrindo”, “sentada”, “na janela” e “luz azul” são escolhas de cena. Se ficarem fixas na base, podem contradizer um retrato posterior em pé sob luz quente. A base descreve quem está na imagem; a cena descreve o que o observador vê acontecendo.

Cole o seguinte como valor do campo Array scenes:

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."}
]

Esses seis prompts formam uma pequena sessão fotográfica, não seis pedidos sem relação. Sala, figurino e personagem ficam estáveis enquanto distância, pose e direção da atenção mudam. Há variação suficiente para uma história ou perfil sem pedir ao modelo para mudar tudo ao mesmo tempo.

O exemplo público mantém todos vestidos. Em um projeto adulto, adapte figurino e atmosfera permitidos à sua própria proposta de adultos fictícios. Mantenha instruções visuais e concretas. Uma categoria madura sozinha não diz se você quer um retrato íntimo próximo, moda noturna dramática ou uma cena relaxada na sala.

Não comece com seis poses difíceis de corpo inteiro. Composições amplas dão mais elementos para organizar e dificultam avaliar diferenças faciais. O close da cena quatro ajuda justamente porque permite comparar traços definidores sem a sala ocupar quase todo o enquadramento.

Uma ilustração próxima junto ao espelho mostra os cachos escuros, olhos castanhos, pingente de ouro e vestido verde de cetim de Mara.

Ilustração: o retrato próximo destaca os detalhes de aparência mantidos na descrição reutilizável da personagem.

Separe as cenas e monte os prompts finais

Depois de Build scene list, adicione Split Out. Defina Field to Split Out como scenes, escolha Include All Other Fields e Destination Field Name como scene. A saída deve conter seis itens. Cada um preserva seriesId, characterBase e styleBase, mais seu objeto individual scene. Essas configurações seguem a documentação de Split Out.

Abra a saída antes de continuar. O primeiro item deve conter scene.sceneId igual a 01; o segundo, 02. Se ainda houver apenas um item com as seis cenas, o campo de divisão está errado. Se a descrição do personagem desapareceu, a opção Include está errada. Corrigir isso aqui não custa geração.

Adicione outro nó Edit Fields chamado Build prompts. Preserve os campos recebidos. Acrescente sceneId como String em modo Expression com {{ $json.scene.sceneId }}. Acrescente prompt como String com {{ $json.characterBase + '. ' + $json.styleBase + '. ' + $json.scene.scene }}. A documentação de Edit Fields descreve os controles de campo e expressão.

Essa pequena expressão junta três textos comuns. Não pede a um modelo de linguagem para parafrasear o personagem ou reinterpretar a cena. Inspecione os seis prompts finais: a base do personagem e a base de estilo devem ser idênticas; apenas o final com a cena deve mudar.

Confira se a expressão foi avaliada, em vez de salva como texto literal. A prévia deve mostrar a descrição fotográfica completa, não chaves e $json. Se o prompt contiver undefined, algum nome de campo difere do criado. A grafia exata de characterBase, styleBase e scene importa.

Se depois quiser uma planilha, preserve essa organização. Uma linha pode conter seriesId, sceneId e a cena variável, com campos fixos de personagem e estilo anexados antes de Build prompts. Não precisa de planilha nas primeiras seis imagens, mas IDs estáveis facilitam a migração posterior.

Resista a adicionar AI Agent entre esses nós só para sofisticar a aparência do fluxo. Ele pode introduzir custos de modelo textual, latência e recusas em outra etapa. O endpoint de imagem pode suportar sua proposta adulta enquanto o modelo opcional que escreve prompts recusa compô-la. Nesse caso, a recusa vem antes da geração de imagem. Mantenha seu prompt preparado e envie diretamente à tarefa escolhida.

Salve cada imagem antes de começar a próxima cena

Adicione Loop Over Items depois de Build prompts, com Batch Size 1. Conecte a saída Loop ao nó SpicyAPI Generate. Conecte Generate a Google Drive Upload. Conecte Upload de volta a Loop Over Items. A saída Done é o fim da série concluída. Deixe Reset desativado; esta é uma lista finita de seis itens, não um loop que deve recriar sua entrada indefinidamente. Veja a documentação de Loop Over Items do n8n.

Troque o prompt fixo do piloto em Generate pela expressão {{ $json.prompt }}. Mantenha modelo, dimensões, limite de custo e download do piloto bem-sucedido. O loop apresenta um item a Generate, então o nó deve mostrar um prompt completo de cena em cada passagem.

A conexão importante é o retorno de Upload ao loop. Retornar diretamente de Generate inicia a próxima cena antes de armazenar. Conectar pela saída Done em vez de Loop pula o caminho por cena pretendido. Siga o grafo com o dedo: uma cena entra em Generate, seu arquivo entra em Upload e o upload concluído retorna para a próxima.

Em Google Drive Upload, mantenha Input Data Field Name data. Para File Name, use {{ $('Build prompts').item.json.seriesId + '-' + $('Build prompts').item.json.sceneId + '-' + $binary.data.fileName }}. Isso prefixa o nome realmente baixado com IDs de série e cena, preservando sua extensão real. Escolha a pasta do piloto. Os campos pertinentes estão na operação de upload do Google Drive.

Por que voltar a Build prompts? O nó de geração retorna o registro da tarefa e o binário baixado; não copia automaticamente campos personalizados da cena para seu JSON. A vinculação de itens do n8n deixa a expressão de upload recuperar seriesId e sceneId correspondentes anteriores. Usar o $json.sceneId atual depois de Generate pode gerar nome vazio, porque o JSON agora descreve a tarefa.

Nesta receita de uma imagem de saída, data é o único campo binário necessário. Quando outra tarefa retorna vários recursos, o nó nomeia binários adicionais como data_1, data_2 e assim por diante. Um upload Drive configurado para data não envia automaticamente todos os campos adicionais. Considere isso ao trocar a tarefa; não presuma silenciosamente que o primeiro arquivo salvo é toda a resposta.

Execute novamente o fluxo com apenas a cena 01 no array. Confirme que o nome inclui série e cena e que abre na pasta escolhida. Depois restaure os seis objetos e execute a série completa. Essa passagem extra de uma cena testa loop e expressões de nome antes que seis pedidos pagos dependam deles.

A pasta final deve conter uma sequência reconhecível, não seis downloads anônimos. Uma imagem salva é o fim útil deste fluxo. A URL de saída da API e a prévia de execução do n8n ajudam durante a geração, mas nenhuma é a pasta permanente que você quer construir.

Um diagrama envia uma cena pela geração de imagem e pelo armazenamento de arquivo antes de avançar à próxima.

Ilustração: salve a imagem atual antes de o loop iniciar a próxima cena.

Defina um orçamento real para a série

A tarifa de imagens é o número de solicitações bem-sucedidas e faturáveis multiplicado pelo preço aplicável por imagem. O fluxo não cobra uma cena que só existe na lista. Cobra outra geração bem-sucedida solicitada deliberadamente para substituir uma imagem de que você não gostou.

Para as seis cenas, com expansão desativada:

PlanoSpicy padrão a $0.01235Spicy Pro a $0.019Turbo a $0.010
Uma passagem completa de seis cenas$0.07410$0.11400$0.06000
Primeira passagem mais seis pedidos de substituição$0.14820$0.22800$0.12000
Três candidatos para cada uma das seis cenas$0.22230$0.34200$0.18000

São tarifas de geração, não a afirmação de que todo resultado será útil. Se produzir dezoito candidatos e guardar seis, pagou dezoito imagens bem-sucedidas. Download confiável evita desperdiçar tarefas concluídas; não torna gratuitos candidatos criativos descartados.

O campo Max Cost tem outra função. O plugin o compara com a cotação de cada item antes de criar sua tarefa. Não é o orçamento do fluxo inteiro de seis cenas. O padrão é $2 por item, muito acima do preço da imagem do exemplo. Definir zero desativa o limite; zero não significa geração gratuita.

Com seis itens e teto de $0.015 por item, a soma dos tetos é $0.09. É um limite superior útil para os seis envios, desde que o fluxo não acrescente itens, repita o loop, troque tarefas nem inicie outras execuções. No preço base atual do Spicy padrão, a tarifa esperada é menor: $0.07410.

Para Pro, um teto de $0.015 interrompe o pedido antes da criação, pois a cotação de $0.019 o supera. Aumente o limite por item deliberadamente ao escolher Pro; por exemplo, $0.025 permite a cotação atual. Os seis tetos somam então $0.15. Você mudou tanto o modelo quanto o gasto permitido, em vez de deixar uma troca silenciosa de custo.

O plugin também lida com conflito de mudança de preço obtendo outra cotação e verificando novamente o limite. Não precisa criar outro nó de cotação só para essa proteção no caminho comunitário. A alternativa HTTP importada abaixo é uma implementação separada; não presuma que tenha todo esse comportamento automático.

Antes de agendar, multiplique o custo do lote pelo número de execuções previstas. Uma passagem diária de seis cenas no Spicy padrão custa $2.223 de geração em trinta dias na tarifa base indicada. Três candidatos por cena por dia custam $6.669. Dobre a frequência do gatilho e os valores dobram. Assinatura ou servidor n8n, armazenamento e qualquer modelo textual opcional são acrescentados separadamente.

Mantenha o fluxo manual até saber quantos candidatos realmente precisa. Uma agenda diária que reproduz uma série de seis cenas já finalizada é um pedido recorrente de geração. Dê às execuções agendadas um novo projeto ou lista de cenas, ou inclua na entrada apenas cenas ainda sem imagem. Um pedido barato encarece quando o gatilho o repete sem motivo.

Um timeout não autoriza gerar a imagem novamente

Espera e geração são atividades diferentes. Max Wait Time controla quanto tempo o nó espera por um resultado. Atingir o limite não cancela a tarefa subjacente de imagem. Ela pode terminar depois, e uma geração bem-sucedida ainda pode ser cobrada.

Suponha que a cena 04 mostre timeout no n8n. Não clique imediatamente em Execute Workflow de novo com as seis cenas. Abra a execução falha, procure o ID da tarefa criada na saída disponível ou mensagem de erro e recupere essa tarefa primeiro. Nem todo erro tem campo JSON dedicado taskId; leia também a mensagem, não só a tabela de saída.

No caminho comunitário, faça um pequeno fluxo de recuperação: Manual Trigger → SpicyAPI com Resource Task, Operation Get → nó de armazenamento. Digite o ID existente. Se a tarefa estiver na fila ou em execução, ative Wait for Completion. Task Get não espera por padrão. Mantenha Download Output ativado e a propriedade binária data para a imagem recuperada seguir pelo mesmo caminho de upload.

Nesse fluxo separado, dê ao upload Drive um nome com série e cena conhecidas: para a quatro, use {{ 'mara-evening-v1-04-' + $binary.data.fileName }}. Não copie a expressão anterior que referencia Build prompts; esse nó não existe no fluxo de recuperação. Mantenha Input Data Field Name como data e selecione a mesma pasta de projeto.

Confira o que a tarefa realmente informa. Uma tarefa em execução precisa de mais tempo. Uma bem-sucedida precisa ter o arquivo salvo. Uma falha ou expirada precisa de correção do erro declarado antes de um pedido novo ser útil. Recusa do modelo não é timeout de rede; esperar mais ou reenviar em um loop apertado não resolve essa falha.

Tarefas falhas ou expiradas normalmente liberam a reserva. Pedidos rejeitados por conteúdo normalmente não são faturados, salvo indicação contrária na página do modelo. Para o pedido real, examine liquidação e custo da tarefa em vez de decidir só por um nó vermelho no n8n. Um nó que parou de esperar e uma tarefa de geração falha não têm resultados de cobrança intercambiáveis.

Depois de recuperar e salvar 04, remova 01 a 04 da lista e execute 05 e 06. Se 04 realmente falhou e você quer uma nova geração, mantenha 04 na lista restante depois de corrigir a entrada. IDs permanecem estáveis mesmo com array menor, então os nomes ainda mostram onde cada imagem pertence.

Por isso o loop de um item ajuda. Ele deixa cenas anteriores concluídas no armazenamento antes que uma posterior interrompa a série. Não faz a tarefa externa desaparecer quando o n8n para, mas reduz o trabalho de reconstrução depois.

Entenda o que novas tentativas podem ou não deduplicar

O plugin acrescenta uma chave interna de idempotência à criação. Dentro da mesma execução, passagem do nó e item, usar a mesma entrada pode recuperar o mesmo pedido de criação em vez de criar cegamente uma duplicata. Isso ajuda quando uma resposta de rede se perde depois de a API aceitar a tarefa.

A proteção não é uma verificação permanente de “este prompt já foi gerado”. Uma execução nova tem outro escopo. Uma passagem posterior do loop também tem outro índice de execução do nó. Mudar prompt ou parâmetros muda o pedido. Essas situações podem criar uma tarefa paga nova mesmo que a cena visível pareça familiar.

Por isso, use respostas diferentes para três problemas diferentes. Se a comunicação do envio foi incerta, recupere a tarefa existente antes de pedir outra. Se uma imagem concluída não subiu ao armazenamento, repita o upload ou busque a saída da tarefa existente. Se a imagem foi salva, mas a pose estava errada, mude a cena e faça uma substituição deliberada.

Mantenha modestas as novas tentativas automáticas ao adicioná-las. Elas ajudam em erros temporários de transporte; não são um motor de seleção criativa. Dimensão inválida, campo binário errado ou entrada incompatível continuam errados na tentativa seguinte. Corrija primeiro. Uma repetição de nó dentro do escopo existente também difere de alguém iniciar um fluxo novo.

Para uma série agendada, use uma pequena planilha ou tabela de status quando a recuperação manual ficar inconveniente. Campos úteis são seriesId, sceneId, status, ID da tarefa e link do arquivo salvo. Antes de gerar, inclua só linhas prontas; depois do upload, marque a cena como salva. Assim, uma repetição tem ID existente para recuperar em vez de um palpite sobre o pedido anterior ter chegado à API.

Não inclua esse controle no primeiro piloto sem necessidade. Seis cenas revisadas manualmente podem ser gerenciadas editando o array. A tabela vale a pena com gatilho recorrente sem supervisão ou várias pessoas no mesmo projeto. Seu valor é impedir que a mesma cena concluída seja tratada como pedido novo, não criar burocracia.

Os links assinados da API duram cerca de vinte minutos. Essa é a janela de acesso daquele link, não uma promessa de que tarefa e recurso armazenado desapareçam juntos. Recupere a tarefa existente para obter acesso atual à saída enquanto o recurso estiver retido, depois baixe e armazene a imagem.

Se colar uma URL de saída na planilha e voltar amanhã, um link expirado pode parecer geração perdida. Não pague para recriar a imagem só porque a URL antiga falhou. Busque a tarefa novamente primeiro. Em um fluxo recorrente, guarde o link durável do Drive após o upload, em vez de tratar o link temporário da API como material finalizado.

Com Download Output ativado, o plugin fornece binário ao nó seguinte. Desativado, você tem registro e links, mas não um binário data para o Drive enviar. Uma string de URL não é o arquivo da imagem. Se o upload disser que não encontra dados binários, confira Download Output e se o nome de campo coincide com a propriedade binária da geração.

Essa distinção importa também ao acrescentar um frontend. No tutorial de gerador de imagens sem código de Leon van Zyl, a transcrição mostra uma execução n8n bem-sucedida seguida de erro no frontend, porque o tratamento da resposta esperava algo diferente do binário retornado. A lição útil é inspecionar quem consome a imagem antes de culpar a geração.

No Drive, o consumidor espera um campo binário. Em uma página web, talvez você queira uma URL permanente de armazenamento. Em pasta local, a gravação ocorre na máquina do n8n, que pode ser um servidor, não seu laptop. Escolha o destino deliberadamente e abra um resultado salvo ali antes de acrescentar cenas.

Se o upload falhar depois da geração, guarde o ID da tarefa e repita o armazenamento. Confira credencial Drive, acesso à pasta e campo data. Se o arquivo já estiver na pasta, evite enviar outra cópia só porque a confirmação do último nó ficou pouco clara. Idempotência protege a criação no seu escopo; não deduplica automaticamente todo upload posterior.

Use o template HTTP no n8n Cloud

Usuários do Cloud podem usar a API com nós nativos sem instalar o pacote não verificado. Baixe o exemplo no repositório oficial n8n da SpicyAPI e importe o arquivo no n8n. Comece pela estrutura de uma imagem em vez de reconstruir todos os recursos do nó comunitário de uma vez.

O template contém um nó Settings, pedido de cotação, verificação de orçamento, criação de tarefa, consultas de status com um loop Wait e download final. Settings começa com Z-Image Turbo e uma proporção. Mude o prompt para seu piloto de personagem adulto fictício, preservando os campos suportados do modelo.

Crie a credencial HTTP Bearer Auth exigida pelos nós de API e selecione-a em GetQuote, CreateTask e GetTask. Coloque a chave na credencial. O pedido final DownloadImage busca a URL assinada do recurso e não precisa da credencial SpicyAPI nesse pedido ao armazenamento.

As respostas HTTP brutas usam um invólucro data, então as expressões podem referenciar data.taskId ou data.output. O nó comunitário retorna um registro de tarefa sem esse invólucro. Copiar uma expressão comunitária para um nó HTTP bruto sem considerar isso pode fazer uma resposta válida parecer vazia.

O nó de download deve tratar a resposta como arquivo. A documentação de HTTP Request do n8n descreve Response Format File e a configuração de campo de saída. Inspecione o campo binário real e aponte Drive Upload para ele. O template baixa o primeiro recurso de saída; não baixa automaticamente vários recursos.

Se trocar Turbo por Spicy padrão, mude a entrada do pedido junto do identificador. Use largura e altura em vez de aspect_ratio. Atualize cotação e criação para descreverem a mesma imagem. Mudar só Settings.model deixando o corpo antigo não é uma migração correta entre schemas.

Na primeira execução Cloud, mantenha uma imagem por execução. A chave de criação do template se baseia na execução e índice do item; não é a chave mais abrangente do plugin comunitário, que inclui entrada e passagem do loop. Não envolva o template inalterado em um loop presumindo o mesmo comportamento de repetição. Um lote Cloud correto precisa de identidades distintas dos pedidos de cena e entradas correspondentes de cotação e criação.

O polling também precisa de uma parada deliberada para uso sem supervisão. O exemplo repete espera e consulta até o estado terminal; não fornece Max Wait Time do nó comunitário. Defina um timeout adequado de execução do fluxo antes de agendar. Parar esse fluxo ainda não cancela a tarefa da API. Recupere a tarefa existente com GetTask antes de iniciar outra geração.

Se o preço mudar entre cotação e criação, resolva o conflito retornado e obtenha nova cotação. O plugin comunitário automatiza isso; o exemplo HTTP não deve ser tratado como idêntico em cada detalhe. O caminho nativo é um ponto de partida viável no Cloud, mas a receita comunitária auto-hospedada é mais simples para o loop de seis cenas ensinado aqui.

Melhore a série sem pagar pelas mudanças erradas

Depois de salvar os seis arquivos, compare-os como conjunto. Primeiro pergunte se contam a história visual pretendida: mesma noite, figurino e personagem adulto, vistos de vários ângulos. Depois decida quais quadros precisam de substituição. Não refaça cenas boas só porque uma imagem ficou fraca.

Se o rosto variar, reduza as mudanças entre cenas. Mantenha descrição do cabelo, estrutura facial e pingente, removendo um novo estilo de maquiagem ou indicação dramática de idade que aparece em uma única cena. Outro ângulo de câmera ainda pode mudar a aparência; consistência da descrição ajuda a controlar entradas, mas não bloqueia identidade facial.

Se identidade exata for essencial, pare de tentar resolver com outro parágrafo de adjetivos. Esses endpoints só de texto não consomem o retrato aceito como referência. Leve a imagem escolhida a um modelo com tarefa real de referência ou edição. O guia de preservação facial explica o outro fluxo. Use texto para imagem aqui para estabelecer personagem e sessão; use edição quando preservar o rosto aceito virar a principal exigência.

Uma ilustração de graphic novel mostra Mara adulta olhando para trás em uma varanda na hora azul, de vestido verde de cetim e com luz quente de apartamento atrás.

Ilustração: mude pose, ângulo e cenário preservando aparência definidora e figurino da personagem.

Se o clima ficar simples demais, ajuste um elemento visível: olhar, direção da luz, distância da câmera ou tecido do vestido. “Mais NSFW” não especifica a imagem desejada. Uma adulta fictícia olhando para trás em uma varanda com iluminação suave é outra composição em relação a um retrato próximo com contato visual direto, mesmo pertencendo ambos a um projeto adulto.

Se a pose ficar confusa, simplifique as instruções físicas. A cena dois separa deliberadamente as mãos apoiadas, em vez de pedir uma interação complexa com vários objetos. Acrescente uma interação depois que a pose simples funcionar. Automação envia uma série preparada consistentemente; não elimina a necessidade de dar ao modelo um momento possível de desenhar.

Se o enquadramento cortar algo importante, mude enquadramento ou dimensões antes de pedir mais detalhe. O retrato do Spicy padrão comporta bem um personagem da cintura para cima, mas corpo inteiro pode exigir distância de câmera mais explícita. Uma tela Pro maior dá mais pixels; não amplia automaticamente o campo de visão nem corrige a instrução de composição.

Guarde seed, prompt e dimensões de um quadro aceito se quiser uma repetição controlada. A seed ajuda a manter a variação estável nas mesmas configurações; mudar cena ou tamanho muda o problema desenhado. Nos endpoints Spicy, seed zero pede uma seed aleatória. Uma seed fixa diferente de zero ajuda na comparação, não garante rosto idêntico em toda cena.

Por fim, diferencie imagem tecnicamente bem-sucedida de imagem útil. Sua tabela de tarifas deve contar cada candidato bem-sucedido faturável. A contagem da série pronta deve incluir os que você guarda. Se seis imagens finais exigirem doze candidatos, planeje doze e melhore as instruções das cenas fracas para a próxima série precisar de menos substituições.

Perguntas antes de ativar um agendamento

O n8n é, por si, um gerador de imagens NSFW?

Não. Ele conecta entradas, pedidos de API e destinos de arquivos. O endpoint escolhido determina capacidade de geração e escopo de conteúdo. Um agente opcional de escrita de prompts ou template importado pode impor restrições próprias antes da chamada da tarefa de imagem.

Dá para fazer sem escrever um script?

A receita auto-hospedada usa nós visuais, um pequeno array de cenas e duas expressões curtas. Você ainda precisa escolher modelo, criar credenciais e conectar o loop corretamente. O caminho HTTP no Cloud exige mais atenção a entrada JSON e respostas de tarefa; evita instalar pacote, não toda configuração de API.

Um template n8n gratuito torna as imagens gratuitas?

Não. Importar um fluxo e pagar por um pedido de imagem são coisas separadas. O exemplo usa solicitações de API com preço, e hospedagem ou assinatura n8n pode acrescentar outro custo. O número útil é preço de geração multiplicado pelos candidatos bem-sucedidos solicitados.

Devo automatizar a publicação depois da geração?

Para uma série nova, termine em arquivos salvos e revise as imagens primeiro. Acrescente etapas posteriores de entrega quando destino e exigências criativas estiverem definidos. Um fluxo que salva seis cenas com confiabilidade já é útil; publicar automaticamente é uma ação separada com outras exigências.

Comece com uma imagem gerada manualmente e um upload bem-sucedido. Depois amplie para seis cenas com limite de custo e loop que salva antes de avançar. Quando houver falha, recupere a tarefa existente antes de encomendar outra imagem. Assim você tem um fluxo n8n prático para personagens adultos: entradas compreensíveis, custos previsíveis de pedidos e arquivos que consegue encontrar depois.

Também em English · 日本語 · 한국어 · Deutsch · Français · Español · Русский · Italiano · Polski

Coloque este guia em prática

Obter o fluxo de trabalho

Planeje sua galeria NSFW no Google Sheets.

Transforme uma planilha de ideias para criação NSFW em uma fila organizada de imagens. Gere até quatro conceitos com Z-Image Turbo por execução e confira cada imagem junto do prompt, do status e do link do resultado.

Obter o fluxo de trabalho

Fluxos NSFW. Da primeira imagem ao ensaio completo.

Ensaios de personagens, pedidos privados de cenas e estilos próprios. Escolha o resultado criativo, importe o template de n8n ou ComfyUI correspondente e crie suas primeiras imagens.

Experimente você mesmo

Você paga só pelo que executar — sem plano e sem assinatura.

Feito com MiniMax H3 · ByteDance Seedance 2.0 Fast