💀Prompts from Janus Pro
Turn any image back into a prompt, locally, free, with no API key
- image
- generated_prompts
The name is almost a trick: of everything in the 💀PromptsO pack, this is the one node that calls no API, needs no key, and doesn't send your image anywhere. It runs DeepSeek's Janus-Pro locally on your machine, looks at an image, and hands you back a prompt that describes it. If you've ever had a render you love and lost the prompt that made it, this is the fix - feed the image in, get a caption out, feed the caption back into a text encoder.
People actually use it exactly that way. The common workflow is prompt recovery for img2img: take a finished image, have Janus describe it in detail, and use that description to upscale or re-generate at higher fidelity instead of improvising a new prompt and hoping.
How it works
Janus-Pro is DeepSeek's unified multimodal model family (1B and 7B variants) that does "understanding" - you give it an image plus an instruction, it writes text about the image. The node loads it through the janus Python package plus transformers, so this is real local inference, not a thin wrapper around a cloud call.
The interesting engineering is the "dynamic model path detection" in the description. The node hunts for your Janus-Pro weights across ComfyUI's models directory, a scan of common installation paths on all your drives, and an optional COMFYUI_MODELS_PATH environment variable. It's looking for a specific layout: models/Janus-Pro/<variant>/ with a config.json, a weights file, and tokenizer files. If it finds an incomplete model it tells you exactly what's missing instead of failing silently.
Your image gets resized to max 1024px on the long side, formatted into Janus's conversation template (<image_placeholder> and all), and run in understanding mode. Out comes one STRING.
The inputs that matter
- model_variant -
Janus-Pro-1BorJanus-Pro-7B. Start with 1B. The 7B is roughly 16GB of weights and needs real VRAM; it writes richer captions but you pay for it in load time and memory. - system_prompt - the author's default is "Describe this image in detail, focusing on the visual elements, composition, and style." That's a decent starting point; tighten it toward tags if you're feeding an SDXL-lineage model, or keep it natural language if your target model has an LLM encoder (see the prompting split in the KB - what the caption is for changes what it should look like).
- image - any IMAGE from a Load Image node or a generation.
- max_tokens (default 768), temperature (default 0.6), seed - the usual knobs. Note that with seed > 0 the node caches its result, so bump the seed if you want a fresh look at the same image.
The single output, generated_prompts (STRING), wires into any prompt input - a CLIP Text Encode, another node's text field, or this pack's own 💀Prompts Replace for cleanup.
Installing it
The pack itself is a standard custom node:
# ComfyUI Manager: search "PromptsO" (or "S4MUEL"), install, restart.
cd ComfyUI/custom_nodes
git clone https://github.com/S4MUEL-404/ComfyUI-PromptsO.git
pip install -r ComfyUI-PromptsO/requirements.txt
Most of requirements.txt (torch, transformers, requests, pillow, numpy) is already in any working ComfyUI. The genuinely new dependency is janus, installed from DeepSeek's GitHub. The node will even try to pip-install it for you on first run - that takes a few minutes, so be patient.
The part that trips people up is the model download, which is manual:
git clone https://huggingface.co/deepseek-ai/Janus-Pro-1B
# put the folder at ComfyUI/models/Janus-Pro/Janus-Pro-1B/
The 1B is a few GB; the 7B is the ~16GB affair. Clone it before running the node - the "dynamic" path detection is clever, but it can only find a model that exists.
Common issues
- "Model not found" - the node's error message actually tells you where to put it and what the folder structure should be. Follow that, it's usually the download step being skipped.
- First run is slow - loading Janus-Pro into memory takes a while, especially the 7B. That's inference, not a hang.
- pip install fails on the janus dep - if ComfyUI runs in its own venv/portable env, make sure the package lands in that Python. Installing it into a system Python won't help.
One more thing worth knowing: everything here runs on your box, which is the whole point. No key to leak, no prompts leaving the machine, no per-call cost. That's rare in 2026, and it's the reason this is the node from this pack I'd actually reach for.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Input image for prompt generation | |
| model_variant | COMBO | Janus-Pro-1B | Choose Janus-Pro model variant |
| system_prompt | STRING | Describe this image in detail, focusing on the visual elements, composition, and style. | System prompt to guide the analysis |
| max_tokens | INT | 7681–4096 | Maximum tokens to generate |
| temperature | FLOAT | 0.60–2 | Sampling temperature for creativity |
| seed | INT | 00–18446744073709550000 | Random seed for reproducible results |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| generated_prompts | STRING | — |