Skip to main content

n8n Cloud + self-hosted / Workflow template

Plan your NSFW image gallery in Google Sheets.

Turn a sheet of NSFW creator ideas into an organized image queue. Generate up to four Z-Image Turbo concepts per run, then review every image beside its prompt, status and result link.

Cloud uses built-in HTTP nodes. The self-hosted download uses the SpicyAPI community node. Choose the matching setup steps below.

Adult anime & visual novel art
Illustration
Try the model first
Start with
A Google Sheet with stable row IDs and prompts
Get
Image files plus row-level status and result links
Best for
Prompt libraries, character concepts and small creator batches

A production sheet that tells you which concept succeeded, which task belongs to it and which row needs attention. The execution also contains the downloaded image for the next publishing or storage step.

How the workflow runs

How the workflow runs

  1. 01

    Read todo rows

  2. 02

    Limit to four

  3. 03

    Generate + download

  4. 04

    Update the same rows

A visual guide to the workflow.

NSFW / Character / Style

Creative starting points

A content calendar from your prompt sheet
Illustration

A content calendar from your prompt sheet

01

Keep your next gallery ideas in Google Sheets: themed portraits, alternate outfits and cover concepts. Generate a small queue and review each result beside its prompt before deciding what to publish.

What to change first

Use unique row IDs and mark ready prompts todo. The starter handles up to four rows per run and records each image’s status.

Try this direction
Adult anime & visual novel art
Illustration

Adult anime & visual novel art

02

Build an original adult character for illustrated galleries, character cards or visual novel key art. A compatible style LoRA gives you another way to explore linework and finish alongside your prompt.

What to change first

Choose a LoRA made for Z-Image Turbo, include its trigger wording and compare one scene before adding another adapter.

Try this direction
NSFW character photo sets
Illustration

NSFW character photo sets

03

Give a recurring character a complete editorial story: window-light portraits, an evening look and a late-night balcony. Use four scenes to find a direction, then expand the strongest look into a larger set.

What to change first

Reuse the original portrait for each scene. Change the wardrobe and location; keep facial details and hair consistent.

Try this direction

Workflow tutorial

Steps to your first result

Use the Cloud JSON for a built-in HTTP queue. It records the original request before submitting, writes accepted task IDs back before waiting and resumes rows that already have a task.

  1. 01

    Import and connect both services

    Import the Cloud JSON into n8n. In Quote Request, Create Task and Get Task, choose Generic Credential Type → Bearer Auth and select the same credential, with your API key in its Bearer Token field. Select the same Google Sheets OAuth2 credential in every Sheets node. Keep the workflow inactive during setup.

  2. 02

    Create the queue and recovery columns

    Use these headers: id, prompt, status, taskId, resultUrl, cost, error, idempotencyKey, firstAttemptAt, requestJson. Give every row a unique id of 1–48 letters, digits, underscores or hyphens. Put the creative brief in prompt and set new rows to todo. Leave the three recovery columns empty on a new row; the workflow fills them.

  3. 03

    Choose a small batch and enable the run

    In Settings, fill documentId and sheetName. Set maxItems from 1 to 4 and a positive maxCostUsd up to 0.10 USD per image. Read Rows reads the sheet; Select Rows chooses eligible items. Set enabled=true when the sheet, credentials and budget are ready. Run one execution at a time so two runs do not select the same rows.

  4. 04

    Run the queue and read each result

    Start a manual execution. Save Request records the original request and replay key before submission; Save Accepted Task records taskId before polling. Each new task must pass its quote and maximum-charge check. Get Task waits for at most 60 lookups or 300 seconds per item, plus an in-flight request. Download Image uses no API credential. Write Results updates the matching id to done or needs_review; successful files are in Batch Results as binary.data.

  5. 05

    Recover a row before making a new attempt

    Rows marked processing or needs_review with a taskId are retrieved on the next run without another creation. With no ID, inspect the saved execution and console first. To replay the unchanged original request within 23 hours, set status=todo while preserving idempotencyKey, firstAttemptAt and requestJson. After that window, find the accepted taskId instead. For a new creative attempt, add a new row with a unique id, status=todo and empty taskId and recovery columns. This keeps the original result and cost record. Archive downloaded images separately; resultUrl is temporary.

Try this prompt

Creative example. Adapt it to your own fictional adult character and source image.

An original adult anime character, age 30, with short silver hair and emerald eyes, wearing a dark green evening dress at a neon-lit hotel lounge. Visual novel gallery cover, expressive cel shading, detailed fabric, clean composition, no lettering.
Try this direction

Choose a model for your creative range

Reference editing starts with Qwen Image 2.1; new concepts start with Z-Image Turbo. For a more specific NSFW style, explore compatible LoRA models and the Spicy collection before scaling your batch.

Budget the complete run

The template processes at most four eligible rows per execution, with one image-generation task per new row. The planned batch cost is the sum of the selected item quotes. A needs_review row may still be running: retrieve its recorded taskId first. For another creative attempt, add a new todo row with a unique id; keep the original result and cost record.

If the result is not what you expected

A row says needs_review

Keep a needs_review row until you have checked its existing task. In the Cloud version, rows with taskId are retrieved on the next run; with no ID, inspect the saved execution and console before replaying the original request. In the self-hosted version, use Task → Get with the recorded taskId. Do not reset the row simply because a wait ended.

Only one todo row appears

In the self-hosted plugin version, leave Return only First Matching Row off in the read node. The Cloud version reads the sheet and selects eligible rows in Select Rows. Check maxItems and row status before expanding a batch.

The sheet has links, but the images need an archive

Use the downloaded binary from the execution in a Drive or other storage step, then write that permanent link back. This download does not include a Drive archive node.

Before you import

Continue with another workflow

Make the first useful run

Download the template or try the same model in the Playground before connecting the full workflow.