Nodes/Frog Node Pack/🐸 Vocab Extender
ComfyUI Node

🐸 Vocab Extender

Teach the tag filter your vocabulary β€” permanently, no restart

By RabbitThatIsPinkΒ·Created 3 months agoΒ·Updated 24 days agoΒ· 1
🐸 Vocab Extender
      β—„alwaysβ–Ί
      β—„fantasyβ–Ί
      β—„character_traitsβ–Ί
      β—„overlay_textβ–Ί

      Every tag-filtering system has a built-in word list, and every one of them is missing words you care about - usually artist handles, watermarks, or niche terms that keep leaking through into your prompts. 🐸 Vocab Extender is the escape hatch: a node whose entire job is to add your own words to the 🐸 Tag Filter's vocabulary, save them to disk, and have them active immediately. No restart, no editing a JSON file by hand.

      Here's the mechanism. The node has four multiline text boxes, and each one maps to a category of the Tag Filter's exclusion system:

      • always - words removed unconditionally, no toggle needed. This is where artist handles and watermark terms go. The tooltip's examples are telling: kitew, nyuunz, misamart - the specific artist signatures people are tired of seeing in their generations.
      • fantasy - words removed when the fantasy_traits toggle is on (dryad, sphinx, centaur...).
      • character_traits - removed when the character_traits toggle is on (abs, muscular...).
      • overlay_text - removed when the overlay_text toggle is on (graffiti, chalk writing...).

      When the node executes, it saves whatever you typed to data/vocab_extensions.json and the Tag Filter loads it - the source loads user vocab at import time and updates it live, so your additions are in effect for the next queue run, not after a reboot. Entries persist across sessions automatically. The README's promise is exactly this: "No ComfyUI restart required. Additions persist across sessions automatically."

      The word-level matching is worth understanding because it's both powerful and a trap. The fantasy and character_traits categories match at word level: adding elf catches dark elf and forest elf; adding breasts catches large breasts. That's convenient - but it means a short word like elf can over-match. The always category is the unconditional one, so put only things there you really never want to see.

      This node has no outputs and is a terminal (output) node - you add it to the canvas, type your words, queue once, and it does its write. It pairs directly with 🐸 Tag Filter, which is the node that consumes this vocabulary when it strips Florence2 captions and WD14 tags. If you've been fighting the Tag Filter with a giant exclude list on the filter node itself, Vocab Extender is the cleaner long-term home for words you'll always want removed - they become part of the pack's persistent data rather than per-node text you have to re-paste into every workflow.

      Installing it

      Part of Frog Node Pack:

      • ComfyUI Manager: search Frog Node Pack, install, restart.
      • Manual: cd ComfyUI/custom_nodes && git clone https://github.com/RabbitThatIsPink/FrogNodePack, restart, hard-refresh (Ctrl+Shift+R).

      No pip dependencies (requirements.txt is empty; Pillow ships with ComfyUI). Find 🐸 Vocab Extender under 🐸 Node Pack/Utility.

      Common issues

      The two things that trip people: category confusion - dropping a word into always when you actually wanted it toggled, or vice versa; since always is unconditional, a word you only sometimes want gone will now always vanish. And over-matching - a short word in a word-level category catches more than you intended. The fix for both is moving the word to the right box. One tip: your additions live in FrogNodePack/data/vocab_extensions.json, which the README explicitly promises is not touched on pack updates - so your vocabulary survives reinstall/upgrade.

      Category🐸 Node Pack/Utility

      Inputs (4)

      NameTypeDefaultDescription
      alwaysSTRINGWords filtered unconditionally β€” no toggle required. Use for artist handles, specific watermarks, or any tag that should ALWAYS be removed. Example: kitew nyuunz misamart
      fantasySTRINGWords filtered when the fantasy_traits toggle is ON. Word-level: 'elf' also catches 'dark elf', 'forest elf'. Example: dryad sphinx centaur
      character_traitsSTRINGWords filtered when the character_traits toggle is ON. Word-level: 'breasts' also catches 'large breasts', etc. Example: abs muscular
      overlay_textSTRINGWords filtered when the overlay_text toggle is ON. Use for text / sign / caption descriptors not already in the built-in list. Example: graffiti chalk writing

      Outputs (0)

      No outputs