3 Commits

Author SHA1 Message Date
Aodhan Collins
3c828a170f Add background job queue system for generation
- Implements sequential job queue with background worker thread (_enqueue_job, _queue_worker)
- All generate routes now return job_id instead of prompt_id; frontend polls /api/queue/<id>/status
- Queue management UI in navbar with live badge, job list, pause/resume/remove controls
- Fix: replaced url_for() calls inside finalize callbacks with direct string paths (url_for raises RuntimeError without request context in background threads)
- Batch cover generation now uses two-phase pattern: queue all jobs upfront, then poll concurrently via Promise.all so page navigation doesn't interrupt the process
- Strengths gallery sweep migrated to same two-phase pattern; sgStop() cancels queued jobs server-side
- LoRA weight randomisation via lora_weight_min/lora_weight_max already present in _resolve_lora_weight

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 02:32:50 +00:00
Aodhan Collins
ae7ba961c1 Add danbooru-mcp auto-start, git sync, status API endpoints, navbar status indicators, and LLM format retry
- app.py: add subprocess import; add _ensure_mcp_repo() to clone/pull
  danbooru-mcp from https://git.liveaodh.com/aodhan/danbooru-mcp into
  tools/danbooru-mcp/ at startup; add ensure_mcp_server_running() which
  calls _ensure_mcp_repo() then starts the Docker container if not running;
  add GET /api/status/comfyui and GET /api/status/mcp health endpoints;
  fix call_llm() to retry up to 3 times on unexpected response format
  (KeyError/IndexError), logging the raw response and prompting the LLM
  to respond with valid JSON before each retry
- templates/layout.html: add ComfyUI and MCP status dot indicators to
  navbar; add polling JS that checks both endpoints on load and every 30s
- static/style.css: add .service-status, .status-dot, .status-ok,
  .status-error, .status-checking styles and status-pulse keyframe animation
