2026-04-29 14:52:50 +03:00
2026-03-25 03:43:40 +03:00
2026-05-23 11:42:20 +03:00
2026-05-23 11:42:20 +03:00
2026-04-22 14:00:50 +03:00
2026-04-22 13:48:29 +03:00
2025-04-08 13:03:55 +03:00
2026-04-25 11:50:24 +03:00
2026-05-22 15:22:05 +03:00
2026-03-23 14:21:33 +03:00

🦊 ComfyUI_RaykoStudio

Set of custom nodes for ComfyUI providing additional image processing capabilities

Nodes do not require the installation of additional Python packages.
🖥️ Performance has been tested for:

  • ComfyUI 0.15 and above
  • Python 3.10 and above
  • Torch 2.8 and above
  • Cuda 12.4 and above

📃 Requirements

  • torch>=1.7.0
  • numpy>=1.19.0
  • Pillow>=8.0.0
  • freetype-py>=2.5.1 #only for the RS Text Overlay node

🛠 Installation

Set of nodes can be installed in several ways:

  • Clone repository to ComfyUI/custom_nodes/ folder:
git clone https://github.com/Raykosan/ComfyUI_RaykoStudio.git  
  • Copy ComfyUI_RaykoStudio folder to: ComfyUI/custom_nodes/
  • You can install this node using the ComfyUI_Manager


🦊 RS Outpaint

Interactive outpainting mask node with visual crop controls, preset management, and batch workflow support

Screenshot_2
Screenshot_1

🔥 Features

RS Outpaint is a custom ComfyUI node that turns mask/crop definition into an interactive, visual process. Instead of manually calculating coordinates or relying on static crops, you can drag, resize, and pan the crop region directly on the preview canvas.
The node pauses the queue until you confirm the settings, then outputs a ready-to-use control image, alpha mask, and precise dimensions. It also includes a batch preset system that remembers your crop settings and applies them automatically to subsequent images in a sequence.

❗ All changes in the node (setting the mask, creating and applying presets, replacing colors, etc. settings) are available only when it is on pause in generation - "foolproof"

  • Visual Mask Editor — Drag, resize, and position the crop area directly on the image preview
  • Pause & Approve — Workflow pauses after first execution, waiting for your confirmation
  • Batch Mode – Apply saved presets automatically to the next images in a queue. Auto-resets when the queue finishes
  • Preset System – Save, load, rename, and delete presets crop configurations.
  • Grid Snapping — All dimensions snap to 16px grid for clean, model-friendly outputs
  • Aspect Ratio Lock — Switching 🔒🔓 between maintaining crop proportions and freely choosing the mask size
  • Quick Presets — One-click aspect ratios: 16:9, 9:16, 21:9, 4:3, 1:1, and more
  • Smart Snapping — Align crop to center, edges, or fit source dimensions
  • Real-time UI – Zoom (scroll), pan (middle-drag), instant dimension readouts, and padding indicators
  • Color Mask and Background — Selecting the color for the mask and background when using the mask_image output
  • Padding Indicators — Visual labels show generated padding areas (▲▼◀▶)
  • Keyboard Shortcuts — Arrow keys to nudge crop box (Shift for 4× step)
  • Heartbeat — mechanism to prevent freezes
  • Instant reset — reset of the state after each generation

🪛 Usage

❗ The ⚙️ BATCH, ✔️ ACCEPT, and ❌ CANCEL buttons appear only after the generation is started.

Single mode
Add the node to your workflow and connect an IMAGE input.
Start the generation with the RUN button. After reaching the node, the generation will pause.
Adjust the crop area using the markers.
You can create or apply a previously created preset of settings.
Click ✔️ ACCEPT to send the configuration to the backend.
Use the outputs in your downstream nodes (ControlNet, mask blending, etc.).
If you are not satisfied with something, you can click ❌ CANCEL to interrupt the generation process.

Batch mode
Add the node to your workflow and connect an IMAGE input.
Select the number of passes in the generation queue.
Start the generation with the RUN button. After reaching the node, the generation will pause.
Adjust the crop area using the markers.
You can create or apply a previously created preset of settings.
Click the ⚙️ BATCH, it should turn green.
Click ✔️ ACCEPT to send the configuration to the backend.
Use the outputs in your downstream nodes (ControlNet, mask blending, etc.).
If you are not satisfied with something, you can click ❌ CANCEL to interrupt the generation process.

📁 Preset Storage
Presets are stored as JSON files in the presets folder within the node's directory:
ComfyUI/custom_nodes/ComfyUI_RaykoStudio/presets/
The folder is created automatically the first time you save the preset.

✅ Update v0.16.3

The logic of the RS Outpaint node interface has been changed.

  1. The default borders of the mask frame are strictly along the borders of the incoming image
  2. All node buttons are inactive until the process queue reaches the node and is paused. The buttons become inactive immediately after the generation continues or is canceled.
  3. All snapping presets (aspect ratio) now work without crop and without resizing the output resolution. The frame is closely adjacent to two opposite sides or to one of the sides of the image (why one? since the mask works on a 16px grid, small margins of the mask are possible, which are visually visible. This is done so that the output always results in an image with side sizes that are multiples of 16. These errors will still be masked.)
  4. By default, the Lock/Unlock aspect ratio button is unlocked (🔓) and you can immediately start working with the mask frame without saving the aspect ratio.
  5. When you press any snap preset button, the Lock/Unlock button is automatically locked (🔒) and all further actions with the mask frame will be performed while maintaining the selected aspect ratio until you unlock the button again.

💡Tip: For precise positioning, use the arrow keys on your keyboard (hold Shift to move faster)

↔️ Inputs and Outputs:

Input :
image - Source image for outpainting

Output :
control_image - Image with masked area (gray padding where generation will occur)
control_mask - Binary mask: 0 = keep original (black), 1 = generate new content (white)
mask_image - Makes an image from a mask
width - Final output width (after optional resize)
height - Final output height (after optional resize)



🦊 RS Load Image (former name RS Spline Mask)

Node for load image and creating a spline mask

RS Load Image1

🔥 Features

The node has the functionality of the native Load Image node, but instead of the native mask editor, a built-in spline editor is used. More accurate selection based on the principle of the Lasso tool from Photoshop.

🪛 Usage

The node is ready for use immediately after it is added. Images are added using the "🎨 IMAGE" (images from the input folder) and "🖼️ UPLOAD IMAGE" (images from any folder on your PC) buttons. You can scale the node to a convenient size to more accurately place the points of the spline. Incorrectly positioned points can be deleted by right-clicking on them. To remove all points from the preview area, click the "🔴 CLEAR POINTS" button.

↔️ Inputs and Outputs:

The IMAGE output returns the original image unchanged. The MASK output returns a black and white mask where the white area corresponds to the drawn polygon.



🦊 RS Intermediate Spline Mask

An interactive node for creating intermediate spline masks

Screenshot_6

🔥 Features

Node allows you to pause the workflow at the image processing stage, manually select the desired area and continue generation without completely restarting the process. More accurate selection based on the principle of the Lasso tool from Photoshop.

🪛 Usage

When this node is reached, pipeline execution is automatically suspended. A preview of the input image is displayed in the node's interface. The user can left-click to add polygon points and right-click or Ctrl-click to delete the last points.
The "✔️ ACCEPT" button confirms the created mask, after which the node completes processing and transmits the data further according to the scheme. The "🔴 CLEAR POINTS" button clears all the drawn points for redrawing. It is important that after using this button, you do not need to press the Prompt Queue again, just draw a new mask and press "✔️ ACCEPT". The "❌ CANCEL" button completely interrupts the process and resets the node status.

↔️ Inputs and Outputs:

The IMAGE input accepts an image from any previous node. The IMAGE output returns the original image unchanged. The MASK output returns a black and white mask where the white area corresponds to the drawn polygon.



🦊 RS Image Selector

Node for Interactive Batch Image Selection

Screenshot_2

🔥 Features

  • Interactive Grid View - Display all batch images in a responsive grid layout
  • Multi-Select Support - Click to select/deselect individual images
  • Smart Auto-Resize - Node automatically adjusts size based on image count
  • Heartbeat System - Robust connection monitoring between frontend and backend
  • Auto-Cleanup - Proper resource cleanup on node removal or workflow close

🪛 Usage

Buttons
➕ SELECT ALL - Select all images in batch
⭕ DESELECT ALL - Clear all selections
✔️ ACCEPT - Confirm selection and continue
❌ CANCEL - Cancel and interrupt generation

