Nodes/ComfyUI_LC123_nodes/Civitai 🚩πŸ”ͺ
ComfyUI Node

Civitai 🚩πŸ”ͺ

The compliance scrubber β€” and it's your problem, not the node's

By lonecatone23Β·Created 2 months agoΒ·Updated about 12 hours agoΒ· 19
Civitai 🚩πŸ”ͺ
    • text
    β—„textβ–Ί
    β—„list_filecivitai_compliance_remove.txtβ–Ί

    Civitai has rules about what can be posted, and the rules are not stable - the platform spent 2025-26 rewriting its TOS, purging categories, and moving the adult catalogue to a separate domain. If you batch-generate images for a gallery, the last thing you want is a model-banned prompt sneaking through on image #200. LCCivitaiStrip is a blunt instrument for exactly that: it takes your prompt text, removes every term on a blacklist file, and hands back a scrubbed string.

    The node is deliberately low-trust about itself. Its own description opens with "For compliance assistance only! YOUR responsibility to abide by CivitAi TOS," and closes with "No guarantee it is complete, current, or enough for Civitai approval." That's not CYA boilerplate - it's the honest framing for what this does, because a text-stripper is a heuristic, not a lawyer.

    Mechanically it's simple and effective. It loads terms from assets/lists/civitai_compliance_remove.txt (one term per line, # comments allowed), sorts them longest-first so multi-word phrases win over their substrings, and removes every match case-insensitively from your text. Then it tidies up the wreckage: collapses double spaces, normalizes , spacing, and strips leading/trailing commas. So foo, bar banned phrase, baz comes out clean rather than full of dangling punctuation.

    The list_file dropdown has one choice by default - civitai_compliance_remove.txt - but the node scans the whole assets/lists/ folder for .txt, .csv, and .list files, so you can drop in your own blacklist files and they'll show up in the dropdown. That's the real power: the shipped list is a starting point, and your own list can carry your personal "never generate these" terms or client requirements.

    The practical workflow: run your assembled prompt through this before it hits the sampler, or run the final prompt through it as a safety gate right before save. It's a text-in/text-out node (output text, same as input shape), so it drops into an existing prompt chain without breaking it. Pair it with an LC Show Text to eyeball the scrubbed result and confirm it's not mangled.

    Where people get burned - and this is the important part - is trusting it. A word list can't catch every phrasing a ban might catch; the platform's moderation is contextual, and this node has no idea why a term is banned, only that it's on the list. A prompt that passes the strip can still fail moderation, and a term that isn't on the list today may be banned tomorrow. The README is blunt that your TOS responsibility doesn't transfer to the node. So treat it as a first-pass filter, review the output, and keep your own list updated from the platform's current policy. It's also worth knowing the strip is substring-based and case-insensitive - "bannedterm" inside a longer word gets removed too, which can occasionally eat innocent text, so the tidy pass after it matters.

    Install is the standard LC123 clone:

    cd ComfyUI/custom_nodes
    git clone https://github.com/lonecatone23/ComfyUI_LC123_nodes
    

    Restart, no pip deps. Useful, honest about its limits, and one more reminder that "the site allowed it yesterday" is not the same as "the site allows it."

    CategoryLC123/text

    Inputs (2)

    NameTypeDefaultDescription
    textSTRINGPrompt / text to strip.
    list_fileCOMBOcivitai_compliance_remove.txtList file under assets/lists/ (one term per line, # comments ok).

    Outputs (1)

    NameTypeDescription
    textSTRINGβ€”