ComfyUI Extension: comfyui-toml-prompt

Authored by morino-kumasan

Created

Updated

0 stars

Encode Prompt in TOML for ComfyUI.

Custom Nodes (0)

    README

    comfyui-utils

    ComfyUI custom nodes.

    Install

    cd ComfyUI/custom_nodes
    git clone [email protected]:morino-kumasan/comfyui-utils.git
    cd ../../
    python_embeded/python -m pip install -r ComfyUI/custom_nodes/comfyui-utils/requirements.txt
    

    How to use

    See sample workflows.

    TomlPromptDecode

    text

    _t is prompt. _v is variables for random choice. _k is available keys for random choice. _w is weight for random choice with _k. _export is string to export to output. _f is called by toml_key_name().

    # key _t is prompt
    [base]
    _t="score_9, score_8_up, score_7_up, source_anime"
    
    # direct string prompt
    quality="best quality"
    
    [base.girl]
    _t="""1girl, perfect anatomy, 
    beautiful face, (detailed skin), (detailed face), (beautiful detailed eyes),  
    shiny hair, ${color} hair"""
    # ${color} is replaced with red, blue or blonde.
    
    twintails = "twintails, <lora:twintails.safetensors:1>"
    ponytails = "ponytails"
    
    [base.girl._v]
    color=["red", "blue", "blonde"]
    
    [base.boy]
    1boy, muscular, ${.color} hair, formal suit,
    # ${color} is replaced with dark, light or dark blue
    
    # "base().test" equals "base._f.test"
    [base._f]
    _t = "base() is called"
    
    test="test1"
    
    # "random_weight.?" to select a or b or c
    [random_weight]
    _k = ["a", "b", "c"]
    # random select weight
    _w = [0.8, 0.1, 0.1]
    a = "80%"
    b = "10%"
    c = "10%"
    
    # "random_weight.*" to select a and b and c
    [random_weight2]
    _k = ["a", "b", "c"]
    # each select ratio
    _r = [0.8, 0.3, 0.3]
    a = "80%"
    b = "30%"
    c = "30%"
    
    [_v]
    color=["dark", "light", "dark blue"]
    
    [_exports]
    key = "value"
    

    lora_info

    <lora:lora_name:strength> is replaced with prompt.

    ["lora.safetensors"]
    _t="lora prompt"
    

    key_name_list

    // this is commont
    # this is comment
    /* this is comment */
    quality          /* encode as "best quality" */
    base, quality    /* encode as "score_9, score_8_up, score_7_up, source_anime, best quality" */
    {base | quality} /* encode as "score_9, score_8_up, score_7_up, source_anime" or "best quality" */
    base.girl        /* equals "base, base.girl", but not duplicate prompt. */
    base.girl+boy    /* equals "base, base.girl, base.boy" */
    base.?           /* equals "{base.girl | base.boy}" */
    base.??          /* equals "{base.girl.twintails | base.girl.ponytails | base.boy}" */
    <lora:lora.safetensors:1> /* load LoRA and encode as "lora prompt" */
    <raw>
      /* raw positive prompt */
      this line is raw positive prompt.
    </raw>
    <raw type=negative>
      /* raw negative prompt */
      this line is raw negative prompt.
    </raw>
    <case>
      /* key_name1 if key name is already loaded else key_name2 */
      <when key=base.girl>
        key_name1
      </when>
      <else>
        key_name2
      </else>
    </case>
    <random a=0.1 b=0.9>
      /* 10%: key_a, 90%: key_b */
      <when key=a>key_a</when>
      <when key=b>key_b</when>
    </random>
    <?route fix base girl>    /* fix random choise, "base.??" is always "base.girl" */
    <?route find base girl>   /* fix random choise, "base.??" is always tag including girl */
    <?route remove base girl> /* fix random choise, "base.??" is always tag excluding girl */
    <?export key value> /* export key=value */
    <?set color black>                 /* _v.color = ["black"] */
    <?set base.girl.color 'cyan blue'> /* base.girl._v.color = ["cyan blue"] */
    <?grep color 'ark'>                /* _v.color = ["dark", "dark blue"] */
    

    MultipleLoraTagLoader

    Output multiple LoRA tags. (max 10)

    • Input
      • lora_name_0
        • LoRA filename.
      • strength_0
        • LoRA modify strengh.
      • lora_name_1
      • strength_1
      • ...
      • lora_name_9
      • strength_9
    • Output
      • STRING
        • LoRA tag list separated by line break.