TTools for ComfyUI
Text Randomization and Formatting, JSON Extraction and Processing, SD3 Resolution Solver
Nodes (2)
TTools for ComfyUI
A tiny, sharp set of custom ComfyUI nodes for prompt wrangling and SD3-friendly resolutions — stop-word-aware text randomization, JSON extraction from messy strings, and 1-megapixel resolution solving.
Why should I care? Prompt pipelines rot at the edges: LLM chatter stuck around your JSON, stop-words mangled by naive randomization, and SD3 latents that want dimensions near 1 MP in multiples of 64. TTools is the three-node toolbox that fixes all three — drop it in
custom_nodes/and get cleaner prompts and pixel-safe resolutions.
Features
- 📝 Text randomization & formatting — spaCy-powered (
en_core_web_sm) stop-word handling with a curated keep-list, so randomization respects the words that matter - 🧩 JSON extraction — pulls JSON objects out of messy strings, randomizes the extracted values, emits a comma-separated result
- 📐 SD3 Resolution Solver — computes width/height near 1 megapixel, snapped to multiples of 64, with Portrait/Landscape orientation and a configurable long-side cap
Node map
flowchart LR
subgraph TTools
A["TTools Extract JSON"]
B["TTools SD3 Resolution Solver"]
end
P[Prompt text] --> A
A --> C[Comma-separated values]
X[x, y] --> B
B --> W[Width]
B --> H[Height]
| Node | What it does |
|---|---|
| TTools Extract JSON | Extracts JSON from a string, randomizes values, outputs comma-separated text |
| TTools SD3 Resolution Solver | Scales (x, y) toward ~1 MP, rounds to multiples of 64, enforces orientation + max_long_side |
Quick start
cd /ComfyUI/custom_nodes/
git clone https://github.com/toxicwind/ComfyUI-TTools.git
pip install -r ComfyUI-TTools/requirements.txt
Restart ComfyUI — the nodes appear under the utils category.
Config
| Input | Default | Notes |
|---|---|---|
| x, y | 1024, 1024 | Source resolution |
| max_long_side | 1280 | Clamps the long edge after scaling |
| format | Portrait | Portrait or Landscape |
| skip_if_mulof64 | false | Pass through when already 64-aligned |
The stop-word keep-list lives at the top of __init__.py (remove_stop_word_tokens); the phrase-replacement list is words_to_replace.txt.
Dev / contributing
This is a single-file node pack — __init__.py is the whole implementation. PRs welcome: fork, branch, open a pull request against main.
License + security
Licensed under the GNU Affero General Public License v3.0 — see LICENSE.txt. If you run a modified version as a network service, the AGPL requires you to share the source.
Security: this node pack executes inside your ComfyUI process with full Python access — install only from sources you trust, and review __init__.py before adding any custom node to a production workflow.