Continue Workflow
Click "✔️ ACCEPT" to pass selected images to next nodes. Only selected images will be processed downstream

⚠️ Reminder

The generation process will pause indefinitely until you click "✔️ ACCEPT", "❌ CANCEL" or close the workflow or the ComfyUI page.



🦊 RS Image to Latent

A powerful and user-friendly ComfyUI node that converts images to latents with intelligent size optimization.

1

🔥 Features

  • Multiple sizing modes - Auto, Preset, Custom, or Megapixels
  • VAE-aware - Automatically detects divisibility requirements
  • Batch processing - Create multiple identical latents at once
  • Smart upscaling - Choose from multiple upscale methods
  • Clean interface - No technical clutter, just what you need

🪛 Usage

Resolution control - Ensure consistent sizes across your workflow
VRAM optimization - Use megapixels mode to stay within limits
Auto mode - Preserves original proportions
Batch generation - Create multiple variations from one image

🎯 Modes Explained

Auto
Preserves original image size and only rounds to meet VAE divisibility requirements. No unexpected upscaling.

Preset
Choose from 50+ common resolutions including:

  • Square: 512×512 to 1920×1920
  • Portrait: 3:2, 3:4, 9:16 and more
  • Landscape: 4:3, 16:9, 21:9 and more

Custom
Manually enter width and height (must be multiples of 8).

Megapixels
Set target megapixels with specific aspect ratio. Perfect for controlling VRAM usage.

🔧 Rounding Modes

  • auto - Picks the nearest valid size (recommended)
  • shrink - Only reduces size, never increases
  • expand - Only increases size, never reduces

↔️ Input and output:

Input:
image - Input image to convert to latent
vae - VAE model for encoding (auto-detects divisibility)

Output:
latent - The encoded latent tensor
width_px - Final width in pixels
height_px - Final height in pixels
width_latent - Latent width (width/8)
height_latent - Latent height (height/8)



🦊 RS Crop Image and 🦊 RS Insert Crop

An interactive node for selecting and cropping images in ComfyUI with a pause in the process. With further insertion of the cut fragment after its modification back into the original image.

Screenshot_1 Screenshot_2

🔥 Features

🦊 RS Crop Image is an interactive node for ComfyUI that allows you to select a rectangular area in an image using drag-and-drop before continuing workflow.
Unlike standard crop nodes, this node suspends the process and waits for user confirmation, which gives full control over the cropping area.

  • Drag-and-Drop - Selecting an area with the mouse directly in the interface
  • Resizing - Stretching the frame by the corners
  • Moving - Dragging the selected area
  • Process pause - Workflow waits for confirmation before continuing
  • Visualization - Real-time area size display
  • Crop Data - Output of exact cutout parameters

🦊 RS Insert Crop is a node that allows you to seamlessly insert a previously cut fragment back into the original image after it has been modified by the workflow nodes.

  • Crop Data - Inserting a fragment into the original image using the previously obtained precise cutout parameters.

🪛 Usage

🦊 RS Crop Image
Connect any image to the IMAGE input. Select an area:

  • LMB + Drag - Create a new selection area
  • Drag inside the frame - Move the area
  • Drag around the corners - Change the size of the area
    Click the button:
    ✔️ ACCEPT - Confirm the allocation and continue workflow
    🔄 RESET - Reset the selection and select again
    ❌ CANCEL - Cancel and interrupt generation

🦊 RS Insert Crop
Connect the original image to the Original Image input.
Connect the embedded and modified fragment to the Cropped Image input.
Connect the node with the text Crop Data.

⚠️ Reminder

The generation process will be suspended indefinitely until you click "✔️ ACCEPT", "❌ CANCEL" or close the workflow or the ComfyUI page.



🦊 RS Styles Loader

Node for uploading and managing styles from CSV files

Screenshot_1

🔥 Features

  • Download CSV files - Upload your files with styles directly through the interface
  • Tree structure - Styles are organized by folders (categories)
  • Visual selection - User-friendly interface with drop-down lists
  • Bypass styles - Turn styles on/off without deleting them from the list
  • Combining - Multiple styles are combined into one prompt
  • Save to workflow - All settings are saved along with the project

🪛 Usage

