๐ฆ RS Load System Prompt
Stop retyping that 400-word brief into CLIP Text Encode
- system_prompt
- prompt
If you've been prompting anything from 2026 - Z-Image, Krea 2, Anima, ERNIE, any of the Qwen-encoder models - you already know the prompt stopped being a tag list and turned into a brief. Structured blocks, camera language, "state the constraint positively, the negative box is dead at CFG 1." And a good brief is five paragraphs you do not want to paste into a CLIP Text Encode box every time you start a new workflow.
RS Load System Prompt is the boring, useful answer: a folder of .txt files, a searchable dropdown, and a STRING output that feeds your encoder. A value node with a file browser bolted on - which is why it earns a slot.
What it actually does
Everything lives inside the pack's own directory. On load the Python side makes sure ComfyUI/custom_nodes/ComfyUI_RaykoStudio/system_prompts/ exists, then walks it collecting every .txt, subfolders included, as relative paths sorted alphabetically. The backend exposes that list on a route (/rs_system_prompt_dropdown/get_prompts) and the frontend draws it as an expandable tree with a search box, so System/edit_instruction.txt and System/video/ltx_shotlist.txt are two clicks apart instead of one long scroll.
The pick is stored in the workflow, not in the file. At execution the node joins your selection onto the system_prompts folder, checks the resolved path is still inside that folder, and reads the file as BOM-aware UTF-8. Hand it something that tries to climb out with ../ and it quietly returns an empty string rather than reading whatever you pointed it at.
There's also IS_CHANGED, which returns the file's mtime. That's the part people miss: edit my_brief.txt in Notepad, hit Queue, and the graph re-executes even though you touched nothing in ComfyUI. Cached runs would otherwise hand you the old prompt and you'd spend ten minutes wondering why your edits did nothing.
The inputs that matter
Two, and you only normally touch one.
prompt_file is a plain STRING holding the relative path inside system_prompts/. You rarely type it - click the LOAD SYSTEM PROMPT button, browse the tree, and the path lands in the widget. Its default is whatever sorts first in your folder, which matters more than it sounds (below).
prompt is a multiline text box. Per the author's own placeholder it's "additional prompt text (combined with system prompt)" - but read the code and the two things are not combined in the node. system_prompt outputs the file contents; prompt outputs that textarea verbatim. If you want them as one string, run both into a text-concat node. Not a bug - just worth knowing before you spend an evening debugging a prompt that's "missing" its second half.
Both outputs are STRING. system_prompt goes to your CLIP Text Encode, your RS Prompts node, or an LLM-node's system slot. prompt is there so one node can carry both the fixed brief and your per-run subject line. Fan it out if two encoders need the same brief: one authoritative source beats two copies you'll forget to sync.
Installing it
ComfyUI Manager, search RaykoStudio, install, restart. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/Raykosan/ComfyUI_RaykoStudio.git
The pack's requirements.txt is heavier than this node needs - torch, opencv-python, numpy, Pillow, freetype-py, pycairo, scipy. Cairo and freetype are for the label and text-overlay nodes; this one is stdlib plus aiohttp, which ComfyUI already ships. You install the lot anyway because it's one folder, but if pycairo is what fails on your machine, nothing here is broken.
Then drop your prompts in:
cd ComfyUI/custom_nodes/ComfyUI_RaykoStudio/system_prompts
cp ~/my_prompts/*.txt .
mkdir -p System && cp ~/my_prompts/edit/*.txt System/
Subfolders show up as expandable folders, and adding a .txt while ComfyUI is running is fine - the list re-scans every time the dropdown opens (๐ Refresh if it was already open).
Where people get burned
Files you drop in are untracked by git. A git pull or the update script leaves them alone, but a clean reinstall - delete the folder, clone fresh, or a Manager reinstall - takes your whole prompt library with it. Keep the originals somewhere else and copy them in. I know how that advice reads; you'll still lose them once.
Only .txt counts. A folder of .md files shows up completely empty, and people conclude the node is broken. Rename them.
A missing file fails silently. Point prompt_file at a file you deleted and the node returns "" for system_prompt with no error in the console. The encoder then gets an empty prompt, and the generation is technically fine and completely wrong.
Sharing workflows leaks a wrong prompt, not your prompt. When someone opens your graph, the frontend checks whether the saved path exists in their system_prompts/ folder. If it doesn't, it doesn't warn them - it silently falls back to their alphabetically first .txt. So your tuned ERNIE edit brief becomes their aaa_test.txt. Tell people which file they need, or paste the prompt in for anything you post publicly.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt_file | STRING | detailed_description.txt | โ |
| prompt | STRING | โ |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| system_prompt | STRING | โ |
| prompt | STRING | โ |