ApoStudio System Prompt
Your LLM's job description, saved as a file — personas you never have to retype
- system_prompt
A system prompt is how you tell the LLM what its job is before it answers. ApoStudio System Prompt is the boring-but-useful way to stop typing that job description into the Chat node every single time: it's a dropdown over the .txt, .md, and .json files in the pack's prompts/system/ folder, and it outputs the file's contents as a string.
Why you'd want it. The most common job for an LLM in a ComfyUI graph is prompt enhancement - taking a rough idea and turning it into a detailed, structured diffusion prompt. That job needs a good system prompt ("expand this into a detailed prompt with lighting, camera, subject…") and you do not want to retype that every run. The pack ships three ready-made personas that cover the actual use cases:
assistant.txt- a general-purpose helpful assistantvision_captioner.txt- detailed image analysis for captioning/description jobsprompt_enhancer.txt- expands rough ideas into full diffusion prompts
How it works. Identical machinery to its User Prompt sibling: reads the folder, rebuilds the dropdown each run so new files appear without a restart, and for .json files extracts the first matching key (prompt, system_prompt, content, text, message), falling back to the raw JSON. One input (file), one output (system_prompt, a STRING). Wire it to the Chat node's system_prompt_in - a connected input overrides the typed box.
Install. Same pack story as the rest of ApoStudio - ComfyUI Manager (search "ApoStudio") or:
cd ComfyUI/custom_nodes
git clone https://github.com/apoloniart/ApoStudio
pip install -r custom_nodes/ApoStudio/requirements.txt
Just requests and Pillow, no models to download. Restart and it's under the ApoStudio category.
Gotchas. Your files go in ComfyUI/custom_nodes/ApoStudio/prompts/system/ - the pack's folder, not ComfyUI's input/. A (no files found) dropdown means you looked in the wrong place. And remember the system prompt is sent with every turn of a multi-turn conversation - if you edit prompt_enhancer.txt, the change takes effect on the next run, which makes iterating on a persona genuinely pleasant: edit the file, rerun, done.
One honest note: writing a good system prompt matters more than the node does. prompt_enhancer.txt is a fine start, but treat it as a template - tune the wording for the model you're actually running, since a chat model's conversational habits (preamble, "here is your enhanced prompt" boilerplate) can leak into your conditioning if the instructions don't forbid it. This node is just the delivery mechanism; the prompt is the payload.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| file | COMBO | 3 options: assistant.txt, prompt_enhancer.txt, vision_captioner.txt |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| system_prompt | STRING | — |