Buttons
SELECT CSV FILE - Select the desired CSV file from the list of files that you have already uploaded earlier.
📂 UPLOAD NEW CSV FILE - Download a new CSV file from anywhere on your PC. It will automatically appear in the styles folder and in the future you will be able to select it with the "SELECT CSV FILE" button.
➕ ADD STYLE - Choosing the styles you need
🟢 - Bypass on/off. You can choose an infinite number of styles and change them to create the combination you need.
❌ - Removing a style from the panel

🎨 Styles

You can use your own styles or find them in the ComfyUI community
For example:
https://github.com/vaulthunt3r/ComfyUI-Style-Prompts-Collection
https://github.com/Art-xmaster/comfyui-AGSoft/tree/main/styles

⚠️ Notes

The styles folder is created automatically at the first startup.
When deleting a node from workflow, the uploaded CSV files are not deleted.
To update the list of files after adding CSV manually, restart ComfyUI.



🦊 RS Last Frame

A lightweight ComfyUI node that extracts the last frame from any video input.

Screenshot_5

🔥 Features

  • Universal Input Support — Accepts native VideoFromFile objects (ComfyUI's built-in video loader), standard IMAGE tensors (VHS, Image Batch), and dictionary formats
  • Zero Dependencies — Works out-of-the-box without requiring Video Helper Suite or other external libraries
  • Automatic Format Detection — Intelligently handles different tensor dimensions [F, H, W, C], [B, F, H, W, C], or channel-first formats
  • Memory Efficient — Extracts frames without unnecessary copying or conversion

🪛 Usage

If video has only 1 frame, that frame is returned unchanged
Automatically handles batched inputs by taking the first batch element
Channel permutation applied automatically if decoder outputs [F, C, H, W]
Compatible with ComfyUI v1.0+ and all major video loading extensions

↔️ Input and output:

Input: video_frames (* — Universal)
Accepts:

  • IMAGE tensor from VHS loaders, Image Batch, or standard image nodes
  • VideoFromFile object from ComfyUI's native Load Video node
  • Dictionary with frames, images, or video keys

Output: IMAGE (torch.Tensor)
Single frame tensor with shape [1, H, W, C] — ready for VAE encoding, preview, or any image processing node.



🦊 RS Models Loader

A powerful all-in-one model loader node for ComfyUI that combines UNET, CLIP (with optional dual CLIP support), VAE, and LoRA loading into a single interface.

Screenshot_1

🔥 Features

  • Unified Loading - Load UNET, CLIP, VAE, and multiple LoRAs in one node
  • Dual CLIP Support - Toggle between single CLIP mode (CLIPLoader) and dual CLIP mode (DualCLIPLoader) for models like Flux, SD3, Hunyuan DiT, and PixArt
  • LoRA Management - Add, enable/disable, and adjust strengths for multiple LoRAs with an intuitive visual interface
  • Persistent Storage - LoRA configurations are saved per node and persist across sessions
  • Folder Structure - Browse LoRAs with folder tree navigation
  • Search Functionality - Quickly find LoRAs by name

📃 Notes

  • When dual CLIP mode is disabled, clip_name2 is visible but disabled (grayed out)
  • The node automatically falls back to single CLIP mode if clip_name2 is empty
  • LoRA strengths can be set independently for model and CLIP
  • All settings are saved with your workflow and persist across ComfyUI sessions


🦊 RS Prompts

Node that provides enhanced prompt management with visual controls, pause-for-edit mode, and external input toggling

Screenshot_1

🔥 Features

  • Dual prompt sources - Use internal textarea or external text input
  • External input toggle - Enable/disable external text input with one click
  • Pause-for-edit mode - Interrupt generation, edit prompts, and continue
  • Visual status indicator - Shows current prompt source and mode
  • Prompt presets - Save, load, and delete prompt templates
  • Clean interface - Minimal design that blends with ComfyUI

↔️ Input and output:

Inputs

Name Type Description
clip CLIP CLIP model for encoding
text_input STRING (optional) External prompt source

Outputs

Name Type Description
POSITIVE CONDITIONING Encoded positive prompt
NEGATIVE CONDITIONING Encoded negative prompt (empty)
PROMPT_STRING STRING Final prompt text

🪛 Usage

Prompt Sources

  • Local prompt: Uses text from the internal textarea
  • External input: Uses text from connected text_input node

The 🔘 Disable text input toggle lets you temporarily ignore external input without disconnecting cables.

Pause Mode

  1. Enable ⏸️ Pause for edit
  2. When external data arrives, the node pauses and shows an overlay
  3. Edit the prompt as needed
  4. Click APPROVE (use edited) or REJECT (use original)
  5. Generation continues with your choice

The pause toggle stays enabled after approval, automatically pausing on next external data.

Usage Examples

Local Prompt Only

  • Leave text_input disconnected
  • Or connect but enable 🔘 Disable text input
  • Write prompts directly in textarea

External Prompt Source

  • Connect a text node to text_input
  • Disable 🔘 Disable text input
  • Enable ⏸️ Pause for edit for manual review

Prompt Presets

  1. Write your prompt
  2. Click 💾 Save prompt and enter a name
  3. Later click 📂 Select prompt to load
  4. Delete presets via ❌ button in the list

🖥️ Node Interface

Control Description
🔘 Disable text input Toggle external input on/off (🔴 when disabled)
⏸️ Pause for edit Enable edit mode (activates when external data arrives)
Status indicator Shows: 📝 Local prompt / 🔌 External input / ⏸️ WAITING FOR EDIT
Text area Main prompt editor
❌ Clear prompt Clear the text area
💾 Save prompt Save current prompt as preset
📂 Select prompt Load saved prompt preset
✔️ APPROVE & CONTINUE Accept edited prompt and continue
❌ REJECT Keep original prompt and continue

📂 Prompts Storage

Prompts are stored as JSON files in the prompts folder within the node's directory:
ComfyUI/custom_nodes/ComfyUI_RaykoStudio/prompts/
The folder is created automatically the first time you save the prompt.

🐛 Known Issues & Solutions

Text not saving - Check write permissions for prompts folder
Pause mode not working - Ensure toggle is ON before starting generation



🦊 RS Text Overlay

Node allows you to overlay text on images using masks
The node is in the process of feature improvements, but the stated functionality is already working

Screenshot_6

🔥 Features

  • Automatic font size selection — the text always fits perfectly into the mask area
  • Text rotation by mask — the text is automatically aligned to the angle of the mask
  • Multiline text support — automatic line splitting
  • Vertical and horizontal text orientation - you write vertical text by typing one letter in each line
  • Adjusting the letter and line spacing
  • Text outline — customizable thickness and color
  • Shadow — adjustable displacement, blurring and transparency
  • Glow — adjustable color, size, area and brightness
  • Color — HEX format support (#RRGGBB or #RRGGBBAA)
  • Text transparency — independent of stroke and shadow
  • Supersampling — rendering text in increased resolution followed by compression for perfect smoothing
  • Edge Smoothing — additional smoothing of text edges
  • High-quality interpolation - Lanczos filter when zooming
  • Caching — fonts, colors, sizes, and rendered layers
  • LRU cache — automatic memory management
  • Optimized outline rendering — 8-direction algorithms

🔤 Installing Fonts

Place the font files in the fonts folder (.ttf, .otf, .ttc)
Restart ComfyUI

🪛 Usage

Parameter Description Range
TEXT Text to display (supports multiline)
FONT List of available fonts
TEXT COLOR Color text in HEX format #000000 - #FFFFFF
OUTLINE THICK Outline thickness 0 - 50
OUTLINE COLOR Outline color in HEX format #000000 - #FFFFFF
ROTATE WITH MASK Rotate text by the angle of mask ON/OFF
TEXT OPACITY Text transparency 0.0 - 1.0
LINE SPACING Line spacing 0.5 - 3.0
LETTER SPACING Letter spacing -20 - +100
ENABLE GLOW Enable glow ON/OFF
GLOW COLOR Color glow in HEX format #000000 - #FFFFFF
GLOW SIZE Glow size -500 - +500
GLOW SPREAD Area of the glow 0 - 500
GLOW BRIGHTNESS Brightness of the glow 0.0 - 1.0
ENABLE SHADOW Enable shadow ON/OFF
SHADOW COLOR Shadow color in HEX format #000000 - #FFFFFF
SHADOW OFFSET X/Y Shifting the shadow -500 - +500
SHADOW BLUR Blurring the shadow 0.0 - 1.0
SHADOW BRIGHTNESS Brightness of the shadow 0.0 - 1.0
SUPERSAMPLING Enable supersampling ON/OFF
SUPERSAMPLE FACTOR Magnification factor 2 - 4
EDGE SMOOTHING Smoothing the edges ON/OFF


🦊 RS Color Picker

A node for selecting a color and displaying its HEX parameters

Screenshot_3

🪛 Usage

Click on the color window, select the color with the cursor on the palette, or click the pipette icon and select a color anywhere on the monitor.
A HEX of this color will appear in the text field, which you can copy to the clipboard.



🦊 RS Saturation

Professional image saturation control with artifact and highlight protection.

134

🔥 Features

  • Smooth adjustment with 0.05 steps
  • Smart boosting without overexposure
  • Artifact protection even at extreme values
  • Batch processing optimized

🪛 Usage

RS Safe Saturation

Range Processing Type Use Case
0.0-0.9 Toning/desaturation Gradual color removal
1.0-1.3 Natural enhancement Recommended range
1.3-2.0 Vibrant artistic effects Stylization
2.0-3.0 Maximum saturation Cinematic effects

⚙️ Technical Details

Algorithm workflow:
Luminance space conversion
Non-linear adjustment:
Values <1.0: Linear interpolation
Values >1.0: Adaptive S-curve
Auto highlight recovery



🦊 RS Save Image

Node for adding explanatory text to an image

Screenshot_7

🔥 Features

The node is used to save the image while preserving the workflow inside the image. You can add explanatory text to an image with a choice of background size, theme, font and its size. It is possible to add your own fonts (to the fonts folder). Use ttf and otf fonts.
If the label is not needed, leave the text field blank and the image is saved as usual.
Themes:
light - white background, black text.
dark - black background, white text.



🦊 RS Save Image Pair

The node is used to save the original and final images in a single image, while maintaining the workflow within the image

Screenshot_1

🔥 Features

The node is used to save the source and final images in a single image while maintaining the workflow within the image. You can add explanatory text to any image with a choice of background size, theme, font and size font. A reverse upscale from 1 to 0 is provided to reduce the saved image (if it is used as a sketch with a workflow inside).
It is possible to add your own fonts (to the fonts folder). Use ttf and otf fonts.
If the label is not needed, leave the text field blank and the image is saved as usual.
The node is convenient for visual understanding of the workflow contained in the image.

🪛 Usage

It is better to choose horizontal saving for portraits, and vertical saving for landscapes.
Themes:
light - white background, black text.
dark - black background, white text.



🦊 RS Image-Text

Node embeds any hidden text into the image that can be used later

RS Image-Text

🔥 Features

The node writes any hidden text to any png and jpeg file (jpeg is converted to png). And outputs text from images recorded in this way. You can use it instead of a Load Image (without a mask) and transfer the recorded text to the promt node. It is useful if there is an image and a prompt to it, but the image does not contain a workflow (often found on the site civitai.com).

🪛 Usage

Two modes:
Write - writes text to the uploaded image and saves it to the output folder with the prefix you specified.
Read - reads the text you wrote earlier in the uploaded image, sends the text and images further according to the scheme.

Link to the video: https://youtu.be/1s26hUcVXX4



🦊 RS Loop Switch

A combined node for generating a sequence of values with automatic switching

Screenshot_1

🔥 Features

The node generates a list of INT values, automatically switching between 10 preset values based on the current cycle step. It is ideal for generating a series of images with different seeds without the need to manually change the parameters. But you can use it for any other tasks where dynamic INT changes are required.

🔌 Connection (examples)

  • RS Loop Switch (output) → KSampler (seed)
  • RS Loop Switch (output) → KSampler (steps)
  • RS Loop Switch (output) → any INT input


🤝 Bug Reporting

If you encounter an issue or find a bug:

Check Issues section on GitHub, maybe problem is already known.
If new problem, create new Issue describing:

  • ComfyUI and Python versions
  • Problem description and reproduction steps
  • Screenshots or error logs (if available)

📜 License

MIT License. Use node at your own risk without any warranties.


❤️ Acknowledgments

Thanks to ComfyUI community for inspiration and support.
Special thanks to FotoSHAMAN for his fantastic ideas!
If you like this node, don't forget to star on GitHub!

S
Description
No description provided
Readme Apache-2.0
26 MiB
Languages
JavaScript 77.2%
Python 22.8%