Text Gen 📝 (Pollinations)
Free LLMs In Your ComfyUI Graph, No Key Required
- generated_text
Text Gen 📝 (Pollinations) is the node that lets ComfyUI do the thinking for you without downloading a single model. No checkpoint, no llama.cpp, no VRAM budget - it's a thin wrapper around the free Pollinations text API, which means you get hosted LLMs for the price of an internet connection. The name is a lie in the best way: it doesn't call your API and needs no key. Pollinations is a free, open service, and this node just asks it nicely.
The whole pack comes from 1038lab, the same author behind ComfyUI-RMBG, the big background-removal suite. This one is the opposite of that: instead of heavy local models, it's pure remote calls.
What it does and how it works
Under the hood there's almost nothing to it. The node URL-encodes your prompt and fires a GET at text.pollinations.ai/{prompt}, passing your model, seed, and private flag as query params. The response body - the model's answer - comes back as plain text. That's it. No streaming, no chat history, no system prompt you can control. You get one turn, one answer.
The default model is openai, which maps to GPT-4o mini. The dropdown gives you nine options: openai, mistral, llamascout, openai-fast, openai-reasoning, phi, qwen-coder, bidara, and midijourney. Note that the README's model table lists way more than the node actually exposes - trust the dropdown, that list is aspirational. The hardcoded list also drifts from what the API supports over time, which is worth knowing when a model suddenly returns an error.
The inputs that matter
- prompt - your instruction. Multiline, so write freely.
- model - the one input you'll actually fiddle with.
openaifor general chat,qwen-coderwhen you're generating code,midijourneyif you somehow want musical notation. - seed - reproducibility. Same prompt + same seed gives you the same answer, most of the time.
- private (default on) - keeps your generation out of Pollinations' public feed. Leave it on unless you have a reason not to.
Output is a single generated_text string. Here's the beginner trap: this is not an output node. Nothing appears on screen unless you wire that string into a ShowText or SaveText node. Add one, or your "where's my text?" moment will last longer than the API call did.
Why you'd reach for it
The obvious workflow is prompt automation: TextGen writes prompt variations, you feed the generated_text straight into an image node's prompt input, and you've got an auto-ideation loop that costs nothing to run. It's also decent for translations, captions, and those "what should this workflow be trying to say" moments. Since the seed is right there, you can batch variations by nudging it.
Install
ComfyUI Manager (search "ComfyUI-Pollinations") handles it, or:
cd ComfyUI/custom_nodes
git clone https://github.com/1038lab/ComfyUI-Pollinations.git
cd ComfyUI-Pollinations
/ComfyUI/python_embeded/python -m pip install -r requirements.txt
Adjust the python path to your install. The only real dependency is requests - no model downloads, nothing heavy. Restart ComfyUI and you're done.
Common issues
- "Error: 5xx" in the output. The free API is a shared, no-keys service and it does wobble - slow responses and occasional outages are a known community complaint. Re-run; that's the fix.
- Same answer every time. TextGen has no
IS_CHANGED, so ComfyUI happily caches it on identical inputs. Bump the seed to force a fresh call. - Model errors. The dropdown is frozen at pack release; if a model starts erroring, the API likely dropped it. Switch to
openai, which is the most durable of the nine.
Want the free image side of the same service? That's the pack's other star, Image Gen 🖼️ (Pollinations).
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| model | COMBO | openai | 9 options: openai, mistral, llamascout, openai-fast, openai-reasoning, phi, +3 |
| seed | INT | 00–18446744073709550000 | — |
| privateopt | BOOLEAN | true | Keep the generation private |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| generated_text | STRING | — |