Add extra prompts, endless generation, random character default, and small fixes

- Add extra positive/negative prompt textareas to all 9 detail pages with session persistence
- Add Endless generation button to all detail pages (continuous preview generation until stopped)
- Default character selector to "Random Character" on all secondary detail pages
- Fix queue clear endpoint (remove spurious auth check)
- Refactor app.py into routes/ and services/ modules
- Update CLAUDE.md with new architecture documentation
- Various data file updates and cleanup

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Aodhan Collins
2026-03-13 02:07:16 +00:00
parent 1b8a798c31
commit 5e4348ebc1
170 changed files with 17367 additions and 9781 deletions

183
CLAUDE.md
View File

@@ -10,10 +10,67 @@ The app is deployed locally, connects to a local ComfyUI instance at `http://127
## Architecture
### Entry Point
- `app.py` — Single-file Flask app (~4500+ lines). All routes, helpers, ComfyUI integration, LLM calls, and sync functions live here.
- `models.py` — SQLAlchemy models only.
- `comfy_workflow.json` — ComfyUI workflow template with placeholder strings.
### File Structure
```
app.py # ~186 lines: Flask init, config, logging, route registration, startup/migrations
models.py # SQLAlchemy models only
comfy_workflow.json # ComfyUI workflow template with placeholder strings
utils.py # Pure constants + helpers (no Flask/DB deps)
services/
__init__.py
comfyui.py # ComfyUI HTTP client (queue_prompt, get_history, get_image)
workflow.py # Workflow building (_prepare_workflow, _apply_checkpoint_settings)
prompts.py # Prompt building + dedup (build_prompt, build_extras_prompt)
llm.py # LLM integration + MCP tool calls (call_llm, load_prompt)
mcp.py # MCP/Docker server lifecycle (ensure_mcp_server_running)
sync.py # All sync_*() functions + preset resolution helpers
job_queue.py # Background job queue (_enqueue_job, _make_finalize, worker thread)
file_io.py # LoRA/checkpoint scanning, file helpers
routes/
__init__.py # register_routes(app) — imports and calls all route modules
characters.py # Character CRUD + generation + outfit management
outfits.py # Outfit routes
actions.py # Action routes
styles.py # Style routes
scenes.py # Scene routes
detailers.py # Detailer routes
checkpoints.py # Checkpoint routes
looks.py # Look routes
presets.py # Preset routes
generator.py # Generator mix-and-match page
gallery.py # Gallery browsing + image/resource deletion
settings.py # Settings page + status APIs + context processors
strengths.py # Strengths gallery system
transfer.py # Resource transfer system
queue_api.py # /api/queue/* endpoints
```
### Dependency Graph
```
app.py
├── models.py (unchanged)
├── utils.py (no deps except stdlib)
├── services/
│ ├── comfyui.py ← utils (for config)
│ ├── prompts.py ← utils, models
│ ├── workflow.py ← prompts, utils, models
│ ├── llm.py ← mcp (for tool calls)
│ ├── mcp.py ← (stdlib only: subprocess, os)
│ ├── sync.py ← models, utils
│ ├── job_queue.py ← comfyui, models
│ └── file_io.py ← models, utils
└── routes/
├── All route modules ← services/*, utils, models
└── (routes never import from other routes)
```
**No circular imports**: routes → services → utils/models. Services never import routes. Utils never imports services.
### Route Registration Pattern
Routes use a `register_routes(app)` closure pattern — each route module defines a function that receives the Flask `app` object and registers routes via `@app.route()` closures. This preserves all existing `url_for()` endpoint names without requiring Blueprint prefixes. Helper functions used only by routes in that module are defined inside `register_routes()` before the routes that reference them.
### Database
SQLite at `instance/database.db`, managed by Flask-SQLAlchemy. The DB is a cache of the JSON files on disk — the JSON files are the source of truth.
@@ -65,76 +122,79 @@ LoRA nodes chain: `4 → 16 → 17 → 18 → 19`. Unused LoRA nodes are bypasse
---
## Key Helpers
## Key Functions by Module
### `build_prompt(data, selected_fields, default_fields, active_outfit)`
Converts a character (or combined) data dict into `{"main", "face", "hand"}` prompt strings.
### `utils.py` — Constants and Pure Helpers
Field selection priority:
1. `selected_fields` (from form submission) — if non-empty, use it exclusively
2. `default_fields` (saved in DB per character) — used if no form selection
3. Select all (fallback)
- **`_IDENTITY_KEYS` / `_WARDROBE_KEYS`** — Lists of canonical field names for the `identity` and `wardrobe` sections. Used by `_ensure_character_fields()`.
- **`ALLOWED_EXTENSIONS`** — Permitted upload file extensions.
- **`_LORA_DEFAULTS`** — Default LoRA directory paths per category.
- **`parse_orientation(orientation_str)`** — Converts orientation codes (`1F`, `2F`, `1M1F`, etc.) into Danbooru tags.
- **`_resolve_lora_weight(lora_data)`** — Extracts and validates LoRA weight from a lora data dict.
- **`allowed_file(filename)`** — Checks file extension against `ALLOWED_EXTENSIONS`.
Fields are addressed as `"section::key"` strings (e.g. `"identity::hair"`, `"wardrobe::top"`, `"special::name"`, `"lora::lora_triggers"`).
### `services/prompts.py` — Prompt Building
Wardrobe format: Characters support a **nested** format where `wardrobe` is a dict of outfit names → outfit dicts (e.g. `{"default": {...}, "swimsuit": {...}}`). Legacy characters have a flat `wardrobe` dict. `Character.get_active_wardrobe()` handles both.
- **`build_prompt(data, selected_fields, default_fields, active_outfit)`** — Converts a character (or combined) data dict into `{"main", "face", "hand"}` prompt strings. Field selection priority: `selected_fields` `default_fields` → select all (fallback). Fields are addressed as `"section::key"` strings (e.g. `"identity::hair"`, `"wardrobe::top"`). Characters support a **nested** wardrobe format where `wardrobe` is a dict of outfit names → outfit dicts.
- **`build_extras_prompt(actions, outfits, scenes, styles, detailers)`** — Used by the Generator page. Combines prompt text from all checked items across categories into a single string.
- **`_cross_dedup_prompts(positive, negative)`** — Cross-deduplicates tags between positive and negative prompt strings. Equal counts cancel completely; excess on one side is retained.
- **`_resolve_character(character_slug)`** — Returns a `Character` ORM object for a given slug string. Handles `"__random__"` sentinel.
- **`_ensure_character_fields(character, selected_fields, ...)`** — Mutates `selected_fields` in place, appending populated identity/wardrobe keys. Called in every secondary-category generate route after `_resolve_character()`.
- **`_append_background(prompts, character=None)`** — Appends `"<primary_color> simple background"` tag to `prompts['main']`.
### `build_extras_prompt(actions, outfits, scenes, styles, detailers)`
Used by the Generator page. Combines prompt text from all checked items across categories into a single string. LoRA triggers, wardrobe fields, scene fields, style fields, detailer prompts — all concatenated.
### `services/workflow.py` — Workflow Wiring
### `_prepare_workflow(workflow, character, prompts, checkpoint, custom_negative, outfit, action, style, detailer, scene, width, height, checkpoint_data, look)`
The core workflow wiring function. Mutates the loaded workflow dict in place and returns it. Key behaviours:
- Replaces `{{POSITIVE_PROMPT}}`, `{{FACE_PROMPT}}`, `{{HAND_PROMPT}}` in node inputs.
- If `look` is provided, uses the Look's LoRA in node 16 instead of the character's LoRA, and prepends the Look's negative to node 7.
- Chains LoRA nodes dynamically — only active LoRAs participate in the chain.
- Randomises seeds for nodes 3, 11, 13.
- Applies checkpoint-specific settings (steps, cfg, sampler, VAE, base prompts) via `_apply_checkpoint_settings`.
- Runs `_cross_dedup_prompts` on nodes 6 and 7 as the final step before returning.
- **`_prepare_workflow(workflow, character, prompts, ...)`** — Core workflow wiring function. Replaces prompt placeholders, chains LoRA nodes dynamically, randomises seeds, applies checkpoint settings, runs cross-dedup as the final step.
- **`_apply_checkpoint_settings(workflow, ckpt_data)`** — Applies checkpoint-specific sampler/prompt/VAE settings.
- **`_get_default_checkpoint()`** — Returns `(checkpoint_path, checkpoint_data)` from session, database Settings, or workflow file fallback.
- **`_log_workflow_prompts(label, workflow)`** — Logs the fully assembled workflow prompts in a readable block.
### `_cross_dedup_prompts(positive, negative)`
Cross-deduplicates tags between the positive and negative prompt strings. For each tag present in both, repeatedly removes the first occurrence from each side until the tag exists on only one side (or neither). Equal counts cancel completely; any excess on one side is retained. This allows deliberate overrides: adding a tag twice in positive while it appears once in negative leaves one copy in positive.
### `services/job_queue.py` — Background Job Queue
Called as the last step of `_prepare_workflow`, after `_apply_checkpoint_settings` has added `base_positive`/`base_negative`, so it operates on fully-assembled prompts.
- **`_enqueue_job(label, workflow, finalize_fn)`** — Adds a generation job to the queue.
- **`_make_finalize(category, slug, db_model_class=None, action=None)`** — Factory returning a callback that retrieves the generated image from ComfyUI, saves it, and optionally updates the DB cover image.
- **`_prune_job_history(max_age_seconds=3600)`** — Removes old terminal-state jobs from memory.
- **`init_queue_worker(flask_app)`** — Stores the app reference and starts the worker thread.
### `_IDENTITY_KEYS` / `_WARDROBE_KEYS` (module-level constants)
Lists of canonical field names for the `identity` and `wardrobe` sections. Used by `_ensure_character_fields()` to avoid hard-coding key lists in every route.
### `services/comfyui.py` — ComfyUI HTTP Client
### `_resolve_character(character_slug)`
Returns a `Character` ORM object for a given slug string. Handles the `"__random__"` sentinel by selecting a random character. Returns `None` if `character_slug` is falsy or no match is found. Every route that accepts an optional character dropdown (outfit, action, style, scene, detailer, checkpoint, look generate routes) uses this instead of an inline if/elif block.
- **`queue_prompt(prompt_workflow, client_id)`** — POSTs workflow to ComfyUI's `/prompt` endpoint.
- **`get_history(prompt_id)`** — Polls ComfyUI for job completion.
- **`get_image(filename, subfolder, folder_type)`** — Retrieves generated image bytes.
- **`_ensure_checkpoint_loaded(checkpoint_path)`** — Forces ComfyUI to load a specific checkpoint.
### `_ensure_character_fields(character, selected_fields, include_wardrobe=True, include_defaults=False)`
Mutates `selected_fields` in place, appending any populated identity, wardrobe, and optional defaults keys that are not already present. Ensures `"special::name"` is always included. Called in every secondary-category generate route immediately after `_resolve_character()` to guarantee the character's essential fields are sent to `build_prompt`.
### `services/llm.py` — LLM Integration
### `_append_background(prompts, character=None)`
Appends a `"<primary_color> simple background"` tag (or plain `"simple background"` if no primary color) to `prompts['main']`. Called in outfit, action, style, detailer, and checkpoint generate routes instead of repeating the same inline string construction.
- **`call_llm(prompt, system_prompt)`** — OpenAI-compatible chat completion supporting OpenRouter (cloud) and Ollama/LMStudio (local). Implements a tool-calling loop (up to 10 turns) using `DANBOORU_TOOLS` via MCP Docker container.
- **`load_prompt(filename)`** — Loads system prompt text from `data/prompts/`.
- **`call_mcp_tool()`** — Synchronous wrapper for MCP tool calls.
### `_make_finalize(category, slug, db_model_class=None, action=None)`
Factory function that returns a `_finalize(comfy_prompt_id, job)` callback closure. The closure:
1. Calls `get_history()` and `get_image()` to retrieve the generated image from ComfyUI.
2. Saves the image to `static/uploads/<category>/<slug>/gen_<timestamp>.png`.
3. Sets `job['result']` with `image_url` and `relative_path`.
4. If `db_model_class` is provided **and** (`action` is `None` or `action == 'replace'`), updates the ORM object's `image_path` and commits.
### `services/sync.py` — Data Synchronization
All `generate` routes pass a `_make_finalize(...)` call as the finalize argument to `_enqueue_job()` instead of defining an inline closure.
- **`sync_characters()`, `sync_outfits()`, `sync_actions()`, etc.** — Load JSON files from `data/` directories into SQLite. One function per category.
- **`_resolve_preset_entity(type, id)`** / **`_resolve_preset_fields(preset_data)`** — Preset resolution helpers.
### `_prune_job_history(max_age_seconds=3600)`
Removes entries from `_job_history` that are in a terminal state (`done`, `failed`, `removed`) and older than `max_age_seconds`. Called at the end of every worker loop iteration to prevent unbounded memory growth.
### `services/file_io.py` — File & DB Helpers
### `_queue_generation(character, action, selected_fields, client_id)`
Convenience wrapper for character detail page generation. Loads workflow, calls `build_prompt`, calls `_prepare_workflow`, calls `queue_prompt`.
- **`get_available_loras(category)`** — Scans filesystem for available LoRA files in a category.
- **`get_available_checkpoints()`** — Scans checkpoint directories.
- **`_count_look_assignments()`** / **`_count_outfit_lora_assignments()`** — DB aggregate queries.
### `_queue_detailer_generation(detailer_obj, character, selected_fields, client_id, action, extra_positive, extra_negative)`
Generation helper for the detailer detail page. Merges the detailer's `prompt` list (flattened — `prompt` may be a list or string) and LoRA triggers into the character data before calling `build_prompt`. Appends `extra_positive` to `prompts["main"]` and passes `extra_negative` as `custom_negative` to `_prepare_workflow`. Accepts an optional `action` (Action model object) passed through to `_prepare_workflow` for node 18 LoRA wiring.
### `services/mcp.py` — MCP/Docker Lifecycle
### `_get_default_checkpoint()`
Returns `(checkpoint_path, checkpoint_data)` from the Flask session's `default_checkpoint` key. The global default checkpoint is set via the navbar dropdown and stored server-side in the filesystem session.
- **`ensure_mcp_server_running()`** — Ensures the danbooru-mcp Docker container is running.
- **`ensure_character_mcp_server_running()`** — Ensures the character-mcp Docker container is running.
### `call_llm(prompt, system_prompt)`
OpenAI-compatible chat completion call supporting:
- **OpenRouter** (cloud, configured API key + model)
- **Ollama** / **LMStudio** (local, configured base URL + model)
### Route-local Helpers
Implements a tool-calling loop (up to 10 turns) using `DANBOORU_TOOLS` (search_tags, validate_tags, suggest_tags) via an MCP Docker container (`danbooru-mcp:latest`). If the provider rejects tools (HTTP 400), retries without tools.
Some helpers are defined inside a route module's `register_routes()` since they're only used by routes in that file:
- `routes/scenes.py`: `_queue_scene_generation()` — scene-specific workflow builder
- `routes/detailers.py`: `_queue_detailer_generation()` — detailer-specific generation helper
- `routes/styles.py`: `_build_style_workflow()` — style-specific workflow builder
- `routes/checkpoints.py`: `_build_checkpoint_workflow()` — checkpoint-specific workflow builder
- `routes/strengths.py`: `_build_strengths_prompts()`, `_prepare_strengths_workflow()` — strengths gallery helpers
- `routes/transfer.py`: `_create_minimal_template()` — transfer template builder
- `routes/gallery.py`: `_scan_gallery_images()`, `_enrich_with_names()`, `_parse_comfy_png_metadata()`
---
@@ -377,13 +437,14 @@ Absolute paths on disk:
To add a new content category (e.g. "Poses" as a separate concept from Actions), the pattern is:
1. **Model** (`models.py`): Add a new SQLAlchemy model with the standard fields.
2. **Sync function** (`app.py`): Add `sync_newcategory()` following the pattern of `sync_outfits()`.
3. **Data directory**: Add `app.config['NEWCATEGORY_DIR'] = 'data/newcategory'`.
4. **Routes**: Implement index, detail, edit, generate, finalize_generation, replace_cover_from_preview, upload, save_defaults, clone, rescan routes. Follow the outfit/scene pattern exactly.
5. **Templates**: Create `templates/newcategory/{index,detail,edit,create}.html` extending `layout.html`.
6. **Nav**: Add link to navbar in `templates/layout.html`.
7. **`with_appcontext`**: Call `sync_newcategory()` in the `with app.app_context()` block at the bottom of `app.py`.
8. **Generator page**: Add to `generator()` route, `build_extras_prompt()`, and `templates/generator.html` accordion.
2. **Sync function** (`services/sync.py`): Add `sync_newcategory()` following the pattern of `sync_outfits()`.
3. **Data directory** (`app.py`): Add `app.config['NEWCATEGORY_DIR'] = 'data/newcategory'`.
4. **Routes** (`routes/newcategory.py`): Create a new route module with a `register_routes(app)` function. Implement index, detail, edit, generate, replace_cover_from_preview, upload, save_defaults, clone, rescan routes. Follow `routes/outfits.py` or `routes/scenes.py` exactly.
5. **Route registration** (`routes/__init__.py`): Import and call `newcategory.register_routes(app)`.
6. **Templates**: Create `templates/newcategory/{index,detail,edit,create}.html` extending `layout.html`.
7. **Nav**: Add link to navbar in `templates/layout.html`.
8. **Startup** (`app.py`): Import and call `sync_newcategory()` in the `with app.app_context()` block.
9. **Generator page**: Add to `routes/generator.py`, `services/prompts.py` `build_extras_prompt()`, and `templates/generator.html` accordion.
---

View File

@@ -1,51 +0,0 @@
# Feature Development Guide: Gallery Pages & Character Integration
This guide outlines the architectural patterns and best practices developed during the implementation of the **Actions**, **Outfits**, and **Styles** galleries. Use this as a blueprint for adding similar features (e.g., "Scenes", "Props", "Effects").
## 1. Data Model & Persistence
- **Database Model:** Add a new class in `models.py`. Include `default_fields` (JSON) to support persistent prompt selections.
- **JSON Sync:** Implement a `sync_[feature]()` function in `app.py` to keep the SQLite database in sync with the `data/[feature]/*.json` files.
- **Slugs:** Use URL-safe slugs generated from the ID for clean routing.
## 2. Quadruple LoRA Chaining
Our workflow supports chaining up to four distinct LoRAs from specific directories:
1. **Character:** `Illustrious/Looks/` (Node 16)
2. **Outfit:** `Illustrious/Clothing/` (Node 17)
3. **Action:** `Illustrious/Poses/` (Node 18)
4. **Style:** `Illustrious/Styles/` (Node 19)
**Implementation Detail:**
In `_prepare_workflow`, LoRAs must be chained sequentially. If a previous LoRA is missing, the next one must "reach back" to the Checkpoint (Node 4) or the last valid node in the chain to maintain the model/CLIP connection. Node 19 is the terminal LoRA loader before terminal consumers (KSampler, Detailers).
## 3. Style Prompt Construction
Artistic styles follow specific formatting rules in the `build_prompt` engine:
- **Artist Attribution:** Artist names are prefixed with "by " (e.g., "by Sabu").
- **Artistic Styles:** Raw descriptive style tags (e.g., "watercolor painting") are appended to the prompt.
- **Priority:** Style tags are applied after identity and wardrobe tags but before trigger words.
## 4. Adetailer Routing
To improve generation quality, route specific JSON sub-fields to targeted Adetailers:
- **Face Detailer (Node 14):** Receives `character_name`, `expression`, and action-specific `head`/`eyes` tags.
- **Hand Detailer (Node 15):** Receives priority hand tags (Wardrobe Gloves > Wardrobe Hands > Identity Hands) and action-specific `arms`/`hands` tags.
## 5. Character-Integrated Previews
The "Killer Feature" is previewing a standalone item (like an Action, Outfit, or Style) on a specific character.
**Logic Flow:**
1. **Merge Data:** Copy `character.data`.
2. **Override/Merge:** Replace character `defaults` with feature-specific tags (e.g., Action pose overrides Character pose).
3. **Context Injection:** Append character-specific styles (e.g., `[primary_color] simple background`) to the main prompt.
4. **Auto-Selection:** When a character is selected, ensure their essential identity and active wardrobe fields are automatically included in the prompt.
## 6. UI/UX Patterns
- **Selection Boxes:** Use checkboxes next to field labels to allow users to toggle specific tags.
- **Default Selection:** Implement a "Save as Default Selection" button that persists the current checkbox state to the database.
- **Session State:** Store the last selected character and field preferences in the Flask `session` to provide a seamless experience.
- **AJAX Generation:** Use the WebSocket + Polling hybrid pattern in the frontend to show real-time progress bars without page reloads.
## 7. Directory Isolation
Always isolate LoRAs by purpose to prevent dropdown clutter:
- `get_available_loras()` -> Characters
- `get_available_clothing_loras()` -> Outfits
- `get_available_action_loras()` -> Actions/Poses
- `get_available_style_loras()` -> Styles

View File

@@ -1,208 +0,0 @@
# danbooru-mcp
An MCP (Model Context Protocol) server that lets an LLM search, validate, and get suggestions for valid **Danbooru tags** — the prompt vocabulary used by Illustrious and other Danbooru-trained Stable Diffusion models.
Tags are scraped directly from the **Danbooru public API** and stored in a local SQLite database with an **FTS5 full-text search index** for fast prefix/substring queries. Each tag includes its post count, category, and deprecation status so the LLM can prioritise well-used, canonical tags.
---
## Tools
| Tool | Description |
|------|-------------|
| `search_tags(query, limit=20, category=None)` | Prefix/full-text search — returns rich tag objects ordered by relevance |
| `validate_tags(tags)` | Exact-match validation — splits into `valid`, `deprecated`, `invalid` |
| `suggest_tags(partial, limit=10, category=None)` | Autocomplete for partial tag strings, sorted by post count |
### Return object shape
All tools return tag objects with:
```json
{
"name": "blue_hair",
"post_count": 1079908,
"category": "general",
"is_deprecated": false
}
```
### Category filter values
`"general"` · `"artist"` · `"copyright"` · `"character"` · `"meta"`
---
## Setup
### 1. Install dependencies
```bash
pip install -e .
```
### 2. Build the SQLite database (scrapes the Danbooru API)
```bash
python scripts/scrape_tags.py
```
This scrapes ~12 million tags from the Danbooru public API (no account required)
and stores them in `db/tags.db` with a FTS5 index.
Estimated time: **515 minutes** depending on network speed.
```
Options:
--db PATH Output database path (default: db/tags.db)
--workers N Parallel HTTP workers (default: 4)
--max-page N Safety cap on pages (default: 2500)
--no-resume Re-scrape all pages from scratch
--no-fts Skip FTS5 rebuild (for incremental runs)
```
The scraper is **resumable** — if interrupted, re-run it and it will
continue from where it left off.
### 3. (Optional) Test API access first
```bash
python scripts/test_danbooru_api.py
```
### 4. Run the MCP server
```bash
python src/server.py
```
---
## Docker
### Quick start (pre-built DB — recommended)
Use this when you've already run `python scripts/scrape_tags.py` and have `db/tags.db`:
```bash
# Build image with the pre-built DB baked in (~30 seconds)
docker build -f Dockerfile.prebuilt -t danbooru-mcp .
# Verify
docker run --rm --entrypoint python danbooru-mcp \
-c "import sqlite3,sys; c=sqlite3.connect('/app/db/tags.db'); sys.stderr.write(str(c.execute('SELECT COUNT(*) FROM tags').fetchone()[0]) + ' tags\n')"
```
### Build from scratch (runs the scraper during Docker build)
```bash
# Scrapes the Danbooru API during build — takes ~15 minutes
docker build \
--build-arg DANBOORU_USER=your_username \
--build-arg DANBOORU_API_KEY=your_api_key \
-t danbooru-mcp .
```
### MCP client config (Docker)
```json
{
"mcpServers": {
"danbooru-tags": {
"command": "docker",
"args": ["run", "--rm", "-i", "danbooru-mcp:latest"]
}
}
}
```
---
## MCP Client Configuration
### Claude Desktop (`claude_desktop_config.json`)
```json
{
"mcpServers": {
"danbooru-tags": {
"command": "python",
"args": ["/absolute/path/to/danbooru-mcp/src/server.py"]
}
}
}
```
### Custom DB path via environment variable
```json
{
"mcpServers": {
"danbooru-tags": {
"command": "python",
"args": ["/path/to/src/server.py"],
"env": {
"DANBOORU_TAGS_DB": "/custom/path/to/tags.db"
}
}
}
}
```
---
## Example LLM Prompt Workflow
```
User: Generate a prompt for a girl with blue hair and a sword.
LLM calls validate_tags(["1girl", "blue_hairs", "sword", "looking_at_vewer"])
→ {
"valid": ["1girl", "sword"],
"deprecated": [],
"invalid": ["blue_hairs", "looking_at_vewer"]
}
LLM calls suggest_tags("blue_hair", limit=3)
→ [
{"name": "blue_hair", "post_count": 1079908, "category": "general"},
{"name": "blue_hairband", "post_count": 26905, "category": "general"},
...
]
LLM calls suggest_tags("looking_at_viewer", limit=1)
→ [{"name": "looking_at_viewer", "post_count": 4567890, "category": "general"}]
Final validated prompt: 1girl, blue_hair, sword, looking_at_viewer
```
---
## Project Structure
```
danbooru-mcp/
├── data/
│ └── all_tags.csv # original CSV export (legacy, replaced by API scrape)
├── db/
│ └── tags.db # SQLite DB (generated, gitignored)
├── plans/
│ └── danbooru-mcp-plan.md # Architecture plan
├── scripts/
│ ├── scrape_tags.py # API scraper → SQLite (primary)
│ ├── import_tags.py # Legacy CSV importer
│ └── test_danbooru_api.py # API connectivity tests
├── src/
│ └── server.py # MCP server
├── pyproject.toml
├── .gitignore
└── README.md
```
---
## Requirements
- Python 3.10+
- `mcp[cli]` — official Python MCP SDK
- `requests` — HTTP client for API scraping
- `sqlite3` — Python stdlib (no install needed)

7243
app.py

File diff suppressed because it is too large Load Diff

View File

@@ -1,34 +0,0 @@
{
"action_id": "agressivechoking_000010",
"action_name": "Agressivechoking 000010",
"action": {
"full_body": "dynamic perspective, leaning forward, dominant violent stance, POV",
"head": "face close to camera, angry expression, gritting teeth or shouting, heavy breathing",
"eyes": "intense stare, dilated pupils, furious gaze, sanpaku",
"arms": "extended towards viewer or subject, muscles tensed, shoulders shrugged forward",
"hands": "fingers curled tightly, hand around neck, strangling motion, squeezing",
"torso": "hunched forward, tense upper body",
"pelvis": "weight shifted forward",
"legs": "wide stance for leverage, braced",
"feet": "planted firmly",
"additional": "sweat, speed lines, depth of field, high contrast lighting, shadow over eyes"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
},
"lora": {
"lora_name": "Illustrious/Poses/AgressiveChoking-000010.safetensors",
"lora_weight": 1.0,
"lora_triggers": "AgressiveChoking-000010",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
},
"tags": [
"violence",
"dominance",
"pov",
"combat",
"anger"
]
}

View File

@@ -1,39 +0,0 @@
{
"action_id": "ahegao_xl_v3_1278075",
"action_name": "Ahegao Xl V3 1278075",
"action": {
"full_body": "portrait or upper body focus, emphasizing facial distortion",
"head": "tilted back slightly, mouth wide open, tongue hanging out, face heavily flushed",
"eyes": "rolled back upwards, cross-eyed, look of exhaustion or ecstasy",
"arms": "raised up near the head",
"hands": "making double peace signs (v-sign) framing the face",
"torso": "facing forward",
"pelvis": "neutral",
"legs": "neutral",
"feet": "not visible",
"additional": "saliva trail, drooling, sweat, heavy blush stickers, heart-shaped pupils"
},
"participants": {
"solo_focus": "true",
"orientation": "F"
},
"lora": {
"lora_name": "Illustrious/Poses/Ahegao_XL_v3_1278075.safetensors",
"lora_weight": 1.0,
"lora_triggers": "Ahegao_XL_v3_1278075",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
},
"tags": [
"ahegao",
"rolling eyes",
"tongue out",
"open mouth",
"blush",
"drooling",
"saliva",
"cross-eyed",
"double peace sign",
"v-sign"
]
}

View File

@@ -1,24 +1,24 @@
{
"action": {
"additional": "cum, close-uo",
"arms": "",
"eyes": "eyes_closed",
"feet": "",
"full_body": "2koma, before and after, side-by-side",
"hands": "",
"head": "sticky_face,facial, bukkake, cum_on_face",
"legs": "",
"pelvis": "",
"torso": ""
},
"action_id": "before_after_1230829",
"action_name": "Before After 1230829",
"action": {
"full_body": "2koma, before_and_after",
"head": "heavy_breathing, orgasm, sticky_face",
"eyes": "eyes_closed",
"arms": "variation",
"hands": "variation",
"torso": "upper_body",
"pelvis": "variation",
"legs": "variation",
"feet": "variation",
"additional": "facial, bukkake, cum, cum_on_face"
},
"lora": {
"lora_name": "Illustrious/Poses/before_after_1230829.safetensors",
"lora_weight": 0.9,
"lora_triggers": "before_after",
"lora_weight_min": 0.9,
"lora_weight_max": 0.9
"lora_weight": 0.9,
"lora_weight_max": 0.7,
"lora_weight_min": 0.6
},
"tags": [
"before_and_after",

View File

@@ -2,21 +2,21 @@
"action_id": "bodybengirl",
"action_name": "Bodybengirl",
"action": {
"full_body": "suspended_congress, lifting_person, standing",
"full_body": "suspended_congress, lifting_person, dangling legs",
"head": "",
"eyes": "",
"arms": "reaching",
"arms": "dangling arms",
"hands": "",
"torso": "torso_grab, bent_over",
"pelvis": "",
"legs": "legs_hanging",
"legs": "legs_hanging, ",
"feet": "",
"additional": "1boy, 1girl, suspended"
"additional": "1boy, 1girl, suspended, size difference, loli"
},
"lora": {
"lora_name": "Illustrious/Poses/BodyBenGirl.safetensors",
"lora_weight": 1.0,
"lora_triggers": "bentstand-front, bentstand-behind",
"lora_triggers": " bentstand-behind",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
},

View File

@@ -2,7 +2,7 @@
"action_id": "butt_smother_ag_000043",
"action_name": "Butt Smother Ag 000043",
"action": {
"full_body": "facesitting, character sitting on face, pov from below, dominant pose",
"full_body": "1boy,1girl,facesitting, character sitting on face, pov from below, dominant pose",
"head": "looking down at viewer, looking back over shoulder",
"eyes": "looking at viewer, half-closed eyes, seductive gaze",
"arms": "arms reaching back, supporting weight",

View File

@@ -2,16 +2,16 @@
"action_id": "buttjob",
"action_name": "Buttjob",
"action": {
"full_body": "bent over, back turned to viewer, kneeling or standing",
"head": "looking back over shoulder",
"eyes": "looking at viewer, half-closed",
"arms": "supporting upper body weight on cool surface or knees",
"hands": "resting on bed, knees or holding buttocks apart",
"torso": "arched back, leaning forward",
"pelvis": "pushed backward, hips elevated high",
"legs": "kneeling with thighs spread or standing bent",
"feet": "arched or plantar flexion",
"additional": "glutes pressed together, friction focus, skin indentation"
"full_body": "bent over, buttjob",
"head": "",
"eyes": "",
"arms": "",
"hands": "",
"torso": "",
"pelvis": "buttjob",
"legs": "",
"feet": "",
"additional": ""
},
"participants": {
"solo_focus": "true",
@@ -26,12 +26,6 @@
},
"tags": [
"buttjob",
"back to viewer",
"bent over",
"arched back",
"kneeling",
"ass focus",
"glutes",
"between buttocks"
"butt"
]
}

View File

@@ -1,40 +0,0 @@
{
"action_id": "caught_masturbating_illustrious",
"action_name": "Caught Masturbating Illustrious",
"action": {
"full_body": "standing in doorway, confronting viewer",
"head": "looking down or at viewer, surprised expression, blushing",
"eyes": "wide open, looking away or at penis",
"arms": "arms at sides or covering mouth",
"hands": "relaxed or raised in shock",
"torso": "facing viewer",
"pelvis": "standing straight",
"legs": "standing, legs together",
"feet": "standing on floor",
"additional": "male pov, male masturbation in foreground, open door background"
},
"lora": {
"lora_name": "Illustrious/Poses/Caught_Masturbating_ILLUSTRIOUS.safetensors",
"lora_weight": 0.75,
"lora_triggers": "caught, male pov, male masturbation, girl walking in door, standing in doorway",
"lora_weight_min": 0.75,
"lora_weight_max": 0.75
},
"tags": [
"pov",
"male_masturbation",
"penis",
"erection",
"walk-in",
"caught",
"doorway",
"open_door",
"standing",
"surprised",
"blush",
"looking_at_penis",
"looking_at_viewer",
"wide_shot",
"indoors"
]
}

View File

@@ -3,7 +3,7 @@
"action_name": "Cheekbulge",
"action": {
"full_body": "fellatio",
"head": "cheek_bulge, head_tilt, saliva",
"head": "cheek_bulge, head_tilt, saliva, penis in mouth, fellatio",
"eyes": "looking_up",
"arms": "arms_behind_back",
"hands": "hands_on_head",
@@ -16,7 +16,7 @@
"lora": {
"lora_name": "Illustrious/Poses/cheekbulge.safetensors",
"lora_weight": 1.0,
"lora_triggers": "cheek bulge",
"lora_triggers": "cheek bulge, male pov",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
},

View File

@@ -2,7 +2,7 @@
"action_id": "cof",
"action_name": "Cum on Figure",
"action": {
"full_body": "figurine, mini-girl",
"full_body": "figurine, mini-girl, cum on body, cum on figurine",
"head": "",
"eyes": "",
"arms": "",
@@ -11,7 +11,7 @@
"pelvis": "",
"legs": "",
"feet": "",
"additional": "cum, cum on body, excessive cum, cum on face, cum on breasts, cum on chest"
"additional": "cum,excessive cum,"
},
"participants": {
"solo_focus": "true",
@@ -25,11 +25,7 @@
"lora_weight_max": 1.0
},
"tags": [
"standing force",
"carry on front",
"carry",
"lifting",
"legs wrapped",
"straddling"
"cum",
"figurine"
]
}

View File

@@ -2,16 +2,16 @@
"action_id": "disinterested_sex___bored_female",
"action_name": "Disinterested Sex Bored Female",
"action": {
"full_body": "female lying on back, legs spread, passive body language, completely disengaged from implicit activity",
"head": "turned slightly or facing forward but focused on phone, resting on pillow",
"eyes": "looking at smartphone, dull gaze, half-closed, unenthusiastic",
"arms": "holding smartphone above face with one or both hands, elbows resting on surface",
"hands": "holding phone, scrolling on screen",
"torso": "lying flat, relaxed, exposed",
"pelvis": "hips passive, legs open",
"legs": "spread wide, knees bent, relaxed",
"feet": "loose, resting on bed",
"additional": "holding smartphone, checking phone, indifference, ignoring, nonchalant attitude"
"full_body": "1girl,hetero,doggystyle,faceless male, (solo focus:1.2)",
"head": "on stomach, resting on pillow",
"eyes": "looking at smartphone, bored",
"arms": "",
"hands": "holding phone",
"torso": "",
"pelvis": "",
"legs": "",
"feet": "",
"additional": ""
},
"participants": {
"solo_focus": "true",
@@ -25,14 +25,6 @@
"lora_weight_max": 1.0
},
"tags": [
"bored",
"disinterested",
"looking at phone",
"smartphone",
"lying",
"spread legs",
"passive",
"indifferent",
"expressionless"
"bored"
]
}

View File

@@ -2,23 +2,23 @@
"action_id": "dunking_face_in_a_bowl_of_cum_r1",
"action_name": "Dunking Face In A Bowl Of Cum R1",
"action": {
"full_body": "leaning_forward, head_down, drowning",
"head": "face_down, air_bubble, crying, tears, embarrassed, disgust",
"eyes": "closed_eyes, tears",
"arms": "clutching_head, arms_up",
"hands": "clutching_head",
"torso": "leaning_forward",
"pelvis": "leaning_forward",
"legs": "standing",
"feet": "standing",
"additional": "bowl, cum"
"full_body": "kneeling, all fours, head_down, held down, close-up, from below, humiliation, (solo focus:1.2)",
"head": "face_down, cum in mouth, cum bubble, hand on anothers head, crying",
"eyes": "closed_eyes, ",
"arms": "",
"hands": "",
"torso": "",
"pelvis": "",
"legs": "",
"feet": "",
"additional": "cum bowl, "
},
"lora": {
"lora_name": "Illustrious/Poses/Dunking_face_in_a_bowl_of_cum_r1.safetensors",
"lora_weight": 1.0,
"lora_triggers": "face in cum bowl, cum in bowl, cum bubble, excessive cum",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
"lora_triggers": "gokkun, cum bowl",
"lora_weight_min": 0.4,
"lora_weight_max": 0.6
},
"tags": [
"1girl",

View File

@@ -1,39 +0,0 @@
{
"action_id": "facial_bukkake",
"action_name": "Facial Bukkake",
"action": {
"full_body": "close-up portrait shot, focus primarily on the face and neck area",
"head": "tilted slightly backward, mouth open or tongue out, face heavily covered in white liquid",
"eyes": "closed or looking upward, eyelashes wet/clumped",
"arms": "out of frame or hands interacting with face/hair",
"hands": "holding hair back or wiping cheek",
"torso": "upper chest or shoulders visible, possibly stained",
"pelvis": "not visible",
"legs": "not visible",
"feet": "not visible",
"additional": "streaming white liquid, dripping, messy, wet skin texture, high viscosity"
},
"participants": {
"solo_focus": "true",
"orientation": "F"
},
"lora": {
"lora_name": "Illustrious/Poses/facial_bukkake.safetensors",
"lora_weight": 1.0,
"lora_triggers": "facial_bukkake",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
},
"tags": [
"bukkake",
"facial",
"cum on face",
"semen",
"messy",
"white liquid",
"cum in eyes",
"cum in mouth",
"splatter",
"after sex"
]
}

View File

@@ -2,15 +2,15 @@
"action_id": "giantess_missionary_000037",
"action_name": "Giantess Missionary 000037",
"action": {
"full_body": "missionary, lying, on_back, size_difference, giantess, larger_female",
"full_body": "1boy, 1girl, shota, onee-shota, missionary, lying, on_back, size_difference, giantess, larger_female, clothed female naked male",
"head": "face_between_breasts, burying_face",
"eyes": "closed_eyes, expressionless",
"arms": "hug, arms_around_back",
"eyes": "closed_eyes, ",
"arms": "hug, hand on anothers head",
"hands": "hands_on_back",
"torso": "breasts, cleavage, large_breasts",
"torso": "cleavage,",
"pelvis": "hops",
"legs": "spread_legs, legs_up",
"feet": "barefoot",
"feet": "",
"additional": "male_on_top, hetero, bearhug, femdom"
},
"lora": {
@@ -22,7 +22,6 @@
},
"tags": [
"missionary",
"giantess",
"size_difference",
"larger_female",
"face_between_breasts",

View File

@@ -1,24 +1,24 @@
{
"action": {
"additional": "size difference, bodily fluids, messy environment, cave background",
"arms": "restrained, held back,",
"eyes": "tearing, rolling back, distressed",
"feet": "",
"full_body": "1girl, surrounded, gangbang, torn clothing, shota, cum string, fellatio, irrumatio, captured, defeated",
"hands": "",
"head": "",
"legs": "",
"pelvis": "vaginal",
"torso": "exposed, pinned down, size difference"
},
"action_id": "goblin_molestation_illustrious",
"action_name": "Goblin Molestation Illustrious",
"action": {
"full_body": "1girl surrounded by multiple small goblins in a gangbang scenario",
"head": "flustered, ahegao, or distressed expression",
"eyes": "tearing, rolling back, or heart-shaped pupils",
"arms": "restrained, held back, or grabbing sheets",
"hands": "clenched or grasped by goblins",
"torso": "exposed, pinned down, size difference emphasized",
"pelvis": "engaged in sexual activity, hips lifted",
"legs": "m-legs, spread wide, or held up by goblins",
"feet": "toes curled in pleasure or pain",
"additional": "size difference, bodily fluids, messy environment, cave background"
},
"lora": {
"lora_name": "Illustrious/Poses/Goblin_Molestation_Illustrious.safetensors",
"lora_triggers": "Goblinestation, gangbang, multiple goblins, multiple boys, 1girl, sex, rape, violation, cave",
"lora_weight": 0.8,
"lora_triggers": "Goblinestation, gangbang, many goblins, multiple boys, 1girl, sex",
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
"lora_weight_max": 0.8,
"lora_weight_min": 0.8
},
"tags": [
"1girl",

View File

@@ -0,0 +1,34 @@
{
"action": {
"additional": "size difference, bodily fluids, messy environment, alley background, faceless male",
"arms": "restrained, held back,",
"eyes": "tearing, rolling back, distressed",
"feet": "",
"full_body": "1girl, surrounded, gangbang, torn clothing, (shota:1.5), cum string, fellatio, irrumatio, captured, defeated",
"hands": "",
"head": "hands on anothers head",
"legs": "",
"pelvis": "vaginal",
"torso": " size difference"
},
"action_id": "goblin_molestation_illustrious_02",
"action_name": "Shota Molestation ",
"lora": {
"lora_name": "Illustrious/Poses/Goblin_Molestation_Illustrious.safetensors",
"lora_triggers": "Goblinestation, gangbang, multiple boys, 1girl, sex, rape, violation, alley",
"lora_weight": 0.8,
"lora_weight_max": 0.8,
"lora_weight_min": 0.8
},
"tags": [
"1girl",
"multiple_boys",
"gangbang",
"group_sex",
"sex",
"cum",
"size_difference",
"surrounded",
"rape"
]
}

58
data/characters/2b.json Normal file
View File

@@ -0,0 +1,58 @@
{
"character_id": "2b",
"character_name": "2B",
"identity": {
"base_specs": "1girl, 2b_(nier:automata), pale_skin",
"hair": "short_hair, white_hair, bob_cut, bangs",
"eyes": "blue_eyes",
"hands": "white nails",
"arms": "",
"torso": "small breasts",
"pelvis": "",
"legs": "",
"feet": "",
"extra": ""
},
"defaults": {
"expression": "",
"pose": "",
"scene": ""
},
"wardrobe": {
"full_body": "black_dress, lace-trimmed_dress, gothic_lolita",
"headwear": " blindfold,",
"top": "black_dress, cleavage_cutout, feather_trim",
"bottom": "short_dress,",
"legwear": "thighhighs",
"footwear": "thigh_boots, black_boots, high_heels",
"hands": "black_gloves, ",
"accessories": "katana, sword_on_back"
},
"styles": {
"aesthetic": "gothic_lolita, science_fiction, dark_atmosphere",
"primary_color": "black",
"secondary_color": "white",
"tertiary_color": "silver"
},
"lora": {
"lora_name": "",
"lora_weight": 1.0,
"lora_weight_min": 0.7,
"lora_weight_max": 1.0,
"lora_triggers": "2b_(nier:automata)"
},
"tags": [
"1girl",
"2b_(nier:automata)",
"short_hair",
"white_hair",
"bob_cut",
"blindfold",
"black_dress",
"gothic_lolita",
"thigh_boots",
"black_gloves",
"nier_automata",
"blue_eyes"
]
}

View File

@@ -0,0 +1,49 @@
{
"character_id": "aisha_clan_clan",
"character_name": "Aisha Clan-Clan",
"identity": {
"base_specs": "1girl, dark_skin, toned, fangs, facial_mark",
"hair": "white_hair, long ears, single_braid, ring_hair_ornament, cat_ears, ",
"eyes": "aqua_eyes",
"hands": "claws",
"arms": "",
"torso": "abs, medium breasts",
"pelvis": "cat_tail,",
"legs": "",
"feet": "",
"extra": " circlet"
},
"defaults": {
"expression": "grin",
"pose": "flexing bicep",
"scene": "space station"
},
"wardrobe": {
"full_body": "off-shoulder_dress, two-tone_dress",
"headwear": "circlet, ring_hair_ornament",
"top": "neck_bell,white_collar, long_sleeves, cleavage",
"bottom": " black_belt,",
"legwear": "black_pantyhose, thigh_strap",
"footwear": "",
"hands": "bracelets",
"accessories": ""
},
"styles": {
"aesthetic": "retro anime, outlaw_star",
"primary_color": "white",
"secondary_color": "green",
"tertiary_color": "black"
},
"lora": {
"lora_name": "Illustrious/Looks/Hoseki_OutlawStar_AishaClanClan_IllustriousXL_v1.safetensors",
"lora_weight": 1.0,
"lora_weight_min": 0.7,
"lora_weight_max": 1.0,
"lora_triggers": "ashcln"
},
"tags": [
"aisha_clanclan",
"outlaw_star",
"90's"
]
}

View File

@@ -0,0 +1,57 @@
{
"character_id": "android_21",
"character_name": "Android 21",
"identity": {
"base_specs": "1girl, android_21, pale_skin",
"hair": "brown_hair, long_hair, big_hair, messy_hair",
"eyes": "blue_eyes, glasses",
"hands": "ring",
"arms": "",
"torso": "",
"pelvis": "",
"legs": "",
"feet": "",
"extra": ""
},
"defaults": {
"expression": "smile",
"pose": "standing",
"scene": "indoors, laboratory"
},
"wardrobe": {
"full_body": "",
"headwear": "",
"top": "lab_coat, red and blue checkered dress",
"bottom": "",
"legwear": "black_thighhighs",
"footwear": "high_heels",
"hands": "",
"accessories": "earrings, finger_ring"
},
"styles": {
"aesthetic": "anime",
"primary_color": "white",
"secondary_color": "blue",
"tertiary_color": "red"
},
"lora": {
"lora_name": "",
"lora_weight": 1.0,
"lora_weight_min": 0.7,
"lora_weight_max": 1.0,
"lora_triggers": ""
},
"tags": [
"android_21",
"1girl",
"long_hair",
"brown_hair",
"blue_eyes",
"glasses",
"lab_coat",
"checkered_dress",
"black_thighhighs",
"high_heels",
"dragon_ball"
]
}

View File

@@ -0,0 +1,61 @@
{
"character_id": "becky_blackbell",
"character_name": "Becky Blackbell",
"identity": {
"base_specs": "becky_blackbell, 1girl, loli",
"hair": "brown_hair, short_hair, twintails",
"eyes": "brown_eyes",
"hands": "",
"arms": "",
"torso": "",
"pelvis": "",
"legs": "",
"feet": "",
"extra": ""
},
"defaults": {
"expression": "",
"pose": "",
"scene": ""
},
"wardrobe": {
"full_body": "eden_academy_school_uniform,gold_trim",
"headwear": "hair_ornament",
"top": " black_dress, ",
"bottom": "",
"legwear": "white_socks",
"footwear": "loafers",
"hands": "",
"accessories": ""
},
"styles": {
"aesthetic": "anime_style",
"primary_color": "black",
"secondary_color": "gold",
"tertiary_color": "white"
},
"lora": {
"lora_name": "",
"lora_weight": 1.0,
"lora_weight_min": 0.7,
"lora_weight_max": 1.0,
"lora_triggers": ""
},
"tags": [
"becky_blackbell",
"spy_x_family",
"1girl",
"solo",
"brown_hair",
"twintails",
"brown_eyes",
"eden_academy_school_uniform",
"black_dress",
"gold_trim",
"white_socks",
"loafers",
"hair_ornament",
"short_hair",
"child"
]
}

View File

@@ -0,0 +1,61 @@
{
"character_id": "blossom_ppg",
"character_name": "Blossom",
"identity": {
"base_specs": "blossom_(ppg), 1girl, mature_female, slender, fair_skin",
"hair": "orange_hair, very_long_hair, high_ponytail, blunt_bangs",
"eyes": "pink_eyes, eyelashes",
"hands": "",
"arms": "",
"torso": "slender_waist",
"pelvis": "",
"legs": "",
"feet": "",
"extra": ""
},
"defaults": {
"expression": "smile, confident",
"pose": "standing, hand_on_hip",
"scene": "city_skyline, day"
},
"wardrobe": {
"full_body": "pink_dress, sleeveless_dress, A-line_dress",
"headwear": "red_bow, hair_bow",
"top": "",
"bottom": "",
"legwear": "white_leggings, white_tights",
"footwear": "black_footwear, mary_janes",
"hands": "",
"accessories": "black_belt"
},
"styles": {
"aesthetic": "modern_cartoon, vibrant_colors",
"primary_color": "pink",
"secondary_color": "red",
"tertiary_color": "black"
},
"lora": {
"lora_name": "Illustrious/Looks/Aged_up_Powerpuff_Girls.safetensors",
"lora_weight": 1.0,
"lora_weight_min": 0.7,
"lora_weight_max": 1.0,
"lora_triggers": ""
},
"tags": [
"1girl",
"mature_female",
"orange_hair",
"very_long_hair",
"high_ponytail",
"pink_eyes",
"hair_bow",
"red_bow",
"pink_dress",
"sleeveless_dress",
"black_belt",
"white_leggings",
"mary_janes",
"powerpuff_girls",
"aged_up"
]
}

View File

@@ -0,0 +1,57 @@
{
"character_id": "bubbles_ppg",
"character_name": "Bubbles",
"identity": {
"base_specs": "bubbles_(ppg),1girl, aged_up, mature_female, slender",
"hair": "blonde_hair, short_hair, twintails",
"eyes": "blue_eyes, large_eyes",
"hands": "",
"arms": "",
"torso": "medium breasts",
"pelvis": "",
"legs": "",
"feet": "",
"extra": ""
},
"defaults": {
"expression": "smiling",
"pose": "standing",
"scene": ""
},
"wardrobe": {
"full_body": "blue summer dress",
"headwear": "",
"top": "",
"bottom": " black_belt",
"legwear": "thigh high white socks",
"footwear": "black_footwear, mary_janes",
"hands": "",
"accessories": ""
},
"styles": {
"aesthetic": "vibrant_colors",
"primary_color": "blue",
"secondary_color": "white",
"tertiary_color": "black"
},
"lora": {
"lora_name": "",
"lora_weight": 1.0,
"lora_weight_min": 0.7,
"lora_weight_max": 1.0,
"lora_triggers": ""
},
"tags": [
"bubbles_(ppg)",
"1girl",
"aged_up",
"blonde_hair",
"twintails",
"blue_eyes",
"blue_dress",
"black_belt",
"white_socks",
"mary_janes",
"solo"
]
}

View File

@@ -0,0 +1,58 @@
{
"character_id": "buttercup_ppg",
"character_name": "Buttercup",
"identity": {
"base_specs": "1girl, buttercup_(ppg), aged_up, tomboy",
"hair": "black_hair, short_hair, bob_cut, flipped_hair",
"eyes": "green_eyes",
"hands": "",
"arms": "toned_arms",
"torso": "athletic_body, small_breasts",
"pelvis": "",
"legs": "",
"feet": "",
"extra": ""
},
"defaults": {
"expression": "smile, smirk",
"pose": "looking_at_viewer, arms_crossed",
"scene": ""
},
"wardrobe": {
"full_body": "",
"headwear": "",
"top": "green crop top, sleeveless, ",
"bottom": "black_belt, green shorts",
"legwear": "white knee high socks",
"footwear": "black army boots",
"hands": "fingerless leather gloves",
"accessories": ""
},
"styles": {
"aesthetic": "vibrant_colors, high_contrast",
"primary_color": "green",
"secondary_color": "black",
"tertiary_color": "white"
},
"lora": {
"lora_name": "",
"lora_weight": 1.0,
"lora_weight_min": 0.7,
"lora_weight_max": 1.0,
"lora_triggers": ""
},
"tags": [
"1girl",
"buttercup_(ppg)",
"aged_up",
"tomboy",
"short_hair",
"black_hair",
"bob_cut",
"green_eyes",
"green_dress",
"black_belt",
"white_leggings",
"mary_janes"
]
}

View File

@@ -0,0 +1,56 @@
{
"character_id": "clover_totally_spies",
"character_name": "Clover",
"identity": {
"base_specs": "1girl, solo, slender",
"hair": "blonde_hair, medium_hair, bob_cut",
"eyes": "blue_eyes",
"hands": "",
"arms": "",
"torso": "small breasts",
"pelvis": "",
"legs": "",
"feet": "",
"extra": ""
},
"defaults": {
"expression": "smile",
"pose": "standing",
"scene": ""
},
"wardrobe": {
"full_body": "red_bodysuit, latex_bodysuit, spandex",
"headwear": "",
"top": "",
"bottom": "",
"legwear": "",
"footwear": "high_heel_boots, boots",
"hands": "",
"accessories": "belt, silver_belt"
},
"styles": {
"aesthetic": "anime_style, 2000s_aesthetic",
"primary_color": "red",
"secondary_color": "silver",
"tertiary_color": "blonde"
},
"lora": {
"lora_name": "",
"lora_weight": 1.0,
"lora_weight_min": 0.7,
"lora_weight_max": 1.0,
"lora_triggers": ""
},
"tags": [
"clover_(totally_spies!)",
"totally_spies!",
"1girl",
"blonde_hair",
"blue_eyes",
"bob_cut",
"red_bodysuit",
"latex_bodysuit",
"high_heel_boots",
"silver_belt"
]
}

View File

@@ -0,0 +1,66 @@
{
"character_id": "hikage_senran_kagura",
"character_name": "Hikage - Senran Kagura",
"identity": {
"base_specs": "1girl, mature_female, large_breasts, athletic_build, pale_skin",
"hair": "green_hair, short_hair, spiked_hair",
"eyes": "yellow_eyes, slit_pupils",
"hands": "fingernails",
"arms": "arm_belt, tattoo",
"torso": "chest_tattoo, stomach_tattoo, navel",
"pelvis": "open_fly",
"legs": "torn_jeans, leg_belt",
"feet": "boots",
"extra": "neck_tattoo, snake_print"
},
"defaults": {
"expression": "stoic",
"pose": "standing",
"scene": ""
},
"wardrobe": {
"full_body": "torn_clothes",
"headwear": "",
"top": "yellow_shirt, crop_top, torn_clothes",
"bottom": "torn_jeans, open_fly, loose_belt",
"legwear": "",
"footwear": "boots",
"hands": "arm_belt",
"accessories": "leg_belt"
},
"styles": {
"aesthetic": "anime, video_game_character",
"primary_color": "yellow",
"secondary_color": "green",
"tertiary_color": "blue"
},
"lora": {
"lora_name": "Illustrious/Looks/SK_Hikage_IL.safetensors",
"lora_weight": 0.8,
"lora_triggers": "Hikage_IL, Hikage_Shinobi",
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
},
"tags": [
"hikage_(senran_kagura)",
"green_hair",
"short_hair",
"yellow_eyes",
"slit_pupils",
"large_breasts",
"neck_tattoo",
"chest_tattoo",
"stomach_tattoo",
"yellow_shirt",
"crop_top",
"torn_clothes",
"torn_jeans",
"open_fly",
"loose_belt",
"snake_print",
"arm_belt",
"leg_belt",
"anime",
"video_game_character"
]
}

View File

@@ -37,7 +37,7 @@
"tertiary_color": "black"
},
"lora": {
"lora_name": "Illustrious/Looks/Jasmine-IL_V2.safetensors",
"lora_name": "Illustrious/Looks/JasmineIL.safetensors",
"lora_weight": 0.8,
"lora_triggers": "",
"lora_weight_min": 0.8,

View File

@@ -22,7 +22,7 @@
"default": {
"full_body": "",
"headwear": "",
"top": "teal tank top,",
"top": "teal leotard",
"bottom": "brown shorts",
"legwear": "thigh holsters",
"footwear": "brown combat boots, red laces",

View File

@@ -0,0 +1,66 @@
{
"character_id": "princess_bubblegum",
"character_name": "Princess Bubblegum",
"identity": {
"base_specs": "1girl, princess_bonnibel_bubblegum, pink_skin,",
"hair": "pink_hair, long_hair, gum_hair",
"eyes": "black_eyes, dot_eyes, simple eyes",
"hands": "pink nails",
"arms": "",
"torso": "",
"pelvis": "",
"legs": "",
"feet": "",
"extra": ""
},
"defaults": {
"expression": "smile",
"pose": "standing",
"scene": "candy_kingdom"
},
"wardrobe": {
"default": {
"full_body": "pink_dress, ",
"headwear": "crown, gold_crown, blue_gemstone_on_crown, purple_collar, ",
"top": "puffy_sleeves",
"bottom": "purple belt",
"legwear": "",
"footwear": "",
"hands": "",
"accessories": "tiara"
},
"scientist": {
"full_body": "",
"headwear": "crown, gold_crown, blue_gemstone_on_crown, tied hair, safety goggles",
"top": "white lab coat",
"bottom": "",
"legwear": "",
"footwear": "",
"hands": "purple cuffs",
"accessories": "tiara"
}
},
"styles": {
"aesthetic": "adventure_time style,",
"primary_color": "pink",
"secondary_color": "purple",
"tertiary_color": "gold"
},
"lora": {
"lora_name": "Illustrious/Looks/Bubblegum_ILL.safetensors",
"lora_weight": 1.0,
"lora_weight_min": 0.7,
"lora_weight_max": 1.0,
"lora_triggers": ""
},
"tags": [
"princess_bonnibel_bubblegum",
"adventure_time",
"pink_hair",
"pink_skin",
"pink_dress",
"crown",
"long_hair",
"cartoon_style"
]
}

View File

@@ -20,7 +20,7 @@
},
"wardrobe": {
"default": {
"full_body": "pink ball gown",
"full_body": "pink gown",
"headwear": "gold crown",
"top": "white petticoat, puffy sleeves, dark pink panniers",
"bottom": "",

View File

@@ -0,0 +1,57 @@
{
"character_id": "shiki_senran_kagura",
"character_name": "Shiki",
"identity": {
"base_specs": "1girl, shiki_(senran_kagura), large_breasts, gyaru",
"hair": "blonde_hair, drill_hair, long_hair",
"eyes": "purple_eyes",
"hands": "",
"arms": "",
"torso": "cleavage",
"pelvis": "",
"legs": "",
"feet": "",
"extra": ""
},
"defaults": {
"expression": "smile",
"pose": "",
"scene": ""
},
"wardrobe": {
"full_body": "black_dress, frilled_dress, gothic_lolita",
"headwear": "black_hat, mini_hat",
"top": "",
"bottom": "",
"legwear": "black_thighhighs",
"footwear": "black_footwear",
"hands": "",
"accessories": "cross_necklace, scythe"
},
"styles": {
"aesthetic": "gothic_lolita",
"primary_color": "black",
"secondary_color": "purple",
"tertiary_color": "gold"
},
"lora": {
"lora_name": "Illustrious/Looks/shiki_kagura_ill_v01.safetensors",
"lora_weight": 1.0,
"lora_weight_min": 0.7,
"lora_weight_max": 1.0,
"lora_triggers": "shiki_(senran_kagura)"
},
"tags": [
"shiki_(senran_kagura)",
"senran_kagura",
"blonde_hair",
"drill_hair",
"purple_eyes",
"large_breasts",
"black_dress",
"mini_hat",
"thighhighs",
"cross_necklace",
"scythe"
]
}

View File

@@ -0,0 +1,64 @@
{
"character_id": "starfire_teen_titans",
"character_name": "Starfire - Teen Titans",
"identity": {
"base_specs": "1girl, tall, athletic",
"hair": "red_hair, long_hair",
"eyes": "green_eyes",
"hands": "",
"arms": "armlet, vambraces",
"torso": "small_breasts, crop_top",
"pelvis": "grey_belt",
"legs": "pencil_skirt",
"feet": "thigh_boots, purple_boots",
"extra": "gorget"
},
"defaults": {
"expression": "smile",
"pose": "hovering",
"scene": "starry sky"
},
"wardrobe": {
"full_body": "",
"headwear": "",
"top": "crop_top",
"bottom": "purple_skirt",
"legwear": "",
"footwear": "thigh_boots, purple_boots",
"hands": "vambraces",
"accessories": "gorget, grey_belt, armlet"
},
"styles": {
"aesthetic": "cartoon, superhero",
"primary_color": "purple",
"secondary_color": "red",
"tertiary_color": "green"
},
"lora": {
"lora_name": "Illustrious/Looks/Starfire IL.safetensors",
"lora_weight": 0.8,
"lora_triggers": "starfiredc",
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
},
"tags": [
"1girl",
"starfire",
"green_eyes",
"red_hair",
"long_hair",
"small_breasts",
"gorget",
"crop_top",
"armlet",
"pencil_skirt",
"purple_skirt",
"grey_belt",
"thigh_boots",
"vambraces",
"purple_boots",
"looking_at_viewer",
"smile",
"teen_titans"
]
}

View File

@@ -15,7 +15,7 @@
},
"defaults": {
"expression": "cheeky smile",
"pose": "holding glass orb, materia",
"pose": "wave",
"scene": "forest, sunlight"
},
"wardrobe": {
@@ -27,7 +27,7 @@
"legwear": "single kneehigh sock",
"footwear": "boots, ",
"hands": "fingerless glove on one hand, large gauntlet on one arm",
"accessories": "shuriken"
"accessories": "shuriken, materia"
}
},
"styles": {

View File

@@ -1,11 +1,11 @@
{
"checkpoint_path": "Illustrious/beretMixReal_v80.safetensors",
"base_negative": "worst quality, low quality, normal quality, watermark, sexual fluids, loli",
"base_positive": "masterpiece, best quality, photo realistic, ultra detailed, realistic skin, ultra high res, 8k, very aesthetic, absurdres,",
"cfg": 7,
"checkpoint_name": "beretMixReal_v80.safetensors",
"base_positive": "masterpiece, best quality, photo realistic, ultra detailed, realistic skin, ultra high res, 8k, very aesthetic, absurdres",
"base_negative": "worst quality, low quality, normal quality, watermark, sexual fluids",
"steps": 30,
"cfg": 7.0,
"checkpoint_path": "Illustrious/beretMixReal_v80.safetensors",
"sampler_name": "euler_ancestral",
"scheduler": "normal",
"sampler_name": "euler_ancestral",
"steps": 30,
"vae": "integrated"
}

View File

@@ -1,11 +1,11 @@
{
"checkpoint_path": "Illustrious/catpony_aniIlV51.safetensors",
"checkpoint_name": "catpony_aniIlV51.safetensors",
"base_positive": "masterpiece, best quality, 2.5D, very aesthetic, absurdres",
"base_negative": "lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, artist name",
"steps": 60,
"cfg": 3.0,
"base_positive": "masterpiece, best quality, 2.5D, very aesthetic, absurdres",
"cfg": 3,
"checkpoint_name": "catpony_aniIlV51.safetensors",
"checkpoint_path": "Illustrious/catpony_aniIlV51.safetensors",
"sampler_name": "euler_ancestral",
"scheduler": "normal",
"sampler_name": "euler_ancestral",
"vae": "integrated"
"steps": 60,
"vae": "sdxl_vae.safetensors"
}

View File

@@ -1,11 +1,11 @@
{
"checkpoint_path": "Illustrious/cutecandymix_illustrious.safetensors",
"checkpoint_name": "cutecandymix_illustrious.safetensors",
"base_positive": "masterpiece, best quality, very aesthetic, absurdres, year 2023",
"base_negative": "lowres, (bad), text, error, fewer, extra, missing, worst quality, jpeg artifacts, low quality, watermark, unfinished, displeasing, oldest, early, chromatic aberration, signature, extra digits, artistic error, username, scan, (abstract:0.9), ",
"steps": 28,
"cfg": 5.0,
"base_positive": "masterpiece, best quality, very aesthetic, absurdres, loli",
"cfg": 5,
"checkpoint_name": "cutecandymix_illustrious.safetensors",
"checkpoint_path": "Illustrious/cutecandymix_illustrious.safetensors",
"sampler_name": "euler_ancestral",
"scheduler": "normal",
"sampler_name": "euler_ancestral",
"steps": 28,
"vae": "sdxl_vae.safetensors"
}

View File

@@ -1,11 +1,11 @@
{
"checkpoint_path": "Illustrious/kawaiialluxanime_.safetensors",
"checkpoint_name": "kawaiialluxanime_.safetensors",
"base_positive": "masterpiece, best quality, absurdres, amazing quality, intricate details",
"base_negative": "lowres, worst quality, low quality, bad anatomy, bad hand, extra digits, ",
"steps": 25,
"cfg": 5.0,
"base_positive": "masterpiece, best quality, absurdres, amazing quality, intricate details",
"cfg": 5,
"checkpoint_name": "kawaiialluxanime_.safetensors",
"checkpoint_path": "Illustrious/kawaiialluxanime_.safetensors",
"sampler_name": "euler_ancestral",
"scheduler": "normal",
"sampler_name": "euler_ancestral",
"vae": "integrated"
"steps": 25,
"vae": "sdxl_vae.safetensors"
}

View File

@@ -1,11 +1,11 @@
{
"checkpoint_path": "Illustrious/perfectdeliberate_v60.safetensors",
"checkpoint_name": "perfectdeliberate_v60.safetensors",
"base_positive": "masterpiece, best quality, newest, absurdres, highres, 8K, ultra-detailed, realistic lighting",
"base_negative": "lowres, worst quality, bad quality, modern, recent, oldest, signature, username, logo, watermark, jpeg artifacts, bad hands, cropped, missing fingers, extra digits, fewer digits, error, bad anatomy, ugly, disfigured, young, long neck",
"steps": 28,
"cfg": 5.0,
"base_positive": "masterpiece, best quality, newest, absurdres, highres, 8K, ultra-detailed, realistic lighting",
"cfg": 5,
"checkpoint_name": "perfectdeliberate_v60.safetensors",
"checkpoint_path": "Illustrious/perfectdeliberate_v60.safetensors",
"sampler_name": "euler_ancestral",
"scheduler": "normal",
"sampler_name": "euler_ancestral",
"vae": "integrated"
"steps": 28,
"vae": "sdxl_vae.safetensors"
}

View File

@@ -15,7 +15,7 @@
"lora_name": "Illustrious/Clothing/AHSMaidILL.safetensors",
"lora_weight": 0.8,
"lora_triggers": "AHSMaidILL",
"lora_weight_min": 0.8,
"lora_weight_min": 0.6,
"lora_weight_max": 0.8
},
"tags": [

View File

@@ -1,10 +1,10 @@
{
"outfit_id": "bikini_02",
"outfit_name": "Bikini (Slingshot)",
"outfit_id": "swimsuit_slingshot",
"outfit_name": "Swimsuit - Slingshot",
"wardrobe": {
"full_body": "",
"full_body": "slingshot swimsuit",
"headwear": "",
"top": "slingshot swimsuit",
"top": "",
"bottom": "",
"legwear": "",
"footwear": "",

View File

@@ -7,7 +7,7 @@
"lora_weight_max": 0.8
},
"outfit_id": "bitch_illustrious_v1_0",
"outfit_name": "Bitch Illustrious V1 0",
"outfit_name": "Gyaru - Bitch Style",
"tags": [
"gyaru",
"jewelry",

View File

@@ -1,28 +1,25 @@
{
"outfit_id": "boundbeltedlatexnurseill",
"outfit_name": "Boundbeltedlatexnurseill",
"outfit_name": "Latex Nurse - Breast Belt",
"wardrobe": {
"full_body": "latex_dress",
"headwear": "nurse_cap, mouth mask",
"top": "",
"bottom": "",
"legwear": "",
"footwear": "",
"top": "(belt across breasts:1.2)",
"bottom": "latex skirt",
"legwear": "lace stockings",
"footwear": "latex thigh boots, high heels",
"hands": "elbow_gloves",
"accessories": "surgical_mask, belt, harness"
"accessories": ""
},
"lora": {
"lora_name": "Illustrious/Clothing/BoundBeltedLatexNurseILL.safetensors",
"lora_weight": 0.8,
"lora_triggers": "nurse_cap, latex_dress, elbow_gloves, surgical_mask, underboob_cutout",
"lora_weight_min": 0.8,
"lora_triggers": "latex nurse",
"lora_weight_min": 0.6,
"lora_weight_max": 0.8
},
"tags": [
"nurse",
"latex",
"underboob_cutout",
"bondage",
"clothing"
"latex"
]
}

View File

@@ -15,8 +15,8 @@
"lora_name": "Illustrious/Clothing/CafeCutieMaidILL.safetensors",
"lora_weight": 0.8,
"lora_triggers": "CafeCutieMaidILL",
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
"lora_weight_min": 0.2,
"lora_weight_max": 0.6
},
"tags": [
"maid_dress",

View File

@@ -2,9 +2,9 @@
"outfit_id": "cageddemonsunderbustdressill",
"outfit_name": "Cageddemonsunderbustdressill",
"wardrobe": {
"full_body": "latex_dress, underbust",
"full_body": "latex_dress",
"headwear": "",
"top": "pasties",
"top": "pasties, underbust",
"bottom": "",
"legwear": "",
"footwear": "",
@@ -15,7 +15,7 @@
"lora_name": "Illustrious/Clothing/CagedDemonsUnderbustDressILL.safetensors",
"lora_weight": 0.8,
"lora_triggers": "CagedDemonsUnderbustDressILL",
"lora_weight_min": 0.8,
"lora_weight_min": 0.2,
"lora_weight_max": 0.8
},
"tags": [

View File

@@ -0,0 +1,33 @@
{
"outfit_id": "candycanelatexlingerieill",
"outfit_name": "Candy Cane Latex Lingerie",
"wardrobe": {
"full_body": "red_capelet, latex_lingerie",
"headwear": "",
"top": "red_capelet, latex_bra",
"bottom": "latex_panties, garter_belt",
"legwear": "striped_thighhighs",
"footwear": "high_heels",
"hands": "",
"accessories": "candy_cane"
},
"lora": {
"lora_name": "Illustrious/Clothing/candycanelatexlingerieILL.safetensors",
"lora_weight": 0.8,
"lora_weight_min": 0.7,
"lora_weight_max": 1.0,
"lora_triggers": ""
},
"tags": [
"latex",
"lingerie",
"red_capelet",
"striped_thighhighs",
"high_heels",
"garter_belt",
"panties",
"striped_clothes",
"candy_cane",
"shiny"
]
}

View File

@@ -15,8 +15,8 @@
"lora_name": "Illustrious/Clothing/CheckingItOutHalterTopILL.safetensors",
"lora_weight": 0.8,
"lora_triggers": "CheckingItOutHalterTopILL",
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
"lora_weight_min": 0.2,
"lora_weight_max": 0.6
},
"tags": [
"blue",

View File

@@ -4,7 +4,7 @@
"wardrobe": {
"full_body": "",
"headwear": "",
"top": "shirt",
"top": "",
"bottom": "microskirt",
"legwear": "",
"footwear": "",

View File

@@ -1,22 +1,22 @@
{
"outfit_id": "flower_000001_1563226",
"outfit_name": "Flower 000001 1563226",
"outfit_name": "Swimsuit - Flower",
"wardrobe": {
"full_body": "",
"headwear": "",
"top": "bandeau",
"bottom": "high-waist_bikini",
"top": "flower bikini top",
"bottom": "flower bikini bottom",
"legwear": "",
"footwear": "",
"hands": "detached_sleeves",
"accessories": "fur_choker"
"hands": "",
"accessories": ""
},
"lora": {
"lora_name": "Illustrious/Clothing/Flower-000001_1563226.safetensors",
"lora_weight": 0.8,
"lora_triggers": "Jedpslb",
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
"lora_weight_max": 1.0
},
"tags": [
"bikini",

View File

@@ -15,8 +15,8 @@
"lora_name": "Illustrious/Clothing/V2_Latex_Maid_Illustrious.safetensors",
"lora_weight": 0.8,
"lora_triggers": "",
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
"lora_weight_min": 0.4,
"lora_weight_max": 1.0
},
"tags": [
"French Maid"

View File

@@ -2,7 +2,7 @@
"outfit_id": "french_maid_02",
"outfit_name": "French Maid (Latex)",
"wardrobe": {
"full_body": "",
"full_body": "latex maid",
"headwear": "hairband",
"top": "corset, low cut top",
"bottom": "frilled skirt",

View File

@@ -2,13 +2,13 @@
"outfit_id": "goth_girl_ill",
"outfit_name": "Goth Girl Ill",
"wardrobe": {
"full_body": "",
"headwear": "hood",
"full_body": "goth",
"headwear": "",
"top": "corset",
"bottom": "skirt",
"legwear": "thighhighs",
"footwear": "",
"hands": "",
"bottom": "lace skirt",
"legwear": "fishnet pantyhose",
"footwear": "lace up boots",
"hands": "fishnet elbow gloves",
"accessories": "choker, jewelry"
},
"lora": {
@@ -23,7 +23,6 @@
"makeup",
"black_lips",
"black_nails",
"eyeshadow",
"pale_skin"
"eyeshadow"
]
}

View File

@@ -1,28 +0,0 @@
{
"outfit_id": "idolswimsuitil_1665226",
"outfit_name": "Idolswimsuitil 1665226",
"wardrobe": {
"full_body": "bikini",
"headwear": "",
"top": "bandeau",
"bottom": "high-waist_bottom",
"legwear": "",
"footwear": "",
"hands": "",
"accessories": ""
},
"lora": {
"lora_name": "Illustrious/Clothing/IdolSwimsuitIL_1665226.safetensors",
"lora_weight": 1.0,
"lora_triggers": "Jedpslb",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
},
"tags": [
"pastel_colors",
"high-waist_bikini",
"strapless",
"bare_shoulders",
"navel"
]
}

View File

@@ -1,12 +1,12 @@
{
"outfit_id": "laceskimpyleotardill",
"outfit_name": "Laceskimpyleotardill",
"outfit_name": "Lingerie - Lace Leotard",
"wardrobe": {
"full_body": "leotard",
"headwear": "blindfold",
"full_body": "lace leotard",
"headwear": "",
"top": "",
"bottom": "",
"legwear": "fishnet_thighhighs",
"legwear": "lace stockings",
"footwear": "",
"hands": "",
"accessories": ""

View File

@@ -15,8 +15,8 @@
"lora_name": "Illustrious/Clothing/LatexNurseILL.safetensors",
"lora_weight": 0.7,
"lora_triggers": "latex nurse, nurse cap, red skirt, midriff, cleavage",
"lora_weight_min": 0.7,
"lora_weight_max": 0.7
"lora_weight_min": 0.4,
"lora_weight_max": 0.8
},
"tags": [
"nurse",

View File

@@ -15,7 +15,7 @@
"lora_name": "Illustrious/Clothing/OilSlickDressILL.safetensors",
"lora_weight": 0.8,
"lora_triggers": "black metallic dress, side slit, oil slick",
"lora_weight_min": 0.8,
"lora_weight_min": 0.2,
"lora_weight_max": 0.8
},
"tags": [

View File

@@ -0,0 +1,32 @@
{
"outfit_id": "tifalockhartff7advchilcasual_illu_dwnsty_000006",
"outfit_name": "Cosplay - Tifa Advent Children",
"wardrobe": {
"full_body": "cosplay",
"headwear": "",
"top": "black_vest",
"bottom": "black_shorts",
"legwear": "",
"footwear": "black_boots",
"hands": "fingerless_gloves",
"accessories": "arm_ribbon, pink_ribbon"
},
"lora": {
"lora_name": "Illustrious/Clothing/TifaLockhartFF7AdvChilCasual_Illu_Dwnsty-000006.safetensors",
"lora_weight": 0.8,
"lora_weight_min": 0.7,
"lora_weight_max": 1.0,
"lora_triggers": ""
},
"tags": [
"cosplay",
"black_vest",
"black_shorts",
"fingerless_gloves",
"arm_ribbon",
"pink_ribbon",
"black_boots",
"midriff",
"navel"
]
}

View File

@@ -0,0 +1,31 @@
{
"outfit_id": "tifalockhartff7advchilfeather_illu_dwnsty_000006",
"outfit_name": "Cosplay - Tifa Feather Dress",
"wardrobe": {
"full_body": "black_dress, strapless_dress, feather_trim",
"headwear": "feather_hair_ornament",
"top": "",
"bottom": "",
"legwear": "thighhighs",
"footwear": "",
"hands": "black_gloves, detached_sleeves",
"accessories": "black_feathers"
},
"lora": {
"lora_name": "Illustrious/Clothing/TifaLockhartFF7AdvChilFeather_Illu_Dwnsty-000006.safetensors",
"lora_weight": 0.8,
"lora_weight_min": 0.7,
"lora_weight_max": 1.0,
"lora_triggers": ""
},
"tags": [
"black_dress",
"feathers",
"black_feathers",
"detached_sleeves",
"black_gloves",
"thighhighs",
"feather_trim",
"strapless_dress"
]
}

View File

@@ -0,0 +1,34 @@
{
"outfit_id": "tifalockhartff7amarantsguise_illu_dwnsty_000008",
"outfit_name": "Cosplay - Tifa Amarant",
"wardrobe": {
"full_body": "red vest and white pants",
"headwear": "",
"top": "red vest, sleeveless, midriff",
"bottom": "white pants",
"legwear": "",
"footwear": "",
"hands": "red gloves, fingerless gloves",
"accessories": "jewelry, bangle"
},
"lora": {
"lora_name": "Illustrious/Clothing/TifaLockhartFF7AmarantsGuise_Illu_Dwnsty-000008.safetensors",
"lora_weight": 0.8,
"lora_weight_min": 0.8,
"lora_weight_max": 0.8,
"lora_triggers": "amarants guise, amarantstflckhrt"
},
"tags": [
"tifa_lockhart",
"final_fantasy_vii:_ever_crisis",
"red_vest",
"white_pants",
"midriff",
"navel",
"red_gloves",
"fingerless_gloves",
"sleeveless",
"jewelry",
"bangle"
]
}

View File

@@ -0,0 +1,31 @@
{
"outfit_id": "tifalockhartff7bahamutsuit_illu_dwnsty_000006",
"outfit_name": "Cosplay - Tifa Bahamut",
"wardrobe": {
"full_body": "black_bodysuit, black_armor, navel_cutout",
"headwear": "",
"top": "",
"bottom": "",
"legwear": "thighhighs",
"footwear": "",
"hands": "gauntlets",
"accessories": "mechanical_wings, dragon_wings"
},
"lora": {
"lora_name": "Illustrious/Clothing/TifaLockhartFF7BahamutSuit_Illu_Dwnsty-000006.safetensors",
"lora_weight": 0.8,
"lora_weight_min": 0.7,
"lora_weight_max": 1.0,
"lora_triggers": ""
},
"tags": [
"tifa_lockhart_(bahamut_suit)",
"black_bodysuit",
"black_armor",
"navel_cutout",
"thighhighs",
"gauntlets",
"mechanical_wings",
"dragon_wings"
]
}

View File

@@ -0,0 +1,33 @@
{
"outfit_id": "tifalockhartff7bunnybustier_illu_dwnsty",
"outfit_name": "Cosplay - Tifa Bunny",
"wardrobe": {
"full_body": "playboy_bunny",
"headwear": "rabbit_ears",
"top": "black_bustier",
"bottom": "",
"legwear": "fishnet_pantyhose",
"footwear": "high_heels",
"hands": "fingerless_gloves",
"accessories": "rabbit_tail, wrist_cuffs, bowtie, white_collar"
},
"lora": {
"lora_name": "Illustrious/Clothing/TifaLockhartFF7BunnyBustier_Illu_Dwnsty.safetensors",
"lora_weight": 0.8,
"lora_weight_min": 0.7,
"lora_weight_max": 1.0,
"lora_triggers": ""
},
"tags": [
"tifa_lockhart_(bunny_bustier)",
"playboy_bunny",
"rabbit_ears",
"black_bustier",
"fishnet_pantyhose",
"wrist_cuffs",
"bowtie",
"fingerless_gloves",
"rabbit_tail",
"white_collar"
]
}

View File

@@ -1,12 +1,13 @@
{
"detailer_id": "cutepussy_000006",
"detailer_name": "Cutepussy 000006",
"prompt": "pussy, spread_pussy, urethra, close-up, between_legs, uncensored",
"prompt": "clitoris, pussy, spread_pussy, urethra, close-up, between_legs, uncensored",
"lora": {
"lora_name": "Illustrious/Detailers/cutepussy-000006.safetensors",
"lora_weight": 1.15,
"lora_weight_min": 0.8,
"lora_weight_max": 1.5,
"lora_triggers": "cutepussy"
}
},
"tags": []
}

View File

@@ -1,12 +1,12 @@
{
"detailer_id": "sts_age_slider_illustrious_v1",
"detailer_name": "Sts Age Slider Illustrious V1",
"prompt": "mature_female, petite, aged_up, aged_down",
"lora": {
"lora_name": "Illustrious/Detailers/StS_Age_Slider_Illustrious_v1.safetensors",
"lora_weight": 1.0,
"lora_weight_min": -5.0,
"lora_weight_max": 5.0,
"lora_triggers": "StS_Age_Slider_Illustrious_v1"
}
"lora_triggers": "StS_Age_Slider_Illustrious_v1",
"lora_weight": 1,
"lora_weight_max": -5,
"lora_weight_min": -5
},
"prompt": "loli, child, young, small"
}

View File

@@ -0,0 +1,13 @@
{
"detailer_id": "xtrasmol_000019_1595565",
"detailer_name": "Hand Held",
"prompt": "teeny, tiny girl, minigirl, size_difference, held in hand, mini girl, on palm",
"lora": {
"lora_name": "Illustrious/Detailers/XtraSmol-000019_1595565.safetensors",
"lora_weight": 0.6,
"lora_weight_min": 0.5,
"lora_weight_max": 0.7,
"lora_triggers": ""
},
"tags": []
}

View File

@@ -1,14 +1,14 @@
{
"look_id": "aged_up_powerpuff_girls",
"look_name": "Aged Up Powerpuff Girls",
"character_id": "",
"character_id": null,
"positive": "powerpuff_girls, aged_up, tight_dress",
"negative": "watermark, pubic_hair, same_face, bad_anatomy",
"lora": {
"lora_name": "Illustrious/Looks/Aged_up_Powerpuff_Girls.safetensors",
"lora_weight": 1.0,
"lora_triggers": "blossom (powerpuff girls), bubbles (powerpuff girls), buttercup (powerpuff girls)",
"lora_weight_min": 1.0,
"lora_triggers": "ppg",
"lora_weight_min": 0.4,
"lora_weight_max": 1.0
},
"tags": [

View File

@@ -1,16 +1,16 @@
{
"character_id": null,
"look_id": "beardy_man_ilxl_000003",
"look_name": "Beardy Man Ilxl 000003",
"character_id": "",
"positive": "1boy, mature_male, beard, facial_hair, solo",
"negative": "1girl, female",
"lora": {
"lora_name": "Illustrious/Looks/beardy-man-ilxl-000003.safetensors",
"lora_weight": 0.8,
"lora_triggers": "beard",
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
"lora_weight_min": 0.5,
"lora_weight_max": 0.7
},
"negative": "1girl, female, asian, muscular",
"positive": "1boy, beard, facial_hair,",
"tags": [
"1boy",
"mature_male",

View File

@@ -1,7 +1,7 @@
{
"look_id": "becky_illustrious",
"look_name": "Becky Illustrious",
"character_id": "",
"character_id": "becky_blackbell",
"positive": "becky_blackbell, spy_x_family, 1girl, solo, brown_eyes, brown_hair, short_hair, twintails, flat_chest, hairclip, hair_scrunchie, white_scrunchie, eden_academy_school_uniform, neck_ribbon, red_ribbon, collared_shirt, black_dress, gold_trim, black_sleeves, long_sleeves",
"negative": "long_hair, mature_female",
"lora": {

View File

@@ -1,7 +1,7 @@
{
"look_id": "bubblegum_ill",
"look_name": "Bubblegum Ill",
"character_id": "",
"character_id": "princess_bubblegum",
"positive": "princess_bonnibel_bubblegum, adventure_time, 1girl, pink_skin, pink_hair, long_hair, pink_dress, puffy_short_sleeves, long_skirt, crown, no_nose",
"negative": "nose, realistic, photorealistic, 3d, human",
"lora": {

View File

@@ -8,7 +8,7 @@
"lora_name": "Illustrious/Looks/CammyWhiteIllustrious.safetensors",
"lora_weight": 1.0,
"lora_triggers": "CAMSF",
"lora_weight_min": 1.0,
"lora_weight_min": 0.2,
"lora_weight_max": 1.0
},
"tags": [

View File

@@ -1,18 +0,0 @@
{
"look_id": "candycanelatexlingerieill",
"look_name": "Candycanelatexlingerieill",
"character_id": "",
"positive": "latex, lingerie, red_capelet, striped_thighhighs, high_heels, garter_straps, panties, stripes, candy_cane",
"negative": "",
"lora": {
"lora_name": "Illustrious/Looks/candycanelatexlingerieILL.safetensors",
"lora_weight": 0.75,
"lora_triggers": "candy cane latex lingerie",
"lora_weight_min": 0.75,
"lora_weight_max": 0.75
},
"tags": [
"clothing",
"lingeriefetish"
]
}

View File

@@ -1,24 +1,19 @@
{
"look_id": "faceless_ugly_bastardv1il_000014",
"look_name": "Faceless Ugly Bastardv1Il 000014",
"character_id": "",
"positive": "ugly_bastard, faceless_male, shaded_face, old_man, fat_man, obese, big_belly, smug",
"negative": "handsome, bishounen, muscular, thin, visible_face",
"character_id": null,
"positive": "1boy, (faceless_male:1.5),, fat_man, oji-san, male out of frame,",
"negative": "handsome, bishounen, muscular, thin, visible male face",
"lora": {
"lora_name": "Illustrious/Looks/Faceless-Ugly-BastardV1IL-000014.safetensors",
"lora_weight": 0.8,
"lora_triggers": "UBV1F",
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
"lora_triggers": "UBV1F, faceless_male",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
},
"tags": [
"ugly_bastard",
"faceless_male",
"shaded_face",
"old_man",
"fat_man",
"obese",
"big_belly",
"smug"
"fat_man"
]
}

View File

@@ -1,8 +1,8 @@
{
"look_id": "hulkenbergmr_illu_bsinky_v1",
"look_name": "Hulkenbergmr Illu Bsinky V1",
"character_id": "",
"positive": "metaphor:_refantazio, 1girl, red_hair, long_hair, blunt_bangs, sidelocks, aqua_eyes, v-shaped_eyebrows, pointy_ears, white_ascot, cleavage, breastplate, black_armor, black_capelet, high-waist_pants, blue_pants, long_sleeves, blue_sleeves, black_gloves, high_heel_boots, ankle_boots, brown_boots, halberd",
"character_id": null,
"positive": "metaphor:_refantazio, 1girl, red_hair, long_hair, blunt_bangs, sidelocks, aqua_eyes, v-shaped_eyebrows, pointy_ears, white_ascot, cleavage, breastplate, black_armor, black_capelet, high-waist_pants, dark navy_pants, long_sleeves, dark navy_sleeves, black_gloves, high_heel_boots, ankle_boots, brown_boots, halberd",
"negative": "black_bodysuit, frills, black_jacket, cropped_jacket, choker, lowres, bad_anatomy, bad_hands",
"lora": {
"lora_name": "Illustrious/Looks/HulkenbergMR-illu-bsinky-v1.safetensors",

View File

@@ -1,9 +1,7 @@
{
"character_id": null,
"look_id": "starfire_il",
"look_name": "Starfire Il",
"character_id": "starfire",
"positive": "1girl, starfire, green_eyes, red_hair, long_hair, small_breasts, gorget, crop_top, armlet, pencil_skirt, purple_skirt, grey_belt, thigh_boots, vambraces, purple_boots, looking_at_viewer, smile",
"negative": "lowres, bad_anatomy, bad_hands, text, error, missing_fingers, extra_digit, fewer_digits, cropped, worst_quality, low_quality, normal_quality, jpeg_artifacts, signature, watermark, username, blurry, short_hair, blue_eyes, huge_breasts",
"lora": {
"lora_name": "Illustrious/Looks/Starfire IL.safetensors",
"lora_weight": 0.8,
@@ -11,6 +9,8 @@
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
},
"negative": "lowres, bad_anatomy, bad_hands, text, error, missing_fingers, extra_digit, fewer_digits, cropped, worst_quality, low_quality, normal_quality, jpeg_artifacts, signature, watermark, username, blurry, short_hair, blue_eyes, huge_breasts",
"positive": "1girl, starfire, green_eyes, red_hair, long_hair, small_breasts, gorget, crop_top, armlet, pencil_skirt, purple_skirt, grey_belt, thigh_boots, vambraces, purple_boots, looking_at_viewer, smile",
"tags": [
"anime",
"cartoon",

View File

@@ -1,7 +1,7 @@
{
"look_id": "tblossom_illustriousxl",
"look_name": "Tblossom Illustriousxl",
"character_id": "",
"character_id": "blossom_ppg",
"positive": "blossom_(ppg), 1girl, orange_hair, very_long_hair, high_ponytail, hair_bow, red_bow, huge_bow, pink_eyes, red_lips, pink_top, crop_top, midriff, navel, red_pants, belt, ribbon",
"negative": "lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, short_hair",
"lora": {

View File

@@ -1,27 +0,0 @@
{
"look_id": "tifalockhartff7advchilcasual_illu_dwnsty_000006",
"look_name": "Tifalockhartff7Advchilcasual Illu Dwnsty 000006",
"character_id": "tifa_lockhart",
"positive": "tifa_lockhart, final_fantasy_vii:_advent_children, 1girl, solo, long_hair, black_hair, red_eyes, white_tank_top, black_vest, black_shorts, fingerless_gloves, arm_ribbon, pink_ribbon, midriff, navel, black_boots, realistic",
"negative": "lowres, worst_quality, low_quality, bad_anatomy, multiple_views, jpeg_artifacts, artist_name, young, 3d, render, doll",
"lora": {
"lora_name": "Illustrious/Looks/TifaLockhartFF7AdvChilCasual_Illu_Dwnsty-000006.safetensors",
"lora_weight": 0.8,
"lora_triggers": "tifa_lockhart, final_fantasy_vii:_advent_children",
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
},
"tags": [
"tifa_lockhart",
"final_fantasy_vii:_advent_children",
"white_tank_top",
"black_vest",
"black_shorts",
"fingerless_gloves",
"arm_ribbon",
"pink_ribbon",
"midriff",
"navel",
"black_boots"
]
}

View File

@@ -1,26 +0,0 @@
{
"look_id": "tifalockhartff7advchilfeather_illu_dwnsty_000006",
"look_name": "Tifalockhartff7Advchilfeather Illu Dwnsty 000006",
"character_id": "tifa_lockhart",
"positive": "tifa_lockhart, tifa_lockhart_(feather_style), black_dress, feathers, black_feathers, detached_sleeves, black_gloves, thighhighs, long_hair, red_eyes, masterpiece, best quality, high resolution, detailed eyes, realistic body, game cg",
"negative": "(lowres:1.2), (worst quality:1.4), (low quality:1.4), (bad anatomy:1.4), multiple views, jpeg artifacts, artist name, young, brown_eyes",
"lora": {
"lora_name": "Illustrious/Looks/TifaLockhartFF7AdvChilFeather_Illu_Dwnsty-000006.safetensors",
"lora_weight": 0.8,
"lora_triggers": "feathertflckhrt, tifa_lockhart, feather_style",
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
},
"tags": [
"tifa_lockhart",
"tifa_lockhart_(feather_style)",
"black_dress",
"feathers",
"black_feathers",
"detached_sleeves",
"black_gloves",
"thighhighs",
"long_hair",
"red_eyes"
]
}

View File

@@ -1,30 +0,0 @@
{
"look_id": "tifalockhartff7amarantsguise_illu_dwnsty_000008",
"look_name": "Tifalockhartff7Amarantsguise Illu Dwnsty 000008",
"character_id": "tifa_lockhart",
"positive": "tifa_lockhart, final_fantasy_vii:_ever_crisis, red_vest, white_pants, midriff, navel, red_gloves, fingerless_gloves, sleeveless, red_eyes, black_hair, long_hair, jewelry, bangles",
"negative": "lowres, bad anatomy, bad hands, white_tank_top, skirt, suspenders, short_hair",
"lora": {
"lora_name": "Illustrious/Looks/TifaLockhartFF7AmarantsGuise_Illu_Dwnsty-000008.safetensors",
"lora_weight": 0.8,
"lora_triggers": "amarants guise, amarantstflckhrt",
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
},
"tags": [
"tifa_lockhart",
"final_fantasy_vii:_ever_crisis",
"red_vest",
"white_pants",
"midriff",
"navel",
"red_gloves",
"fingerless_gloves",
"sleeveless",
"red_eyes",
"black_hair",
"long_hair",
"jewelry",
"bangles"
]
}

View File

@@ -1,28 +0,0 @@
{
"look_id": "tifalockhartff7bahamutsuit_illu_dwnsty_000006",
"look_name": "Tifalockhartff7Bahamutsuit Illu Dwnsty 000006",
"character_id": "tifa_lockhart",
"positive": "tifa_lockhart_(bahamut_suit), tifa_lockhart, black_bodysuit, black_armor, mechanical_wings, dragon_wings, gauntlets, navel_cutout, thighhighs, red_eyes, black_hair, long_hair",
"negative": "short_hair, blonde_hair, blue_eyes",
"lora": {
"lora_name": "Illustrious/Looks/TifaLockhartFF7BahamutSuit_Illu_Dwnsty-000006.safetensors",
"lora_weight": 0.8,
"lora_triggers": "bahamut suit",
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
},
"tags": [
"tifa_lockhart_(bahamut_suit)",
"tifa_lockhart",
"black_bodysuit",
"black_armor",
"mechanical_wings",
"dragon_wings",
"gauntlets",
"navel_cutout",
"thighhighs",
"red_eyes",
"black_hair",
"long_hair"
]
}

View File

@@ -1,23 +0,0 @@
{
"look_id": "tifalockhartff7bunnybustier_illu_dwnsty",
"look_name": "Tifalockhartff7Bunnybustier Illu Dwnsty",
"character_id": "tifa_lockhart",
"positive": "tifa_lockhart, tifa_lockhart_(bunny_bustier), playboy_bunny, rabbit_ears, black_bustier, fishnet_pantyhose, wrist_cuffs, bowtie, black_gloves, fingerless_gloves, black_hair, long_hair, red_eyes, split_bangs, cleavage, large_breasts, detailed_eyes, realistic_body, game_cg, game_screenshot, masterpiece, best_quality, high_resolution, very_aesthetic, professional, high_quality, portrait",
"negative": "lowres, worst_quality, low_quality, bad_anatomy, multiple_views, jpeg_artifacts, artist_name, young, blurry, bad_hands, text, watermark, signature",
"lora": {
"lora_name": "Illustrious/Looks/TifaLockhartFF7BunnyBustier_Illu_Dwnsty.safetensors",
"lora_weight": 0.8,
"lora_triggers": "tifa_lockhart, tifa_lockhart_(bunny_bustier), playboy_bunny",
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
},
"tags": [
"tifa_lockhart",
"bunny_girl",
"playboy_bunny",
"outfit",
"black_bustier",
"fishnet_pantyhose",
"rabbit_ears"
]
}

View File

@@ -1,19 +0,0 @@
{
"look_id": "xtrasmol_000019_1595565",
"look_name": "Xtrasmol 000019 1595565",
"character_id": "",
"positive": "1girl, minigirl, size_difference, mature_female, solo",
"negative": "multiple_girls, simple_background, lowres, bad_anatomy, bad_hands, text, error, missing_fingers, extra_digit, fewer_digits, cropped, worst_quality, low_quality, normal_quality, jpeg_artifacts, signature, watermark, username, blurry",
"lora": {
"lora_name": "Illustrious/Looks/XtraSmol-000019_1595565.safetensors",
"lora_weight": 0.6,
"lora_triggers": "teeny, tinygirl",
"lora_weight_min": 0.6,
"lora_weight_max": 0.6
},
"tags": [
"minigirl",
"size_difference",
"mature_female"
]
}

View File

@@ -2,7 +2,7 @@
"preset_id": "example_01",
"preset_name": "Example Preset",
"character": {
"character_id": "aerith_gainsborough",
"character_id": "anya_(spy_x_family)",
"use_lora": true,
"fields": {
"identity": {
@@ -39,11 +39,11 @@
}
},
"outfit": {
"outfit_id": null,
"outfit_id": "random",
"use_lora": true
},
"action": {
"action_id": "random",
"action_id": null,
"use_lora": true,
"fields": {
"full_body": true,
@@ -59,7 +59,7 @@
"use_lora": true
},
"scene": {
"scene_id": "random",
"scene_id": null,
"use_lora": true,
"fields": {
"background": true,
@@ -71,7 +71,7 @@
}
},
"detailer": {
"detailer_id": null,
"detailer_id": "sts_age_slider_illustrious_v1",
"use_lora": true
},
"look": {

View File

@@ -0,0 +1,33 @@
You are an AI assistant that converts character profiles to other entity types.
Your task is to transform a character profile into a different type of entity while preserving the core identity and adapting it to the new context.
Available target types:
1. **Look** - Character appearance, facial features, body type, hair, eyes
2. **Outfit** - Clothing, accessories, fashion style
3. **Action** - Pose, activity, movement, interaction
4. **Style** - Artistic style, rendering technique, visual aesthetic
5. **Scene** - Background, environment, setting, lighting
6. **Detailer** - Enhancement, detail level, quality improvement
Conversion Guidelines:
- Extract relevant information from the character profile
- Adapt the structure to match the target type's expected JSON format
- Preserve key visual elements that make sense for the target type
- Add appropriate fields specific to the target type
- Maintain consistency with the original character's identity
Output Requirements:
- Return ONLY valid JSON
- No markdown formatting
- Include all required fields for the target type
- Use appropriate field names for the target type
- Keep the JSON structure clean and well-organized
Example conversions:
- Character with "cyberpunk ninja" description → Look: focus on cybernetic features, ninja attire
- Character with "elegant ball gown" → Outfit: focus on dress details, accessories
- Character with "fighting stance" → Action: focus on pose, movement, combat details
- Character with "watercolor painting" → Style: focus on artistic technique, brush strokes
- Character in "forest clearing" → Scene: focus on environment, lighting, vegetation
- Character with "high detail" → Detailer: focus on enhancement parameters, quality settings

View File

@@ -24,8 +24,8 @@
"lora_name": "Illustrious/Backgrounds/Barbie_b3dr00m-i.safetensors",
"lora_weight": 1.0,
"lora_triggers": "barbie bedroom",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
"lora_weight_min": 0.4,
"lora_weight_max": 0.8
},
"tags": [
"barbie_(franchise)",

View File

@@ -24,7 +24,7 @@
"lora_name": "Illustrious/Backgrounds/Before_the_Chalkboard_IL.safetensors",
"lora_weight": 1.0,
"lora_triggers": "standing beside desk, chalkboard, indoors",
"lora_weight_min": 1.0,
"lora_weight_min": 0.6,
"lora_weight_max": 1.0
},
"tags": [

View File

@@ -24,8 +24,8 @@
"lora_name": "Illustrious/Backgrounds/Laboratory_-_IL.safetensors",
"lora_weight": 0.7,
"lora_triggers": "l4b",
"lora_weight_min": 0.7,
"lora_weight_max": 0.7
"lora_weight_min": 0.6,
"lora_weight_max": 1.0
},
"tags": [
"indoors",

View File

@@ -1,6 +1,6 @@
{
"scene_id": "mysterious_4lch3my_sh0p_i",
"scene_name": "Mysterious 4Lch3My Sh0P I",
"scene_name": "Alchemy Shop",
"description": "A dimly lit, mysterious alchemy shop filled with ancient books, glowing potions, and strange magical artifacts like preserved eyes and enchanted daggers.",
"scene": {
"background": "indoors, alchemy laboratory, cluttered, bookshelf, potion, glass bottle, spider web, stone wall, mist, shelves, ancient",
@@ -24,7 +24,7 @@
"lora_name": "Illustrious/Backgrounds/mysterious_4lch3my_sh0p-i.safetensors",
"lora_weight": 1.0,
"lora_triggers": "mysterious 4lch3my sh0p",
"lora_weight_min": 1.0,
"lora_weight_min": 0.6,
"lora_weight_max": 1.0
},
"tags": [

View File

@@ -22,8 +22,8 @@
"lora_name": "Illustrious/Backgrounds/privacy_screen_anyillustriousXLFor_v11_came_1420_v1.0.safetensors",
"lora_weight": 1.0,
"lora_triggers": "privacy_curtains, hospital_curtains",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
"lora_weight_min": 0.2,
"lora_weight_max": 0.8
},
"tags": [
"hospital",

View File

@@ -9,7 +9,7 @@
"lora_name": "Illustrious/Styles/3DVisualArt1llust.safetensors",
"lora_weight": 0.8,
"lora_triggers": "3DVisualArt1llust",
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
"lora_weight_min": 0.2,
"lora_weight_max": 0.3
}
}

View File

@@ -9,7 +9,7 @@
"lora_name": "Illustrious/Styles/748cmXL_il_lokr_V6311P_1321893.safetensors",
"lora_weight": 0.8,
"lora_triggers": "748cmXL_il_lokr_V6311P_1321893",
"lora_weight_min": 0.8,
"lora_weight_min": 0.7,
"lora_weight_max": 0.8
}
}

View File

@@ -3,13 +3,13 @@
"style_name": "7B Dream",
"style": {
"artist_name": "7b",
"artistic_style": "3d, blender, semi-realistic"
"artistic_style": "3d, blender_(medium) , semi-realistic"
},
"lora": {
"lora_name": "Illustrious/Styles/7b-style.safetensors",
"lora_weight": 1.0,
"lora_triggers": "7b-style",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
"lora_weight_min": 0.8,
"lora_weight_max": 1.2
}
}

View File

@@ -9,7 +9,7 @@
"lora_name": "Illustrious/Styles/[Reinaldo Quintero (REIQ)] Artist Style Illustrious.safetensors",
"lora_weight": 1.0,
"lora_triggers": "[Reinaldo Quintero (REIQ)] Artist Style Illustrious",
"lora_weight_min": 1.0,
"lora_weight_min": 0.2,
"lora_weight_max": 1.0
}
}

View File

@@ -3,7 +3,7 @@
"style_name": "Anime Artistic 2",
"style": {
"artist_name": "",
"artistic_style": ""
"artistic_style": "anime, artistic, digital painting"
},
"lora": {
"lora_name": "Illustrious/Styles/Anime_artistic_2.safetensors",

View File

@@ -9,7 +9,7 @@
"lora_name": "Illustrious/Styles/BlossomBreeze1llust.safetensors",
"lora_weight": 1.0,
"lora_triggers": "BlossomBreeze1llust",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
"lora_weight_min": 0.4,
"lora_weight_max": 0.6
}
}

View File

@@ -1,15 +1,15 @@
{
"style_id": "brushwork1llust",
"style_name": "Brushwork",
"style": {
"artist_name": "",
"artistic_style": ""
},
"lora": {
"lora_name": "Illustrious/Styles/Brushwork1llust.safetensors",
"lora_triggers": "hshiArt",
"lora_weight": 0.95,
"lora_triggers": "Brushwork1llust",
"lora_weight_min": 0.95,
"lora_weight_max": 0.95
}
"lora_weight_max": 0.9,
"lora_weight_min": 0.7
},
"style": {
"artist_name": "",
"artistic_style": "brushwork,layeredtextures,loose and expressive brushstrokes,bold and rough brushstrokes"
},
"style_id": "brushwork1llust",
"style_name": "Brushwork"
}

View File

@@ -1,15 +1,15 @@
{
"style_id": "cum_on_ero_figur",
"style_name": "Cum On Ero Figur",
"style_name": "Cum On Ero Figure",
"style": {
"artist_name": "",
"artistic_style": "cum_on_ero_figur, figurine, (cum:1.2)"
"artistic_style": "figurine, (cum:1.2)"
},
"lora": {
"lora_name": "Illustrious/Styles/cum_on_ero_figur.safetensors",
"lora_weight": 0.9,
"lora_triggers": "cum on figure, figurine",
"lora_weight_min": 0.9,
"lora_weight_max": 0.9
"lora_weight_min": 0.8,
"lora_weight_max": 0.95
}
}

View File

@@ -1,15 +1,15 @@
{
"style_id": "cunny_000024",
"style_name": "Cunny 000024",
"style": {
"artist_name": "",
"artistic_style": ""
},
"lora": {
"lora_name": "Illustrious/Styles/cunny-000024.safetensors",
"lora_weight": 0.9,
"lora_triggers": "cunny-000024",
"lora_weight_min": 0.9,
"lora_weight_max": 0.9
}
"lora_weight": 0.9,
"lora_weight_max": 0.6,
"lora_weight_min": 0.4
},
"style": {
"artist_name": "",
"artistic_style": "loli"
},
"style_id": "cunny_000024",
"style_name": "Cunny 000024"
}

View File

@@ -9,7 +9,7 @@
"lora_name": "Illustrious/Styles/cutesexyrobutts_style_illustrious_goofy.safetensors",
"lora_weight": 1.0,
"lora_triggers": "cutesexyrobutts_style_illustrious_goofy",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
"lora_weight_min": 0.4,
"lora_weight_max": 0.8
}
}

View File

@@ -9,7 +9,7 @@
"lora_name": "Illustrious/Styles/DarkAesthetic2llust.safetensors",
"lora_weight": 0.9,
"lora_triggers": "DarkAesthetic2llust",
"lora_weight_min": 0.9,
"lora_weight_max": 0.9
"lora_weight_min": 0.4,
"lora_weight_max": 0.6
}
}

View File

@@ -6,10 +6,10 @@
"artistic_style": "ethereal"
},
"lora": {
"lora_name": "Illustrious/Styles/EtherealMist1llust.safetensors",
"lora_name": "",
"lora_weight": 1.0,
"lora_triggers": "EtherealMist1llust",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
"lora_weight_min": 0.6,
"lora_weight_max": 0.8
}
}

Some files were not shown because too many files have changed in this diff Show More