Conditional Text Concat
The concat node that decides whether the reversal gets mentioned
- STRING
What it does
Conditional Text Concat takes two strings and a number. Even number → text_a + text_b glued together. Odd number → just text_a. That's the entire job, and the entire node.
Why that's useful in a tarot workflow
A reversed card reads differently from an upright one - the reversal twists the meaning - and ProtoTeller ships wildcard files with separate upright and reversed interpretations for every card. This node is how the workflow turns that into a sentence: text_a holds the base reading, text_b holds the "because this card is reversed..." tail, and the draw's parity decides whether the tail gets appended. It shares the same number input convention as the pack's other conditionals, so it can't drift out of sync with the flip and the switch.
Inputs and output
- text_a - the always-present text.
- text_b - appended only when number is even.
- number - INT, 0–100, the parity switch.
- Output: a single STRING.
The trap
There's no separator in the concat. text_a + text_b is literal - no space, no newline inserted for you. Feed it "The Fool suggests a new beginning" and "however, reversed it warns of recklessness" and you'll get "...beginninghowever, reversed...". Put the separator at the end of text_a or the start of text_b yourself. It's the kind of detail that eats ten minutes of debugging in a workflow that's otherwise going well.
Wiring it
STRING out → into your LLM/text-prompt builder, or straight into the text input of PreviewTextImage. Keep number wired to the same source as ConditionalImageRotate and ConditionalTextSwitch so every node in the chain agrees on whether the card came up reversed.
Install
Same as the rest of the pack: ComfyUI Manager → search "ProtoTeller", or
cd ComfyUI/custom_nodes
git clone https://github.com/DoctorDiffusion/ComfyUI-ProtoTeller
then restart. No models, no dependencies beyond what ComfyUI already ships - you can use this node the moment the pack is cloned, before downloading any of the model files in the README.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| text_a | STRING | — | |
| text_b | STRING | — | |
| number | INT | 00–100 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |