A modular auto-prompt + image-to-tags + prompt steering suite for Stable Diffusion WebUI ReForge.
Turn reference images into usable prompts fast, keep batches in-sync, and optionally do character swaps + term switches (ex: male β female) without your prompts breaking in ReForge batch / prompt-matrix.
It automatically generates and injects prompts into your workflow using images, so you spend less time writing prompts and more time generating.
- Grab an image β get a clean prompt (caption + tags) you can generate from
- Batch folders of reference images safely (no βwrong imageβ or repeated caption bugs)
- Character swap: use Image 2 to swap/replace character traits into Image 1βs scene
- Prompt steering (age / camera angle / time / lighting) for consistent sets
- Batch-safe by design (works with ReForge batch, prompt matrix, dynamic prompts)
- JoyCaption Ultra
- image captioning β SD-style prompt output
- optional rewrite rules + constraint enforcement
- optional post-switches (ex: term swaps)
- WD14 Tagger
- ONNX inference β danbooru-style tag payloads
- folder + Pixiv cache + single image sources
- fusion modes (combine / replace) for character swapping
- NovelAI CHAR Blocks (multi-character) π
- split each character's traits into NovelAI
CHAR:slots - YOLO per-person detection β reliable multi-character splitting from a single image
- one-click β Add CHAR Blocks to Prompt (no copy-paste); merges into your existing prompt
- NovelAI-V4 correct: spaces (not underscores), counts stay global, characters ordered leftβright
- split each character's traits into NovelAI
- QuickShot Prompt Director
- deterministic prompt steering for consistent sets
- age/time/view/camera/light controls
- Modules can run independently or together
For each prompt index in a batch:
- QuickShot modifies prompt text (no image needed)
- WD14 selects the correct image for that index
- WD14 tags inject into the prompt
- JoyCaption captions the same image (optional)
- Final prompt goes to the sampler
This prevents:
- repeated captions
- prompt/image desync in batch runs
- the βfirst image gets reusedβ batch bug
- Open Stable Diffusion WebUI ReForge
- Go to Extensions β Install from URL
- Paste: https://github.com/TdogCreations/ReForge-Prompt-Director
- Click Install
- Restart WebUI
Python deps: WD14 needs
onnxruntime+pandas, multi-character detection needsultralytics, and JoyCaption needstransformers(+bitsandbytesfor 4/8-bit). Arequirements.txtis included so ReForge installs the core ones automatically on first load.
This extension does not bundle large models. You install them manually.
WD EVA02 Large Tagger v3
- ONNX:
https://huggingface.co/SmilingWolf/wd-eva02-large-tagger-v3 - CSV:
https://huggingface.co/SmilingWolf/wd-eva02-large-tagger-v3
WD EVA02 Large Tagger v2
- ONNX:
https://huggingface.co/SmilingWolf/wd-eva02-large-tagger-v3 - CSV:
https://huggingface.co/SmilingWolf/wd-v1-4-vit-tagger-v2
stable-diffusion-webui-reForge/ ββ models/ ββ wd14/ ββ wd-eva02-large-tagger-v3.onnx ββ wd-eva02-large-tagger-v3.csv
β
llama-joycaption-beta-one
Hugging Face:
https://huggingface.co/fancyfeast/llama-joycaption-beta-one-hf-llava
You may need to be logged into Hugging Face to download.
Install here: stable-diffusion-webui-reForge/ ββ models/ ββ LLM/ ββ llama-joycaption-beta-one/ ββ config.json ββ generation_config.json ββ model.safetensors ββ tokenizer.json ββ tokenizer_config.json ββ special_tokens_map.json
Do not rename the folder.
Do not place it inside the extension folder.
- WebUI β Settings β WD14 Tagger
- Set:
- WD14 Model Path β
.onnx - WD14 Tags Path β
.csv
- WD14 Model Path β
- Apply settings β restart WebUI
- WebUI β Settings β JoyCaption
- Set JoyCaption Model Path to your local model folder
Example: C:\stable-diffusion-webui-reForge\models\LLM\llama-joycaption-beta-one - Apply settings β restart WebUI
These paths are stored in your WebUI config β not inside this repo.
| Mode | Typical VRAM |
|---|---|
| 4-bit (Fastest) | ~10β12 GB |
| 8-bit (Balanced) | ~17β18 GB |
| Full FP16 | ~24β25 GB |
Minimum recommended GPU: 11 GB VRAM (with Low VRAM mode)
Recommended: 16 GB+ VRAM for smoother multi-model workflows
- reduces cached memory usage
- avoids holding multiple large components
- unloads more aggressively after use
WD14 Tagger can download images directly from a Pixiv artwork URL and use them as the batch image source.
Pixiv requires a login session cookie called PHPSESSID.
This extension uses your PHPSESSID only to fetch the images you already have access to.
- Log into Pixiv in your browser.
- Open Pixiv and go to any page (ex: your bookmarks or an artwork page).
- Press F12 to open Developer Tools
- Go to the Application tab
(in some browsers it may be under Storage) - In the left sidebar, open:
- Cookies
- Select:
https://www.pixiv.net
- Find the cookie named: PHPSESSID
- Copy the Value (it will look like a long string such as
1234567_abcd...)
- WebUI β Settings β WD14 Tagger
- Paste into: Pixiv PHPSESSID
- Apply settings β restart WebUI
β
Your PHPSESSID is stored in your local WebUI settings (not this repo).
Paste a Pixiv artwork URL β download all pages β auto-inject tags (and optionally JoyCaption captions) into your prompts.
- Enable WD14 Tagger
- Open Batch Sources β Pixiv Gallery
- Turn ON Enable Pixiv
- Paste a Pixiv artwork URL, e.g.:
https://www.pixiv.net/en/artworks/123456789
- Click Download Images
- Choose your indexing mode:
- Increment = each prompt uses the next Pixiv page
- Random = random page per prompt
- Fixed = always use the same page
- Generate normally (batch, matrix, dynamic prompts supported)
To make JoyCaption analyze the same image that WD14 selected:
- Enable JoyCaption
- Enable Use WD14 batch image paths (if available)
Now you get:
- WD14 tags + JoyCaption captions both aligned per prompt index
This extension includes a basic safety throttle to reduce the chance of triggering Pixiv rate limits.
- Safety Delay slider adds a pause between image downloads.
- This helps avoid hammering Pixivβs servers with rapid-fire requests.
Pixiv can rate-limit or flag accounts that download too aggressively.
Avoid:
- Downloading hundreds of images in one go
- Repeated downloads of the same large gallery
- Running multiple download sessions at the same time
Recommended:
- Use Safety Delay = 2β5 seconds
- Download in smaller batches (ex: 10β30 images), then generate
- If downloads start failing, stop and wait before trying again
Your PHPSESSID is a login session cookie.
- Treat it like a password
- Never post it in screenshots
- Never commit WebUI config files to GitHub
Use it when you want image β prompt captions, or rewrite/constraint control.
- Enable JoyCaption in the JoyCaption UI
- Choose quantization (4-bit is fastest)
- Choose prompt style (SD Prompt / tag lists)
- Optional rewrite rules, required/banned constraints, and post-switches
Use it when you want image β tags injection.
- Choose image source:
- single ref image
- folder batch
- Pixiv cached images
- Choose prompt injection mode (append / prepend / replace)
- Optional: Fusion Mode
- Combine: add Image 2 tags
- Replace: replace character traits using Image 2
Use it for consistent sets.
- age group strength
- time of day weighting
- camera / viewpoint controls
- lighting direction weighting
- blur steering
QuickShot works even if WD14/JoyCaption are disabled.
Split a character's traits into NovelAI CHAR: blocks so each character gets their own prompt slot β instead of one flat tag soup. Scene/background tags stay in the global section above the blocks.
In WD14 Tagger β 𧬠NAI CHAR Blocks:
- β Add CHAR Blocks to Prompt β tags the loaded image and writes the CHAR blocks straight into your prompt box (no copy-paste). It merges into whatever you've already typed, preserving your existing
CHAR:slots. - π§ Build CHAR Blocks (to box) β fills an output box for review/copy instead.
- π Auto-detect characters (YOLO) β finds every person in Image 1, crops each, and tags them separately β
CHAR1= leftmost person,CHAR2= next, etc. (up to 6). This is the reliable way to separate multiple characters from one image.
It also runs automatically during generation: with Enable NovelAI CHAR blocks on, each detected person gets their own CHAR slot in the injected prompt.
Turn on the single π§ Enable NovelAI CHAR blocks toggle. JoyCaption produces a structured [GLOBAL] / [CHARx] caption that's parsed into CHAR: slots. If the model doesn't split cleanly, a built-in fallback pulls character-appearance tags into CHAR1 so you still get a block.
- Multi-character detection uses YOLO (the
ultralyticspackage). On first use it auto-downloadsyolov8n.pt(~6 MB). To use your own detector, set Settings β WD14 Tagger β YOLO model for multi-char detection (.ptpath). - CHAR-pipeline console logging is off by default; enable Settings β JoyCaption β Print CHAR-block debug to console if you need to troubleshoot.
Fully compatible with:
- ReForge batch execution
- prompt matrix
- dynamic prompts
- multi-image queues
Implementation detail:
- batch state is stored on the Script instance, not per-prompt, to survive ReForgeβs prompt/batch recreation behavior.
- No telemetry
- No analytics
- No uploads
- Pixiv PHPSESSID is stored only in WebUI settings
- No credentials are written into the repo
- WD14 does nothing β ONNX/CSV paths not set in Settings
- JoyCaption doesnβt load β model folder path is wrong or missing files
- Out of memory β enable Low VRAM / use 4-bit / reduce batch size
- Captions repeat β restart WebUI after installing models (first-time load)
ReForge Prompt Director is built and tested exclusively for Stable Diffusion WebUI ReForge (Classic).
GitHub: https://github.com/Haoming02/sd-webui-forge-classic
It is not guaranteed to function correctly on:
- Automatic1111 base WebUI
- Forge Next or other experimental forks
- ComfyUI or non-WebUI frontends
- ReForge Classic (latest)
- Python 3.10+
- CUDA 12.x
- Windows 10 / 11