Files
2026-08-24 13:49:00 -04:00

185 lines
6.3 KiB
Markdown

# 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
(`<lora:X:1)`, space-separated tags, `.8`-style weights), non-breaking spaces,
control characters and embedded newlines, doubled commas, and blank, duplicate,
zero or negative style numbers. It prints a summary of every repair, then re-reads
the file the way the node does and reports how many styles will actually load.
Useful flags: `--dry-run` (report without writing), `--start-number N` (first number
used when renumbering), `--encoding` (force a source encoding).
## Custom Video Formats
Add custom video formats by placing JSON files in the `video_formats` directory. Example format:
```json
{
"extension": "mp4",
"main_pass": ["-c:v", "libx264", "-preset", "medium", "-crf", "19", "-pix_fmt", "yuv420p"],
"audio_pass": ["-c:a", "aac", "-b:a", "192k"],
"save_metadata": "True",
"dim_alignment": 2
}
```
## License
MIT License - Do whatever you want with this code.
## Credits
- Video combine functionality based on [ComfyUI-VideoHelperSuite](https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite)
- Power LoRA loader concept inspired by [rgthree-comfy](https://github.com/rgthree/rgthree-comfy)