- .gitignore: add tools/ to exclude the cloned danbooru-mcp repo
2026-03-03 00:57:27 +00:00
Aodhan Collins
0b8802deb5 Add Checkpoints Gallery with per-checkpoint generation settings
- New Checkpoint model (slug, name, checkpoint_path, data JSON, image_path)
- sync_checkpoints() loads metadata from data/checkpoints/*.json and falls
  back to template defaults for models without a JSON file
- _apply_checkpoint_settings() applies per-checkpoint steps, CFG, sampler,
  base positive/negative prompts, and VAE (with dynamic VAELoader node
  injection for non-integrated VAEs) to the ComfyUI workflow
- Bulk Create from Checkpoints: scans Illustrious/Noob model directories,
  reads matching HTML files, uses LLM to populate metadata, falls back to
  template defaults when no HTML is present
- Gallery index with batch cover generation and WebSocket progress bar
- Detail page showing Generation Settings and Base Prompts cards
- Checkpoints nav link added to layout
- New data/prompts/checkpoint_system.txt LLM system prompt
- Updated README with all current galleries and file structure
- Also includes accumulated action/scene JSON updates, new actions, and
  other template/generator improvements from prior sessions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-26 21:25:23 +00:00
1199 changed files with 26672 additions and 7495 deletions

3
.gitignore vendored
View File

@@ -31,3 +31,6 @@ Thumbs.db
# Logs # Logs
*.log *.log
# Tools (cloned at runtime — not tracked in this repo)
tools/

398
CLAUDE.md Normal file
View File

@@ -0,0 +1,398 @@
# GAZE — Character Browser: LLM Development Guide
## What This Project Is
GAZE is a Flask web app for managing AI image generation assets and generating images via ComfyUI. It is a **personal creative tool** for organizing characters, outfits, actions, styles, scenes, and detailers — all of which map to Stable Diffusion LoRAs and prompt fragments — and generating images by wiring those assets into a ComfyUI workflow at runtime.
The app is deployed locally, connects to a local ComfyUI instance at `http://127.0.0.1:8188`, and uses SQLite for persistence. LoRA and model files live on `/mnt/alexander/AITools/Image Models/`.
---
## 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.
### 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.
**Models**: `Character`, `Look`, `Outfit`, `Action`, `Style`, `Scene`, `Detailer`, `Checkpoint`, `Settings`
All category models (except Settings and Checkpoint) share this pattern:
- `{entity}_id` — canonical ID (from JSON, often matches filename without extension)
- `slug` — URL-safe version of the ID (alphanumeric + underscores only, via `re.sub(r'[^a-zA-Z0-9_]', '', id)`)
- `name` — display name
- `filename` — original JSON filename
- `data` — full JSON blob (SQLAlchemy JSON column)
- `default_fields` — list of `section::key` strings saved as the user's preferred prompt fields
- `image_path` — relative path under `static/uploads/`
### Data Flow: JSON → DB → Prompt → ComfyUI
1. **JSON files** in `data/{characters,clothing,actions,styles,scenes,detailers,looks}/` are loaded by `sync_*()` functions into SQLite.
2. At generation time, `build_prompt(data, selected_fields, default_fields, active_outfit)` converts the character JSON blob into `{"main": ..., "face": ..., "hand": ...}` prompt strings.
3. `_prepare_workflow(workflow, character, prompts, ...)` wires prompts and LoRAs into the loaded `comfy_workflow.json`.
4. `queue_prompt(workflow, client_id)` POSTs the workflow to ComfyUI's `/prompt` endpoint.
5. The app polls `get_history(prompt_id)` and retrieves the image via `get_image(filename, subfolder, type)`.
---
## ComfyUI Workflow Node Map
The workflow (`comfy_workflow.json`) uses string node IDs. These are the critical nodes:
| Node | Role |
|------|------|
| `3` | Main KSampler |
| `4` | Checkpoint loader |
| `5` | Empty latent (width/height) |
| `6` | Positive prompt — contains `{{POSITIVE_PROMPT}}` placeholder |
| `7` | Negative prompt |
| `8` | VAE decode |
| `9` | Save image |
| `11` | Face ADetailer |
| `13` | Hand ADetailer |
| `14` | Face detailer prompt — contains `{{FACE_PROMPT}}` placeholder |
| `15` | Hand detailer prompt — contains `{{HAND_PROMPT}}` placeholder |
| `16` | Character LoRA (or Look LoRA when a Look is active) |
| `17` | Outfit LoRA |
| `18` | Action LoRA |
| `19` | Style / Detailer / Scene LoRA (priority: style > detailer > scene) |
LoRA nodes chain: `4 → 16 → 17 → 18 → 19`. Unused LoRA nodes are bypassed by pointing `model_source`/`clip_source` directly to the prior node. All model/clip consumers (nodes 3, 6, 7, 11, 13, 14, 15) are wired to the final `model_source`/`clip_source` at the end of `_prepare_workflow`.
---
## Key Helpers
### `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:
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)
Fields are addressed as `"section::key"` strings (e.g. `"identity::hair"`, `"wardrobe::top"`, `"special::name"`, `"lora::lora_triggers"`).
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_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.
### `_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.
### `_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.
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.
### `_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`.
### `_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.
### `_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.
### `call_llm(prompt, system_prompt)`
OpenAI-compatible chat completion call supporting:
- **OpenRouter** (cloud, configured API key + model)
- **Ollama** / **LMStudio** (local, configured base URL + model)
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.
---
## JSON Data Schemas
### Character (`data/characters/*.json`)
```json
{
"character_id": "tifa_lockhart",
"character_name": "Tifa Lockhart",
"identity": { "base_specs": "", "hair": "", "eyes": "", "hands": "", "arms": "", "torso": "", "pelvis": "", "legs": "", "feet": "", "extra": "" },
"defaults": { "expression": "", "pose": "", "scene": "" },
"wardrobe": {
"default": { "full_body": "", "headwear": "", "top": "", "bottom": "", "legwear": "", "footwear": "", "hands": "", "gloves": "", "accessories": "" }
},
"styles": { "aesthetic": "", "primary_color": "", "secondary_color": "", "tertiary_color": "" },
"lora": { "lora_name": "Illustrious/Looks/tifa.safetensors", "lora_weight": 0.8, "lora_triggers": "" },
"tags": [],
"participants": { "orientation": "1F", "solo_focus": "true" }
}
```
`participants` is optional; when absent, `(solo:1.2)` is injected. `orientation` is parsed by `parse_orientation()` into Danbooru tags (`1girl`, `hetero`, etc.).
### Outfit (`data/clothing/*.json`)
```json
{
"outfit_id": "french_maid_01",
"outfit_name": "French Maid",
"wardrobe": { "full_body": "", "headwear": "", "top": "", "bottom": "", "legwear": "", "footwear": "", "hands": "", "accessories": "" },
"lora": { "lora_name": "Illustrious/Clothing/maid.safetensors", "lora_weight": 0.8, "lora_triggers": "" },
"tags": []
}
```
### Action (`data/actions/*.json`)
```json
{
"action_id": "sitting",
"action_name": "Sitting",
"action": { "full_body": "", "additional": "", "head": "", "eyes": "", "arms": "", "hands": "" },
"lora": { "lora_name": "", "lora_weight": 1.0, "lora_triggers": "" },
"tags": []
}
```
### Scene (`data/scenes/*.json`)
```json
{
"scene_id": "beach",
"scene_name": "Beach",
"scene": { "background": "", "foreground": "", "furniture": "", "colors": "", "lighting": "", "theme": "" },
"lora": { "lora_name": "", "lora_weight": 1.0, "lora_triggers": "" },
"tags": []
}
```
### Style (`data/styles/*.json`)
```json
{
"style_id": "watercolor",
"style_name": "Watercolor",
"style": { "artist_name": "", "artistic_style": "" },
"lora": { "lora_name": "", "lora_weight": 1.0, "lora_triggers": "" }
}
```
### Detailer (`data/detailers/*.json`)
```json
{
"detailer_id": "detailed_skin",
"detailer_name": "Detailed Skin",
"prompt": ["detailed skin", "pores"],
"focus": { "face": true, "hands": true },
"lora": { "lora_name": "", "lora_weight": 1.0, "lora_triggers": "" }
}
```
### Look (`data/looks/*.json`)
```json
{
"look_id": "tifa_casual",
"look_name": "Tifa Casual",
"character_id": "tifa_lockhart",
"positive": "casual clothes, jeans",
"negative": "revealing",
"lora": { "lora_name": "Illustrious/Looks/tifa_casual.safetensors", "lora_weight": 0.85, "lora_triggers": "" },
"tags": []
}
```
Looks occupy LoRA node 16, overriding the character's own LoRA. The Look's `negative` is prepended to the workflow's negative prompt.
### Checkpoint (`data/checkpoints/*.json`)
```json
{
"checkpoint_path": "Illustrious/model.safetensors",
"checkpoint_name": "Model Display Name",
"base_positive": "anime",
"base_negative": "text, logo",
"steps": 25,
"cfg": 5,
"sampler_name": "euler_ancestral",
"scheduler": "normal",
"vae": "integrated"
}
```
Checkpoint JSONs are keyed by `checkpoint_path`. If no JSON exists for a discovered model file, `_default_checkpoint_data()` provides defaults.
---
## URL Routes
### Characters
- `GET /` — character gallery (index)
- `GET /character/<slug>` — character detail with generation UI
- `POST /character/<slug>/generate` — queue generation (AJAX or form)
- `POST /character/<slug>/finalize_generation/<prompt_id>` — retrieve image from ComfyUI
- `POST /character/<slug>/replace_cover_from_preview` — promote preview to cover
- `GET/POST /character/<slug>/edit` — edit character data
- `POST /character/<slug>/upload` — upload cover image
- `POST /character/<slug>/save_defaults` — save default field selection
- `POST /character/<slug>/outfit/switch|add|delete|rename` — manage per-character wardrobe outfits
- `GET/POST /create` — create new character (blank or LLM-generated)
- `POST /rescan` — sync DB from JSON files
### Category Pattern (Outfits, Actions, Styles, Scenes, Detailers)
Each category follows the same URL pattern:
- `GET /<category>/` — gallery
- `GET /<category>/<slug>` — detail + generation UI
- `POST /<category>/<slug>/generate` — queue generation
- `POST /<category>/<slug>/finalize_generation/<prompt_id>` — retrieve image
- `POST /<category>/<slug>/replace_cover_from_preview`
- `GET/POST /<category>/<slug>/edit`
- `POST /<category>/<slug>/upload`
- `POST /<category>/<slug>/save_defaults`
- `POST /<category>/<slug>/clone` — duplicate entry
- `POST /<category>/<slug>/save_json` — save raw JSON (from modal editor)
- `POST /<category>/rescan`
- `POST /<category>/bulk_create` — LLM-generate entries from LoRA files on disk
### Looks
- `GET /looks` — gallery
- `GET /look/<slug>` — detail
- `GET/POST /look/<slug>/edit`
- `POST /look/<slug>/generate`
- `POST /look/<slug>/finalize_generation/<prompt_id>`
- `POST /look/<slug>/replace_cover_from_preview`
- `GET/POST /look/create`
- `POST /looks/rescan`
### Generator (Mix & Match)
- `GET/POST /generator` — freeform generator with multi-select accordion UI
- `POST /generator/finalize/<slug>/<prompt_id>` — retrieve image
- `POST /generator/preview_prompt` — AJAX: preview composed prompt without generating
### Checkpoints
- `GET /checkpoints` — gallery
- `GET /checkpoint/<slug>` — detail + generation settings editor
- `POST /checkpoint/<slug>/save_json`
- `POST /checkpoints/rescan`
### Utilities
- `POST /set_default_checkpoint` — save default checkpoint to session
- `GET /check_status/<prompt_id>` — poll ComfyUI for completion
- `GET /get_missing_{characters,outfits,actions,scenes}` — AJAX: list items without cover images
- `POST /generate_missing` — batch generate covers for characters
- `POST /clear_all_covers` / `clear_all_{outfit,action,scene}_covers`
- `GET /gallery` — global image gallery browsing `static/uploads/`
- `GET/POST /settings` — LLM provider configuration
- `POST /resource/<category>/<slug>/delete` — soft (JSON only) or hard (JSON + safetensors) delete
---
## Frontend
- Bootstrap 5.3 (CDN). Custom styles in `static/style.css`.
- All templates extend `templates/layout.html`. The base layout provides:
- `{% block content %}` — main page content
- `{% block scripts %}` — additional JS at end of body
- Navbar with links to all sections
- Global default checkpoint selector (saves to session via AJAX)
- Resource delete modal (soft/hard) shared across gallery pages
- `initJsonEditor(saveUrl)` — shared JSON editor modal (simple form + raw textarea tabs)
- Context processors inject `all_checkpoints`, `default_checkpoint_path`, and `COMFYUI_WS_URL` into every template.
- **No `{% block head %}` exists** in layout.html — do not try to use it.
- Generation is async: JS submits the form via AJAX (`X-Requested-With: XMLHttpRequest`), receives a `prompt_id`, opens a WebSocket to ComfyUI to show progress, then calls the finalize endpoint to save the image.
---
## LLM Integration
### System Prompts
Text files in `data/prompts/` define JSON output schemas for LLM-generated entries:
- `character_system.txt` — character JSON schema
- `outfit_system.txt` — outfit JSON schema
- `action_system.txt`, `scene_system.txt`, `style_system.txt`, `detailer_system.txt`, `look_system.txt`, `checkpoint_system.txt`
Used by: character/outfit/action/scene/style create forms, and bulk_create routes.
### Danbooru MCP Tools
The LLM loop in `call_llm()` provides three tools via a Docker-based MCP server (`danbooru-mcp:latest`):
- `search_tags(query, limit, category)` — prefix search
- `validate_tags(tags)` — exact-match validation
- `suggest_tags(partial, limit, category)` — autocomplete
The LLM uses these to verify and discover correct Danbooru-compatible tags for prompts.
All system prompts (`character_system.txt`, `outfit_system.txt`, `action_system.txt`, `scene_system.txt`, `style_system.txt`, `detailer_system.txt`, `look_system.txt`, `checkpoint_system.txt`) instruct the LLM to use these tools before finalising any tag values. `checkpoint_system.txt` applies them specifically to the `base_positive` and `base_negative` fields.
---
## LoRA File Paths
LoRA filenames in JSON are stored as paths relative to ComfyUI's `models/lora/` root:
| Category | Path prefix | Example |
|----------|-------------|---------|
| Character / Look | `Illustrious/Looks/` | `Illustrious/Looks/tifa_v2.safetensors` |
| Outfit | `Illustrious/Clothing/` | `Illustrious/Clothing/maid.safetensors` |
| Action | `Illustrious/Poses/` | `Illustrious/Poses/sitting.safetensors` |
| Style | `Illustrious/Styles/` | `Illustrious/Styles/watercolor.safetensors` |
| Detailer | `Illustrious/Detailers/` | `Illustrious/Detailers/skin.safetensors` |
| Scene | `Illustrious/Backgrounds/` | `Illustrious/Backgrounds/beach.safetensors` |
Checkpoint paths: `Illustrious/<filename>.safetensors` or `Noob/<filename>.safetensors`.
Absolute paths on disk:
- Checkpoints: `/mnt/alexander/AITools/Image Models/Stable-diffusion/{Illustrious,Noob}/`
- LoRAs: `/mnt/alexander/AITools/Image Models/lora/Illustrious/{Looks,Clothing,Poses,Styles,Detailers,Backgrounds}/`
---
## Adding a New Category
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.
---
## Session Keys
The Flask filesystem session stores:
- `default_checkpoint` — checkpoint_path string for the global default
- `prefs_{slug}` — selected_fields list for character detail page
- `preview_{slug}` — relative image path of last character preview
- `prefs_outfit_{slug}`, `preview_outfit_{slug}`, `char_outfit_{slug}` — outfit detail state
- `prefs_action_{slug}`, `preview_action_{slug}`, `char_action_{slug}` — action detail state
- `prefs_scene_{slug}`, `preview_scene_{slug}`, `char_scene_{slug}` — scene detail state
- `prefs_detailer_{slug}`, `preview_detailer_{slug}`, `char_detailer_{slug}`, `action_detailer_{slug}`, `extra_pos_detailer_{slug}`, `extra_neg_detailer_{slug}` — detailer detail state (selected fields, preview image, character, action LoRA, extra positive prompt, extra negative prompt)
- `prefs_style_{slug}`, `preview_style_{slug}`, `char_style_{slug}` — style detail state
- `prefs_look_{slug}`, `preview_look_{slug}` — look detail state
---
## Running the App
```bash
cd /mnt/alexander/Projects/character-browser
source venv/bin/activate
python app.py
```
The app runs in debug mode on port 5000 by default. ComfyUI must be running at `http://127.0.0.1:8188`.
The DB is initialised and all sync functions are called inside `with app.app_context():` at the bottom of `app.py` before `app.run()`.
---
## Common Pitfalls
- **SQLAlchemy JSON mutation**: After modifying a JSON column dict in place, always call `flag_modified(obj, "data")` or the change won't be detected.
- **Dual write**: Every edit route writes back to both the DB (`db.session.commit()`) and the JSON file on disk. Both must be kept in sync.
- **Slug generation**: `re.sub(r'[^a-zA-Z0-9_]', '', id)` — note this removes hyphens and dots, not just replaces them. Character IDs like `yuna_(ff10)` become slug `yunaffx10`. This is intentional.
- **Checkpoint slugs use underscore replacement**: `re.sub(r'[^a-zA-Z0-9_]', '_', ...)` (replaces with `_`, not removes) to preserve readability in paths.
- **LoRA chaining**: If a LoRA node has no LoRA (name is empty/None), the node is skipped and `model_source`/`clip_source` pass through unchanged. Do not set the node inputs for skipped nodes.
- **AJAX detection**: `request.headers.get('X-Requested-With') == 'XMLHttpRequest'` determines whether to return JSON or redirect.
- **Session must be marked modified for JSON responses**: After setting session values in AJAX-responding routes, set `session.modified = True`.
- **Detailer `prompt` is a list**: The `prompt` field in detailer JSON is stored as a list of strings (e.g. `["detailed skin", "pores"]`), not a plain string. When merging into `tags` for `build_prompt`, use `extend` for lists and `append` for strings — never append the list object itself or `", ".join()` will fail on the nested list item.

View File

@@ -7,17 +7,23 @@ A local web-based GUI for managing character profiles (JSON) and generating cons
- **Character Gallery**: Automatically scans your `characters/` folder and builds a searchable, sortable database. - **Character Gallery**: Automatically scans your `characters/` folder and builds a searchable, sortable database.
- **Outfit Gallery**: Manage reusable outfit presets that can be applied to any character. - **Outfit Gallery**: Manage reusable outfit presets that can be applied to any character.
- **Actions Gallery**: A library of reusable poses and actions (e.g., "Belly Dancing", "Sword Fighting") that can be previewed on any character model. - **Actions Gallery**: A library of reusable poses and actions (e.g., "Belly Dancing", "Sword Fighting") that can be previewed on any character model.
- **AI-Powered Creation**: Create new characters, outfits, and actions using AI to generate profiles from descriptions, or manually create blank templates. - **Styles Gallery**: Manage art style / artist LoRA presets with AI-assisted bulk creation from your styles LoRA folder.
- **character-Integrated Previews**: Standalone items (Outfits/Actions) can be previewed directly on a specific character's model with automatic style injection (e.g., background color matching). - **Scenes Gallery**: Background and environment LoRA presets, previewable with any character.
- **Detailers Gallery**: Detail enhancement LoRA presets for fine-tuning face, hands, and other features.
- **Checkpoints Gallery**: Browse all your installed SDXL checkpoints (Illustrious & Noob families). Stores per-checkpoint generation settings (steps, CFG, sampler, VAE, base prompts) via JSON files in `data/checkpoints/`. Supports AI-assisted metadata generation from accompanying HTML files.
- **AI-Powered Creation**: Create and populate gallery entries using AI to generate profiles from descriptions or LoRA HTML files, or manually create blank templates.
- **Character-Integrated Previews**: Standalone items (Outfits/Actions/Styles/Scenes/Detailers/Checkpoints) can be previewed directly on a specific character's model.
- **Granular Prompt Control**: Every field in your JSON models (Identity, Wardrobe, Styles, Action details) has a checkbox. You decide exactly what is sent to the AI. - **Granular Prompt Control**: Every field in your JSON models (Identity, Wardrobe, Styles, Action details) has a checkbox. You decide exactly what is sent to the AI.
- **ComfyUI Integration**: - **ComfyUI Integration**:
- **SDXL Optimized**: Designed for high-quality SDXL/Illustrious workflows. - **SDXL Optimized**: Designed for high-quality SDXL/Illustrious workflows.
- **Localized ADetailer**: Automated Face and Hand detailing with focused prompts (e.g., only eye color and expression are sent to the face detailer). - **Localized ADetailer**: Automated Face and Hand detailing with focused prompts (e.g., only eye color and expression are sent to the face detailer).
- **Triple LoRA Chaining**: Chains up to three distinct LoRAs (Character + Outfit + Action) sequentially in the generation workflow. - **Quad LoRA Chaining**: Chains up to four distinct LoRAs (Character + Outfit + Action + Style/Detailer/Scene) sequentially in the generation workflow.
- **Per-Checkpoint Settings**: Steps, CFG, sampler name, VAE, and base prompts are applied automatically from each checkpoint's JSON profile.
- **Real-time Progress**: Live progress bars and queue status via WebSockets (with a reliable polling fallback). - **Real-time Progress**: Live progress bars and queue status via WebSockets (with a reliable polling fallback).
- **Batch Processing**: - **Batch Processing**:
- **Fill Missing**: Generate covers for every character missing one with a single click. - **Fill Missing**: Generate covers for every item missing one with a single click, across all galleries.
- **Advanced Generator**: A dedicated page to mix-and-match characters with different checkpoints (Illustrious/Noob support) and custom prompt additions. - **Bulk Create from LoRAs/Checkpoints**: Auto-generate JSON metadata for entire directories using an LLM.
- **Advanced Generator**: A dedicated mix-and-match page combining any character, outfit, action, style, scene, and detailer in a single generation.
- **Smart URLs**: Sanitized, human-readable URLs (slugs) that handle special characters and slashes gracefully. - **Smart URLs**: Sanitized, human-readable URLs (slugs) that handle special characters and slashes gracefully.
## Prerequisites ## Prerequisites
@@ -70,8 +76,13 @@ A local web-based GUI for managing character profiles (JSON) and generating cons
- `/data/characters`: Character JSON files. - `/data/characters`: Character JSON files.
- `/data/clothing`: Outfit preset JSON files. - `/data/clothing`: Outfit preset JSON files.
- `/data/actions`: Action/Pose preset JSON files. - `/data/actions`: Action/Pose preset JSON files.
- `/data/styles`: Art style / artist LoRA JSON files.
- `/data/scenes`: Scene/background LoRA JSON files.
- `/data/detailers`: Detailer LoRA JSON files.
- `/data/checkpoints`: Per-checkpoint metadata JSON files (steps, CFG, sampler, VAE, base prompts).
- `/data/prompts`: LLM system prompts used by the AI-assisted bulk creation features.
- `/static/uploads`: Generated images (organized by subfolders). - `/static/uploads`: Generated images (organized by subfolders).
- `app.py`: Flask backend and prompt-building logic. - `app.py`: Flask backend and prompt-building logic.
- `comfy_workflow.json`: The API-format workflow used for generations. - `comfy_workflow.json`: The API-format workflow used for generations.
- `models.py`: SQLAlchemy database models. - `models.py`: SQLAlchemy database models.
- `DEVELOPMENT_GUIDE.md`: Architectual patterns for extending the browser. - `DEVELOPMENT_GUIDE.md`: Architectural patterns for extending the browser.

208
TAG_MCP_README.md Normal file
View File

@@ -0,0 +1,208 @@
# 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)

4024
app.py

File diff suppressed because it is too large Load Diff

View File

@@ -2,32 +2,31 @@
"action_id": "3p_sex_000037", "action_id": "3p_sex_000037",
"action_name": "3P Sex 000037", "action_name": "3P Sex 000037",
"action": { "action": {
"full_body": "group sex, threesome, 3 subjects, intertwined bodies, on bed", "full_body": "threesome",
"head": "pleasured expression, heavy breathing, blush, sweating, tongue out, saliva", "head": "blush",
"eyes": "half-closed eyes, rolling back, heart pupils, looking at partner", "eyes": "half-closed_eyes",
"arms": "wrapping around partners, arm locking, grabbing shoulders", "arms": "reaching",
"hands": "groping, fondling, gripping hair, fingers digging into skin", "hands": "groping",
"torso": "arching back, bare skin, sweat drops, pressing chests together", "torso": "nude",
"pelvis": "connected, hips grinding, penetration", "pelvis": "sex",
"legs": "spread legs, legs in air, wrapped around waist, kneeling", "legs": "spread_legs",
"feet": "toes curled, arched feet", "feet": "toes_curled",
"additional": "sex act, bodily fluids, cum, motion blur, intimacy, nsfw" "additional": "sweat"
},
"participants": {
"solo_focus": "false",
"orientation": "MfF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/3P_SEX-000037.safetensors", "lora_name": "Illustrious/Poses/3P_SEX-000037.safetensors",
"lora_weight": 1.0, "lora_weight": 0.8,
"lora_triggers": "3P_SEX-000037" "lora_triggers": "threesome, group_sex",
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
}, },
"tags": [ "tags": [
"group sex",
"threesome", "threesome",
"3p", "group_sex",
"nsfw", "nude",
"sexual intercourse", "sex",
"pleasure" "blush",
"groping",
"sweat"
] ]
} }

View File

@@ -2,34 +2,34 @@
"action_id": "4p_sex", "action_id": "4p_sex",
"action_name": "4P Sex", "action_name": "4P Sex",
"action": { "action": {
"full_body": "complex group composition involving four subjects in close physical contact, bodies intertwined or overlapping in a cluster", "full_body": "Choreographed foursome group sex scene involving four participants (e.g., 1 girl and 3 boys or 3 girls and 1 boy) engaged in simultaneous sexual acts like double penetration or cooperative fellatio.",
"head": "heads positioned close together, looking at each other or facing different directions, varied expressions", "head": "Moaning expression, open mouth, potentially heavily breathing or performing fellatio.",
"eyes": "open or half-closed, gazing at other subjects", "eyes": "Heart-shaped pupils, ahegao, or rolling back in pleasure.",
"arms": "arms reaching out, holding, or embracing other subjects in the group, creating a web of limbs", "arms": "Bracing on the surface (all fours), holding onto partners, or grabbing sheets.",
"hands": "hands placed on others' bodies, grasping or touching", "hands": "Grabbing breasts, holding legs, fingering, or resting on knees/shoulders.",
"torso": "torsos leaning into each other, pressed together or arranged in a pile", "torso": "Nude, arching back, breasts exposed and pressed or being touched.",
"pelvis": "pelvises positioned in close proximity, aligned with group arrangement", "pelvis": "Engaged in intercourse, involving vaginal or anal penetration, potentially double penetration.",
"legs": "legs entangled, kneeling, lying down, or wrapped around others", "legs": "Spread wide, positioned in all fours, missionary, or reverse cowgirl depending on specific interaction.",
"feet": "feet resting on the ground or tucked in", "feet": "Toes curled, dynamic positioning based on stance (kneeling or lying).",
"additional": "high density composition, multiple angles of interaction, tangled arrangement of bodies" "additional": "Sexual fluids, messy after-sex atmosphere, sweat, steaming body."
},
"participants": {
"solo_focus": "false",
"orientation": "MFFF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/4P_sex.safetensors", "lora_name": "Illustrious/Poses/4P_sex.safetensors",
"lora_weight": 1.0, "lora_weight": 0.6,
"lora_triggers": "4P_sex" "lora_triggers": "4P_sexV1",
"lora_weight_min": 0.6,
"lora_weight_max": 0.6
}, },
"tags": [ "tags": [
"4girls", "4P_sexV1",
"group", "group sex",
"tangled", "foursome",
"multiple_viewers", "4P",
"all_fours", "double penetration",
"entangled_legs", "fellatio",
"close_contact", "all fours",
"crowded" "uncensored",
"hetero",
"sex"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/[Malebolgia] Oral Sex Tounge Afterimage Concept 2.0 Illustrious.safetensors", "lora_name": "Illustrious/Poses/[Malebolgia] Oral Sex Tounge Afterimage Concept 2.0 Illustrious.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "[Malebolgia] Oral Sex Tounge Afterimage Concept 2.0 Illustrious" "lora_triggers": "[Malebolgia] Oral Sex Tounge Afterimage Concept 2.0 Illustrious",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"oral", "oral",
@@ -29,4 +31,4 @@
"motion blur", "motion blur",
"surreal" "surreal"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Actually_Reliable_Penis_Kissing_3_Variants_Illustrious.safetensors", "lora_name": "Illustrious/Poses/Actually_Reliable_Penis_Kissing_3_Variants_Illustrious.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "Actually_Reliable_Penis_Kissing_3_Variants_Illustrious" "lora_triggers": "Actually_Reliable_Penis_Kissing_3_Variants_Illustrious",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"penis kissing", "penis kissing",
@@ -31,4 +33,4 @@
"tongue", "tongue",
"close-up" "close-up"
] ]
} }

View File

@@ -2,36 +2,38 @@
"action_id": "after_sex_fellatio_illustriousxl_lora_nochekaiser_r1", "action_id": "after_sex_fellatio_illustriousxl_lora_nochekaiser_r1",
"action_name": "After Sex Fellatio Illustriousxl Lora Nochekaiser R1", "action_name": "After Sex Fellatio Illustriousxl Lora Nochekaiser R1",
"action": { "action": {
"full_body": "kneeling on the floor in a submissive posture (seiza) or sitting back on heels", "full_body": "completely_nude, lying, on_back, m_legs, spread_legs",
"head": "tilted upwards slightly, heavy blush on cheeks, messy hair, mouth held open", "head": "looking_at_viewer, tongue, open_mouth, blush, messing_hair",
"eyes": "half-closed, looking up at viewer, glazed expression, maybe heart-shaped pupils", "eyes": "half-closed_eyes, blue_eyes",
"arms": "resting slightly limp at sides or hands placed on thighs", "arms": "arms_at_sides, on_bed",
"hands": "resting on thighs or one hand wiping corner of mouth", "hands": "on_bed, pressing_bed",
"torso": "leaning slightly forward, relaxed posture implying exhaustion", "torso": "large_breasts, nipples, sweat",
"pelvis": "hips resting on heels", "pelvis": "pussy, cum_in_pussy, leaking_cum",
"legs": "bent at knees, kneeling", "legs": "m_legs, spread_legs, legs_up",
"feet": "tucked under buttocks", "feet": "barefoot, toes",
"additional": "cum on face, cum on mouth, semen, saliva trail, drooling, tongue stuck out, heavy breathing, sweat, after sex atmosphere" "additional": "after_sex, after_vaginal, fellatio, penis, cum, cumdrip, messy_body, bed_sheet"
},
"participants": {
"solo_focus": "true",
"orientation": "F"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/after-sex-fellatio-illustriousxl-lora-nochekaiser_r1.safetensors", "lora_name": "Illustrious/Poses/after-sex-fellatio-illustriousxl-lora-nochekaiser_r1.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "after-sex-fellatio-illustriousxl-lora-nochekaiser_r1" "lora_triggers": "after sex fellatio",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"after fellatio", "after_sex",
"cum on face", "after_vaginal",
"messy face", "fellatio",
"saliva", "cum_in_pussy",
"tongue out", "m_legs",
"kneeling", "lying",
"looking up", "on_back",
"blush", "on_bed",
"sweat", "cumdrip",
"open mouth" "completely_nude",
"nipples",
"tongue",
"penis",
"cum"
] ]
} }

View File

@@ -0,0 +1,35 @@
{
"action_id": "afterfellatio_ill",
"action_name": "Afterfellatio Ill",
"action": {
"full_body": "kneeling, leaning_forward, pov",
"head": "looking_at_viewer, blush, tilted_head, cum_on_face",
"eyes": "half-closed_eyes, tears",
"arms": "arms_down, reaching_towards_viewer",
"hands": "handjob, touching_penis",
"torso": "leaning_forward",
"pelvis": "kneeling",
"legs": "kneeling",
"feet": "barefoot",
"additional": "cum_string, cum_in_mouth, closed_mouth"
},
"lora": {
"lora_name": "Illustrious/Poses/afterfellatio_ill.safetensors",
"lora_weight": 0.8,
"lora_triggers": "after fellatio, cum in mouth, closed mouth, cum string",
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
},
"tags": [
"after_fellatio",
"cum_in_mouth",
"cum_string",
"closed_mouth",
"blush",
"half-closed_eyes",
"looking_at_viewer",
"kneeling",
"pov",
"handjob"
]
}

View File

@@ -2,33 +2,34 @@
"action_id": "afteroral", "action_id": "afteroral",
"action_name": "Afteroral", "action_name": "Afteroral",
"action": { "action": {
"full_body": "", "full_body": "Character depicted immediately after performing oral sex, often focusing on the upper body and face.",
"head": "cum in mouth, facial, blush, open mouth, tongue out, messy hair, sweat, panting", "head": "Messy hair, flushed cheeks, mouth slightly open or panting.",
"eyes": "half-closed eyes, glazed eyes, looking up, tears", "eyes": "Half-closed or dazed expression, potentially with runny mascara or makeup.",
"arms": "", "arms": "Relaxed or wiping mouth.",
"hands": "", "hands": "Resting or near face.",
"torso": "", "torso": "Heaving chest indicative of heavy breathing.",
"pelvis": "", "pelvis": "N/A (typically upper body focus)",
"legs": "", "legs": "N/A",
"feet": "", "feet": "N/A",
"additional": "saliva, saliva string, heavy breathing, after fellatio, bodily fluids" "additional": "Presence of bodily fluids like saliva trails or excessive cum on face and messy makeup."
},
"participants": {
"solo_focus": "true",
"orientation": "F"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/afteroral.safetensors", "lora_name": "Illustrious/Poses/afteroral.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "afteroral" "lora_triggers": "after oral, after deepthroat",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"after oral", "after_fellatio",
"wiping mouth", "runny_makeup",
"saliva", "smeared_lipstick",
"kneeling", "saliva_trail",
"blush", "excessive_cum",
"messy", "messy_hair",
"panting" "heavy_breathing",
"cum_bubble",
"penis_on_face",
"sweat"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/afterpaizuri.safetensors", "lora_name": "Illustrious/Poses/afterpaizuri.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "afterpaizuri" "lora_triggers": "afterpaizuri",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"after paizuri", "after paizuri",
@@ -32,4 +34,4 @@
"sweat", "sweat",
"disheveled" "disheveled"
] ]
} }

View File

@@ -2,36 +2,42 @@
"action_id": "aftersexbreakv2", "action_id": "aftersexbreakv2",
"action_name": "Aftersexbreakv2", "action_name": "Aftersexbreakv2",
"action": { "action": {
"full_body": "lying in bed, exhausted", "full_body": "lying, on_back, on_bed, bowlegged_pose, spread_legs, twisted_torso",
"head": "messy hair, flushed face, sweating, panting", "head": "messy_hair, head_back, sweaty_face",
"eyes": "half-closed eyes, ", "eyes": "rolling_eyes, half-closed_eyes, ahegao",
"arms": "", "arms": "arms_spread, arms_above_head",
"hands": "", "hands": "relaxed_hands",
"torso": "sweaty skin, glistening skin, heavy breathing,", "torso": "sweat, nipples, collarbone, heavy_breathing",
"pelvis": "cum drip", "pelvis": "hips, navel, female_pubic_hair",
"legs": "legs spread", "legs": "spread_legs, legs_up, bent_legs",
"feet": "", "feet": "barefoot",
"additional": "ripped clothing, panties aside, rumpled bed sheets, messy bed, dim lighting, intimate atmosphere, exhausted" "additional": "condom_wrapper, used_tissue, stained_sheets, cum_pool, bead_of_sweat"
},
"participants": {
"solo_focus": "true",
"orientation": "F"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/AfterSexBreakV2.safetensors", "lora_name": "Illustrious/Poses/AfterSexBreakV2.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "AfterSexBreakV2" "lora_triggers": "aftersexbreak, after sex, male sitting",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"after sex", "after_sex",
"post-coital", "lying",
"lying in bed", "on_back",
"messy hair", "on_bed",
"sweaty skin", "fucked_silly",
"covered by sheet", "spread_legs",
"bedroom eyes", "bowlegged_pose",
"exhausted", "sweat",
"intimate", "blush",
"rumpled sheets" "messy_hair",
"heavy_breathing",
"rolling_eyes",
"ahegao",
"cum_pool",
"condom_wrapper",
"used_tissue",
"bed_sheet",
"stained_sheets"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Against_glass_bs.safetensors", "lora_name": "Illustrious/Poses/Against_glass_bs.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "Against_glass_bs" "lora_triggers": "Against_glass_bs",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"against glass", "against glass",
@@ -30,4 +32,4 @@
"cheek press", "cheek press",
"distorted view" "distorted view"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/AgressiveChoking-000010.safetensors", "lora_name": "Illustrious/Poses/AgressiveChoking-000010.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "AgressiveChoking-000010" "lora_triggers": "AgressiveChoking-000010",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"violence", "violence",
@@ -29,4 +31,4 @@
"combat", "combat",
"anger" "anger"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Ahegao_XL_v3_1278075.safetensors", "lora_name": "Illustrious/Poses/Ahegao_XL_v3_1278075.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "Ahegao_XL_v3_1278075" "lora_triggers": "Ahegao_XL_v3_1278075",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"ahegao", "ahegao",
@@ -34,4 +36,4 @@
"double peace sign", "double peace sign",
"v-sign" "v-sign"
] ]
} }

View File

@@ -2,33 +2,34 @@
"action_id": "amateur_pov_filming", "action_id": "amateur_pov_filming",
"action_name": "Amateur Pov Filming", "action_name": "Amateur Pov Filming",
"action": { "action": {
"full_body": "POV shot, subject positioned close to the lens, selfie composition or handheld camera style", "full_body": "selfie pose, standing or sitting, facing viewer or mirror",
"head": "facing the camera directly, slightly tilted or chin tucked, candid expression", "head": "looking_at_viewer, blush, maybe open mouth or shy expression",
"eyes": "looking directly at viewer, intense eye contact", "eyes": "looking_at_viewer, contact with camera",
"arms": "one or both arms raised towards the viewer holding the capturing device", "arms": "raised to hold phone or camera",
"hands": "holding smartphone, clutching camera, fingers visible on device edges", "hands": "holding_phone, holding_id_card, or adjusting clothes",
"torso": "upper body visible, facing forward, close proximity", "torso": "upper body in frame, breasts, nipples",
"pelvis": "obscured or out of frame", "pelvis": "hips visible if full body mirror selfie",
"legs": "out of frame", "legs": "standing or sitting",
"feet": "out of frame", "feet": "barefoot if visible",
"additional": "phone screen, camera interface, amateur footage quality, blurry background, indoor lighting, candid atmosphere" "additional": "phone recording interface, smartphone, mirror, amateur aesthetic"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Amateur_POV_Filming.safetensors", "lora_name": "Illustrious/Poses/Amateur_POV_Filming.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "Amateur_POV_Filming" "lora_triggers": "Homemade_PornV1, recording, pov, prostitution",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"recording",
"pov", "pov",
"selfie", "selfie",
"holding phone", "holding_phone",
"amateur", "smartphone",
"candid", "mirror_selfie",
"recording", "holding_id_card",
"close-up" "looking_at_viewer",
"prostitution",
"indoors"
] ]
} }

View File

@@ -2,35 +2,30 @@
"action_id": "arch_back_sex_v1_1_illustriousxl", "action_id": "arch_back_sex_v1_1_illustriousxl",
"action_name": "Arch Back Sex V1 1 Illustriousxl", "action_name": "Arch Back Sex V1 1 Illustriousxl",
"action": { "action": {
"full_body": "character positioned with an exaggerated spinal curve, emphasizing the posterior", "full_body": "doggystyle, sex_from_behind, all_fours",
"head": "thrown back in pleasure or looking back over the shoulder", "head": "head_back, looking_back",
"eyes": "half-closed, rolled back, or heavily blushing", "eyes": "closed_eyes, blush",
"arms": "supporting body weight on elbows or hands, or reaching forward", "arms": "arms_support",
"hands": "gripping bedsheets or pressing firmly against the surface", "hands": "grabbing_another's_ass",
"torso": "extremely arched back, chest pressed down or lifted depending on angle", "torso": "arched_back",
"pelvis": "tilted upwards, hips raised high", "pelvis": "lifted_hip",
"legs": "kneeling or lying prone with knees bent", "legs": "kneeling, spread_legs",
"feet": "toes curled or extending upwards", "feet": "toes",
"additional": "sweat, blush, heavy breathing indication" "additional": "kiss, sweat, saliva, intense_pleasure"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/arch-back-sex-v1.1-illustriousxl.safetensors", "lora_name": "Illustrious/Poses/arch-back-sex-v1.1-illustriousxl.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "arch-back-sex-v1.1-illustriousxl" "lora_triggers": "kiss, arched_back, sex_from_behind",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"arch back", "hetero",
"arched back", "sex",
"hips up", "vaginal",
"curved spine", "penis",
"ass focus", "nude",
"hyper-extension", "indoors"
"prone",
"kneeling",
"from behind"
] ]
} }

View File

@@ -2,35 +2,39 @@
"action_id": "arm_grab_missionary_ill_10", "action_id": "arm_grab_missionary_ill_10",
"action_name": "Arm Grab Missionary Ill 10", "action_name": "Arm Grab Missionary Ill 10",
"action": { "action": {
"full_body": "lying on back, missionary position, submissive posture", "full_body": "missionary, lying, on_back, sex, vaginal",
"head": "head tilted back, blushing, heavy breathing", "head": "expressive face, open mouth, one_eye_closed, blushing",
"eyes": "looking at viewer, half-closed eyes, rolling eyes", "eyes": "looking_at_viewer (optional), dilated_pupils",
"arms": "arms raised above head, arms grabbed, wrists held, armpits exposed", "arms": "arms_up, pinned, restrained, grabbed_wrists",
"hands": "hands pinned, helpless", "hands": "interlocked_fingers, holding_hands",
"torso": "arched back, chest exposed", "torso": "breasts, nipples, medium_breasts",
"pelvis": "exposed crotch", "pelvis": "legs_spread, lifted_pelvis",
"legs": "spread legs, knees bent upwards, m-legs", "legs": "spread_legs, legs_up, knees_up, straddling (if applicable)",
"feet": "toes curled", "feet": "barefoot (implied)",
"additional": "on bed, bed sheet, pov, submission, restraint" "additional": "faceless_male, male_focus, motion_lines, sweat"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/arm_grab_missionary_ill-10.safetensors", "lora_name": "Illustrious/Poses/arm_grab_missionary_ill-10.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "arm_grab_missionary_ill-10" "lora_triggers": "arm_grab_missionary",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"arm grab",
"missionary", "missionary",
"lying on back", "spread_legs",
"arms above head", "interlocked_fingers",
"wrists held", "holding_hands",
"legs spread", "arms_up",
"armpits", "pinned",
"submission", "lying",
"pov" "on_back",
"sex",
"vaginal",
"faceless_male",
"one_eye_closed",
"open_mouth",
"breasts",
"nipples"
] ]
} }

View File

@@ -2,33 +2,31 @@
"action_id": "ballsdeep_il_v2_2_s", "action_id": "ballsdeep_il_v2_2_s",
"action_name": "Ballsdeep Il V2 2 S", "action_name": "Ballsdeep Il V2 2 S",
"action": { "action": {
"full_body": "intense sexual intercourse, intimate close-up on genital connection, visceral physical interaction", "full_body": "sexual intercourse, variable position (prone, girl on top, or from behind)",
"head": "flushed face, expression of intense pleasure, head thrown back, mouth slightly open, panting", "head": "expression of intensity or pleasure, often looking back or face down",
"eyes": "eyes rolling back, ahegao or tightly closed eyes, heavy breathing", "eyes": "rolled back or squeezed shut",
"arms": "muscular arms tensed, holding partner's hips firmly, veins visible", "arms": "grasping sheets or holding partner",
"hands": "hands gripping waist or buttocks, fingers digging into skin, pulling partner closer", "hands": "clenched or grabbing",
"torso": "sweaty skin, arched back, abdominal muscles engaged", "torso": "arched or pressed against contrasting surface",
"pelvis": "hips slammed forward, testicles pressed firmly against partner's skin, complete insertion", "pelvis": "hips pushed firmly against partner's hips, joined genitals",
"legs": "thighs interlocking, kneeling or legs wrapped around partner's waist", "legs": "spread wide or wrapped around partner",
"feet": "toes curled tightly", "feet": "toes curled",
"additional": "sex, vaginal, balls deep, motion blur on hips, bodily fluids, skin indentation, anatomical focus" "additional": "deep penetration, testicles pressed flat against skin, stomach bulge visible"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/BallsDeep-IL-V2.2-S.safetensors", "lora_name": "Illustrious/Poses/BallsDeep-IL-V2.2-S.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "BallsDeep-IL-V2.2-S" "lora_triggers": "deep penetration",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"nsfw", "deep_penetration",
"testicles",
"stomach_bulge",
"sex", "sex",
"anal",
"vaginal", "vaginal",
"internal view", "gaping"
"cross-section",
"deep penetration",
"mating press"
] ]
} }

View File

@@ -2,33 +2,32 @@
"action_id": "bathingtogether", "action_id": "bathingtogether",
"action_name": "Bathingtogether", "action_name": "Bathingtogether",
"action": { "action": {
"full_body": "two characters sharing a bathtub, sitting close together in water", "full_body": "bathing, sitting, partially_submerged",
"head": "wet hair, flushed cheeks, relaxed expressions, looking at each other", "head": "looking_at_viewer, facing_viewer",
"eyes": "gentle gaze, half-closed", "eyes": "eye_contact",
"arms": "resting on the tub rim, washing each other, or embracing", "arms": "arms_resting",
"hands": "holding soap, sponge, or touching skin", "hands": "resting",
"torso": "wet skin, water droplets, partially submerged, steam rising", "torso": "bare_shoulders",
"pelvis": "submerged in soapy water", "pelvis": "submerged",
"legs": "knees bent, submerged, intertwined", "legs": "knees_up, submerged",
"feet": "underwater", "feet": "no_shoes",
"additional": "bathroom tiles, steam clouds, soap bubbles, rubber duck, faucet" "additional": "bathtub, steam, water, bubbles, wet"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/bathingtogether.safetensors", "lora_name": "Illustrious/Poses/bathingtogether.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "bathingtogether" "lora_triggers": "bathing together",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"bathing", "bathing",
"couple", "bathtub",
"partially_submerged",
"pov",
"looking_at_viewer",
"wet", "wet",
"steam", "steam",
"bathtub", "bare_shoulders"
"shared bath",
"soap bubbles"
] ]
} }

View File

@@ -2,32 +2,34 @@
"action_id": "before_after_1230829", "action_id": "before_after_1230829",
"action_name": "Before After 1230829", "action_name": "Before After 1230829",
"action": { "action": {
"full_body": "split view composition, side-by-side comparison, two panels showing the same character", "full_body": "2koma, before_and_after",
"head": "varying expressions, sad vs happy, neutral vs excited", "head": "heavy_breathing, orgasm, sticky_face",
"eyes": "looking at viewer, varying intensity", "eyes": "eyes_closed",
"arms": "neutral pose vs confident pose", "arms": "variation",
"hands": "hanging loosely vs gesturing", "hands": "variation",
"torso": "visible change in clothing or physique", "torso": "upper_body",
"pelvis": "standing or sitting", "pelvis": "variation",
"legs": "standing or sitting", "legs": "variation",
"feet": "neutral stance", "feet": "variation",
"additional": "transformation, makeover, dividing line, progression, evolution" "additional": "facial, bukkake, cum, cum_on_face"
},
"participants": {
"solo_focus": "true",
"orientation": "F"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/before_after_1230829.safetensors", "lora_name": "Illustrious/Poses/before_after_1230829.safetensors",
"lora_weight": 1.0, "lora_weight": 0.9,
"lora_triggers": "before_after_1230829" "lora_triggers": "before_after",
"lora_weight_min": 0.9,
"lora_weight_max": 0.9
}, },
"tags": [ "tags": [
"split view", "before_and_after",
"comparison", "2koma",
"transformation", "facial",
"before and after", "bukkake",
"multiple views", "cum",
"concept art" "cum_on_face",
"orgasm",
"heavy_breathing",
"upper_body",
"split_theme"
] ]
} }

View File

@@ -20,10 +20,12 @@
"lora": { "lora": {
"lora_name": "", "lora_name": "",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "" "lora_triggers": "",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"belly dancing", "belly dancing",
"dance" "dance"
] ]
} }

View File

@@ -2,33 +2,30 @@
"action_id": "bentback", "action_id": "bentback",
"action_name": "Bentback", "action_name": "Bentback",
"action": { "action": {
"full_body": "standing, upper body bent forward at the waist, torso parallel to the ground", "full_body": "bent_over, leaning_forward, from_behind",
"head": "turned to look back, looking over shoulder, chin raised", "head": "looking_at_viewer, looking_back",
"eyes": "looking at viewer, focused gaze", "eyes": "open_eyes",
"arms": "arms extended downward or resting on legs", "arms": "arms_at_sides",
"hands": "hands on knees, hands on thighs", "hands": "hands_on_legs",
"torso": "back arched, spinal curve emphasized, bent forward", "torso": "twisted_torso, arched_back",
"pelvis": "hips pushed back, buttocks protruding", "pelvis": "ass_focus",
"legs": "straight legs, locked knees or slight bend", "legs": "kneepits",
"feet": "feet shoulder-width apart, waiting", "feet": "barefoot",
"additional": "view from behind, dorsal view, dynamic posture" "additional": "unnatural_body"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/BentBack.safetensors", "lora_name": "Illustrious/Poses/BentBack.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "BentBack" "lora_triggers": "bentback, kneepits",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"bent over", "bent_over",
"standing", "from_behind",
"hands on knees", "looking_back",
"looking back", "kneepits",
"from behind", "twisted_torso",
"arched back", "ass_focus"
"torso bend"
] ]
} }

View File

@@ -2,34 +2,33 @@
"action_id": "blowjobcomicpart2", "action_id": "blowjobcomicpart2",
"action_name": "Blowjobcomicpart2", "action_name": "Blowjobcomicpart2",
"action": { "action": {
"full_body": "kneeling in front of standing partner, intimate interaction, oral sex pose", "full_body": "3koma, comic layout, vertical panel sequence",
"head": "tilted up, mouth open, cheek bulge, blushing, messy face", "head": "tongue_out, open mouth, saliva",
"eyes": "rolled back, heart-shaped pupils, crossed eyes, or looking up", "eyes": "empty_eyes, rolled eyes",
"arms": "reaching forward, holding partner's legs or hips", "arms": "arms_down or holding_head",
"hands": "stroking, gripping thighs, holding shaft, guiding", "hands": "fingers_on_penis",
"torso": "leaning forward, subordinate posture", "torso": "visible torso",
"pelvis": "kneeling on ground", "pelvis": "sexual_activity",
"legs": "bent at knees, shins on floor", "legs": "kneeling or sitting",
"feet": "tucked under or toes curled", "feet": "out_of_frame",
"additional": "saliva, slobber, motion lines, speech bubbles, sound effects, comic panel structure, greyscale or screentones" "additional": "fellatio, irrumatio, licking_penis, ejaculation, excessive_cum"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/BlowjobComicPart2.safetensors", "lora_name": "Illustrious/Poses/BlowjobComicPart2.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "BlowjobComicPart2" "lora_triggers": "bjmcut",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"nsfw", "3koma",
"fellatio",
"oral sex",
"kneeling",
"comic", "comic",
"monochrome", "fellatio",
"saliva", "irrumatio",
"ahegao" "licking_penis",
"ejaculation",
"excessive_cum",
"empty_eyes",
"tongue_out"
] ]
} }

View File

@@ -2,32 +2,31 @@
"action_id": "bodybengirl", "action_id": "bodybengirl",
"action_name": "Bodybengirl", "action_name": "Bodybengirl",
"action": { "action": {
"full_body": "character standing and bending forward at the waist, hips raised high", "full_body": "suspended_congress, lifting_person, standing",
"head": "looking back at viewer or head inverted", "head": "",
"eyes": "looking at viewer", "eyes": "",
"arms": "extended downwards towards the ground", "arms": "reaching",
"hands": "touching toes, ankles, or palms flat on the floor", "hands": "",
"torso": "upper body folded down parallel to or against the legs", "torso": "torso_grab, bent_over",
"pelvis": "lifted upwards, prominent posterior view", "pelvis": "",
"legs": "straight or knees slightly locked, shoulder-width apart", "legs": "legs_hanging",
"feet": "planted firmly on the ground", "feet": "",
"additional": "often viewed from behind or the side to emphasize flexibility and curve" "additional": "1boy, 1girl, suspended"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/BodyBenGirl.safetensors", "lora_name": "Illustrious/Poses/BodyBenGirl.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "BodyBenGirl" "lora_triggers": "bentstand-front, bentstand-behind",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"bending over", "suspended_congress",
"touching toes", "torso_grab",
"from behind", "bent_over",
"flexibility", "reaching",
"standing", "standing",
"jack-o' pose" "1boy",
"1girl"
] ]
} }

View File

@@ -2,31 +2,32 @@
"action_id": "bodybengirlpart2", "action_id": "bodybengirlpart2",
"action_name": "Bodybengirlpart2", "action_name": "Bodybengirlpart2",
"action": { "action": {
"full_body": "standing pose, bending forward at the waist while facing away from the camera", "full_body": "body suspended in mid-air, held by torso, bent over forward",
"head": "turned backward looking over the shoulder", "head": "embarrassed, sweating, scared",
"eyes": "looking directly at the viewer", "eyes": "open, looking away or down",
"arms": "extended downwards or resting on upper thighs", "arms": "arms hanging down, limp arms, arms at sides",
"hands": "placed on knees or hanging freely", "hands": "hands open, limp",
"torso": "bent forward at a 90-degree angle, lower back arched", "torso": "torso grab, bent forward",
"pelvis": "pushed back and tilted upwards", "pelvis": "hips raised if bent over",
"legs": "straight or slightly unlocked at the knees", "legs": "legs dangling, knees together, feet apart",
"feet": "standing firmly on the ground", "feet": "feet off ground, dangling",
"additional": "view from behind, emphasizing hip curvature and flexibility" "additional": "motion lines, sweat drops"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/BodyBenGirlPart2.safetensors", "lora_name": "Illustrious/Poses/BodyBenGirlPart2.safetensors",
"lora_weight": 1.0, "lora_weight": 0.9,
"lora_triggers": "BodyBenGirlPart2" "lora_triggers": "bentstand-behind, dangling legs, dangling arms, from_side, arms hanging down, torso_grab, suspended",
"lora_weight_min": 0.9,
"lora_weight_max": 0.9
}, },
"tags": [ "tags": [
"bent over", "torso_grab",
"looking back", "suspension",
"from behind", "bent_over",
"standing", "knees_together_feet_apart",
"flexible" "arms_at_sides",
"motion_lines",
"embarrassed",
"sweat"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Bored_Retrain-000115_1336316.safetensors", "lora_name": "Illustrious/Poses/Bored_Retrain-000115_1336316.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "Bored_Retrain-000115_1336316" "lora_triggers": "Bored_Retrain-000115_1336316",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"boredom", "boredom",
@@ -30,4 +32,4 @@
"tired", "tired",
"cheek resting on hand" "cheek resting on hand"
] ]
} }

View File

@@ -2,33 +2,34 @@
"action_id": "breast_pressh", "action_id": "breast_pressh",
"action_name": "Breast Pressh", "action_name": "Breast Pressh",
"action": { "action": {
"full_body": "character pressing breasts together with hands or arms to enhance cleavage", "full_body": "sandwiched, girl_sandwich, standing, height_difference, size_difference",
"head": "slightly tilted forward, often with a flushed or embarrassed expression", "head": "head_between_breasts, face_between_breasts, cheek_squash",
"eyes": "looking down at chest or shyly at viewer", "eyes": "eyes_closed, squints",
"arms": "bent at elbows, brought in front of the chest", "arms": "hugging, arms_around_waist",
"hands": "placed on the sides or underneath breasts, actively squeezing or pushing them inward", "hands": "hands_on_back",
"torso": "upper body leaned slightly forward or arched back to emphasize the chest area", "torso": "breast_press, chest_to_chest",
"pelvis": "neutral standing or sitting position", "pelvis": "hips_touching",
"legs": "standing straight or sitting with knees together", "legs": "standing, legs_apart",
"feet": "planted firmly on ground if standing", "feet": "barefoot",
"additional": "emphasis on soft body physics, squish deformation, and skin indentation around the fingers" "additional": "1boy, 2girls, multiple_girls, hetero"
},
"participants": {
"solo_focus": "false",
"orientation": "FF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/breast_pressH.safetensors", "lora_name": "Illustrious/Poses/breast_pressH.safetensors",
"lora_weight": 1.0, "lora_weight": 0.6,
"lora_triggers": "breast_pressH" "lora_triggers": "breast_pressH",
"lora_weight_min": 0.6,
"lora_weight_max": 0.6
}, },
"tags": [ "tags": [
"breast press", "height_difference",
"squeezing breasts", "girl_sandwich",
"cleavage", "breast_press",
"hands on breasts", "sandwiched",
"self groping", "size_difference",
"squish", "head_between_breasts",
"upper body" "cheek_squash",
"face_between_breasts",
"1boy",
"2girls"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/breast-smother-illustriousxl-lora-nochekaiser.safetensors", "lora_name": "Illustrious/Poses/breast-smother-illustriousxl-lora-nochekaiser.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "breast-smother-illustriousxl-lora-nochekaiser" "lora_triggers": "breast-smother-illustriousxl-lora-nochekaiser",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"breast smother", "breast smother",
@@ -33,4 +35,4 @@
"pov", "pov",
"large breasts" "large breasts"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/breast-sucking-fingering-illustriousxl-lora-nochekaiser.safetensors", "lora_name": "Illustrious/Poses/breast-sucking-fingering-illustriousxl-lora-nochekaiser.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "breast-sucking-fingering-illustriousxl-lora-nochekaiser" "lora_triggers": "breast-sucking-fingering-illustriousxl-lora-nochekaiser",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"breast sucking", "breast sucking",
@@ -34,4 +36,4 @@
"saliva", "saliva",
"stimulation" "stimulation"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/BrokenGlass_illusXL_Incrs_v1.safetensors", "lora_name": "Illustrious/Poses/BrokenGlass_illusXL_Incrs_v1.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "BrokenGlass_illusXL_Incrs_v1" "lora_triggers": "BrokenGlass_illusXL_Incrs_v1",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"broken glass", "broken glass",
@@ -32,4 +34,4 @@
"cinematic", "cinematic",
"destruction" "destruction"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Butt_smother_ag-000043.safetensors", "lora_name": "Illustrious/Poses/Butt_smother_ag-000043.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "Butt_smother_ag-000043" "lora_triggers": "Butt_smother_ag-000043",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"facesitting", "facesitting",
@@ -32,4 +34,4 @@
"suffocation", "suffocation",
"submissive view" "submissive view"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/buttjob.safetensors", "lora_name": "Illustrious/Poses/buttjob.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "buttjob" "lora_triggers": "buttjob",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"buttjob", "buttjob",
@@ -32,4 +34,4 @@
"glutes", "glutes",
"between buttocks" "between buttocks"
] ]
} }

View File

@@ -2,36 +2,37 @@
"action_id": "carwashv2", "action_id": "carwashv2",
"action_name": "Carwashv2", "action_name": "Carwashv2",
"action": { "action": {
"full_body": "leaning forward, bending over car hood, dynamic scrubbing pose, wet body", "full_body": "washing_vehicle, standing, bending_over",
"head": "looking at viewer, smiling, wet hair sticking to face", "head": "wet_hair",
"eyes": "open, energetic, happy", "eyes": "looking_at_viewer",
"arms": "stretched forward, one arm scrubbing, active motion", "arms": "reaching, arms_up",
"hands": "holding large yellow sponge, covered in soap suds", "hands": "holding_sponge, holding_hose",
"torso": "bent at waist, leaning forward, arched back, wet clothes clinging", "torso": "wet_clothes, breast_press, breasts_on_glass",
"pelvis": "hips pushed back, tilted", "pelvis": "shorts, denim_shorts",
"legs": "straddling or standing wide for stability", "legs": "standing, legs_apart",
"feet": "planted on wet pavement", "feet": "barefoot",
"additional": "soap bubbles, heavy foam on body and car, water splashing, car background" "additional": "car, motor_vehicle, soap_bubbles, outdoors, car_interior"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/CarWashV2.safetensors", "lora_name": "Illustrious/Poses/CarWashV2.safetensors",
"lora_weight": 1.0, "lora_weight": 0.8,
"lora_triggers": "CarWashV2" "lora_triggers": "w4sh1n, w4sh0ut",
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
}, },
"tags": [ "tags": [
"car wash", "car",
"holding sponge", "motor_vehicle",
"leaning forward", "washing_vehicle",
"bending over", "soap_bubbles",
"wet", "wet",
"wet clothes", "wet_hair",
"foam", "wet_clothes",
"bubbles", "holding_sponge",
"soapy water", "holding_hose",
"scrubbing" "breasts_on_glass",
"breast_press",
"outdoors",
"car_interior"
] ]
} }

View File

@@ -2,34 +2,35 @@
"action_id": "cat_stretchill", "action_id": "cat_stretchill",
"action_name": "Cat Stretchill", "action_name": "Cat Stretchill",
"action": { "action": {
"full_body": "character on all fours performing a deep cat stretch, kneeling with chest pressed to the floor and hips raised high", "full_body": "kneeling, all_fours, cat_stretch, pose",
"head": "chin resting on the floor, looking forward or to the side", "head": "looking_ahead, head_down",
"eyes": "looking up or generally forward", "eyes": "closed_eyes, trembling",
"arms": "fully extended forward along the ground", "arms": "outstretched_arms, reaching_forward, hands_on_ground",
"hands": "palms flat on the floor", "hands": "palms_down",
"torso": "deeply arched back, chest touching the ground", "torso": "arched_back, chest_down",
"pelvis": "elevated high in the air, creating a steep angle with the spine", "pelvis": "hips_up, buttocks_up",
"legs": "kneeling, bent at the knees", "legs": "kneeling, knees_on_ground",
"feet": "toes touching the ground", "feet": "feet_up",
"additional": "emphasizes the curve of the spine and flexibility" "additional": "cat_ears, cat_tail, trembling"
},
"participants": {
"solo_focus": "true",
"orientation": "F"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/cat_stretchILL.safetensors", "lora_name": "Illustrious/Poses/cat_stretchILL.safetensors",
"lora_weight": 1.0, "lora_weight": 0.7,
"lora_triggers": "cat_stretchILL" "lora_triggers": "stretching, cat stretch, downward dog, trembling",
"lora_weight_min": 0.7,
"lora_weight_max": 0.7
}, },
"tags": [ "tags": [
"all fours", "cat_stretch",
"ass up",
"kneeling", "kneeling",
"cat pose", "all_fours",
"stretching", "stretching",
"arms extended", "arched_back",
"on floor", "outstretched_arms",
"arched back" "hands_on_ground",
"downward_dog",
"trembling",
"cat_ears",
"cat_tail"
] ]
} }

View File

@@ -2,39 +2,39 @@
"action_id": "caught_masturbating_illustrious", "action_id": "caught_masturbating_illustrious",
"action_name": "Caught Masturbating Illustrious", "action_name": "Caught Masturbating Illustrious",
"action": { "action": {
"full_body": "character receiving a sudden shock while in a private moment of self-pleasure, body freezing or jerking in surprise", "full_body": "standing in doorway, confronting viewer",
"head": "face flushed red with deep blush, expression of pure panic and embarrassment, mouth gaped open in a gasp", "head": "looking down or at viewer, surprised expression, blushing",
"eyes": "wide-eyed stare, pupils dilated, locking eyes with the intruder (viewer)", "eyes": "wide open, looking away or at penis",
"arms": "shoulders tensed, one arm frantically trying to cover the chest or face, the other halted mid-motion near the crotch", "arms": "arms at sides or covering mouth",
"hands": "one hand stopping mid-masturbation typically under skirt or inside panties, other hand gesturing to stop or hiding face", "hands": "relaxed or raised in shock",
"torso": "leaning back onto elbows or pillows, clothing disheveled, shirt lifted", "torso": "facing viewer",
"pelvis": "hips exposed, underwear pulled down to thighs or ankles, vulva accessible", "pelvis": "standing straight",
"legs": "legs spread wide in an M-shape or V-shape, knees bent, trembling", "legs": "standing, legs together",
"feet": "toes curled tightly in tension", "feet": "standing on floor",
"additional": "context of an intruded private bedroom, messy bed sheets, atmosphere of sudden discovery and shame" "additional": "male pov, male masturbation in foreground, open door background"
},
"participants": {
"solo_focus": "true",
"orientation": "F"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Caught_Masturbating_ILLUSTRIOUS.safetensors", "lora_name": "Illustrious/Poses/Caught_Masturbating_ILLUSTRIOUS.safetensors",
"lora_weight": 1.0, "lora_weight": 0.75,
"lora_triggers": "Caught_Masturbating_ILLUSTRIOUS" "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": [ "tags": [
"pov",
"male_masturbation",
"penis",
"erection",
"walk-in",
"caught", "caught",
"masturbation", "doorway",
"embarrassed", "open_door",
"blush", "standing",
"surprised", "surprised",
"open mouth", "blush",
"looking at viewer", "looking_at_penis",
"panties down", "looking_at_viewer",
"hand in panties", "wide_shot",
"skirt lift", "indoors"
"sweat",
"legs spread",
"panic"
] ]
} }

View File

@@ -2,33 +2,34 @@
"action_id": "charm_person_magic", "action_id": "charm_person_magic",
"action_name": "Charm Person Magic", "action_name": "Charm Person Magic",
"action": { "action": {
"full_body": "standing, casting pose, dynamic angle, upper body focused", "full_body": "casting_spell, standing, magical_presence",
"head": "facing viewer, head tilted, alluring expression, seductive smile", "head": "smile, confident_expression, glowing_eyes",
"eyes": "looking at viewer, glowing eyes, heart-shaped pupils, hypnotic gaze", "eyes": "looking_at_viewer, glowing_eyes",
"arms": "reaching towards viewer, one arm outstretched, hand near face", "arms": "outstretched_hand, reaching_towards_viewer, arms_up",
"hands": "open palm, casting gesture, finger snaps, beckoning motion", "hands": "open_hand, hand_gesture",
"torso": "facing forward, slight arch", "torso": "upper_body, facing_viewer",
"pelvis": "hips swayed, weight shifted", "pelvis": "n/a",
"legs": "standing, crossed legs", "legs": "n/a",
"feet": "out of frame", "feet": "n/a",
"additional": "pink magic, magical aura, sparkles, heart particles, glowing hands, casting spell, enchantment, visual effects" "additional": "aura, soft_light, magic_effects, sparkling"
},
"participants": {
"solo_focus": "true",
"orientation": "F"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/charm_person_magic.safetensors", "lora_name": "Illustrious/Poses/charm_person_magic.safetensors",
"lora_weight": 1.0, "lora_weight": 0.7,
"lora_triggers": "charm_person_magic" "lora_triggers": "charm_person_(magic), cham_aura",
"lora_weight_min": 0.7,
"lora_weight_max": 0.7
}, },
"tags": [ "tags": [
"casting_spell",
"magic", "magic",
"fantasy", "aura",
"enchantment", "outstretched_hand",
"hypnotic", "reaching_towards_viewer",
"alluring", "glowing_eyes",
"spellcasting", "looking_at_viewer",
"pink energy" "smile",
"cowboy_shot",
"solo"
] ]
} }

View File

@@ -2,33 +2,31 @@
"action_id": "cheekbulge", "action_id": "cheekbulge",
"action_name": "Cheekbulge", "action_name": "Cheekbulge",
"action": { "action": {
"full_body": "kneeling, leaning forward, close-up focus on face", "full_body": "fellatio",
"head": "visible cheek bulge, distorted cheek, stuffed mouth, mouth stretched", "head": "cheek_bulge, head_tilt, saliva",
"eyes": "looking up, upturned eyes, teary eyes, eye contact", "eyes": "looking_up",
"arms": "reaching forward or resting on partner's legs", "arms": "arms_behind_back",
"hands": "holding object, guiding, or resting on thighs", "hands": "hands_on_head",
"torso": "angled forward", "torso": "upper_body",
"pelvis": "neutral kneeling posture", "pelvis": "kneeling",
"legs": "kneeling, bent knees", "legs": "kneeling",
"feet": "toes pointing back", "feet": "plantar_flexion",
"additional": "fellatio, oral sex, saliva, saliva trail, penis in mouth, face deformation" "additional": "deepthroat, pov, penis"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/cheekbulge.safetensors", "lora_name": "Illustrious/Poses/cheekbulge.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "cheekbulge" "lora_triggers": "cheek bulge",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"cheek bulge", "cheek_bulge",
"stuffed mouth", "deepthroat",
"fellatio", "fellatio",
"distorted face", "saliva",
"oral sex", "head_tilt",
"looking up", "penis",
"face deformation" "pov"
] ]
} }

View File

@@ -2,38 +2,36 @@
"action_id": "chokehold", "action_id": "chokehold",
"action_name": "Chokehold", "action_name": "Chokehold",
"action": { "action": {
"full_body": "dynamic combat pose, character positioning behind an opponent, executing a rear chokehold, two people grappling", "full_body": "rear_naked_choke, from_behind, struggling, kneeling",
"head": "chin tucked tight, face pressed close to the opponent's head, intense or straining expression", "head": "head_back, expressionless, open_mouth",
"eyes": "focused, narrowed in concentration", "eyes": "rolling_eyes, tearing_up, empty_eyes",
"arms": "one arm wrapped tightly around the opponent's neck, the other arm locking the hold by gripping the bicep or clasping hands", "arms": "arm_around_neck, struggling, grabbing_arm",
"hands": "clenching tight, gripping own bicep or locking fingers behind opponent's neck", "hands": "clenched_hands, struggling",
"torso": "chest pressed firmly against the opponent's back, leaning back slightly for leverage", "torso": "leaning_forward, arched_back",
"pelvis": "pressed close to opponent's lower back", "pelvis": "kneeling, bent_over",
"legs": "wrapped around the opponent's waist (body triangle or hooks in) or wide standing stance for stability", "legs": "kneeling, spread_legs",
"feet": "hooked inside opponent's thighs or planted firmly on the ground", "feet": "barefoot, toes_curled",
"additional": "struggle, tension, submission hold, restrictive motion, self-defense scenario" "additional": "distress, blushing, saliva, veins"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/chokehold.safetensors", "lora_name": "Illustrious/Poses/chokehold.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "chokehold" "lora_triggers": "choke hold",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"chokehold", "choke_hold",
"grappling", "rear_naked_choke",
"rear naked choke", "strangling",
"fighting", "arm_around_neck",
"wrestling", "from_behind",
"martial arts", "struggling",
"restraining", "head_back",
"submission", "clenched_teeth",
"headlock", "rolling_eyes",
"strangle", "drooling",
"duo", "saliva",
"struggle" "ohogao"
] ]
} }

View File

@@ -2,35 +2,38 @@
"action_id": "cleavageteasedwnsty_000008", "action_id": "cleavageteasedwnsty_000008",
"action_name": "Cleavageteasedwnsty 000008", "action_name": "Cleavageteasedwnsty 000008",
"action": { "action": {
"full_body": "Medium shot or close-up focus on the upper body, character facing forward", "full_body": "leaning_forward, sexually_suggestive",
"head": "Looking directly at viewer, chin slightly tucked or tilted, expression varying from shy blush to seductive smile", "head": "looking_at_viewer, smile, blush, one_eye_closed",
"eyes": "Eye contact, focused on the viewer", "eyes": "blue_eyes, looking_at_viewer",
"arms": "Elbows bent, forearms brought up towards the chest", "arms": "arms_bent_at_elbows",
"hands": "Fingers grasping the hem of the collar or neckline of the top, pulling it downwards", "hands": "hands_on_own_chest, clothes_pull, adjusting_clothes",
"torso": "Clothing fabric stretched taut, neckline pulled down low to reveal cleavage, emphasis on the chest area", "torso": "cleavage, breasts_squeezed_together, areola_slip, bare_shoulders, collarbone",
"pelvis": "Neutral position, often obscured in close-up shots", "pelvis": "n/a",
"legs": "Neutral or out of frame", "legs": "n/a",
"feet": "Out of frame", "feet": "n/a",
"additional": "Fabric tension lines, revealing skin, seductive atmosphere" "additional": "teasing, undressing"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/CleavageTeaseDwnsty-000008.safetensors", "lora_name": "Illustrious/Poses/CleavageTeaseDwnsty-000008.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "CleavageTeaseDwnsty-000008" "lora_triggers": "pulling down own clothes, teasing",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"cleavage", "clothes_pull",
"clothes pull", "shirt_pull",
"collar pull",
"shirt pull",
"looking at viewer",
"breasts",
"teasing", "teasing",
"breasts_squeezed_together",
"areola_slip",
"undressing",
"leaning_forward",
"cleavage",
"hands_on_own_chest",
"collarbone",
"bare_shoulders",
"sexually_suggestive",
"blush", "blush",
"holding clothes" "one_eye_closed"
] ]
} }

View File

@@ -1,33 +1,33 @@
{ {
"action": {
"additional": "nsfw, semen, cum",
"arms": "",
"eyes": "looking_at_viewer, eyes_open",
"feet": "",
"full_body": "close-up, portrait",
"hands": "",
"head": "facial, open_mouth, tongue, saliva, blush",
"legs": "",
"pelvis": "",
"torso": ""
},
"action_id": "closeup_facial_illus", "action_id": "closeup_facial_illus",
"action_name": "Closeup Facial Illus", "action_name": "Closeup Facial Illus",
"action": {
"full_body": "extreme close-up portrait shot framing the face and upper neck, macro focus",
"head": "facing directly forward, highly detailed facial micro-expressions, blush",
"eyes": "intense gaze, intricate iris details, looking at viewer, eyelashes focus",
"arms": "not visible",
"hands": "not visible",
"torso": "upper collarbone area only",
"pelvis": "not visible",
"legs": "not visible",
"feet": "not visible",
"additional": "illustrative style, shallow depth of field, soft lighting, detailed skin texture, vibrant colors"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
},
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Closeup_Facial_iLLus.safetensors", "lora_name": "Illustrious/Poses/Closeup_Facial_iLLus.safetensors",
"lora_weight": 1.0, "lora_triggers": "Closeup Facial",
"lora_triggers": "Closeup_Facial_iLLus" "lora_weight": 1,
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"facial",
"close-up", "close-up",
"portrait", "portrait",
"face focus", "open_mouth",
"illustration", "tongue",
"detailed eyes", "looking_at_viewer",
"macro" "saliva",
"blush"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/cof.safetensors", "lora_name": "Illustrious/Poses/cof.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "cof" "lora_triggers": "cof",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"standing force", "standing force",
@@ -30,4 +32,4 @@
"legs wrapped", "legs wrapped",
"straddling" "straddling"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/cooperative_grinding.safetensors", "lora_name": "Illustrious/Poses/cooperative_grinding.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "cooperative_grinding" "lora_triggers": "cooperative_grinding",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"standing sex", "standing sex",
@@ -30,4 +32,4 @@
"grinding", "grinding",
"lift and carry" "lift and carry"
] ]
} }

View File

@@ -2,35 +2,34 @@
"action_id": "cooperativepaizuri", "action_id": "cooperativepaizuri",
"action_name": "Cooperativepaizuri", "action_name": "Cooperativepaizuri",
"action": { "action": {
"full_body": "intimate sexual pose, two people interacting closely", "full_body": "cooperative_paizuri, 2girls, 1boy, sexual_activity",
"head": "flushed face, drooling, tongue out, expression of pleasure or submission", "head": "smile, open_mouth, facial",
"eyes": "half-closed eyes, looking down, ahegao or heart-shaped pupils", "eyes": "looking_at_partner, half_closed_eyes",
"arms": "arms supporting body weight or holding partner", "arms": "arms_around_neck, grabbing_penis",
"hands": "recipient's hands grasping subject's breasts, squeezing breasts together towards center", "hands": "on_penis, guiding_penis",
"torso": "exposed breasts, heavy cleavage, chest compressed by external hands", "torso": "large_breasts, breasts_touching, nipples",
"pelvis": "leaning forward, hips raised or straddling", "pelvis": "penis, glans, erection",
"legs": "kneeling, spread legs, or wrapping around partner", "legs": "kneeling, straddling",
"feet": "arched feet, toes curled", "feet": "barefoot",
"additional": "penis sliding between breasts, friction, lubrication, skin indentation" "additional": "pov, cum_on_body, fluids"
},
"participants": {
"solo_focus": "false",
"orientation": "MFF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/cooperativepaizuri.safetensors", "lora_name": "Illustrious/Poses/cooperativepaizuri.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "cooperativepaizuri" "lora_triggers": "cooperative paizuri",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"cooperative_paizuri",
"2girls",
"1boy",
"paizuri", "paizuri",
"assisted paizuri", "breasts",
"male hand", "penis",
"breast squeeze", "facial",
"titjob", "pov",
"penis between breasts", "from_side",
"sexual act", "large_breasts"
"cleavage",
"big breasts"
] ]
} }

View File

@@ -2,34 +2,31 @@
"action_id": "covering_privates_illustrious_v1_0", "action_id": "covering_privates_illustrious_v1_0",
"action_name": "Covering Privates Illustrious V1 0", "action_name": "Covering Privates Illustrious V1 0",
"action": { "action": {
"full_body": "standing in a defensive, modest posture, body language expressing vulnerability", "full_body": "covering_privates",
"head": "tilted down or looking away in embarrassment", "head": "embarrassed, blush",
"eyes": "averted gaze, shy or flustered expression", "eyes": "looking_at_viewer",
"arms": "arms pulled in tight against the body", "arms": "arm_across_chest",
"hands": "hands covering crotch, hand over breasts, covering self", "hands": "covering_breasts, covering_crotch",
"torso": "slightly hunched forward or twisting away", "torso": "upper_body",
"pelvis": "hips slightly turned", "pelvis": "hips",
"legs": "legs pressed tightly together, thighs touching, knock-kneed", "legs": "legs_together",
"feet": "standing close together, possibly pigeon-toed", "feet": "standing",
"additional": "blush, steam or light rays (optional)" "additional": "modesty"
},
"participants": {
"solo_focus": "true",
"orientation": "F"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/covering privates_illustrious_V1.0.safetensors", "lora_name": "Illustrious/Poses/covering privates_illustrious_V1.0.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "covering privates_illustrious_V1.0" "lora_triggers": "covering privates, covering crotch, covering breasts",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"covering self", "covering_privates",
"covering_breasts",
"covering_crotch",
"embarrassed", "embarrassed",
"blush", "blush",
"hands on crotch", "arm_across_chest",
"arm across chest", "legs_together"
"modesty",
"legs together",
"shy"
] ]
} }

View File

@@ -2,35 +2,25 @@
"action_id": "coveringownmouth_ill_v1", "action_id": "coveringownmouth_ill_v1",
"action_name": "Coveringownmouth Ill V1", "action_name": "Coveringownmouth Ill V1",
"action": { "action": {
"full_body": "character appearing sick or nauseous, posture slightly hunched forward", "full_body": "character covering their mouth with their hand",
"head": "pale complexion, sweatdrops on face, cheeks flushed or blue (if severe), grimacing", "head": "lower face obscured by hand",
"eyes": "tearing up, wincing, half-closed, or dilated pupils", "eyes": "neutral or expressive (depending on context)",
"arms": "one or both arms raised sharply towards the face", "arms": "arm raised towards face",
"hands": "covering mouth, hand over mouth, fingers clutching face", "hands": "hand placed over mouth, palm inward",
"torso": "leaning forward, tense shoulders usually associated with retching or coughing", "torso": "upper body visible",
"pelvis": "neutral position or slightly bent forward", "pelvis": "variable",
"legs": "knees slightly bent or trembling", "legs": "variable",
"feet": "planted firmly or stumbling", "feet": "variable",
"additional": "motion lines indicating shaking, gloom lines, vomit (optional/extreme)" "additional": "often indicates surprise, embarrassment, or silence"
},
"participants": {
"solo_focus": "true",
"orientation": "F"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/CoveringOwnMouth_Ill_V1.safetensors", "lora_name": "Illustrious/Poses/CoveringOwnMouth_Ill_V1.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "CoveringOwnMouth_Ill_V1" "lora_triggers": "covering_own_mouth",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"covering mouth", "covering_own_mouth"
"hand over mouth",
"ill",
"sick",
"nausea",
"queasy",
"motion sickness",
"sweat",
"pale"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/cowgirl-position-breast-press-illustriousxl-lora-nochekaiser.safetensors", "lora_name": "Illustrious/Poses/cowgirl-position-breast-press-illustriousxl-lora-nochekaiser.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "cowgirl-position-breast-press-illustriousxl-lora-nochekaiser" "lora_triggers": "cowgirl-position-breast-press-illustriousxl-lora-nochekaiser",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"cowgirl position", "cowgirl position",
@@ -32,4 +34,4 @@
"breast deformation", "breast deformation",
"squish" "squish"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Cuckold NTR-IL_NAI_PY.safetensors", "lora_name": "Illustrious/Poses/Cuckold NTR-IL_NAI_PY.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "Cuckold NTR-IL_NAI_PY" "lora_triggers": "Cuckold NTR-IL_NAI_PY",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"ntr", "ntr",
@@ -30,4 +32,4 @@
"doggy style", "doggy style",
"looking back" "looking back"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/cum_bathIllustrious.safetensors", "lora_name": "Illustrious/Poses/cum_bathIllustrious.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "cum_bathIllustrious" "lora_triggers": "cum_bathIllustrious",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"cum_bath", "cum_bath",
@@ -31,4 +33,4 @@
"bukkake", "bukkake",
"messy" "messy"
] ]
} }

View File

@@ -2,38 +2,34 @@
"action_id": "cum_in_cleavage_illustrious", "action_id": "cum_in_cleavage_illustrious",
"action_name": "Cum In Cleavage Illustrious", "action_name": "Cum In Cleavage Illustrious",
"action": { "action": {
"full_body": "close-up or cowboy shot focusing intensely on the upper body and chest area", "full_body": "passionate upper body focus, intimacy",
"head": "flushed cheeks, heavy breathing, mouth slightly open, expression of embarrassment or pleasure, saliva trail", "head": "blush, mouth slightly open, expression of pleasure or service",
"eyes": "half-closed, heart-shaped pupils (optional), looking down at chest or shyly at viewer", "eyes": "looking at viewer, potentially heavy lidded or heart-shaped pupils",
"arms": "arms bent brings hands to chest level", "arms": "arms bent, hands bringing breasts together",
"hands": "hands squeezing breasts together to deepen cleavage, or pulling clothing aside to reveal the mess", "hands": "holding own breasts, squeezing or pressing breasts together",
"torso": "large breasts pressed together, deep cleavage filled with pooling white seminal fluid, cum dripping down skin, messy upper body", "torso": "bare chest, medium to large breasts, pronounced cleavage, cum pooling in cleavage",
"pelvis": "obscured or hips visible in background", "pelvis": "not visible or seated",
"legs": "obscured", "legs": "not visible",
"feet": "out of frame", "feet": "not visible",
"additional": "high viscosity liquid detail, shiny skin, wet texture, after sex atmosphere" "additional": "pool of liquid in cleavage, messy, erotic context"
},
"participants": {
"solo_focus": "true",
"orientation": "F"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/cum_in_cleavage_illustrious.safetensors", "lora_name": "Illustrious/Poses/cum_in_cleavage_illustrious.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "cum_in_cleavage_illustrious" "lora_triggers": "cum_in_cleavage, holding own breasts",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"cum", "cum_on_breasts",
"cum in cleavage",
"cum on breasts",
"semen",
"huge breasts",
"cleavage",
"messy",
"sticky",
"paizuri", "paizuri",
"sex act", "cleavage",
"illustration", "breasts",
"nsfw" "breast_lift",
"plump",
"mature_female",
"short_hair",
"black_hair",
"indoors"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Cum_inside_slime_v0.2.safetensors", "lora_name": "Illustrious/Poses/Cum_inside_slime_v0.2.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "Cum_inside_slime_v0.2" "lora_triggers": "Cum_inside_slime_v0.2",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"slime girl", "slime girl",
@@ -32,4 +34,4 @@
"stomach fill", "stomach fill",
"viscous" "viscous"
] ]
} }

View File

@@ -2,35 +2,44 @@
"action_id": "cum_shot", "action_id": "cum_shot",
"action_name": "Cum Shot", "action_name": "Cum Shot",
"action": { "action": {
"full_body": "close-up, portrait, upper body focus, kneeling or sitting", "full_body": "portrait or upper body focus, capturing the moment of ejaculation or aftermath",
"head": "mouth open, tongue out, blushing, sweating, cum on face, cum in mouth, semen on hair, messy hair", "head": "tilted back or facing forward, expression of pleasure or shock",
"eyes": "half-closed eyes, rolling eyes, heart-shaped pupils, looking at viewer, glazed eyes", "eyes": "closed or rolling back, eyelashes detailed",
"arms": "arms relaxed or hands framing face", "arms": "out of frame or hands touching face",
"hands": "hands on cheeks, making peace sign, or wiping face", "hands": "optional, touching face or wiping",
"torso": "exposed upper body, wet skin, cleavage", "torso": "chest visible, potentially with cum_on_body",
"pelvis": "obscured or out of frame", "pelvis": "usually out of frame in this context",
"legs": "kneeling or out of frame", "legs": "out of frame",
"feet": "out of frame", "feet": "out of frame",
"additional": "white liquid, splashing, sticky texture, aftermath, detailed fluids, high contrast" "additional": "white fluids, messy, dripping, shiny skin"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/cum_shot.safetensors", "lora_name": "Illustrious/Poses/cum_shot.safetensors",
"lora_weight": 1.0, "lora_weight": 0.8,
"lora_triggers": "cum_shot" "lora_triggers": "cum, facial, ejaculation",
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
}, },
"tags": [ "tags": [
"cum_shot",
"facial",
"semen",
"cum", "cum",
"facial",
"ejaculation",
"cum_on_body",
"cum_on_breasts",
"cum_in_eye",
"cum_in_mouth",
"bukkake", "bukkake",
"aftermath", "after_sex",
"nsfw", "messy_body",
"liquid", "sticky",
"messy" "white_fluid",
"open_mouth",
"tongue",
"bukkake",
"tongue_out",
"saliva",
"sweat",
"blush",
"ahegao"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Cum_Swap.safetensors", "lora_name": "Illustrious/Poses/Cum_Swap.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "Cum_Swap" "lora_triggers": "Cum_Swap",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"cum swap", "cum swap",
@@ -34,4 +36,4 @@
"sharing fluids", "sharing fluids",
"intimacy" "intimacy"
] ]
} }

View File

@@ -0,0 +1,34 @@
{
"action_id": "cumblastfacial",
"action_name": "Cumblastfacial",
"action": {
"full_body": "solo, bukkake",
"head": "facial, head_tilt, looking_up",
"eyes": "cum_in_eye",
"arms": "arms_down",
"hands": "hands_down",
"torso": "cum_on_upper_body",
"pelvis": "standing",
"legs": "standing",
"feet": "standing",
"additional": "projectile_cum, excessive_cum, ejaculation"
},
"lora": {
"lora_name": "Illustrious/Poses/cumblastfacial.safetensors",
"lora_weight": 1.0,
"lora_triggers": "xcbfacialx",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
},
"tags": [
"facial",
"projectile_cum",
"bukkake",
"excessive_cum",
"ejaculation",
"head_tilt",
"looking_up",
"cum_in_eye",
"cum_on_hair"
]
}

View File

@@ -2,35 +2,32 @@
"action_id": "cuminhands", "action_id": "cuminhands",
"action_name": "Cuminhands", "action_name": "Cuminhands",
"action": { "action": {
"full_body": "upper body focus, character presenting cupped hands towards the viewer", "full_body": "after_fellatio",
"head": "looking down at hands or looking at viewer, expression of embarrassment or lewd satisfaction, blushing", "head": "facial, cum_string, cum_in_mouth",
"eyes": "half-closed or wide open, focused on the hands", "eyes": "looking_at_hands",
"arms": "elbows bent, forearms brought together in front of the chest or stomach", "arms": "arms_bent",
"hands": "cupped hands, palms facing up, fingers tight together, holding white liquid, messy hands", "hands": "cupping_hands, cum_on_hands",
"torso": "posture slightly hunched or leaning forward to show hands", "torso": "upper_body",
"pelvis": "stationary", "pelvis": "n/a",
"legs": "kneeling or standing", "legs": "n/a",
"feet": "planted", "feet": "n/a",
"additional": "white liquid, seminal fluid, dripping between fingers, sticky texture, high contrast fluids" "additional": "excessive_cum"
},
"participants": {
"solo_focus": "true",
"orientation": "F"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/cuminhands.safetensors", "lora_name": "Illustrious/Poses/cuminhands.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "cuminhands" "lora_triggers": "cum on hands, cupping hands, excessive cum, cum on face, cum in mouth, cum string",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"cum in hands", "cum_on_hands",
"cupped hands", "cupping_hands",
"holding cum", "excessive_cum",
"cum", "facial",
"bodily fluids", "cum_in_mouth",
"messy", "cum_string",
"palms up", "after_fellatio",
"sticky", "looking_at_hands"
"white liquid"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/cumshot.safetensors", "lora_name": "Illustrious/Poses/cumshot.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "cumshot" "lora_triggers": "cumshot",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"cum", "cum",
@@ -31,4 +33,4 @@
"seminal fluid", "seminal fluid",
"detailed liquid" "detailed liquid"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/cumtube-000035.safetensors", "lora_name": "Illustrious/Poses/cumtube-000035.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "cumtube-000035" "lora_triggers": "cumtube-000035",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"cumtube", "cumtube",
@@ -33,4 +35,4 @@
"open mouth", "open mouth",
"wet skin" "wet skin"
] ]
} }

View File

@@ -2,33 +2,38 @@
"action_id": "cunnilingus_on_back_illustriousxl_lora_nochekaiser", "action_id": "cunnilingus_on_back_illustriousxl_lora_nochekaiser",
"action_name": "Cunnilingus On Back Illustriousxl Lora Nochekaiser", "action_name": "Cunnilingus On Back Illustriousxl Lora Nochekaiser",
"action": { "action": {
"full_body": "lying on back, receiving oral sex, partner between legs", "full_body": "lying, on_back, spread_legs, nude",
"head": "head tilted back, expression of pleasure, blushing, heavy breathing, mouth open", "head": "torogao, blush, sweat",
"eyes": "eyes closed, rolling eyes, or looking down at partner", "eyes": "half-closed_eyes",
"arms": "arms resting on bed or reaching towards partner", "arms": "bent_arms",
"hands": "gripping bedsheets, clutching pillow, or holding partner's head", "hands": "hands_on_own_chest",
"torso": "arched back, chest heaving", "torso": "navel, nipples, sweat",
"pelvis": "hips lifted, crotch exposed to partner", "pelvis": "cunnilingus, pussy",
"legs": "spread legs, legs apart, knees bent, m-legs", "legs": "spread_legs, thighs",
"feet": "toes curled, feet on bed", "feet": "",
"additional": "partner's face in crotch, tongue, saliva, sexual act, intimate focus" "additional": "on_bed, pillow, from_side"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/cunnilingus-on-back-illustriousxl-lora-nochekaiser.safetensors", "lora_name": "Illustrious/Poses/cunnilingus-on-back-illustriousxl-lora-nochekaiser.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "cunnilingus-on-back-illustriousxl-lora-nochekaiser" "lora_triggers": "cunnilingus on back",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"cunnilingus", "cunnilingus",
"oral sex", "lying",
"lying on back", "on_back",
"spread legs", "spread_legs",
"pleasure", "hands_on_own_chest",
"sex", "torogao",
"NSFW" "half-closed_eyes",
"sweat",
"blush",
"navel",
"nipples",
"hetero",
"on_bed",
"from_side"
] ]
} }

View File

@@ -2,32 +2,32 @@
"action_id": "danglinglegs", "action_id": "danglinglegs",
"action_name": "Danglinglegs", "action_name": "Danglinglegs",
"action": { "action": {
"full_body": "holding waist, dangling legs, size difference", "full_body": "suspended_congress, lifting_person, standing_sex",
"head": "facing forward or looking down", "head": "clenched_teeth, head_back",
"eyes": "relaxed gaze", "eyes": "eyes_closed",
"arms": "resting on lap or gripping the edge of the seat", "arms": "arms_around_neck",
"hands": "placed on thighs or holding on", "hands": "hands_on_shoulders",
"torso": "upright sitting posture", "torso": "body_lifted",
"pelvis": "seated on edge", "pelvis": "hips_held",
"legs": "dangling in the air, knees bent at edge, feet not touching the floor", "legs": "legs_apart, feet_off_ground",
"feet": "relaxed, hanging loose", "feet": "toes_up, barefoot",
"additional": "sitting on ledge, sitting on desk, high stool" "additional": "size_difference, larger_male, sex_from_behind"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/danglinglegs.safetensors", "lora_name": "Illustrious/Poses/danglinglegs.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "danglinglegs" "lora_triggers": "dangling legs, lifted by penis, suspended on penis",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"dangling legs", "suspended_congress",
"sitting", "lifting_person",
"feet off ground", "standing_sex",
"from below", "sex_from_behind",
"ledge", "size_difference",
"high place" "toes_up",
"barefoot",
"clenched_teeth"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Deep_Kiss-000007.safetensors", "lora_name": "Illustrious/Poses/Deep_Kiss-000007.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "Deep_Kiss-000007" "lora_triggers": "Deep_Kiss-000007",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"deep kiss", "deep kiss",
@@ -38,4 +40,4 @@
"eyes closed", "eyes closed",
"duo" "duo"
] ]
} }

View File

@@ -2,39 +2,34 @@
"action_id": "deepthroat_ponytailhandle_anime_il_v1", "action_id": "deepthroat_ponytailhandle_anime_il_v1",
"action_name": "Deepthroat Ponytailhandle Anime Il V1", "action_name": "Deepthroat Ponytailhandle Anime Il V1",
"action": { "action": {
"full_body": "kneeling, performing deepthroat fellatio, body angled towards partner", "full_body": "irrumatio, fellatio, 1boy, 1girl, duo",
"head": "tilted back forcedly, mouth stretched wide, gagging, face flushed, hair pulled taught", "head": "forced_oral, head_back, mouth_open, saliva, drooling",
"eyes": "tearing up, rolled back, looking up, streaming tears", "eyes": "crying, tears, glare, wide_eyes",
"arms": "reaching forward, holding onto partner's legs for support", "arms": "arms_at_sides",
"hands": "grasping thighs, fingers digging in", "hands": "hands_down",
"torso": "leaning forward, back slightly arched", "torso": "upper_body",
"pelvis": "kneeling position", "pelvis": "n/a",
"legs": "knees on ground, shins flat", "legs": "n/a",
"feet": "toes curled tightly", "feet": "n/a",
"additional": "saliva trails, heavy breathing, hand grabbing ponytail, penis in mouth, irrumatio" "additional": "grabbing_another's_hair, penis, deepthroat, ponytail"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Deepthroat_PonytailHandle_Anime_IL_V1.safetensors", "lora_name": "Illustrious/Poses/Deepthroat_PonytailHandle_Anime_IL_V1.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "Deepthroat_PonytailHandle_Anime_IL_V1" "lora_triggers": "deepthroat_ponytailhandle, grabbing another's hair, ponytail",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"irrumatio",
"deepthroat", "deepthroat",
"fellatio", "fellatio",
"oral sex", "grabbing_another's_hair",
"hair pull",
"grabbing hair",
"ponytail", "ponytail",
"kneeling", "drooling",
"gagging",
"irrumatio",
"tears", "tears",
"saliva", "crying",
"submissive", "penis",
"forced oral" "forced"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Defeat NTR-IL_NAI_PY.safetensors", "lora_name": "Illustrious/Poses/Defeat NTR-IL_NAI_PY.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "Defeat NTR-IL_NAI_PY" "lora_triggers": "Defeat NTR-IL_NAI_PY",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"defeat", "defeat",
@@ -34,4 +36,4 @@
"looking down", "looking down",
"tears" "tears"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Defeat suspension-IL_NAI_PY.safetensors", "lora_name": "Illustrious/Poses/Defeat suspension-IL_NAI_PY.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "Defeat suspension-IL_NAI_PY" "lora_triggers": "Defeat suspension-IL_NAI_PY",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"suspension", "suspension",
@@ -33,4 +35,4 @@
"bdsm", "bdsm",
"bondage" "bondage"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Defeatspitroast_Illustrious.safetensors", "lora_name": "Illustrious/Poses/Defeatspitroast_Illustrious.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "Defeatspitroast_Illustrious" "lora_triggers": "Defeatspitroast_Illustrious",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"doggystyle", "doggystyle",
@@ -36,4 +38,4 @@
"", "",
"1girl" "1girl"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Disinterested_Sex___Bored_Female.safetensors", "lora_name": "Illustrious/Poses/Disinterested_Sex___Bored_Female.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "Disinterested_Sex___Bored_Female" "lora_triggers": "Disinterested_Sex___Bored_Female",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"bored", "bored",
@@ -33,4 +35,4 @@
"indifferent", "indifferent",
"expressionless" "expressionless"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/display_case_bdsm_illus.safetensors", "lora_name": "Illustrious/Poses/display_case_bdsm_illus.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "display_case_bdsm_illus" "lora_triggers": "display_case_bdsm_illus",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"glass box", "glass box",
@@ -30,4 +32,4 @@
"through glass", "through glass",
"human exhibit" "human exhibit"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/display_case_illustr.safetensors", "lora_name": "Illustrious/Poses/display_case_illustr.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "display_case_illustr" "lora_triggers": "display_case_illustr",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"display case", "display case",
@@ -33,4 +35,4 @@
"toy", "toy",
"transparent" "transparent"
] ]
} }

View File

@@ -2,32 +2,34 @@
"action_id": "doggydoublefingering", "action_id": "doggydoublefingering",
"action_name": "Doggydoublefingering", "action_name": "Doggydoublefingering",
"action": { "action": {
"full_body": "all fours, doggy style, kneeling, presenting rear, from behind", "full_body": "Three females arranged side-by-side in a row, all facing away from viewer or towards viewer depending on angle, engaged in group sexual activity",
"head": "looking back, looking at viewer, blushing face", "head": "various expressions, blushing, sweating, looking back or down",
"eyes": "half-closed eyes, expressionless or aroused", "eyes": "open or closed in pleasure",
"arms": "reaching back between legs, reaching towards crotch", "arms": "varied, gripping sheets or supporting body",
"hands": "fingering, double fingering, both hands used, spreading vaginal lips, manipulating genitals", "hands": "resting on surface or gripping",
"torso": "arched back, curvature of spine", "torso": "leaning forward, breasts visible if from front",
"pelvis": "hips raised, presenting pussy, exposed gluteal crease", "pelvis": "hips raised, bent over",
"legs": "knees bent on ground, thighs spread", "legs": "kneeling on all fours",
"feet": "toes curled, relaxing instep", "feet": "resting on bed or ground",
"additional": "pussy juice, focus on buttocks, focus on genitals" "additional": "center female receiving vaginal penetration from behind (doggystyle), two distinct side females being fingered simultaneously, male figure or disembodied hands performing the fingering"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/DoggyDoubleFingering.safetensors", "lora_name": "Illustrious/Poses/DoggyDoubleFingering.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "DoggyDoubleFingering" "lora_triggers": "doggydoublefingerfront, from front, 3girls, multiple girls, fingering, sex from behind, doggystyle",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"masturbation", "3girls",
"solo", "group_sex",
"ass focus", "doggystyle",
"pussy", "fingering",
"kneeling", "all_fours",
"NSFW" "sex_from_behind",
"vaginal",
"hetero",
"harem",
"male_fingering"
] ]
} }

View File

@@ -2,36 +2,37 @@
"action_id": "dunking_face_in_a_bowl_of_cum_r1", "action_id": "dunking_face_in_a_bowl_of_cum_r1",
"action_name": "Dunking Face In A Bowl Of Cum R1", "action_name": "Dunking Face In A Bowl Of Cum R1",
"action": { "action": {
"full_body": "leaning forward over a table or surface, bent at the waist", "full_body": "leaning_forward, head_down, drowning",
"head": "face submerged in a bowl, head bent downward", "head": "face_down, air_bubble, crying, tears, embarrassed, disgust",
"eyes": "closed or obscured by liquid", "eyes": "closed_eyes, tears",
"arms": "resting on the surface to support weight or holding the bowl", "arms": "clutching_head, arms_up",
"hands": "palms flat on table or gripping the sides of the bowl", "hands": "clutching_head",
"torso": "leaned forward, horizontal alignment", "torso": "leaning_forward",
"pelvis": "pushed back", "pelvis": "leaning_forward",
"legs": "standing or kneeling", "legs": "standing",
"feet": "resting on floor", "feet": "standing",
"additional": "cum pool, large bowl filled with viscous white liquid, semen, messy, splashing, dripping" "additional": "bowl, cum"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Dunking_face_in_a_bowl_of_cum_r1.safetensors", "lora_name": "Illustrious/Poses/Dunking_face_in_a_bowl_of_cum_r1.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "Dunking_face_in_a_bowl_of_cum_r1" "lora_triggers": "face in cum bowl, cum in bowl, cum bubble, excessive cum",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"dunking face", "1girl",
"face in bowl", "solo",
"bowl of cum", "leaning_forward",
"semen", "head_down",
"messy", "clutching_head",
"submerged", "drowning",
"leaning forward", "air_bubble",
"bent over", "crying",
"white liquid", "tears",
"embarrassed",
"disgust",
"bowl",
"cum" "cum"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/ekiben_ill-10.safetensors", "lora_name": "Illustrious/Poses/ekiben_ill-10.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "ekiben_ill-10" "lora_triggers": "ekiben_ill-10",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"ekiben", "ekiben",
@@ -32,4 +34,4 @@
"duo", "duo",
"sex" "sex"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Elbow_Squeeze__Concept_Lora-000008.safetensors", "lora_name": "Illustrious/Poses/Elbow_Squeeze__Concept_Lora-000008.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "Elbow_Squeeze__Concept_Lora-000008" "lora_triggers": "Elbow_Squeeze__Concept_Lora-000008",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"elbow squeeze", "elbow squeeze",
@@ -29,4 +31,4 @@
"squeezing", "squeezing",
"tight clothes" "tight clothes"
] ]
} }

View File

@@ -2,36 +2,35 @@
"action_id": "extreme_sex_v1_0_illustriousxl", "action_id": "extreme_sex_v1_0_illustriousxl",
"action_name": "Extreme Sex V1 0 Illustriousxl", "action_name": "Extreme Sex V1 0 Illustriousxl",
"action": { "action": {
"full_body": "lying on back, mating press, legs lifted high, dynamic angle, foreshortening", "full_body": "sitting, engaging in sexual activity, intense body language",
"head": "head leaning back, heavy blush, sweat, mouth open, tongue out, intense expression", "head": "tilted back, expression of ecstasy",
"eyes": "rolling eyes, heart-shaped pupils, eyelashes", "eyes": "rolling_eyes, loss of focus, cross-eyed (ahegao)",
"arms": "arms reaching forward, grabbing sheets, or holding own legs", "arms": "clinging or holding partner",
"hands": "clenched hands, grabbing", "hands": "grasping details",
"torso": "arched back, chest exposed, sweat on skin", "torso": "heaving, covered in sweat",
"pelvis": "hips lifted, pelvis tilted upwards", "pelvis": "engaged in action",
"legs": "legs spread, m-legs, legs folded towards torso, knees bent", "legs": "wrapped around or spread",
"feet": "feet in air, toes curled, plantar view", "feet": "toes curled",
"additional": "motion lines, shaking, bodily fluids, bed sheet, pillow" "additional": "drooling, saliva_trail, flushing, messy_hair"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/extreme-sex-v1.0-illustriousxl.safetensors", "lora_name": "Illustrious/Poses/extreme-sex-v1.0-illustriousxl.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "extreme-sex-v1.0-illustriousxl" "lora_triggers": "extreme sex",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"mating press", "rolling_eyes",
"lying on back",
"legs up",
"open mouth",
"blush",
"sweat",
"m-legs",
"intense",
"ahegao", "ahegao",
"explicit" "drooling",
"sweat",
"open_mouth",
"tongue_out",
"messy_hair",
"heavy_breathing",
"blush",
"mind_break",
"sex"
] ]
} }

View File

@@ -2,35 +2,34 @@
"action_id": "face_grab_illustrious", "action_id": "face_grab_illustrious",
"action_name": "Face Grab Illustrious", "action_name": "Face Grab Illustrious",
"action": { "action": {
"full_body": "medium shot or close up of a character having their face grabbed by a hand", "full_body": "POV close-up of a character having their face grabbed by the viewer",
"head": "face obscured by hand, cheeks squeezed, skin indentation from fingers, annoyed or pained expression", "head": "forced expression, open mouth, tongue out, pout, grabbing cheeks or chin",
"eyes": "squinting or partially covered by fingers", "eyes": "looking at viewer, crying, streaming tears",
"arms": "raised upwards attempting to pry the hand away", "arms": "often not visible or passive",
"hands": "holding the wrist or forearm of the grabbing hand", "hands": "pov hands, hand grabbing face",
"torso": "upper body slightly leaned back from the force of the grab", "torso": "upper body, often nude or partially visible",
"pelvis": "neutral alignment", "pelvis": "usually out of frame",
"legs": "standing still", "legs": "out of frame",
"feet": "planted firmly", "feet": "out of frame",
"additional": "the grabbing hand usually belongs to another person or is an off-screen entity, commonly referred to as the iron claw technique" "additional": "context often after fellatio with fluids on face or tongue"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/face_grab_illustrious.safetensors", "lora_name": "Illustrious/Poses/face_grab_illustrious.safetensors",
"lora_weight": 1.0, "lora_weight": 0.5,
"lora_triggers": "face_grab_illustrious" "lora_triggers": "fcgrb, face grab, grabbing another's face, pov, pov hand, open mouth, tongue out",
"lora_weight_min": 0.5,
"lora_weight_max": 0.5
}, },
"tags": [ "tags": [
"face grab", "grabbing_another's_face",
"iron claw", "pov",
"hand on face", "pov_hands",
"hand over face", "after_fellatio",
"skin indentation", "cum_on_tongue",
"squeezed face", "open_mouth",
"fingers on face", "tongue_out",
"forced", "pout",
"cheek pinch" "streaming_tears",
"cheek_pinching"
] ]
} }

View File

@@ -2,33 +2,38 @@
"action_id": "facesit_08", "action_id": "facesit_08",
"action_name": "Facesit 08", "action_name": "Facesit 08",
"action": { "action": {
"full_body": "POV perspective from below, character straddling the camera/viewer in a squatting or kneeling position", "full_body": "sitting_on_face, cunnilingus, oral",
"head": "tilted downwards, looking directly at the viewer", "head": "looking_at_viewer, looking_down",
"eyes": "gazing down, maintaining eye contact", "eyes": "looking_at_viewer",
"arms": "resting comfortably", "arms": "head_grab",
"hands": "placed on own thighs or knees for support", "hands": "on_head",
"torso": "foreshortened from below, leaning slightly forward", "torso": "nude, close-up",
"pelvis": "positioned directly over the camera lens, dominating the frame", "pelvis": "panties_aside, clitoris, pussy_juice",
"legs": "spread wide, knees bent deeply, thighs framing the view", "legs": "spread_legs",
"feet": "resting on the surface on either side of the viewpoint", "feet": "out_of_frame",
"additional": "extreme low angle, forced perspective, intimate proximity" "additional": "yuri, female_pov, 2girls"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/facesit-08.safetensors", "lora_name": "Illustrious/Poses/facesit-08.safetensors",
"lora_weight": 1.0, "lora_weight": 0.8,
"lora_triggers": "facesit-08" "lora_triggers": "2girls, female pov, close-up, looking at viewer, sitting on face, oral, cunnilingus, spread legs, pussy juice, clitoris",
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
}, },
"tags": [ "tags": [
"facesitting", "2girls",
"pov", "female_pov",
"femdom", "close-up",
"squatting", "looking_at_viewer",
"looking down", "sitting_on_face",
"low angle", "oral",
"thighs" "cunnilingus",
"spread_legs",
"pussy_juice",
"clitoris",
"yuri",
"panties_aside",
"head_grab",
"looking_down"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/facial_bukkake.safetensors", "lora_name": "Illustrious/Poses/facial_bukkake.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "facial_bukkake" "lora_triggers": "facial_bukkake",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"bukkake", "bukkake",
@@ -34,4 +36,4 @@
"splatter", "splatter",
"after sex" "after sex"
] ]
} }

View File

@@ -0,0 +1,37 @@
{
"action_id": "fellatio_from_below_illustriousxl_lora_nochekaiser",
"action_name": "Fellatio From Below Illustriousxl Lora Nochekaiser",
"action": {
"full_body": "squatting, fellatio, from_below",
"head": "facing_viewer, open_mouth",
"eyes": "looking_down",
"arms": "arms_visible",
"hands": "hands_visible",
"torso": "nude, navel, nipples",
"pelvis": "nude, pussy, spread_legs",
"legs": "squatting, bent_legs",
"feet": "feet_visible",
"additional": "penis, testicles, oral, sweat, cum"
},
"lora": {
"lora_name": "Illustrious/Poses/fellatio-from-below-illustriousxl-lora-nochekaiser.safetensors",
"lora_weight": 1.0,
"lora_triggers": "fellatio from below, fellatio, from below, squatting, hetero, penis, testicles, completely nude, oral",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
},
"tags": [
"fellatio",
"from_below",
"squatting",
"penis",
"testicles",
"completely_nude",
"hetero",
"oral",
"navel",
"nipples",
"sweat",
"pussy"
]
}

View File

@@ -2,37 +2,38 @@
"action_id": "fellatio_on_couch_illustriousxl_lora_nochekaiser", "action_id": "fellatio_on_couch_illustriousxl_lora_nochekaiser",
"action_name": "Fellatio On Couch Illustriousxl Lora Nochekaiser", "action_name": "Fellatio On Couch Illustriousxl Lora Nochekaiser",
"action": { "action": {
"full_body": "kneeling on couch, leaning forward, performing fellatio, sexual act, duo focus", "full_body": "fellatio, sitting, on_couch, hetero, oral",
"head": "face in crotch, mouth open, sucking, cheeks hollowed, saliva trail", "head": "blush, sweat, head_down",
"eyes": "looking up, half-closed eyes, eye contact, ahegao", "eyes": "looking_down, eyes_closed",
"arms": "reaching forward, holding partner's thighs, resting on cushions", "arms": "arms_at_side",
"hands": "stroking penis, gripping legs, guiding head", "hands": "hands_on_legs",
"torso": "leaning forward, bent over, arched back", "torso": "breast_press, nipples, nude, leaning_forward",
"pelvis": "kneeling, hips pushed back", "pelvis": "sitting, nude",
"legs": "kneeling on sofa, spread slightly, knees bent", "legs": "sitting, legs_apart",
"feet": "toes curled, resting on upholstery, plantar flexion", "feet": "feet_on_floor",
"additional": "indoor, living room, sofa, couch, fabric texture, motion lines" "additional": "couch, penis, testicles, uncensored"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/fellatio-on-couch-illustriousxl-lora-nochekaiser.safetensors", "lora_name": "Illustrious/Poses/fellatio-on-couch-illustriousxl-lora-nochekaiser.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "fellatio-on-couch-illustriousxl-lora-nochekaiser" "lora_triggers": "fellatio on couch, hetero, penis, oral, sitting, fellatio, testicles, blush, couch, sweat, breast press, nipples, completely nude, uncensored",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"fellatio", "fellatio",
"oral sex", "on_couch",
"on couch", "hetero",
"kneeling",
"sofa",
"penis", "penis",
"cum", "oral",
"saliva", "sitting",
"indoor", "testicles",
"sex", "blush",
"blowjob" "sweat",
"breast_press",
"nipples",
"nude",
"uncensored",
"couch"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/femdom_face_between_breasts.safetensors", "lora_name": "Illustrious/Poses/femdom_face_between_breasts.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "femdom_face_between_breasts" "lora_triggers": "femdom_face_between_breasts",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"breast smother", "breast smother",
@@ -31,4 +33,4 @@
"big breasts", "big breasts",
"cleavage" "cleavage"
] ]
} }

View File

@@ -2,36 +2,33 @@
"action_id": "femdom_held_down_illust", "action_id": "femdom_held_down_illust",
"action_name": "Femdom Held Down Illust", "action_name": "Femdom Held Down Illust",
"action": { "action": {
"full_body": "dominant character straddling someone, pinning them to the surface, assertive posture, on top", "full_body": "girl_on_top, straddling, lying_on_back",
"head": "looking down at viewer (pov), dominance expression, chin tilted down", "head": "looking_down, looking_at_another",
"eyes": "narrowed, intense eye contact, looking down", "eyes": "forced_eye_contact",
"arms": "extended downwards, locked elbows, exerting pressure", "arms": "holding_another's_wrists, arms_above_head",
"hands": "forcefully holding wrists against the surface, pinning hands, wrist grab", "hands": "grab, clenched_hands",
"torso": "leaning forward slightly, arching back, looming over", "torso": "on_back",
"pelvis": "straddling the subject's waist or chest, hips grounded", "pelvis": "straddled",
"legs": "knees bent, kneeling on either side of the subject, thighs active", "legs": "spread_legs",
"feet": "kneeling position, toes touching the ground or bed", "feet": "barefoot",
"additional": "pov, from below, power dynamic, submission, floor or bed background" "additional": "femdom, struggling, pinned, assertive_female"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Femdom_Held_Down_Illust.safetensors", "lora_name": "Illustrious/Poses/Femdom_Held_Down_Illust.safetensors",
"lora_weight": 1.0, "lora_weight": 0.8,
"lora_triggers": "Femdom_Held_Down_Illust" "lora_triggers": "fdom_held",
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
}, },
"tags": [ "tags": [
"femdom", "femdom",
"held down", "assertive_female",
"pinning", "rough_sex",
"girl_on_top",
"straddling", "straddling",
"on top", "holding_another's_wrists",
"looking down", "lying_on_back",
"pov", "pinned",
"from below", "struggling"
"wrist grab",
"dominance"
] ]
} }

View File

@@ -2,34 +2,36 @@
"action_id": "fertilization_illustriousxl_lora_nochekaiser", "action_id": "fertilization_illustriousxl_lora_nochekaiser",
"action_name": "Fertilization Illustriousxl Lora Nochekaiser", "action_name": "Fertilization Illustriousxl Lora Nochekaiser",
"action": { "action": {
"full_body": "lying on back, legs spread, internal view, cross-section, x-ray view of abdomen", "full_body": "sex, vaginal, on_bed, nude, cowboy_shot",
"head": "head resting on pillow, heavy breathing, blushing", "head": "ahegao, blush, open_mouth, head_back",
"eyes": "half-closed eyes, rolled back eyes or heart-shaped pupils", "eyes": "rolled_eyes, half_closed_eyes",
"arms": "arms resting at sides or holding bed sheets", "arms": "arms_at_sides",
"hands": "hands clutching sheets or resting on stomach", "hands": "clenched_hands",
"torso": "exposed tummy, navel, transparent skin effect", "torso": "nude, nipples, navel",
"pelvis": "focus on womb, uterus visible, internal female anatomy", "pelvis": "pussy, cum_in_pussy, internal_cumshot, penis, hetero",
"legs": "legs spread wide, m-legs, knees up", "legs": "spread_legs, legs_up",
"feet": "toes curled", "feet": "bare_feet",
"additional": "visualized fertilization process, sperm, egg, cum inside, glowing internal organs, detailed uterus, biology diagram style" "additional": "cross-section, fertilization, impregnation, uterus, ovum, sperm_cell, ovaries, ejaculation"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/fertilization-illustriousxl-lora-nochekaiser.safetensors", "lora_name": "Illustrious/Poses/fertilization-illustriousxl-lora-nochekaiser.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "fertilization-illustriousxl-lora-nochekaiser" "lora_triggers": "fertilization, ovum, impregnation, sperm cell, cross-section, cum in pussy, internal cumshot, uterus, cum, sex, vaginal, ovaries, penis, hetero, ejaculation",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"fertilization", "fertilization",
"internal view",
"cross-section", "cross-section",
"x-ray", "ovum",
"womb", "sperm_cell",
"cum inside", "impregnation",
"uterus", "uterus",
"impregnation" "internal_cumshot",
"cum_in_pussy",
"vaginal",
"ovaries",
"ahegao",
"on_bed"
] ]
} }

View File

@@ -2,38 +2,34 @@
"action_id": "fff_imminent_masturbation", "action_id": "fff_imminent_masturbation",
"action_name": "Fff Imminent Masturbation", "action_name": "Fff Imminent Masturbation",
"action": { "action": {
"full_body": "lying on back, reclining mostly nude, body tense with anticipation", "full_body": "hand_on_own_crotch, trembling, legs_together, knock-kneed",
"head": "tilted back slightly, chin up, face flushed", "head": "heavy_breathing, sweating, looking_down",
"eyes": "half-closed, heavy-lidded, lustful gaze", "eyes": "narrowed_eyes, half-closed_eyes, dilated_pupils",
"arms": "reaching downwards along the body", "arms": "arms_down, hand_between_legs",
"hands": "hovering near genitals, fingers spreading, one hand grasping thigh, one hand reaching into panties or towards crotch", "hands": "hand_on_own_crotch, squeezing, rubbing_crotch",
"torso": "arched back, chest heaving", "torso": "arched_back, squirming",
"pelvis": "tilted upward, hips lifted slightly", "pelvis": "hips_forward",
"legs": "spread wide, knees bent and falling outward (M-legs)", "legs": "legs_together, knock-kneed",
"feet": "toes curled", "feet": "standing",
"additional": "sweaty skin, disheveled clothing, underwear pulled aside, messy sheets" "additional": "clothed_masturbation, urgency, arousal, through_clothes"
},
"participants": {
"solo_focus": "false",
"orientation": "FFF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/FFF_imminent_masturbation.safetensors", "lora_name": "Illustrious/Poses/FFF_imminent_masturbation.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "FFF_imminent_masturbation" "lora_triggers": "FFF_grabbing_own_crotch, trembling, sweat, breath, imminent_masturbation",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"solo", "hand_on_own_crotch",
"female", "heavy_breathing",
"imminent masturbation", "trembling",
"hand near crotch", "sweat",
"hand in panties",
"fingering",
"spread legs",
"lying",
"on bed",
"aroused",
"blush", "blush",
"nsfw" "legs_together",
"clothed_masturbation",
"hand_between_legs",
"aroused",
"rubbing_crotch"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/FFM3SOME-footjob-EFEME3ftfe-IL_1475115.safetensors", "lora_name": "Illustrious/Poses/FFM3SOME-footjob-EFEME3ftfe-IL_1475115.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "FFM3SOME-footjob-EFEME3ftfe-IL_1475115" "lora_triggers": "FFM3SOME-footjob-EFEME3ftfe-IL_1475115",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"footjob", "footjob",
@@ -34,4 +36,4 @@
"penis", "penis",
"sexual" "sexual"
] ]
} }

View File

@@ -2,37 +2,39 @@
"action_id": "ffm_threesome___kiss_and_fellatio_illustrious", "action_id": "ffm_threesome___kiss_and_fellatio_illustrious",
"action_name": "Ffm Threesome Kiss And Fellatio Illustrious", "action_name": "Ffm Threesome Kiss And Fellatio Illustrious",
"action": { "action": {
"full_body": "FFM threesome composition, 1boy between 2girls, simultaneous sexual activity", "full_body": "ffm_threesome, 2girls, 1boy, group_sex, sandwich_position",
"head": "one female kissing the male deep french kiss, second female bobbing head at crotch level", "head": "kissing, sucking, head_grab",
"eyes": "eyes closed in pleasure, half-lidded, rolling back", "eyes": "closed_eyes, looking_at_partner",
"arms": "wrapping around neck, holding head, bracing on thighs", "arms": "arms_around_neck, holding_penis, hand_on_head",
"hands": "fingers tangled in hair, holding penis, guiding head, groping", "hands": "stroking",
"torso": "leaning forward, arched back, sitting upright", "torso": "leaning_forward, physical_contact",
"pelvis": "kneeling, sitting on lap, hips thrust forward", "pelvis": "sitting, straddling",
"legs": "kneeling, spread legs, wrapped around waist", "legs": "kneeling, spread_legs",
"feet": "arched feet, curled toes", "feet": "barefoot",
"additional": "saliva trail, tongue, penis in mouth, cheek poking, blush, sweat, intimate lighting" "additional": "indoor, couch, faceless_male, saliva, blush"
},
"participants": {
"solo_focus": "false",
"orientation": "FFM"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/FFM_threesome_-_Kiss_and_Fellatio_Illustrious.safetensors", "lora_name": "Illustrious/Poses/FFM_threesome_-_Kiss_and_Fellatio_Illustrious.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "FFM_threesome_-_Kiss_and_Fellatio_Illustrious" "lora_triggers": "ffm_threesome_kiss_and_fellatio",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"ffm",
"threesome",
"group sex",
"kissing",
"fellatio",
"blowjob",
"2girls", "2girls",
"1boy", "1boy",
"simultaneous oral", "ffm_threesome",
"french kiss", "group_sex",
"penis in mouth" "hetero",
"kissing",
"fellatio",
"faceless_male",
"sitting",
"couch",
"indoor",
"nude",
"blush",
"saliva",
"sandwich_position"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/FFM_Threesome_doggy_style_front_view_Illustrious.safetensors", "lora_name": "Illustrious/Poses/FFM_Threesome_doggy_style_front_view_Illustrious.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "FFM_Threesome_doggy_style_front_view_Illustrious" "lora_triggers": "FFM_Threesome_doggy_style_front_view_Illustrious",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"threesome", "threesome",
@@ -34,4 +36,4 @@
"blush", "blush",
"sweat" "sweat"
] ]
} }

View File

@@ -0,0 +1,42 @@
{
"action_id": "ffm_threesome_girl_sandwichdouble_dip_illustrious",
"action_name": "Ffm Threesome Girl Sandwichdouble Dip Illustrious",
"action": {
"full_body": "Three-person stack on a bed: one girl lying flat on her back, the male (often faceless/obscured) positioned in the middle, and the second girl straddling on top of the pile.",
"head": "Girls' faces visible, often with flushed cheeks or ahegao expressions; male face usually out of frame or obscured.",
"eyes": "rolled_back, closed_eyes, or looking_at_viewer",
"arms": "Arms embracing the partner in the middle or holding bed sheets.",
"hands": "grabbing_sheet or touching_partner",
"torso": "Sandwiched torsos, breasts pressed against the middle partner.",
"pelvis": "Interconnected pelvises, implied penetration.",
"legs": "Bottom girl with legs_spread, top girl straddling.",
"feet": "barefoot",
"additional": "Scene typically set on a bed with messy sheets."
},
"lora": {
"lora_name": "Illustrious/Poses/FFM_threesome_girl_sandwichdouble_dip_Illustrious.safetensors",
"lora_weight": 1.0,
"lora_triggers": "ffm_threesome_double_dip",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
},
"tags": [
"ffm_threesome",
"group_sex",
"sandwiched",
"2girls",
"1boy",
"girl_on_top",
"on_back",
"lying",
"straddling",
"faceless_male",
"male_on_top",
"stack",
"sex",
"implied_penetration",
"ahegao",
"bed_sheet",
"messy_bed"
]
}

View File

@@ -2,39 +2,39 @@
"action_id": "ffm_threesome_one_girl_on_top_and_bj", "action_id": "ffm_threesome_one_girl_on_top_and_bj",
"action_name": "Ffm Threesome One Girl On Top And Bj", "action_name": "Ffm Threesome One Girl On Top And Bj",
"action": { "action": {
"full_body": "FFM threesome scene consisting of a male lying on his back on a bed, one female straddling his hips in a cowgirl position, and a second female positioned near his head or upper body", "full_body": "ffm_threesome, cowgirl_position, straddling, lying, on_back",
"head": "heads close together, expressions of pleasure, mouth open, blushing", "head": "blush, half-closed_eyes",
"eyes": "rolled back, heart-shaped pupils, closed eyes, looking down", "eyes": "half-closed_eyes",
"arms": "reaching out, holding hips, caressing face, resting on bed", "arms": "arms_at_sides",
"hands": "gripping waist, holding hair, touching chest", "hands": "hands_on_chest",
"torso": "arching back, leaning forward, sweat on skin, bare skin", "torso": "nude, breasts",
"pelvis": "interlocking hips, straddling, grinding motion", "pelvis": "legs_apart, straddling",
"legs": "kneeling, spread wide, bent at knees", "legs": "kneeling, bent_legs",
"feet": "toes curled, resting on mattress", "feet": "barefoot",
"additional": "bedroom setting, crumpled sheets, intimate atmosphere, soft lighting" "additional": "fellatio, licking, penis, testicles, size_difference, 2girls, 1boy"
},
"participants": {
"solo_focus": "false",
"orientation": "FFM"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/FFM_threesome_one_girl_on_top_and_BJ.safetensors", "lora_name": "Illustrious/Poses/FFM_threesome_one_girl_on_top_and_BJ.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "FFM_threesome_one_girl_on_top_and_BJ" "lora_triggers": "ffm_threesome_straddling_fellatio",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"ffm_threesome",
"cowgirl_position",
"fellatio",
"straddling",
"2girls", "2girls",
"1boy", "1boy",
"ffm", "reaction",
"threesome", "lying",
"cowgirl", "on_back",
"fellatio", "nude",
"woman on top",
"sex", "sex",
"vaginal", "penis",
"oral", "testicles",
"group sex", "erotic",
"lying on back", "cum"
"nude"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/ffmNursingHandjob_ill_v3.safetensors", "lora_name": "Illustrious/Poses/ffmNursingHandjob_ill_v3.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "ffmNursingHandjob_ill_v3" "lora_triggers": "ffmNursingHandjob_ill_v3",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"threesome", "threesome",
@@ -36,4 +38,4 @@
"big_breasts", "big_breasts",
"kneeling" "kneeling"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/finish_blow_ill_v0.90-000004.safetensors", "lora_name": "Illustrious/Poses/finish_blow_ill_v0.90-000004.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "finish_blow_ill_v0.90-000004" "lora_triggers": "finish_blow_ill_v0.90-000004",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"action shot", "action shot",
@@ -30,4 +32,4 @@
"intense", "intense",
"cinematic composition" "cinematic composition"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/fixed_perspective_v3_1558768.safetensors", "lora_name": "Illustrious/Poses/fixed_perspective_v3_1558768.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "fixed_perspective_v3_1558768" "lora_triggers": "fixed_perspective_v3_1558768",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"foreshortening", "foreshortening",
@@ -31,4 +33,4 @@
"portrait", "portrait",
"depth of field" "depth of field"
] ]
} }

View File

@@ -2,33 +2,32 @@
"action_id": "fixed_point_v2", "action_id": "fixed_point_v2",
"action_name": "Fixed Point V2", "action_name": "Fixed Point V2",
"action": { "action": {
"full_body": "standing, assertive posture, foreshortening effect on the arm", "full_body": "kneeling on floor in bedroom",
"head": "facing viewer, chin slightly tucked or tilted confidentially", "head": "looking at viewer",
"eyes": "looking at viewer, focused gaze, winking or intense stare", "eyes": "open eyes",
"arms": "arm extended forward towards the camera, elbow straight or slightly bent", "arms": "resting on bed",
"hands": "finger gun, pointing, index finger extended, thumb raised, hand gesture", "hands": "resting",
"torso": "facing forward, slight rotation to align with the pointing arm", "torso": "facing viewer",
"pelvis": "neutral standing position", "pelvis": "kneeling",
"legs": "standing, hip width apart", "legs": "kneeling",
"feet": "grounded", "feet": "barefoot",
"additional": "depth of field, focus on hand, perspective usually from front" "additional": "full room view, fxdpt"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/fixed_point_v2.safetensors", "lora_name": "Illustrious/Poses/fixed_point_v2.safetensors",
"lora_weight": 1.0, "lora_weight": 0.8,
"lora_triggers": "fixed_point_v2" "lora_triggers": "fxdpt, full room view",
"lora_weight_min": 0.8,
"lora_weight_max": 0.8
}, },
"tags": [ "tags": [
"gesture", "kneeling",
"finger gun", "on_floor",
"pointing", "indoors",
"aiming", "bedroom",
"looking at viewer", "bed",
"foreshortening", "wide_shot",
"bang" "from_above",
"perspective"
] ]
} }

View File

@@ -2,33 +2,33 @@
"action_id": "flaccid_after_cum_illustrious_000009", "action_id": "flaccid_after_cum_illustrious_000009",
"action_name": "Flaccid After Cum Illustrious 000009", "action_name": "Flaccid After Cum Illustrious 000009",
"action": { "action": {
"full_body": "lying on back, limp pose, completely spent, relaxed muscles, spread eagle", "full_body": "exhausted post-coital slump, relaxing",
"head": "head tilted back, mouth open, tongue hanging out, messy hair, heavy breathing", "head": "flushed face, head tilted back, disheveled hair",
"eyes": "half-closed eyes, eyes rolled back, glassy eyes, ahegao", "eyes": "half-closed, ahegao or glazed expression",
"arms": "arms spread wide, limp arms, resting on surface", "arms": "limp, resting at sides",
"hands": "loosely open hands, twitching fingers", "hands": "relaxed, open",
"torso": "heaving chest, sweating skin, relaxed abdomen", "torso": "sweaty skin, heaving chest",
"pelvis": "exposed, hips flat on surface", "pelvis": "flaccid penis exposed, soft, seminal fluid leaking",
"legs": "legs spread wide, m-legs, knees bent and falling outward", "legs": "spread wide, relaxed",
"feet": "toes curled", "feet": "loose",
"additional": "covered in white liquid, messy body, bodily fluids, after sex, exhaustion, sweat drops" "additional": "messy bed sheets, heavy breathing, steamy atmosphere"
},
"participants": {
"solo_focus": "true",
"orientation": "MF"
}, },
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Flaccid_After_Cum_Illustrious-000009.safetensors", "lora_name": "Illustrious/Poses/Flaccid_After_Cum_Illustrious-000009.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "Flaccid_After_Cum_Illustrious-000009" "lora_triggers": "flaccid after cum",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"lying", "after_sex",
"flaccid",
"cum_in_pussy",
"sweat", "sweat",
"blush", "heavy_breathing",
"open mouth", "messy_hair",
"bodily fluids", "cum_on_body",
"spread legs", "cum_in_mouth",
"ahegao" "after_fellatio"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Fleshlight_Position_Doggystyle_Dangling_Legs_Sex_From_Behind_Hanging_Legs_PonyILSDSDXL.safetensors", "lora_name": "Illustrious/Poses/Fleshlight_Position_Doggystyle_Dangling_Legs_Sex_From_Behind_Hanging_Legs_PonyILSDSDXL.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "Fleshlight_Position_Doggystyle_Dangling_Legs_Sex_From_Behind_Hanging_Legs_PonyILSDSDXL" "lora_triggers": "Fleshlight_Position_Doggystyle_Dangling_Legs_Sex_From_Behind_Hanging_Legs_PonyILSDSDXL",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"doggystyle", "doggystyle",
@@ -34,4 +36,4 @@
"feet off ground", "feet off ground",
"sex act" "sex act"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Folded XL illustrious V1.0.safetensors", "lora_name": "Illustrious/Poses/Folded XL illustrious V1.0.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "Folded XL illustrious V1.0" "lora_triggers": "Folded XL illustrious V1.0",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"crossed arms", "crossed arms",
@@ -31,4 +33,4 @@
"skeptical", "skeptical",
"upper body" "upper body"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Forced_cunnilingus.safetensors", "lora_name": "Illustrious/Poses/Forced_cunnilingus.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "Forced_cunnilingus" "lora_triggers": "Forced_cunnilingus",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"cunnilingus", "cunnilingus",
@@ -35,4 +37,4 @@
"vaginal", "vaginal",
"sex act" "sex act"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/foreskin_fellatio-ILXL.safetensors", "lora_name": "Illustrious/Poses/foreskin_fellatio-ILXL.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "foreskin_fellatio-ILXL" "lora_triggers": "foreskin_fellatio-ILXL",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"nsfw", "nsfw",
@@ -33,4 +35,4 @@
"male anatomy", "male anatomy",
"sexual act" "sexual act"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/foreskinplay_r1.safetensors", "lora_name": "Illustrious/Poses/foreskinplay_r1.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "foreskinplay_r1" "lora_triggers": "foreskinplay_r1",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"nsfw", "nsfw",
@@ -32,4 +34,4 @@
"penis close-up", "penis close-up",
"glans" "glans"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/FrenchKissV1IL-000010.safetensors", "lora_name": "Illustrious/Poses/FrenchKissV1IL-000010.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "FrenchKissV1IL-000010" "lora_triggers": "FrenchKissV1IL-000010",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"french kiss", "french kiss",
@@ -34,4 +36,4 @@
"deep kiss", "deep kiss",
"profile view" "profile view"
] ]
} }

View File

@@ -20,7 +20,9 @@
"lora": { "lora": {
"lora_name": "Illustrious/Poses/Frog embrace position-IL_NAI_PY.safetensors", "lora_name": "Illustrious/Poses/Frog embrace position-IL_NAI_PY.safetensors",
"lora_weight": 1.0, "lora_weight": 1.0,
"lora_triggers": "Frog embrace position-IL_NAI_PY" "lora_triggers": "Frog embrace position-IL_NAI_PY",
"lora_weight_min": 1.0,
"lora_weight_max": 1.0
}, },
"tags": [ "tags": [
"frog pose", "frog pose",
@@ -32,4 +34,4 @@
"intricate interaction", "intricate interaction",
"lying on back" "lying on back"
] ]
} }

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