Sign In

Over 10K CivitAI Top NSFW Prompts dataset

32

Over 10K CivitAI Top NSFW Prompts dataset

Hey folks!

This is a dataset of over 10,000 pure NSFW prompts pulled from Civitai's top-rated NSFW images (the ones with at least 25 heart likes and marked as 'X' level).

I filtered out cat faces or landscapes that were tagged as 'X' in the Civitai database and left with pure NSFW prompts, cleaned up the text (tags that could be removed using regex), and packed it all into an easy-to-use JSONL file.

Update: ComfyUI node

unzip the comfyui-civitai-prompts.zip and place the folder in

/ComfyUI/custom_nodes/

In the "/ComfyUI/models/' directory, create a new folder and name it civitai_prompts

Place the dataset file 'prompts.jsonl ' in that folder

Restart the ComfyUI and search for "NSFW Prompt Loader"

comfyui-prompt-loader.png

How to use:

if your browser shows a 'not found' error or complains about CORS:

Read the README in the zip file.

sdxl-sd.png

Just open the included index.html in your browser, and you've got a simple web tool to browse prompts by ID or grab a random one or use the python script below to interact with the dataset. (included in the zip file in data folder)

Save the code as fetch.py or any name you prefer. Activate your Python virtual environment, navigate to the directory where the dataset is located, and run the script.

python fetch.py

import json
import random
import os

JSONL_FILE = 'prompts.jsonl'

def load_prompts():
    prompts = {}
    if not os.path.exists(JSONL_FILE):
        print(f"Error: {JSONL_FILE} not found.")
        return prompts
    
    with open(JSONL_FILE, 'r', encoding='utf-8') as f:
        for line in f:
            try:
                data = json.loads(line.strip())
                id_val = data.get('id')
                prompt = data.get('prompt')
                if id_val is not None and prompt:
                    prompts[id_val] = prompt
            except json.JSONDecodeError:
                print("Warning: Invalid JSON line skipped.")
    
    return prompts

def retrieve_prompt(prompts, id_input):
    if id_input.lower() == 'random':
        if not prompts:
            return "No prompts available."
        random_id = random.choice(list(prompts.keys()))
        prompt_text = prompts[random_id]
        return f"Random ID {random_id}:\n### start ###\n{prompt_text}\n#### End ###"
    else:
        try:
            id_val = int(id_input)
            if id_val in prompts:
                prompt_text = prompts[id_val]
                return f"ID {id_val}:\n### start ###\n{prompt_text}\n#### End ###"
            else:
                return f"ID {id_val} not found."
        except ValueError:
            return "Invalid input. Enter an integer ID or 'random'."

# Main loop
prompts = load_prompts()
if prompts:
    print(f"Loaded {len(prompts)} prompts.")
    while True:
        user_input = input("Enter ID (int) or 'random' (or 'exit' to quit): ").strip()
        if user_input.lower() == 'exit':
            break
        result = retrieve_prompt(prompts, user_input)
        print(result)
else:
    print("No prompts loaded. Exiting.")

Good luck!

32