# ComfyUI-RMAutomation A collection of workflow automation nodes for ComfyUI, designed to streamline AI image and video generation workflows. ## Installation ### Via ComfyUI Manager (Recommended) 1. Open ComfyUI Manager 2. Search for "RMAutomation" 3. Click Install ### Manual Installation ```bash cd ComfyUI/custom_nodes git clone https://github.com/yourusername/ComfyUI-RMAutomation ``` ## Nodes ### LoRA Nodes #### RM Power LoRA Loader A flexible node for loading multiple LoRAs with support for: - Dynamic number of LoRA inputs (add as many as you need) - Fixed or random strength per LoRA - Two ways to feed LoRAs in automatically, both optional: - **Styles Pipe** + `lora_source` (Image / Motion High / Motion Low) - reads the selected LoRA string straight out of an `RM_STYLES_PIPE` - **Style Import** - a raw LoRA string, for graphs with no pipe - If both are connected the pipe wins, as the more specific intent - Civitai AIR mode - download LoRAs by model ID > Previously two nodes, `RM Power LoRA Loader` and `RM Power LoRA Loader (Pipe)`, > merged 2026-08-24. The single node is a superset of both. The old > `RMPowerLoraLoaderPipe` key is still registered as an alias so existing workflows > load unchanged - it resolves to the same class and shows the same name. #### RM LoRA Collector Combines multiple LoRA stacks into one. Accepts both LORA_STACK inputs and lora strings. #### RM LoRA Apply Applies all LoRAs from a collected stack to the model and CLIP. ### Styles Nodes #### RM Styles Full Load prompts from a JSON styles file with multiple selection modes: - **Manual**: Use specific prompt number - **Random**: Random selection within range - **Increment**: Auto-increment after each generation - **Decrement**: Auto-decrement after each generation Features an **Edit Styles** button that opens a modal editor for managing your styles. #### RM Styles Full (Display) Same as RM Styles Full but displays the current prompt on the node. #### RM Styles Pipe / RM Styles Pipe Out Pack and unpack style data for easier workflow connections. ### Video Nodes #### RM Video Combine Combines images into video with: - Multiple format support (H.264, H.265, VP9, GIF, WebP) - Configurable output directory - Metadata embedding - Audio support - Ping-pong looping ### Utility Nodes #### RM Image Fallback Returns the first non-empty image from multiple inputs. Useful for conditional workflows. #### RM Mask Gate Validates masks and passes through only valid ones. Outputs None for invalid masks, preventing crashes in downstream nodes. #### RM Mask Gate (Guide) Same as Mask Gate but for guide inputs. Disables guides when masks are invalid. #### RM Set Latent Noise Mask Improved latent noise mask setter with proper error handling for edge cases. #### RM Positive/Negative Text Embed CLIP text encoding nodes that combine optional string inputs with text fields. ## Styles JSON Format The styles file (`data/styles.json`) uses this format: ```json { "styles": [ { "number": 1, "name": "Style Name", "positive": "positive prompt text", "negative": "negative prompt text", "motion": "motion prompt for video", "imageLoras": [ {"path": "lora_name.safetensors", "weight": 1.0} ], "motionLoras": [], "motionLorasHigh": [], "motionLorasLow": [] } ] } ``` ### Using a custom styles file The RM Styles nodes read `data/styles.json` by default. Point the `custom_json_path` widget at another file to override that. The path accepts: | Form | Example | |---|---| | Absolute | `C:\Users\you\Styles\styles.json` | | Quoted (Explorer "Copy as path") | `"C:\Users\you\Styles\styles.json"` | | Home-relative | `~/Styles/styles.json` | | Environment variable | `%USERPROFILE%\Styles\styles.json` | | Relative | `styles/mine.json` — resolved against the **ComfyUI root** | Leave it blank to use the bundled default. The Edit Styles button reads and writes whichever file the widget points at. ## Converting a styles CSV `tools/csv_to_styles.py` converts a styles CSV (the A1111 `styles.csv` shape, or the `Number,Name,Positive,Negative,Lora` shape) into the JSON format above. **Double-click `tools/Convert Styles CSV.cmd`** and it walks you through it: an Open dialog for the CSV, a Save As dialog for the JSON, then the summary stays on screen until you press Enter. You can also drag a CSV onto the launcher to preselect it. Use the `.cmd`, not the `.py` — editors like Cursor and VS Code claim the `.py` extension via the per-user `UserChoice` registry key, so double-clicking the script opens the editor instead of running it. (Note that `assoc .py` / `ftype` will still report `py.exe`; they read machine-level associations, which `UserChoice` overrides.) The dialogs need a Python install with tkinter. The `python_embeded` shipped with ComfyUI portable has none, so use the command line below if that's your only Python. ```bash # Same dialogs, from a terminal python tools/csv_to_styles.py # Or give the paths directly (no dialogs, no pause - good for scripting) python tools/csv_to_styles.py "ComfyUI/styles/StylesSFW.csv" "my_styles.json" ``` It repairs the things that otherwise make the node fail or silently drop styles: non-UTF-8 encodings, BOMs, nameless trailing columns, malformed lora tags (`