IF Prompt Maker🎨
The original SD prompt-maker node — the one that started the IF_AI pack
- images
- mask
- Omni
- question
- response
- negative
- omni
- generated_images
- mask
IF Prompt Maker is the node that put the IF_AI pack on the map. Back in spring 2024, the author (Impact Frames) released it alongside a custom-trained llama3_ifai_sd_prompt_mkr_q4km Ollama model, and r/comfyui took notice - the announcement post pulled over a hundred upvotes. The pitch was simple and it still holds: give it an image, it returns a detailed, Stable Diffusion-flavored prompt you can drop straight into a sampler.
In the current build it's effectively the same node as IF Image to Prompt - identical input schema, same outputs. The difference is mostly historical: this is the original that the pack grew around, and the name tells you what it was built for. If you're wondering which to grab, there's no wrong choice; they're twins in this codebase.
How it works
The mechanism is a vision-LLM prompt-reversal pipeline. Your images get encoded for the provider, sent with a system prompt chosen from profiles (the dropdown reads JSON from the pack's IF_AI/presets folder - IF_PromptMKR, IF_PromptMKR_multy, IF_Omost, and more, all editable), and the model returns a prompt in response. Then the preset stacks glue on: embellish_prompt (29 options), style_prompt (63), and neg_prompt (24) modify and extend the raw output, and negative comes out as its own output for the negative conditioning side.
The strategy input mirrors the pack: normal describes the image; omost produces Omost-style canvas conditioning via the omost_tool; create/edit/variations kick off image generation through the OpenAI-compatible API. batch_count controls how many images that generates.
The inputs that matter
images- the reference image. The whole job.llm_provider/llm_model-ollamaplus a vision model (the author's ownimpactframes/llama3_ifai_sd_prompt_mkr_q4kmandimpactframes/ifai_promptmkr_dolphin_phi3are designed for this) or any cloud provider with a key.user_prompt- extra direction, like "focus on the lighting."profiles- which prompt-writing persona does the work.
Outputs: question, response (wire into CLIP Text Encode), negative, omni (omost payload), generated_images, mask.
Installation
ComfyUI Manager, search "IF_AI_tools", or:
cd ComfyUI/custom_nodes
git clone https://github.com/if-ai/ComfyUI-IF_AI_tools.git
Then install requirements and pull the prompt-maker model if you want the author's tuned behavior:
pip install -r requirements.txt
ollama run impactframes/llama3_ifai_sd_prompt_mkr_q4km:latest
Gotchas
Two things to know. First, a fair chunk of the community argued the tuned model was trained on old Lexica keyword dumps - "4k uhd" era SD1.4 mush - and that plain llama3 gets you most of the way. Try both; your taste is the tiebreaker. Second, the pack is archived and prompt generation is moving to the ComfyUI-IF_AI_PromptImaGen repo, which explicitly requires disabling this pack first. If you're setting up fresh in 2026, that successor is the forward-looking option - but IF Prompt Maker still works, and for a lot of people it's still the one they reach for.
Inputs (30)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| llm_provider | COMBO | 12 options: xai, llamacpp, ollama, kobold, lmstudio, textgen, +6 | |
| llm_model | COMBO | 0 options: | |
| base_ip | STRING | localhost | — |
| port | STRING | 11434 | — |
| user_prompt | STRING | — | |
| strategyopt | COMBO | normal | 5 options: normal, omost, create, edit, variations |
| maskopt | MASK | — | |
| prime_directivesopt | STRING | The system prompt for the LLM. | |
| profilesopt | COMBO | None | The pre-defined system_prompt from the json profile file on the presets folder you can edit or make your own will be listed here. |
| embellish_promptopt | COMBO | The pre-defined embellishment from the json embellishments file on the presets folder you can edit or make your own will be listed here. | |
| style_promptopt | COMBO | The pre-defined style from the json style_prompts file on the presets folder you can edit or make your own will be listed here. | |
| neg_promptopt | COMBO | The pre-defined negative prompt from the json neg_prompts file on the presets folder you can edit or make your own will be listed here. | |
| stop_stringopt | COMBO | Specifies a string at which text generation should stop. | |
| max_tokensopt | INT | 20481–8192 | Maximum number of tokens to generate in the response. |
| randomopt | BOOLEAN | false | Toggles between using a fixed seed or temperature-based randomness. |
| seedopt | INT | 0 | Random seed for reproducible outputs. |
| temperatureopt | FLOAT | 0.700–1 | Controls randomness in output generation. Higher values increase creativity but may reduce coherence. |
| top_kopt | INT | 40 | Limits the next token selection to the K most likely tokens. |
| top_popt | FLOAT | 0.90 | Cumulative probability cutoff for token selection. |
| repeat_penaltyopt | FLOAT | 1.10 | Penalizes repetition in generated text. |
| keep_aliveopt | BOOLEAN | false | Determines whether to keep the model loaded in memory between calls. |
| clear_historyopt | BOOLEAN | false | Determines whether to clear the history between calls. |
| history_stepsopt | INT | 10 | Number of steps to keep in history. |
| aspect_ratioopt | COMBO | 1:1 | Aspect ratio for the generated images. |
| batch_countopt | INT | 4 | Number of images to generate. only for create, edit and variations strategies. |
| external_api_keyopt | STRING | If this is not empty, it will be used instead of the API key from the .env file. Make sure it is empty to use the .env file. | |
| precisionopt | COMBO | Select preccision on Transformer models. | |
| attentionopt | COMBO | Select attention mechanism on Transformer models. | |
| Omniopt | OMNI | Additional input for the selected tool. |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| question | STRING | — |
| response | STRING | — |
| negative | STRING | — |
| omni | OMNI | — |
| generated_images | IMAGE | — |
| mask | MASK | — |