ComfyUI Node

TIPO

A small local LLM that writes your Danbooru-style prompt for you

By KohakuBlueleaf·Created 2 years ago·Updated a day ago· 597
TIPO
    • prompt
    • user_prompt
    • unformatted_prompt
    • unformatted_user_prompt
    tags
    nl_prompt
    ban_tags
    tipo_modelKBlueLeaf/TIPO-500M-ft | TIPO-500M-ft-F16.gguf
    format<|special|>, <|characters|>, <|copyrights|>, <|artist|>, <|general|>, <|extended|>. <|quality|>, <|meta|>, <|rating|>
    width1024
    height1024
    temperature0.50
    top_p0.95
    min_p0.05
    top_k80
    tag_lengthlong
    nl_lengthlong
    seed1234
    devicecuda

    If you've ever seen someone's 60-tag Illustrious prompt and wondered how anyone types all that by hand, the answer is usually: they didn't. TIPO did. Feed it a character name and two or three tags and it hands back a full, properly-categorized Danbooru-style prompt - quality tags, rating, artist, the works - plus a natural-language caption if you want one too. It's not autocomplete; it's a small dedicated language model doing the tedious part of prompting for you.

    What it actually is

    TIPO stands for "Text to Image with text presampling for Prompt Optimization," and it's built by KohakuBlueleaf - the same person behind LyCORIS (LoCon, LoHa, LoKr) and lately the HDM/XUT diffusion architecture. Not a random node author; one of the more technically serious people in the open anime-SD space. TIPO is the successor to his earlier DanTagGen, and the difference matters: DanTagGen only spoke tags, TIPO handles both tags and plain sentences, and per the author's own framing you can even write tags in a more linguistic way ("long blue hair" won't confuse it the way it'd break a strict tag-only model).

    It also fits a real pattern, not a novelty: local prompt-writing nodes are one of the more active categories on ComfyUI right now, because a lot of current models are LLM-encoded and read your prompt as an instruction - translating "girl on a rooftop at night" into the exact vocabulary a Danbooru-trained checkpoint wants is a natural fit. TIPO can run before or after your other prompt processing (dynamic prompts, wildcards), and the pack is literally named with a leading z so it loads after everything else in the queue - a small, kind of funny detail baked right into the repo name.

    The inputs and outputs that matter

    You won't touch most of the fields. The ones worth knowing:

    • tags and nl_prompt - your seed. A character name, "1girl, rooftop, night," or a plain sentence. Both can be empty, but you'll get more targeted results if you give it something to work from.
    • ban_tags - a blocklist, regex supported, for anything you never want showing up.
    • tipo_model - which checkpoint runs the generation. Sizes range 100M–500M, several as GGUF-quantized files; bigger is generally more coherent, and 500M-ft is a reasonable default.
    • tag_length / nl_length - how much TIPO generates, very_short up to very_long. The README recommends short or long - the extremes are where quality gets shaky.
    • format - the template assembling the final prompt, using placeholders like <|characters|>, <|artist|>, <|general|>, <|quality|>. The default is tuned for Kohaku XL Zeta but works reasonably across the Illustrious-family ecosystem, which shares the same Danbooru-derived conventions.
    • temperature, top_p, min_p, top_k, seed, device (cpu/cuda) - standard LLM sampling knobs. Temperature is the one worth thinking about: higher is more varied and surprising, lower is tighter and more coherent.

    Four strings come out: prompt is the one you want - the fully generated, template-formatted result, ready to wire straight into CLIP Text Encode. user_prompt sticks closer to what you actually fed in rather than everything TIPO layered on top. unformatted_prompt / unformatted_user_prompt are the same two before the format template applies, useful if you want to reformat downstream - which is exactly what the companion TIPOFormat node is for.

    Installing it

    Easiest path: ComfyUI Manager, search "TIPO-extension," install, restart. Manually, it's:

    cd ComfyUI/custom_nodes
    git clone https://github.com/KohakuBlueleaf/z-tipo-extension
    

    restart, and the node shows up under utils/promptgen. Model weights aren't bundled - the tipo_model dropdown lists Hugging Face repo IDs (some paired with a .gguf filename), and picking one downloads it the first time you run the node, then caches it. Your first run needs internet, and a model you haven't used yet means another download.

    Common issues

    The manual install path isn't always a clean "clone and restart" - people have reported getting the extension partway installed and missing the underlying KGen library it's built on, even after running the repo's requirements.txt by hand. If nodes don't appear or you hit import errors on startup, go through ComfyUI Manager instead - it resolves that dependency rather than leaving you to chase down what a bare git clone missed.

    The tipo_model list mixes plain checkpoints with GGUF-quantized versions of the same models. CPU-only or short on VRAM? Reach for a GGUF entry (or drop to 200M/100M) before touching sampling settings - it's the bigger lever. No NVIDIA GPU at all? Set device to cpu; it's a small model, nothing like running an SDXL checkpoint on CPU.

    If output looks like incoherent tag soup, that's a settings problem, not a bug: the README is explicit that short/long are the safe zone, and pushing temperature up alongside very_long is where things fall apart - dial temperature back toward 0.5 first. And if a category (artist, copyright) isn't showing up, check your format string actually includes that placeholder - TIPO won't add a category you told it to leave out.

    Categoryutils/promptgen

    Inputs (15)

    NameTypeDefaultDescription
    tagsSTRING
    nl_promptSTRING
    ban_tagsSTRING
    tipo_modelCOMBOKBlueLeaf/TIPO-500M-ft | TIPO-500M-ft-F16.gguf12 options: KBlueLeaf/TIPO-500M-ft | TIPO-500M-ft-F16.gguf, KBlueLeaf/TIPO-200M-ft2 | TIPO-200M-ft2-F16.gguf, KBlueLeaf/TIPO-200M-ft | TIPO-200M-ft-F16.gguf, KBlueLeaf/TIPO-500M | TIPO-500M_epoch5-F16.gguf, KBlueLeaf/TIPO-200M | TIPO-200M-40Btok-F16.gguf, KBlueLeaf/TIPO-100M | TIPO-100M-F16.gguf, +6
    formatSTRING<|special|>, <|characters|>, <|copyrights|>, <|artist|>, <|general|>, <|extended|>. <|quality|>, <|meta|>, <|rating|>
    widthINT1024
    heightINT1024
    temperatureFLOAT0.50
    top_pFLOAT0.95
    min_pFLOAT0.05
    top_kINT80
    tag_lengthCOMBOlong4 options: very_short, short, long, very_long
    nl_lengthCOMBOlong4 options: very_short, short, long, very_long
    seedINT1234
    deviceCOMBOcuda2 options: cpu, cuda

    Outputs (4)

    NameTypeDescription
    promptSTRING
    user_promptSTRING
    unformatted_promptSTRING
    unformatted_user_promptSTRING