Compare commits
22 Commits
0d7d4d404f
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
29a6723b25 | ||
|
|
55ff58aba6 | ||
|
|
ed9a7b4b11 | ||
|
|
32a73b02f5 | ||
|
|
7d79e626a5 | ||
|
|
d756ea1d0e | ||
|
|
79bbf669e2 | ||
|
|
5e4348ebc1 | ||
|
|
1b8a798c31 | ||
|
|
d95b81dde5 | ||
|
|
ec08eb5d31 | ||
|
|
2c1c3a7ed7 | ||
|
|
ee36caccd6 | ||
|
|
e226548471 | ||
|
|
b9196ef5f5 | ||
|
|
a38915b354 | ||
|
|
da55b0889b | ||
|
|
9b143e65b1 | ||
|
|
27d2a70867 | ||
|
|
3c828a170f | ||
|
|
ae7ba961c1 | ||
|
|
0b8802deb5 |
8
.dockerignore
Normal file
8
.dockerignore
Normal file
@@ -0,0 +1,8 @@
|
||||
venv/
|
||||
__pycache__/
|
||||
*.pyc
|
||||
instance/
|
||||
flask_session/
|
||||
static/uploads/
|
||||
tools/
|
||||
.git/
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -31,3 +31,6 @@ Thumbs.db
|
||||
|
||||
# Logs
|
||||
*.log
|
||||
|
||||
# Tools (cloned at runtime — not tracked in this repo)
|
||||
tools/
|
||||
|
||||
219
API_GUIDE.md
Normal file
219
API_GUIDE.md
Normal file
@@ -0,0 +1,219 @@
|
||||
# GAZE REST API Guide
|
||||
|
||||
## Setup
|
||||
|
||||
1. Open **Settings** in the GAZE web UI
|
||||
2. Scroll to **REST API Key** and click **Regenerate**
|
||||
3. Copy the key — you'll need it for all API requests
|
||||
|
||||
## Authentication
|
||||
|
||||
Every request must include your API key via one of:
|
||||
|
||||
- **Header (recommended):** `X-API-Key: <your-key>`
|
||||
- **Query parameter:** `?api_key=<your-key>`
|
||||
|
||||
Responses for auth failures:
|
||||
|
||||
| Status | Meaning |
|
||||
|--------|---------|
|
||||
| `401` | Missing API key |
|
||||
| `403` | Invalid API key |
|
||||
|
||||
## Endpoints
|
||||
|
||||
### List Presets
|
||||
|
||||
```
|
||||
GET /api/v1/presets
|
||||
```
|
||||
|
||||
Returns all available presets.
|
||||
|
||||
**Response:**
|
||||
|
||||
```json
|
||||
{
|
||||
"presets": [
|
||||
{
|
||||
"preset_id": "example_01",
|
||||
"slug": "example_01",
|
||||
"name": "Example Preset",
|
||||
"has_cover": true
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Generate Image
|
||||
|
||||
```
|
||||
POST /api/v1/generate/<preset_slug>
|
||||
```
|
||||
|
||||
Queue one or more image generations using a preset's configuration. All body parameters are optional — when omitted, the preset's own settings are used.
|
||||
|
||||
**Request body (JSON):**
|
||||
|
||||
| Field | Type | Default | Description |
|
||||
|-------|------|---------|-------------|
|
||||
| `count` | int | `1` | Number of images to generate (1–20) |
|
||||
| `checkpoint` | string | — | Override checkpoint path (e.g. `"Illustrious/model.safetensors"`) |
|
||||
| `extra_positive` | string | `""` | Additional positive prompt tags appended to the generated prompt |
|
||||
| `extra_negative` | string | `""` | Additional negative prompt tags |
|
||||
| `seed` | int | random | Fixed seed for reproducible generation |
|
||||
| `width` | int | — | Output width in pixels (must provide both width and height) |
|
||||
| `height` | int | — | Output height in pixels (must provide both width and height) |
|
||||
|
||||
**Response (202):**
|
||||
|
||||
```json
|
||||
{
|
||||
"jobs": [
|
||||
{ "job_id": "783f0268-ba85-4426-8ca2-6393c844c887", "status": "queued" }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
**Errors:**
|
||||
|
||||
| Status | Cause |
|
||||
|--------|-------|
|
||||
| `400` | Invalid parameters (bad count, seed, or mismatched width/height) |
|
||||
| `404` | Preset slug not found |
|
||||
| `500` | Internal generation error |
|
||||
|
||||
### Check Job Status
|
||||
|
||||
```
|
||||
GET /api/v1/job/<job_id>
|
||||
```
|
||||
|
||||
Poll this endpoint to track generation progress.
|
||||
|
||||
**Response:**
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "783f0268-ba85-4426-8ca2-6393c844c887",
|
||||
"label": "Preset: Example Preset – preview",
|
||||
"status": "done",
|
||||
"error": null,
|
||||
"result": {
|
||||
"image_url": "/static/uploads/presets/example_01/gen_1773601346.png",
|
||||
"relative_path": "presets/example_01/gen_1773601346.png",
|
||||
"seed": 927640517599332
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Job statuses:**
|
||||
|
||||
| Status | Meaning |
|
||||
|--------|---------|
|
||||
| `pending` | Waiting in queue |
|
||||
| `processing` | Currently generating |
|
||||
| `done` | Complete — `result` contains image info |
|
||||
| `failed` | Error occurred — check `error` field |
|
||||
|
||||
The `result` object is only present when status is `done`. Use `seed` from the result to reproduce the exact same image later.
|
||||
|
||||
**Retrieving the image:** The `image_url` is a path relative to the server root. Fetch it directly:
|
||||
|
||||
```
|
||||
GET http://<host>:5782/static/uploads/presets/example_01/gen_1773601346.png
|
||||
```
|
||||
|
||||
Image retrieval does not require authentication.
|
||||
|
||||
## Examples
|
||||
|
||||
### Generate a single image and wait for it
|
||||
|
||||
```bash
|
||||
API_KEY="your-key-here"
|
||||
HOST="http://localhost:5782"
|
||||
|
||||
# Queue generation
|
||||
JOB_ID=$(curl -s -X POST \
|
||||
-H "X-API-Key: $API_KEY" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{}' \
|
||||
"$HOST/api/v1/generate/example_01" | python3 -c "import sys,json; print(json.load(sys.stdin)['jobs'][0]['job_id'])")
|
||||
|
||||
echo "Job: $JOB_ID"
|
||||
|
||||
# Poll until done
|
||||
while true; do
|
||||
RESULT=$(curl -s -H "X-API-Key: $API_KEY" "$HOST/api/v1/job/$JOB_ID")
|
||||
STATUS=$(echo "$RESULT" | python3 -c "import sys,json; print(json.load(sys.stdin)['status'])")
|
||||
echo "Status: $STATUS"
|
||||
if [ "$STATUS" = "done" ] || [ "$STATUS" = "failed" ]; then
|
||||
echo "$RESULT" | python3 -m json.tool
|
||||
break
|
||||
fi
|
||||
sleep 5
|
||||
done
|
||||
```
|
||||
|
||||
### Generate 3 images with extra prompts
|
||||
|
||||
```bash
|
||||
curl -X POST \
|
||||
-H "X-API-Key: $API_KEY" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"count": 3,
|
||||
"extra_positive": "smiling, outdoors",
|
||||
"extra_negative": "blurry"
|
||||
}' \
|
||||
"$HOST/api/v1/generate/example_01"
|
||||
```
|
||||
|
||||
### Reproduce a specific image
|
||||
|
||||
```bash
|
||||
curl -X POST \
|
||||
-H "X-API-Key: $API_KEY" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"seed": 927640517599332}' \
|
||||
"$HOST/api/v1/generate/example_01"
|
||||
```
|
||||
|
||||
### Python example
|
||||
|
||||
```python
|
||||
import requests
|
||||
import time
|
||||
|
||||
HOST = "http://localhost:5782"
|
||||
API_KEY = "your-key-here"
|
||||
HEADERS = {"X-API-Key": API_KEY, "Content-Type": "application/json"}
|
||||
|
||||
# List presets
|
||||
presets = requests.get(f"{HOST}/api/v1/presets", headers=HEADERS).json()
|
||||
print(f"Available presets: {[p['name'] for p in presets['presets']]}")
|
||||
|
||||
# Generate
|
||||
resp = requests.post(
|
||||
f"{HOST}/api/v1/generate/{presets['presets'][0]['slug']}",
|
||||
headers=HEADERS,
|
||||
json={"count": 1},
|
||||
).json()
|
||||
|
||||
job_id = resp["jobs"][0]["job_id"]
|
||||
print(f"Queued job: {job_id}")
|
||||
|
||||
# Poll
|
||||
while True:
|
||||
status = requests.get(f"{HOST}/api/v1/job/{job_id}", headers=HEADERS).json()
|
||||
print(f"Status: {status['status']}")
|
||||
if status["status"] in ("done", "failed"):
|
||||
break
|
||||
time.sleep(5)
|
||||
|
||||
if status["status"] == "done":
|
||||
image_url = f"{HOST}{status['result']['image_url']}"
|
||||
print(f"Image: {image_url}")
|
||||
print(f"Seed: {status['result']['seed']}")
|
||||
```
|
||||
620
CLAUDE.md
Normal file
620
CLAUDE.md
Normal file
@@ -0,0 +1,620 @@
|
||||
# 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
|
||||
|
||||
### File Structure
|
||||
|
||||
```
|
||||
app.py # ~186 lines: Flask init, config, logging, route registration, startup/migrations
|
||||
models.py # SQLAlchemy models only
|
||||
comfy_workflow.json # ComfyUI workflow template with placeholder strings
|
||||
utils.py # Pure constants + helpers (no Flask/DB deps)
|
||||
services/
|
||||
__init__.py
|
||||
comfyui.py # ComfyUI HTTP client (queue_prompt, get_history, get_image)
|
||||
workflow.py # Workflow building (_prepare_workflow, _apply_checkpoint_settings)
|
||||
prompts.py # Prompt building + dedup (build_prompt, build_extras_prompt)
|
||||
llm.py # LLM integration + MCP tool calls (call_llm, load_prompt)
|
||||
mcp.py # MCP/Docker server lifecycle (ensure_mcp_server_running)
|
||||
sync.py # Generic _sync_category() + sync_characters/sync_checkpoints + preset resolution helpers
|
||||
job_queue.py # Background job queue (_enqueue_job, _make_finalize, worker thread)
|
||||
file_io.py # LoRA/checkpoint scanning, file helpers
|
||||
generation.py # Shared generation logic (generate_from_preset)
|
||||
routes/
|
||||
__init__.py # register_routes(app) — imports and calls all route modules
|
||||
shared.py # Factory functions for common routes + apply_library_filters() helper
|
||||
characters.py # Character CRUD + generation + outfit management
|
||||
outfits.py # Outfit routes
|
||||
actions.py # Action routes
|
||||
styles.py # Style routes
|
||||
scenes.py # Scene routes
|
||||
detailers.py # Detailer routes
|
||||
checkpoints.py # Checkpoint routes
|
||||
looks.py # Look routes
|
||||
presets.py # Preset routes
|
||||
generator.py # Generator mix-and-match page
|
||||
gallery.py # Gallery browsing + image/resource deletion
|
||||
settings.py # Settings page + status APIs + context processors
|
||||
strengths.py # Strengths gallery system
|
||||
transfer.py # Resource transfer system
|
||||
queue_api.py # /api/queue/* endpoints
|
||||
api.py # REST API v1 (preset generation, auth)
|
||||
regenerate.py # Tag regeneration (single + bulk, via LLM queue)
|
||||
search.py # Global search across resources and gallery images
|
||||
static/js/
|
||||
detail-common.js # Shared detail page JS (initDetailPage: preview, generation, batch, endless, JSON editor)
|
||||
layout-utils.js # Extracted from layout.html (confirmResourceDelete, regenerateTags, initJsonEditor)
|
||||
library-toolbar.js # Library page toolbar (batch generate, clear covers, missing items)
|
||||
```
|
||||
|
||||
### Dependency Graph
|
||||
|
||||
```
|
||||
app.py
|
||||
├── models.py (unchanged)
|
||||
├── utils.py (no deps except stdlib)
|
||||
├── services/
|
||||
│ ├── comfyui.py ← utils (for config)
|
||||
│ ├── prompts.py ← utils, models
|
||||
│ ├── workflow.py ← prompts, utils, models
|
||||
│ ├── llm.py ← mcp (for tool calls)
|
||||
│ ├── mcp.py ← (stdlib only: subprocess, os)
|
||||
│ ├── sync.py ← models, utils
|
||||
│ ├── job_queue.py ← comfyui, models
|
||||
│ ├── file_io.py ← models, utils
|
||||
│ └── generation.py ← prompts, workflow, job_queue, sync, models
|
||||
└── routes/
|
||||
├── shared.py ← models, utils, services (lazy-init to avoid circular imports)
|
||||
├── All route modules ← services/*, utils, models, shared
|
||||
└── (routes never import from other routes except shared.py)
|
||||
```
|
||||
|
||||
**No circular imports**: routes → services → utils/models. Services never import routes. Utils never imports services. `routes/shared.py` uses `_init_models()` lazy initialization to avoid circular imports with model classes.
|
||||
|
||||
### Route Registration Pattern
|
||||
|
||||
Routes use a `register_routes(app)` closure pattern — each route module defines a function that receives the Flask `app` object and registers routes via `@app.route()` closures. This preserves all existing `url_for()` endpoint names without requiring Blueprint prefixes. Helper functions used only by routes in that module are defined inside `register_routes()` before the routes that reference them.
|
||||
|
||||
Common routes (favourite, upload, replace cover, save defaults, clone, save JSON, get missing, clear covers) are registered via factory functions in `routes/shared.py`. Each route module calls `register_common_routes(app, 'category_name')` as the first line of its `register_routes()`. The `CATEGORY_CONFIG` dict in `shared.py` maps each category to its model, URL prefix, endpoint names, and directory paths.
|
||||
|
||||
### 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`
|
||||
|
||||
The `Settings` model stores LLM provider config, LoRA/checkpoint directory paths, default checkpoint, and `api_key` for REST API authentication.
|
||||
|
||||
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/`
|
||||
- `is_favourite` — boolean (DB-only, not in JSON; toggled from detail pages)
|
||||
- `is_nsfw` — boolean (mirrored in both DB column and JSON `tags.nsfw`; synced on rescan)
|
||||
|
||||
### 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. Named constants are defined in `services/workflow.py`:
|
||||
|
||||
| Constant | Node | Role |
|
||||
|----------|------|------|
|
||||
| `NODE_KSAMPLER` | `3` | Main KSampler |
|
||||
| `NODE_CHECKPOINT` | `4` | Checkpoint loader |
|
||||
| `NODE_LATENT` | `5` | Empty latent (width/height) |
|
||||
| `NODE_POSITIVE` | `6` | Positive prompt — contains `{{POSITIVE_PROMPT}}` placeholder |
|
||||
| `NODE_NEGATIVE` | `7` | Negative prompt |
|
||||
| `NODE_VAE_DECODE` | `8` | VAE decode |
|
||||
| `NODE_SAVE` | `9` | Save image |
|
||||
| `NODE_FACE_DETAILER` | `11` | Face ADetailer |
|
||||
| `NODE_HAND_DETAILER` | `13` | Hand ADetailer |
|
||||
| `NODE_FACE_PROMPT` | `14` | Face detailer prompt — contains `{{FACE_PROMPT}}` placeholder |
|
||||
| `NODE_HAND_PROMPT` | `15` | Hand detailer prompt — contains `{{HAND_PROMPT}}` placeholder |
|
||||
| `NODE_LORA_CHAR` | `16` | Character LoRA (or Look LoRA when a Look is active) |
|
||||
| `NODE_LORA_OUTFIT` | `17` | Outfit LoRA |
|
||||
| `NODE_LORA_ACTION` | `18` | Action LoRA |
|
||||
| `NODE_LORA_STYLE` | `19` | Style / Detailer / Scene LoRA (priority: style > detailer > scene) |
|
||||
| `NODE_LORA_CHAR_B` | `20` | Character LoRA B (second character) |
|
||||
| `NODE_VAE_LOADER` | `21` | VAE loader |
|
||||
|
||||
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`. Always use the named constants instead of string literals when referencing node IDs.
|
||||
|
||||
---
|
||||
|
||||
## Key Functions by Module
|
||||
|
||||
### `utils.py` — Constants and Pure Helpers
|
||||
|
||||
- **`_BODY_GROUP_KEYS`** — Canonical list of field names shared by both `identity` and `wardrobe` sections: `['base', 'head', 'upper_body', 'lower_body', 'hands', 'feet', 'additional']`. Used by `build_prompt()`, `_ensure_character_fields()`, and `_resolve_preset_fields()`.
|
||||
- **`ALLOWED_EXTENSIONS`** — Permitted upload file extensions.
|
||||
- **`_LORA_DEFAULTS`** — Default LoRA directory paths per category.
|
||||
- **`parse_orientation(orientation_str)`** — Converts orientation codes (`1F`, `2F`, `1M1F`, etc.) into Danbooru tags.
|
||||
- **`_resolve_lora_weight(lora_data)`** — Extracts and validates LoRA weight from a lora data dict.
|
||||
- **`allowed_file(filename)`** — Checks file extension against `ALLOWED_EXTENSIONS`.
|
||||
- **`clean_html_text(html_raw)`** — Strips HTML tags, scripts, styles, and images from raw HTML, returning plain text. Used by bulk_create routes.
|
||||
|
||||
### `services/prompts.py` — Prompt Building
|
||||
|
||||
- **`build_prompt(data, selected_fields, default_fields, active_outfit)`** — Converts a character (or combined) data dict into `{"main", "face", "hand"}` prompt strings. Field selection priority: `selected_fields` → `default_fields` → select all (fallback). Fields are addressed as `"section::key"` strings (e.g. `"identity::hair"`, `"wardrobe::top"`). Characters support a **nested** wardrobe format where `wardrobe` is a dict of outfit names → outfit dicts.
|
||||
- **`build_extras_prompt(actions, outfits, scenes, styles, detailers)`** — Used by the Generator page. Combines prompt text from all checked items across categories into a single string.
|
||||
- **`_cross_dedup_prompts(positive, negative)`** — Cross-deduplicates tags between positive and negative prompt strings. Equal counts cancel completely; excess on one side is retained.
|
||||
- **`_resolve_character(character_slug)`** — Returns a `Character` ORM object for a given slug string. Handles `"__random__"` sentinel.
|
||||
- **`_ensure_character_fields(character, selected_fields, ...)`** — Mutates `selected_fields` in place, appending populated identity/wardrobe keys. Called in every secondary-category generate route after `_resolve_character()`.
|
||||
- **`_append_background(prompts, character=None)`** — Appends `"<primary_color> simple background"` tag to `prompts['main']`.
|
||||
|
||||
### `services/workflow.py` — Workflow Wiring
|
||||
|
||||
- **`_prepare_workflow(workflow, character, prompts, ...)`** — Core workflow wiring function. Replaces prompt placeholders, chains LoRA nodes dynamically, randomises seeds, applies checkpoint settings, runs cross-dedup as the final step.
|
||||
- **`_apply_checkpoint_settings(workflow, ckpt_data)`** — Applies checkpoint-specific sampler/prompt/VAE settings.
|
||||
- **`_get_default_checkpoint()`** — Returns `(checkpoint_path, checkpoint_data)` from session, database Settings, or workflow file fallback.
|
||||
- **`_log_workflow_prompts(label, workflow)`** — Logs the fully assembled workflow prompts in a readable block.
|
||||
|
||||
### `services/job_queue.py` — Background Job Queue
|
||||
|
||||
Two independent queues with separate worker threads:
|
||||
|
||||
- **ComfyUI queue** (`_job_queue` + `_queue_worker`): Image generation jobs.
|
||||
- **`_enqueue_job(label, workflow, finalize_fn)`** — Adds a generation job to the queue.
|
||||
- **`_make_finalize(category, slug, db_model_class=None, action=None)`** — Factory returning a callback that retrieves the generated image from ComfyUI, saves it, and optionally updates the DB cover image.
|
||||
- **LLM queue** (`_llm_queue` + `_llm_queue_worker`): LLM task jobs (tag regeneration, bulk create with overwrite).
|
||||
- **`_enqueue_task(label, task_fn)`** — Adds an LLM task job. `task_fn` receives the job dict and runs inside `app.app_context()`.
|
||||
- **Shared**: Both queues share `_job_history` (for status lookup by job ID) and `_job_queue_lock`.
|
||||
- **`_prune_job_history(max_age_seconds=3600)`** — Removes old terminal-state jobs from memory.
|
||||
- **`init_queue_worker(flask_app)`** — Stores the app reference and starts both worker threads.
|
||||
|
||||
### `services/comfyui.py` — ComfyUI HTTP Client
|
||||
|
||||
- **`queue_prompt(prompt_workflow, client_id)`** — POSTs workflow to ComfyUI's `/prompt` endpoint. Validates HTTP response status before parsing JSON; raises `RuntimeError` on non-OK responses. Timeout: 30s.
|
||||
- **`get_history(prompt_id)`** — Polls ComfyUI for job completion. Timeout: 10s.
|
||||
- **`get_image(filename, subfolder, folder_type)`** — Retrieves generated image bytes. Timeout: 30s.
|
||||
- **`get_loaded_checkpoint()`** — Returns the checkpoint path currently loaded in ComfyUI by inspecting the most recent job in `/history`.
|
||||
- **`_ensure_checkpoint_loaded(checkpoint_path)`** — Forces ComfyUI to unload all models if the desired checkpoint doesn't match what's currently loaded.
|
||||
|
||||
### `services/llm.py` — LLM Integration
|
||||
|
||||
- **`call_llm(prompt, system_prompt)`** — OpenAI-compatible chat completion supporting OpenRouter (cloud) and Ollama/LMStudio (local). Implements a tool-calling loop (up to 10 turns) using `DANBOORU_TOOLS` via MCP Docker container. Safe to call from background threads (uses `has_request_context()` fallback for OpenRouter HTTP-Referer header).
|
||||
- **`load_prompt(filename)`** — Loads system prompt text from `data/prompts/`.
|
||||
- **`call_mcp_tool()`** — Synchronous wrapper for MCP tool calls.
|
||||
|
||||
### `services/sync.py` — Data Synchronization
|
||||
|
||||
- **`_sync_category(config_key, model_class, id_field, name_field, extra_fn=None, sync_nsfw=True)`** — Generic sync function handling 80% shared logic. 7 sync functions are one-liner wrappers.
|
||||
- **`sync_characters()`** / **`sync_checkpoints()`** — Custom sync functions (special ID handling, filesystem scan).
|
||||
- **`_sync_nsfw_from_tags(entity, data)`** — Reads `data['tags']['nsfw']` and sets `entity.is_nsfw`. Called by `_sync_category` and custom sync functions.
|
||||
- **`_resolve_preset_entity(type, id)`** / **`_resolve_preset_fields(preset_data)`** — Preset resolution helpers.
|
||||
|
||||
### `services/file_io.py` — File & DB Helpers
|
||||
|
||||
- **`get_available_loras(category)`** — Scans filesystem for available LoRA files in a category.
|
||||
- **`get_available_checkpoints()`** — Scans checkpoint directories.
|
||||
- **`_count_look_assignments()`** / **`_count_outfit_lora_assignments()`** — DB aggregate queries.
|
||||
|
||||
### `services/generation.py` — Shared Generation Logic
|
||||
|
||||
- **`generate_from_preset(preset, overrides=None)`** — Core preset generation function used by both the web route and the REST API. Resolves entities, builds prompts, wires the workflow, and enqueues the job. The `overrides` dict accepts: `action`, `checkpoint`, `extra_positive`, `extra_negative`, `seed`, `width`, `height`. Has no `request` or `session` dependencies.
|
||||
|
||||
### `services/mcp.py` — MCP/Docker Lifecycle
|
||||
|
||||
- **`_ensure_repo(compose_dir, repo_url, name)`** — Generic helper: clones a git repo if the directory doesn't exist.
|
||||
- **`_ensure_server_running(compose_dir, repo_url, container_name, name)`** — Generic helper: ensures a Docker Compose service is running (clones repo if needed, starts container if not running).
|
||||
- **`ensure_mcp_server_running()`** — Ensures the danbooru-mcp Docker container is running (thin wrapper around `_ensure_server_running`).
|
||||
- **`ensure_character_mcp_server_running()`** — Ensures the character-mcp Docker container is running (thin wrapper around `_ensure_server_running`).
|
||||
|
||||
### Route-local Helpers
|
||||
|
||||
Some helpers are defined inside a route module's `register_routes()` since they're only used by routes in that file:
|
||||
- `routes/scenes.py`: `_queue_scene_generation()` — scene-specific workflow builder
|
||||
- `routes/detailers.py`: `_queue_detailer_generation()` — detailer-specific generation helper
|
||||
- `routes/styles.py`: `_build_style_workflow()` — style-specific workflow builder
|
||||
- `routes/checkpoints.py`: `_build_checkpoint_workflow()` — checkpoint-specific workflow builder
|
||||
- `routes/strengths.py`: `_build_strengths_prompts()`, `_prepare_strengths_workflow()` — strengths gallery helpers
|
||||
- `routes/transfer.py`: `_create_minimal_template()` — transfer template builder
|
||||
- `routes/gallery.py`: `_scan_gallery_images()`, `_enrich_with_names()`, `_parse_comfy_png_metadata()`, `_write_sidecar()` — gallery image sidecar JSON I/O
|
||||
- `routes/regenerate.py`: Tag regeneration routes (single + category bulk + all), tag migration
|
||||
- `routes/search.py`: `_search_resources()`, `_search_images()` — global search across resources and gallery
|
||||
|
||||
---
|
||||
|
||||
## 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": { "base": "", "head": "", "upper_body": "", "lower_body": "", "hands": "", "feet": "", "additional": "" }
|
||||
},
|
||||
"styles": { "aesthetic": "", "primary_color": "", "secondary_color": "", "tertiary_color": "" },
|
||||
"lora": { "lora_name": "Illustrious/Looks/tifa.safetensors", "lora_weight": 0.8, "lora_triggers": "" },
|
||||
"tags": { "origin_series": "Final Fantasy VII", "origin_type": "game", "nsfw": false },
|
||||
"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": { "base": "", "head": "", "upper_body": "", "lower_body": "", "hands": "", "feet": "", "additional": "" },
|
||||
"lora": { "lora_name": "Illustrious/Clothing/maid.safetensors", "lora_weight": 0.8, "lora_triggers": "" },
|
||||
"tags": { "outfit_type": "Uniform", "nsfw": false }
|
||||
}
|
||||
```
|
||||
|
||||
### 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": { "participants": "1girl", "nsfw": false }
|
||||
}
|
||||
```
|
||||
|
||||
### 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": { "scene_type": "Outdoor", "nsfw": false }
|
||||
}
|
||||
```
|
||||
|
||||
### 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": "" },
|
||||
"tags": { "style_type": "Watercolor", "nsfw": false }
|
||||
}
|
||||
```
|
||||
|
||||
### 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": "" },
|
||||
"tags": { "associated_resource": "skin", "adetailer_targets": ["face", "hands"], "nsfw": false }
|
||||
}
|
||||
```
|
||||
|
||||
### 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": { "origin_series": "Final Fantasy VII", "origin_type": "game", "nsfw": false }
|
||||
}
|
||||
```
|
||||
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); returns `{"job_id": ...}`
|
||||
- `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>/` — library with favourite/NSFW filter controls
|
||||
- `GET /<category>/<slug>` — detail + generation UI
|
||||
- `POST /<category>/<slug>/generate` — queue generation; returns `{"job_id": ...}`
|
||||
- `POST /<category>/<slug>/replace_cover_from_preview`
|
||||
- `GET/POST /<category>/<slug>/edit`
|
||||
- `POST /<category>/<slug>/upload`
|
||||
- `POST /<category>/<slug>/save_defaults`
|
||||
- `POST /<category>/<slug>/favourite` — toggle `is_favourite` (AJAX)
|
||||
- `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` — queue generation; returns `{"job_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/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`
|
||||
|
||||
### REST API (`/api/v1/`)
|
||||
Authenticated via `X-API-Key` header (or `api_key` query param). Key is stored in `Settings.api_key` and managed from the Settings page.
|
||||
- `GET /api/v1/presets` — list all presets (id, slug, name, has_cover)
|
||||
- `POST /api/v1/generate/<preset_slug>` — queue generation from a preset; accepts JSON body with optional `checkpoint`, `extra_positive`, `extra_negative`, `seed`, `width`, `height`, `count` (1–20); returns `{"jobs": [{"job_id": ..., "status": "queued"}]}`
|
||||
- `GET /api/v1/job/<job_id>` — poll job status; returns `{"id", "label", "status", "error", "result"}`
|
||||
- `POST /api/key/regenerate` — generate a new API key (Settings page)
|
||||
|
||||
See `API_GUIDE.md` for full usage examples.
|
||||
|
||||
### Job Queue API
|
||||
All generation routes use the background job queue. Frontend polls:
|
||||
- `GET /api/queue/<job_id>/status` — returns `{"status": "pending"|"running"|"done"|"failed", "result": {...}}`
|
||||
|
||||
Image retrieval is handled server-side by the `_make_finalize()` callback; there are no separate client-facing finalize routes.
|
||||
|
||||
### Search
|
||||
- `GET /search` — global search page; query params: `q` (search term), `category` (all/characters/outfits/etc.), `nsfw` (all/sfw/nsfw), `type` (all/resources/images)
|
||||
|
||||
### Tag Regeneration
|
||||
- `POST /api/<category>/<slug>/regenerate_tags` — single entity tag regeneration via LLM queue
|
||||
- `POST /admin/bulk_regenerate_tags/<category>` — queue LLM tag regeneration for all entities in a category
|
||||
- `POST /admin/bulk_regenerate_tags` — queue LLM tag regeneration for all resources across all categories
|
||||
- `POST /admin/migrate_tags` — convert old list-format tags to new dict format
|
||||
|
||||
### Gallery Image Metadata
|
||||
- `POST /gallery/image/favourite` — toggle favourite on a gallery image (writes sidecar JSON)
|
||||
- `POST /gallery/image/nsfw` — toggle NSFW on a gallery image (writes sidecar JSON)
|
||||
|
||||
### Utilities
|
||||
- `POST /set_default_checkpoint` — save default checkpoint to session and persist to `comfy_workflow.json`
|
||||
- `GET /get_missing_{characters,outfits,actions,scenes,styles,detailers,looks,checkpoints}` — AJAX: list items without cover images (sorted by display name)
|
||||
- `POST /generate_missing` — batch generate covers for all characters missing one (uses job queue)
|
||||
- `POST /clear_all_covers` / `clear_all_{outfit,action,scene,style,detailer,look,checkpoint}_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
|
||||
- **Shared JS files** (extracted from inline scripts):
|
||||
- `static/js/detail-common.js` — `initDetailPage(options)`: favourite toggle, selectPreview, waitForJob, AJAX form submit + polling, addToPreviewGallery, batch generation, endless mode, JSON editor init. All 9 detail templates call this with minimal config.
|
||||
- `static/js/layout-utils.js` — `confirmResourceDelete(mode)`, `regenerateTags(category, slug)`, `initJsonEditor(saveUrl)`
|
||||
- `static/js/library-toolbar.js` — Library page toolbar (batch generate, clear covers, missing items)
|
||||
- Context processors inject `all_checkpoints`, `default_checkpoint_path`, and `COMFYUI_WS_URL` into every template. The `random_gen_image(category, slug)` template global returns a random image path from `static/uploads/<category>/<slug>/` for use as a fallback cover when `image_path` is not set.
|
||||
- **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 `{"job_id": ...}` response, then polls `/api/queue/<job_id>/status` every ~1.5 seconds until `status == "done"` or the 5-minute timeout is reached. The server-side worker handles all ComfyUI polling and image saving via the `_make_finalize()` callback. There are no client-facing finalize HTTP routes.
|
||||
- **Batch generation** (library pages): Uses a two-phase pattern:
|
||||
1. **Queue phase**: All jobs are submitted upfront via sequential fetch calls, collecting job IDs
|
||||
2. **Poll phase**: All jobs are polled concurrently via `Promise.all()`, updating UI as each completes
|
||||
3. **Progress tracking**: Displays currently processing items in real-time using a `Set` to track active jobs
|
||||
4. **Sorting**: All batch operations sort items by display `name` (not `filename`) for better UX
|
||||
- **Fallback covers** (library pages): When a resource has no assigned `image_path` but has generated images in its upload folder, a random image is shown at 50% opacity (CSS class `fallback-cover`). The image changes on each page load. Resources with no generations show "No 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`
|
||||
- `preset_system.txt` — preset JSON schema
|
||||
- `regenerate_tags_system.txt` — tag regeneration schema (all per-category tag structures)
|
||||
|
||||
Used by: character/outfit/action/scene/style create forms, bulk_create routes, and tag regeneration. All system prompts include NSFW awareness preamble.
|
||||
|
||||
### 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.
|
||||
|
||||
---
|
||||
|
||||
## Tagging System
|
||||
|
||||
Tags are **semantic metadata** for organizing and filtering resources. They are **not injected into generation prompts** — tags are purely for the UI (search, filtering, categorization).
|
||||
|
||||
### Tag Schema Per Category
|
||||
|
||||
| Category | Tag fields | Example |
|
||||
|----------|-----------|---------|
|
||||
| Character | `origin_series`, `origin_type`, `nsfw` | `{"origin_series": "Final Fantasy VII", "origin_type": "game", "nsfw": false}` |
|
||||
| Look | `origin_series`, `origin_type`, `nsfw` | same as Character |
|
||||
| Outfit | `outfit_type`, `nsfw` | `{"outfit_type": "Uniform", "nsfw": false}` |
|
||||
| Action | `participants`, `nsfw` | `{"participants": "1girl, 1boy", "nsfw": true}` |
|
||||
| Style | `style_type`, `nsfw` | `{"style_type": "Anime", "nsfw": false}` |
|
||||
| Scene | `scene_type`, `nsfw` | `{"scene_type": "Indoor", "nsfw": false}` |
|
||||
| Detailer | `associated_resource`, `adetailer_targets`, `nsfw` | `{"associated_resource": "skin", "adetailer_targets": ["face", "hands"], "nsfw": false}` |
|
||||
| Checkpoint | `art_style`, `base_model`, `nsfw` | `{"art_style": "anime", "base_model": "Illustrious", "nsfw": false}` |
|
||||
|
||||
### Favourite / NSFW Columns
|
||||
|
||||
- `is_favourite` — DB-only boolean. Toggled via `POST /<category>/<slug>/favourite`. Not stored in JSON (user preference, not asset metadata).
|
||||
- `is_nsfw` — DB column **and** `tags.nsfw` in JSON. Synced from JSON on rescan via `_sync_nsfw_from_tags()`. Editable from edit pages.
|
||||
|
||||
### Library Filtering
|
||||
|
||||
All library index pages support query params:
|
||||
- `?favourite=on` — show only favourites
|
||||
- `?nsfw=sfw|nsfw|all` — filter by NSFW status
|
||||
- Results are ordered by `is_favourite DESC, name ASC` (favourites sort first).
|
||||
- Filter logic is shared via `apply_library_filters(query, model_class)` in `routes/shared.py`, which returns `(items, fav, nsfw)`.
|
||||
|
||||
### Gallery Image Sidecar Files
|
||||
|
||||
Gallery images can have per-image favourite/NSFW metadata stored in sidecar JSON files at `{image_path}.json` (e.g. `static/uploads/characters/tifa/gen_123.png.json`). Sidecar schema: `{"is_favourite": bool, "is_nsfw": bool}`.
|
||||
|
||||
---
|
||||
|
||||
## 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** (`services/sync.py`): Add `sync_newcategory()` as a one-liner using `_sync_category()` (or custom if needed).
|
||||
3. **Data directory** (`app.py`): Add `app.config['NEWCATEGORY_DIR'] = 'data/newcategory'`.
|
||||
4. **Shared routes** (`routes/shared.py`): Add entry to `CATEGORY_CONFIG` dict with model, url_prefix, detail_endpoint, config_dir, category_folder, id_field, name_field, endpoint_prefix.
|
||||
5. **Routes** (`routes/newcategory.py`): Create a new route module with a `register_routes(app)` function. Call `register_common_routes(app, 'newcategory')` first, then implement category-specific routes (index, detail, edit, generate, rescan). Follow `routes/outfits.py` or `routes/scenes.py` exactly.
|
||||
6. **Route registration** (`routes/__init__.py`): Import and call `newcategory.register_routes(app)`.
|
||||
7. **Templates**: Create `templates/newcategory/{index,detail,edit,create}.html` extending `layout.html`. Detail template should call `initDetailPage({...})` from `detail-common.js`.
|
||||
8. **Nav**: Add link to navbar in `templates/layout.html`.
|
||||
9. **Startup** (`app.py`): Import and call `sync_newcategory()` in the `with app.app_context()` block.
|
||||
10. **Generator page**: Add to `routes/generator.py`, `services/prompts.py` `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
|
||||
|
||||
### Directly (development)
|
||||
|
||||
```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()`.
|
||||
|
||||
### Docker
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
The compose file (`docker-compose.yml`) runs two services:
|
||||
- **`danbooru-mcp`** — built from `https://git.liveaodh.com/aodhan/danbooru-mcp.git`; the MCP tag-search container used by `call_llm()`.
|
||||
- **`app`** — the Flask app, exposed on host port **5782** → container port 5000.
|
||||
|
||||
Key environment variables set by compose:
|
||||
- `COMFYUI_URL=http://10.0.0.200:8188` — points at ComfyUI on the Docker host network.
|
||||
- `SKIP_MCP_AUTOSTART=true` — disables the app's built-in danbooru-mcp launch logic (compose manages it).
|
||||
|
||||
Volumes mounted into the app container:
|
||||
- `./data`, `./static/uploads`, `./instance`, `./flask_session` — persistent app data.
|
||||
- `/Volumes/ImageModels:/ImageModels:ro` — model files for checkpoint/LoRA scanning (**requires Docker Desktop file sharing enabled for `/Volumes/ImageModels`**).
|
||||
- `/var/run/docker.sock` — Docker socket so the app can exec danbooru-mcp tool containers.
|
||||
|
||||
---
|
||||
|
||||
## 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. In generate routes, the detailer prompt is injected directly into `prompts['main']` after `build_prompt()` returns (not via tags or `build_prompt` itself).
|
||||
- **`_make_finalize` action semantics**: Pass `action=None` when the route should always update the DB cover (e.g. batch generate, checkpoint generate). Pass `action=request.form.get('action')` for routes that support both "preview" (no DB update) and "replace" (update DB). The factory skips the DB write when `action` is truthy and not `"replace"`.
|
||||
- **LLM queue runs without request context**: `_enqueue_task()` callbacks execute in a background thread with only `app.app_context()`. Do not access `flask.request`, `flask.session`, or other request-scoped objects inside `task_fn`. Use `has_request_context()` guard if code is shared between HTTP handlers and background tasks.
|
||||
- **Tags are metadata only**: Tags (`data['tags']`) are never injected into generation prompts. They are purely for UI filtering and search. The old pattern of `parts.extend(data.get('tags', []))` in prompt building has been removed.
|
||||
- **Path traversal guard on replace cover**: The replace cover route in `routes/shared.py` validates `preview_path` using `os.path.realpath()` + `startswith()` to prevent path traversal attacks.
|
||||
- **Logging uses lazy % formatting**: All logger calls use `logger.info("msg %s", var)` style, not f-strings. This avoids formatting the string when the log level is disabled.
|
||||
@@ -1,51 +0,0 @@
|
||||
# Feature Development Guide: Gallery Pages & Character Integration
|
||||
|
||||
This guide outlines the architectural patterns and best practices developed during the implementation of the **Actions**, **Outfits**, and **Styles** galleries. Use this as a blueprint for adding similar features (e.g., "Scenes", "Props", "Effects").
|
||||
|
||||
## 1. Data Model & Persistence
|
||||
- **Database Model:** Add a new class in `models.py`. Include `default_fields` (JSON) to support persistent prompt selections.
|
||||
- **JSON Sync:** Implement a `sync_[feature]()` function in `app.py` to keep the SQLite database in sync with the `data/[feature]/*.json` files.
|
||||
- **Slugs:** Use URL-safe slugs generated from the ID for clean routing.
|
||||
|
||||
## 2. Quadruple LoRA Chaining
|
||||
Our workflow supports chaining up to four distinct LoRAs from specific directories:
|
||||
1. **Character:** `Illustrious/Looks/` (Node 16)
|
||||
2. **Outfit:** `Illustrious/Clothing/` (Node 17)
|
||||
3. **Action:** `Illustrious/Poses/` (Node 18)
|
||||
4. **Style:** `Illustrious/Styles/` (Node 19)
|
||||
|
||||
**Implementation Detail:**
|
||||
In `_prepare_workflow`, LoRAs must be chained sequentially. If a previous LoRA is missing, the next one must "reach back" to the Checkpoint (Node 4) or the last valid node in the chain to maintain the model/CLIP connection. Node 19 is the terminal LoRA loader before terminal consumers (KSampler, Detailers).
|
||||
|
||||
## 3. Style Prompt Construction
|
||||
Artistic styles follow specific formatting rules in the `build_prompt` engine:
|
||||
- **Artist Attribution:** Artist names are prefixed with "by " (e.g., "by Sabu").
|
||||
- **Artistic Styles:** Raw descriptive style tags (e.g., "watercolor painting") are appended to the prompt.
|
||||
- **Priority:** Style tags are applied after identity and wardrobe tags but before trigger words.
|
||||
|
||||
## 4. Adetailer Routing
|
||||
To improve generation quality, route specific JSON sub-fields to targeted Adetailers:
|
||||
- **Face Detailer (Node 14):** Receives `character_name`, `expression`, and action-specific `head`/`eyes` tags.
|
||||
- **Hand Detailer (Node 15):** Receives priority hand tags (Wardrobe Gloves > Wardrobe Hands > Identity Hands) and action-specific `arms`/`hands` tags.
|
||||
|
||||
## 5. Character-Integrated Previews
|
||||
The "Killer Feature" is previewing a standalone item (like an Action, Outfit, or Style) on a specific character.
|
||||
|
||||
**Logic Flow:**
|
||||
1. **Merge Data:** Copy `character.data`.
|
||||
2. **Override/Merge:** Replace character `defaults` with feature-specific tags (e.g., Action pose overrides Character pose).
|
||||
3. **Context Injection:** Append character-specific styles (e.g., `[primary_color] simple background`) to the main prompt.
|
||||
4. **Auto-Selection:** When a character is selected, ensure their essential identity and active wardrobe fields are automatically included in the prompt.
|
||||
|
||||
## 6. UI/UX Patterns
|
||||
- **Selection Boxes:** Use checkboxes next to field labels to allow users to toggle specific tags.
|
||||
- **Default Selection:** Implement a "Save as Default Selection" button that persists the current checkbox state to the database.
|
||||
- **Session State:** Store the last selected character and field preferences in the Flask `session` to provide a seamless experience.
|
||||
- **AJAX Generation:** Use the WebSocket + Polling hybrid pattern in the frontend to show real-time progress bars without page reloads.
|
||||
|
||||
## 7. Directory Isolation
|
||||
Always isolate LoRAs by purpose to prevent dropdown clutter:
|
||||
- `get_available_loras()` -> Characters
|
||||
- `get_available_clothing_loras()` -> Outfits
|
||||
- `get_available_action_loras()` -> Actions/Poses
|
||||
- `get_available_style_loras()` -> Styles
|
||||
29
Dockerfile
Normal file
29
Dockerfile
Normal file
@@ -0,0 +1,29 @@
|
||||
FROM python:3.12-slim
|
||||
|
||||
# Install system deps: git (for danbooru-mcp repo clone) + docker CLI
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
git \
|
||||
curl \
|
||||
ca-certificates \
|
||||
&& install -m 0755 -d /etc/apt/keyrings \
|
||||
&& curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc \
|
||||
&& chmod a+r /etc/apt/keyrings/docker.asc \
|
||||
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" \
|
||||
> /etc/apt/sources.list.d/docker.list \
|
||||
&& apt-get update && apt-get install -y --no-install-recommends docker-ce-cli docker-compose-plugin \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
COPY . .
|
||||
|
||||
# Writable dirs that will typically be bind-mounted at runtime
|
||||
RUN mkdir -p static/uploads instance flask_session data/characters data/clothing \
|
||||
data/actions data/styles data/scenes data/detailers data/checkpoints data/looks
|
||||
|
||||
EXPOSE 5000
|
||||
|
||||
CMD ["python", "app.py"]
|
||||
37
README.md
37
README.md
@@ -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.
|
||||
- **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.
|
||||
- **AI-Powered Creation**: Create new characters, outfits, and actions using AI to generate profiles from descriptions, or manually create blank templates.
|
||||
- **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).
|
||||
- **Styles Gallery**: Manage art style / artist LoRA presets with AI-assisted bulk creation from your styles LoRA folder.
|
||||
- **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.
|
||||
- **ComfyUI Integration**:
|
||||
- **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).
|
||||
- **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).
|
||||
- **Batch Processing**:
|
||||
- **Fill Missing**: Generate covers for every character missing one with a single click.
|
||||
- **Advanced Generator**: A dedicated page to mix-and-match characters with different checkpoints (Illustrious/Noob support) and custom prompt additions.
|
||||
- **Fill Missing**: Generate covers for every item missing one with a single click, across all galleries.
|
||||
- **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.
|
||||
|
||||
## Prerequisites
|
||||
@@ -33,6 +39,20 @@ A local web-based GUI for managing character profiles (JSON) and generating cons
|
||||
|
||||
## Setup & Installation
|
||||
|
||||
### Option A — Docker (recommended)
|
||||
|
||||
1. **Clone the repository.**
|
||||
2. Edit `docker-compose.yml` if needed:
|
||||
- Set `COMFYUI_URL` to your ComfyUI host/port.
|
||||
- Adjust the `/Volumes/ImageModels` volume path to your model directory. If you're on Docker Desktop, add the path under **Settings → Resources → File Sharing** first.
|
||||
3. **Start services:**
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
The app will be available at `http://localhost:5782`.
|
||||
|
||||
### Option B — Local (development)
|
||||
|
||||
1. **Clone the repository** to your local machine.
|
||||
2. **Configure Paths**: Open `app.py` and update the following variables to match your system:
|
||||
```python
|
||||
@@ -70,8 +90,13 @@ A local web-based GUI for managing character profiles (JSON) and generating cons
|
||||
- `/data/characters`: Character JSON files.
|
||||
- `/data/clothing`: Outfit 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).
|
||||
- `app.py`: Flask backend and prompt-building logic.
|
||||
- `comfy_workflow.json`: The API-format workflow used for generations.
|
||||
- `models.py`: SQLAlchemy database models.
|
||||
- `DEVELOPMENT_GUIDE.md`: Architectual patterns for extending the browser.
|
||||
- `DEVELOPMENT_GUIDE.md`: Architectural patterns for extending the browser.
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
},
|
||||
"4": {
|
||||
"inputs": {
|
||||
"ckpt_name": "Noob/oneObsession_v19Atypical.safetensors"
|
||||
"ckpt_name": ""
|
||||
},
|
||||
"class_type": "CheckpointLoaderSimple"
|
||||
},
|
||||
|
||||
@@ -2,32 +2,23 @@
|
||||
"action_id": "3p_sex_000037",
|
||||
"action_name": "3P Sex 000037",
|
||||
"action": {
|
||||
"full_body": "group sex, threesome, 3 subjects, intertwined bodies, on bed",
|
||||
"head": "pleasured expression, heavy breathing, blush, sweating, tongue out, saliva",
|
||||
"eyes": "half-closed eyes, rolling back, heart pupils, looking at partner",
|
||||
"arms": "wrapping around partners, arm locking, grabbing shoulders",
|
||||
"hands": "groping, fondling, gripping hair, fingers digging into skin",
|
||||
"torso": "arching back, bare skin, sweat drops, pressing chests together",
|
||||
"pelvis": "connected, hips grinding, penetration",
|
||||
"legs": "spread legs, legs in air, wrapped around waist, kneeling",
|
||||
"feet": "toes curled, arched feet",
|
||||
"additional": "sex act, bodily fluids, cum, motion blur, intimacy, nsfw"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "false",
|
||||
"orientation": "MfF"
|
||||
"base": "threesome, group_sex, 3_people",
|
||||
"head": "blush, half-closed_eyes, sweat",
|
||||
"upper_body": "nude, reaching",
|
||||
"lower_body": "sex, spread_legs, intercourse",
|
||||
"hands": "groping",
|
||||
"feet": "toes_curled",
|
||||
"additional": "panting, orgasm, sweat"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/3P_SEX-000037.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "3P_SEX-000037"
|
||||
"lora_weight": 0.8,
|
||||
"lora_triggers": "threesome, group_sex",
|
||||
"lora_weight_min": 0.8,
|
||||
"lora_weight_max": 0.8
|
||||
},
|
||||
"tags": [
|
||||
"group sex",
|
||||
"threesome",
|
||||
"3p",
|
||||
"nsfw",
|
||||
"sexual intercourse",
|
||||
"pleasure"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "threesome",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,34 +2,23 @@
|
||||
"action_id": "4p_sex",
|
||||
"action_name": "4P Sex",
|
||||
"action": {
|
||||
"full_body": "complex group composition involving four subjects in close physical contact, bodies intertwined or overlapping in a cluster",
|
||||
"head": "heads positioned close together, looking at each other or facing different directions, varied expressions",
|
||||
"eyes": "open or half-closed, gazing at other subjects",
|
||||
"arms": "arms reaching out, holding, or embracing other subjects in the group, creating a web of limbs",
|
||||
"hands": "hands placed on others' bodies, grasping or touching",
|
||||
"torso": "torsos leaning into each other, pressed together or arranged in a pile",
|
||||
"pelvis": "pelvises positioned in close proximity, aligned with group arrangement",
|
||||
"legs": "legs entangled, kneeling, lying down, or wrapped around others",
|
||||
"feet": "feet resting on the ground or tucked in",
|
||||
"additional": "high density composition, multiple angles of interaction, tangled arrangement of bodies"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "false",
|
||||
"orientation": "MFFF"
|
||||
"base": "group_sex, foursome, 4p, multiple_partners, sexual_act",
|
||||
"head": "moaning, open_mouth, closed_eyes, ahegao, heart_eyes, heavy_breathing, flushed_face, sweat",
|
||||
"upper_body": "nude, arching_back, standing_on_all_fours, breasts_press, breast_grab, fingers_in_mouth",
|
||||
"lower_body": "vaginal_intercourse, anal_intercourse, double_penetration, legs_apart, kneeing, missionary_position",
|
||||
"hands": "breast_fondling, clutching_sheets, on_partner, touching_self",
|
||||
"feet": "toes_curled, barefoot",
|
||||
"additional": "bodily_fluids, semen, sweat, messy, erotic, intimate"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/4P_sex.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "4P_sex"
|
||||
"lora_weight": 0.6,
|
||||
"lora_triggers": "4P_sexV1",
|
||||
"lora_weight_min": 0.6,
|
||||
"lora_weight_max": 0.6
|
||||
},
|
||||
"tags": [
|
||||
"4girls",
|
||||
"group",
|
||||
"tangled",
|
||||
"multiple_viewers",
|
||||
"all_fours",
|
||||
"entangled_legs",
|
||||
"close_contact",
|
||||
"crowded"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "4people",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,14 @@
|
||||
{
|
||||
"action_id": "_malebolgia__oral_sex_tounge_afterimage_concept_2_0_illustrious",
|
||||
"action_name": " Malebolgia Oral Sex Tounge Afterimage Concept 2 0 Illustrious",
|
||||
"action_name": "Malebolgia Oral Sex Tounge Afterimage Concept 2 0 Illustrious",
|
||||
"action": {
|
||||
"full_body": "kneeling, leaning forward, engaged in oral activity",
|
||||
"head": "facing target, mouth wide open, intense expression",
|
||||
"eyes": "looking up, half-closed",
|
||||
"arms": "reaching forward",
|
||||
"hands": "grasping partner's thighs or hips",
|
||||
"torso": "angled towards partner",
|
||||
"pelvis": "stationary",
|
||||
"legs": "kneeling on the floor",
|
||||
"feet": "tucked behind",
|
||||
"additional": "afterimage, motion blur, multiple tongues, rapid tongue movement, speed lines, saliva trails"
|
||||
"base": "kneeling, leaning_forward, oral_sex",
|
||||
"head": "looking_up, mouth_open, intense_expression, half-closed_eyes",
|
||||
"upper_body": "forward_bend, reaching_forward",
|
||||
"lower_body": "kneeling, legs_spread",
|
||||
"hands": "grabbing_partner, hand_on_thigh",
|
||||
"feet": "barefoot",
|
||||
"additional": "afterimage, motion_blur, multiple_tongues, speed_lines, saliva_drool"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,13 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/[Malebolgia] Oral Sex Tounge Afterimage Concept 2.0 Illustrious.safetensors",
|
||||
"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": [
|
||||
"oral",
|
||||
"rapid motion",
|
||||
"tongue play",
|
||||
"motion blur",
|
||||
"surreal"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "actually_reliable_penis_kissing_3_variants_illustrious",
|
||||
"action_name": "Actually Reliable Penis Kissing 3 Variants Illustrious",
|
||||
"action": {
|
||||
"full_body": "kneeling in front of standing or sitting partner, leaning forward towards crotch",
|
||||
"head": "face aligned with groin, lips pressing against glans or shaft, tongue slightly out, kissing connection",
|
||||
"eyes": "looking up at partner or closed in enjoyment, half-closed",
|
||||
"arms": "reaching forward or resting on partner's legs",
|
||||
"hands": "gently holding the shaft, cupping testicles, or resting on partner's thighs",
|
||||
"torso": "leaning forward, arched back",
|
||||
"pelvis": "kneeling pose, hips pushed back",
|
||||
"legs": "kneeling on the ground",
|
||||
"feet": "toes curled or flat",
|
||||
"additional": "saliva connection, affectionate oral interaction, unsucked penis"
|
||||
"base": "kneeling, fellatio, oral sex, kissing penis",
|
||||
"head": "eyes closed, half-closed eyes, looking up, kissing, tongue",
|
||||
"upper_body": "arched back, leaning forward",
|
||||
"lower_body": "kneeling",
|
||||
"hands": "holding penis, hand on thigh",
|
||||
"feet": "",
|
||||
"additional": "saliva, slime, connection"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,15 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Actually_Reliable_Penis_Kissing_3_Variants_Illustrious.safetensors",
|
||||
"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": [
|
||||
"penis kissing",
|
||||
"fellatio",
|
||||
"oral sex",
|
||||
"kneeling",
|
||||
"saliva",
|
||||
"tongue",
|
||||
"close-up"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,36 +2,23 @@
|
||||
"action_id": "after_sex_fellatio_illustriousxl_lora_nochekaiser_r1",
|
||||
"action_name": "After Sex Fellatio Illustriousxl Lora Nochekaiser R1",
|
||||
"action": {
|
||||
"full_body": "kneeling on the floor in a submissive posture (seiza) or sitting back on heels",
|
||||
"head": "tilted upwards slightly, heavy blush on cheeks, messy hair, mouth held open",
|
||||
"eyes": "half-closed, looking up at viewer, glazed expression, maybe heart-shaped pupils",
|
||||
"arms": "resting slightly limp at sides or hands placed on thighs",
|
||||
"hands": "resting on thighs or one hand wiping corner of mouth",
|
||||
"torso": "leaning slightly forward, relaxed posture implying exhaustion",
|
||||
"pelvis": "hips resting on heels",
|
||||
"legs": "bent at knees, kneeling",
|
||||
"feet": "tucked under buttocks",
|
||||
"additional": "cum on face, cum on mouth, semen, saliva trail, drooling, tongue stuck out, heavy breathing, sweat, after sex atmosphere"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "F"
|
||||
"base": "1girl, 1boy, completely_nude, lying, on_back, spread_legs",
|
||||
"head": "looking_at_viewer, tongue, open_mouth, blush, disheveled_hair, half-closed_eyes",
|
||||
"upper_body": "on_bed, large_breasts, nipples, sweat",
|
||||
"lower_body": "pussy, cum_in_pussy, leaking_cum, knees_up, thighs_apart",
|
||||
"hands": "on_bed",
|
||||
"feet": "barefoot",
|
||||
"additional": "after_sex, fellatio, penis, cum, cum_drip, messy_body, sweat, bed_sheet"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/after-sex-fellatio-illustriousxl-lora-nochekaiser_r1.safetensors",
|
||||
"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": [
|
||||
"after fellatio",
|
||||
"cum on face",
|
||||
"messy face",
|
||||
"saliva",
|
||||
"tongue out",
|
||||
"kneeling",
|
||||
"looking up",
|
||||
"blush",
|
||||
"sweat",
|
||||
"open mouth"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
24
data/actions/afterfellatio_ill.json
Normal file
24
data/actions/afterfellatio_ill.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"action_id": "afterfellatio_ill",
|
||||
"action_name": "Afterfellatio Ill",
|
||||
"action": {
|
||||
"base": "kneeling, leaning_forward, pov",
|
||||
"head": "looking_at_viewer, blush, tilted_head, cum_on_face, half-closed_eyes, tears, messy_makeup",
|
||||
"upper_body": "arms_down, reaching_towards_viewer",
|
||||
"lower_body": "kneeling",
|
||||
"hands": "hands_on_penis",
|
||||
"feet": "barefoot",
|
||||
"additional": "cum, cum_string, cum_in_mouth, closed_mouth, stringy_cum"
|
||||
},
|
||||
"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": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,33 +2,23 @@
|
||||
"action_id": "afteroral",
|
||||
"action_name": "Afteroral",
|
||||
"action": {
|
||||
"full_body": "",
|
||||
"head": "cum in mouth, facial, blush, open mouth, tongue out, messy hair, sweat, panting",
|
||||
"eyes": "half-closed eyes, glazed eyes, looking up, tears",
|
||||
"arms": "",
|
||||
"hands": "",
|
||||
"torso": "",
|
||||
"pelvis": "",
|
||||
"legs": "",
|
||||
"base": "after_fellatio, post-coital, flushed_face, messy_appearance",
|
||||
"head": "messy_hair, panting, heavy_breathing, half-closed_eyes, dazed, pupil_dilated, flushed, sweat",
|
||||
"upper_body": "smeared_lipstick, runny_makeup, saliva, saliva_trail, cum_on_face, cum_on_mouth, excessive_cum",
|
||||
"lower_body": "",
|
||||
"hands": "hands_near_face, curled_fingers",
|
||||
"feet": "",
|
||||
"additional": "saliva, saliva string, heavy breathing, after fellatio, bodily fluids"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "F"
|
||||
"additional": "after_fellatio, cum_drip, mess"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/afteroral.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "afteroral"
|
||||
"lora_triggers": "after oral, after deepthroat",
|
||||
"lora_weight_min": 1.0,
|
||||
"lora_weight_max": 1.0
|
||||
},
|
||||
"tags": [
|
||||
"after oral",
|
||||
"wiping mouth",
|
||||
"saliva",
|
||||
"kneeling",
|
||||
"blush",
|
||||
"messy",
|
||||
"panting"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "afterpaizuri",
|
||||
"action_name": "Afterpaizuri",
|
||||
"action": {
|
||||
"full_body": "kneeling or sitting, displaying upper body aftermath, exhausted posture",
|
||||
"head": "flushed face, messy hair, panting, mouth slightly open, tongue out",
|
||||
"eyes": "half-closed eyes, dazed expression, looking at viewer",
|
||||
"arms": "resting on thighs or gesturing towards chest",
|
||||
"hands": "presenting breasts or cleaning face",
|
||||
"torso": "exposed cleavage, chest covered in white liquid, disheveled clothes",
|
||||
"pelvis": "hips settling back, kneeling posture",
|
||||
"legs": "kneeling, thighs together or slightly spread",
|
||||
"feet": "tucked under buttocks or relaxed",
|
||||
"additional": "semen on breasts, semen on face, heavy breathing, sweat, sticky fluids"
|
||||
"base": "kneeling, sitting, exhausted, post-coital, afterpaizuri",
|
||||
"head": "flushed, messy_hair, panting, mouth_open, tongue_out, half-closed_eyes, dazed, looking_at_viewer",
|
||||
"upper_body": "bare_shoulders, cleavage, semen_on_breasts, disheveled_clothes, bra_removed_under_clothes",
|
||||
"lower_body": "kneeling, thighs_together, buttocks_on_heels",
|
||||
"hands": "hands_on_lap",
|
||||
"feet": "barefoot",
|
||||
"additional": "semen_on_face, heavy_breathing, sweat, moisture, viscous_liquid, creamy_fluid"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,16 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/afterpaizuri.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "afterpaizuri"
|
||||
"lora_triggers": "afterpaizuri",
|
||||
"lora_weight_min": 1.0,
|
||||
"lora_weight_max": 1.0
|
||||
},
|
||||
"tags": [
|
||||
"after paizuri",
|
||||
"semen on breasts",
|
||||
"semen on face",
|
||||
"messy",
|
||||
"blush",
|
||||
"dazed",
|
||||
"sweat",
|
||||
"disheveled"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,36 +2,23 @@
|
||||
"action_id": "aftersexbreakv2",
|
||||
"action_name": "Aftersexbreakv2",
|
||||
"action": {
|
||||
"full_body": "lying in bed, exhausted",
|
||||
"head": "messy hair, flushed face, sweating, panting",
|
||||
"eyes": "half-closed eyes, ",
|
||||
"arms": "",
|
||||
"hands": "",
|
||||
"torso": "sweaty skin, glistening skin, heavy breathing,",
|
||||
"pelvis": "cum drip",
|
||||
"legs": "legs spread",
|
||||
"feet": "",
|
||||
"additional": "ripped clothing, panties aside, rumpled bed sheets, messy bed, dim lighting, intimate atmosphere, exhausted"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "F"
|
||||
"base": "lying, on_back, on_bed, bowlegged_pose, spread_legs, twisted_torso",
|
||||
"head": "messy_hair, head_back, sweaty, rolling_eyes, half-closed_eyes, ahegao",
|
||||
"upper_body": "arms_spread, arms_above_head, sweat, naked, collarbone, heavy_breathing",
|
||||
"lower_body": "hips, navel, female_pubic_hair, spread_legs, legs_up, bent_legs",
|
||||
"hands": "relaxed_hands",
|
||||
"feet": "barefoot",
|
||||
"additional": "condom_wrapper, used_tissue, stained_sheets, cum_on_bed, sweat_bead"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/AfterSexBreakV2.safetensors",
|
||||
"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": [
|
||||
"after sex",
|
||||
"post-coital",
|
||||
"lying in bed",
|
||||
"messy hair",
|
||||
"sweaty skin",
|
||||
"covered by sheet",
|
||||
"bedroom eyes",
|
||||
"exhausted",
|
||||
"intimate",
|
||||
"rumpled sheets"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "against_glass_bs",
|
||||
"action_name": "Against Glass Bs",
|
||||
"action": {
|
||||
"full_body": "leaning forward, body pressed directly against the viewing plane/glass surface",
|
||||
"head": "face close to camera, breath fog on glass, cheek slightly pressed",
|
||||
"eyes": "looking directly at viewer, intimate gaze",
|
||||
"arms": "reaching forward towards the viewer",
|
||||
"hands": "palms pressed flat against glass, fingers spread, palm prints",
|
||||
"torso": "chest squished against glass, leaning into the surface",
|
||||
"pelvis": "hips pushed forward or slightly angled back depending on angle",
|
||||
"legs": "standing straight or knees slightly bent for leverage",
|
||||
"feet": "planted firmly on the ground",
|
||||
"additional": "transparent surface, condensation, distortion from glass, surface interaction"
|
||||
"base": "against_glass, leaning_forward, pressed_against_surface, glass_surface",
|
||||
"head": "face_pressed, cheek_press, breath_on_glass, looking_at_viewer, intimate_gaze",
|
||||
"upper_body": "chest_pressed_against_glass, leaning_into_glass",
|
||||
"lower_body": "hips_pushed_forward, standing",
|
||||
"hands": "hands_on_glass, palms_on_glass, fingers_spread",
|
||||
"feet": "standing",
|
||||
"additional": "condensation, translucent_surface, distortion"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,14 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Against_glass_bs.safetensors",
|
||||
"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": [
|
||||
"against glass",
|
||||
"pressed against glass",
|
||||
"palms on glass",
|
||||
"view through glass",
|
||||
"cheek press",
|
||||
"distorted view"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": false
|
||||
}
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
{
|
||||
"action_id": "agressivechoking_000010",
|
||||
"action_name": "Agressivechoking 000010",
|
||||
"action": {
|
||||
"full_body": "dynamic perspective, leaning forward, dominant violent stance, POV",
|
||||
"head": "face close to camera, angry expression, gritting teeth or shouting, heavy breathing",
|
||||
"eyes": "intense stare, dilated pupils, furious gaze, sanpaku",
|
||||
"arms": "extended towards viewer or subject, muscles tensed, shoulders shrugged forward",
|
||||
"hands": "fingers curled tightly, hand around neck, strangling motion, squeezing",
|
||||
"torso": "hunched forward, tense upper body",
|
||||
"pelvis": "weight shifted forward",
|
||||
"legs": "wide stance for leverage, braced",
|
||||
"feet": "planted firmly",
|
||||
"additional": "sweat, speed lines, depth of field, high contrast lighting, shadow over eyes"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/AgressiveChoking-000010.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "AgressiveChoking-000010"
|
||||
},
|
||||
"tags": [
|
||||
"violence",
|
||||
"dominance",
|
||||
"pov",
|
||||
"combat",
|
||||
"anger"
|
||||
]
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
{
|
||||
"action_id": "ahegao_xl_v3_1278075",
|
||||
"action_name": "Ahegao Xl V3 1278075",
|
||||
"action": {
|
||||
"full_body": "portrait or upper body focus, emphasizing facial distortion",
|
||||
"head": "tilted back slightly, mouth wide open, tongue hanging out, face heavily flushed",
|
||||
"eyes": "rolled back upwards, cross-eyed, look of exhaustion or ecstasy",
|
||||
"arms": "raised up near the head",
|
||||
"hands": "making double peace signs (v-sign) framing the face",
|
||||
"torso": "facing forward",
|
||||
"pelvis": "neutral",
|
||||
"legs": "neutral",
|
||||
"feet": "not visible",
|
||||
"additional": "saliva trail, drooling, sweat, heavy blush stickers, heart-shaped pupils"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "F"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Ahegao_XL_v3_1278075.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "Ahegao_XL_v3_1278075"
|
||||
},
|
||||
"tags": [
|
||||
"ahegao",
|
||||
"rolling eyes",
|
||||
"tongue out",
|
||||
"open mouth",
|
||||
"blush",
|
||||
"drooling",
|
||||
"saliva",
|
||||
"cross-eyed",
|
||||
"double peace sign",
|
||||
"v-sign"
|
||||
]
|
||||
}
|
||||
@@ -2,33 +2,23 @@
|
||||
"action_id": "amateur_pov_filming",
|
||||
"action_name": "Amateur Pov Filming",
|
||||
"action": {
|
||||
"full_body": "POV shot, subject positioned close to the lens, selfie composition or handheld camera style",
|
||||
"head": "facing the camera directly, slightly tilted or chin tucked, candid expression",
|
||||
"eyes": "looking directly at viewer, intense eye contact",
|
||||
"arms": "one or both arms raised towards the viewer holding the capturing device",
|
||||
"hands": "holding smartphone, clutching camera, fingers visible on device edges",
|
||||
"torso": "upper body visible, facing forward, close proximity",
|
||||
"pelvis": "obscured or out of frame",
|
||||
"legs": "out of frame",
|
||||
"feet": "out of frame",
|
||||
"additional": "phone screen, camera interface, amateur footage quality, blurry background, indoor lighting, candid atmosphere"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "pov, selfie, solo, indoors, recording, smartphone, holding_phone",
|
||||
"head": "looking_at_viewer, blush, open_mouth",
|
||||
"upper_body": "upper_body, breasts, nipples",
|
||||
"lower_body": "hips",
|
||||
"hands": "holding_phone, holding_id_card",
|
||||
"feet": "barefoot",
|
||||
"additional": "mirror_selfie, amateur_aesthetic"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Amateur_POV_Filming.safetensors",
|
||||
"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": [
|
||||
"pov",
|
||||
"selfie",
|
||||
"holding phone",
|
||||
"amateur",
|
||||
"candid",
|
||||
"recording",
|
||||
"close-up"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,35 +2,23 @@
|
||||
"action_id": "arch_back_sex_v1_1_illustriousxl",
|
||||
"action_name": "Arch Back Sex V1 1 Illustriousxl",
|
||||
"action": {
|
||||
"full_body": "character positioned with an exaggerated spinal curve, emphasizing the posterior",
|
||||
"head": "thrown back in pleasure or looking back over the shoulder",
|
||||
"eyes": "half-closed, rolled back, or heavily blushing",
|
||||
"arms": "supporting body weight on elbows or hands, or reaching forward",
|
||||
"hands": "gripping bedsheets or pressing firmly against the surface",
|
||||
"torso": "extremely arched back, chest pressed down or lifted depending on angle",
|
||||
"pelvis": "tilted upwards, hips raised high",
|
||||
"legs": "kneeling or lying prone with knees bent",
|
||||
"feet": "toes curled or extending upwards",
|
||||
"additional": "sweat, blush, heavy breathing indication"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "doggystyle, sex_from_behind, all_fours",
|
||||
"head": "head_back, looking_back, closed_eyes, blush",
|
||||
"upper_body": "arms_support, arched_back",
|
||||
"lower_body": "lifted_hip, kneeling, spread_legs",
|
||||
"hands": "grabbing_butt",
|
||||
"feet": "toes",
|
||||
"additional": "kiss, sweat, saliva, intense_pleasure"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/arch-back-sex-v1.1-illustriousxl.safetensors",
|
||||
"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": [
|
||||
"arch back",
|
||||
"arched back",
|
||||
"hips up",
|
||||
"curved spine",
|
||||
"ass focus",
|
||||
"hyper-extension",
|
||||
"prone",
|
||||
"kneeling",
|
||||
"from behind"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,35 +2,23 @@
|
||||
"action_id": "arm_grab_missionary_ill_10",
|
||||
"action_name": "Arm Grab Missionary Ill 10",
|
||||
"action": {
|
||||
"full_body": "lying on back, missionary position, submissive posture",
|
||||
"head": "head tilted back, blushing, heavy breathing",
|
||||
"eyes": "looking at viewer, half-closed eyes, rolling eyes",
|
||||
"arms": "arms raised above head, arms grabbed, wrists held, armpits exposed",
|
||||
"hands": "hands pinned, helpless",
|
||||
"torso": "arched back, chest exposed",
|
||||
"pelvis": "exposed crotch",
|
||||
"legs": "spread legs, knees bent upwards, m-legs",
|
||||
"feet": "toes curled",
|
||||
"additional": "on bed, bed sheet, pov, submission, restraint"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "missionary, lying, on_back, sex, vaginal_sex",
|
||||
"head": "blushing, open_mouth, one_eye_closed, looking_at_viewer, dilated_pupils",
|
||||
"upper_body": "arms_above_head, pinned, restrained, grabbed_wrists, breasts, nipples, medium_breasts",
|
||||
"lower_body": "legs_spread, lifted_pelvis, spread_legs, legs_up, knees_up",
|
||||
"hands": "interlocked_fingers, holding_hands",
|
||||
"feet": "barefoot",
|
||||
"additional": "faceless_male, sweat, motion_lines"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/arm_grab_missionary_ill-10.safetensors",
|
||||
"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": [
|
||||
"arm grab",
|
||||
"missionary",
|
||||
"lying on back",
|
||||
"arms above head",
|
||||
"wrists held",
|
||||
"legs spread",
|
||||
"armpits",
|
||||
"submission",
|
||||
"pov"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,33 +2,23 @@
|
||||
"action_id": "ballsdeep_il_v2_2_s",
|
||||
"action_name": "Ballsdeep Il V2 2 S",
|
||||
"action": {
|
||||
"full_body": "intense sexual intercourse, intimate close-up on genital connection, visceral physical interaction",
|
||||
"head": "flushed face, expression of intense pleasure, head thrown back, mouth slightly open, panting",
|
||||
"eyes": "eyes rolling back, ahegao or tightly closed eyes, heavy breathing",
|
||||
"arms": "muscular arms tensed, holding partner's hips firmly, veins visible",
|
||||
"hands": "hands gripping waist or buttocks, fingers digging into skin, pulling partner closer",
|
||||
"torso": "sweaty skin, arched back, abdominal muscles engaged",
|
||||
"pelvis": "hips slammed forward, testicles pressed firmly against partner's skin, complete insertion",
|
||||
"legs": "thighs interlocking, kneeling or legs wrapped around partner's waist",
|
||||
"feet": "toes curled tightly",
|
||||
"additional": "sex, vaginal, balls deep, motion blur on hips, bodily fluids, skin indentation, anatomical focus"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "sexual_intercourse, deep_penetration, thrusting, mating_press, from_behind, doggy_style, missionary, cowgirl_position",
|
||||
"head": "eyes_rolled_back, closed_eyes, open_mouth, flushed_face, sweat, expressionless, intense_expression",
|
||||
"upper_body": "arched_back, hands_on_own_body, grabbing, fingers_clenched, sweating",
|
||||
"lower_body": "joined_genitals, spread_legs, wrap_legs, hips_thrusting, stomach_bulge, testicles_pressed",
|
||||
"hands": "finger_clutch, gripping",
|
||||
"feet": "curled_toes",
|
||||
"additional": "intense, deep_pen, skin_on_skin"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/BallsDeep-IL-V2.2-S.safetensors",
|
||||
"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": [
|
||||
"nsfw",
|
||||
"sex",
|
||||
"vaginal",
|
||||
"internal view",
|
||||
"cross-section",
|
||||
"deep penetration",
|
||||
"mating press"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,33 +2,23 @@
|
||||
"action_id": "bathingtogether",
|
||||
"action_name": "Bathingtogether",
|
||||
"action": {
|
||||
"full_body": "two characters sharing a bathtub, sitting close together in water",
|
||||
"head": "wet hair, flushed cheeks, relaxed expressions, looking at each other",
|
||||
"eyes": "gentle gaze, half-closed",
|
||||
"arms": "resting on the tub rim, washing each other, or embracing",
|
||||
"hands": "holding soap, sponge, or touching skin",
|
||||
"torso": "wet skin, water droplets, partially submerged, steam rising",
|
||||
"pelvis": "submerged in soapy water",
|
||||
"legs": "knees bent, submerged, intertwined",
|
||||
"feet": "underwater",
|
||||
"additional": "bathroom tiles, steam clouds, soap bubbles, rubber duck, faucet"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "bathing, sitting, partially_submerged, bathtub",
|
||||
"head": "looking_at_viewer, eye_contact",
|
||||
"upper_body": "bare_shoulders, skin_to_skin, arms_around_each_other",
|
||||
"lower_body": "underwater, knees_up",
|
||||
"hands": "hands_on_body",
|
||||
"feet": "barefoot",
|
||||
"additional": "bubbles, water, steam, wet, wet_hair, mirror_reflection"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/bathingtogether.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "bathingtogether"
|
||||
"lora_triggers": "bathing together",
|
||||
"lora_weight_min": 1.0,
|
||||
"lora_weight_max": 1.0
|
||||
},
|
||||
"tags": [
|
||||
"bathing",
|
||||
"couple",
|
||||
"wet",
|
||||
"steam",
|
||||
"bathtub",
|
||||
"shared bath",
|
||||
"soap bubbles"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "2girls",
|
||||
"nsfw": false
|
||||
}
|
||||
}
|
||||
@@ -1,33 +1,24 @@
|
||||
{
|
||||
"action": {
|
||||
"base": "2koma, side-by-side, comparison",
|
||||
"head": "facial, cum_on_face, messy_face, eyes_closed, mouth_open, orgasm",
|
||||
"upper_body": "semi-nude, messy, cum_on_breasts",
|
||||
"lower_body": "",
|
||||
"hands": "hands_on_head",
|
||||
"feet": "",
|
||||
"additional": "cum, close-up, ejaculation"
|
||||
},
|
||||
"action_id": "before_after_1230829",
|
||||
"action_name": "Before After 1230829",
|
||||
"action": {
|
||||
"full_body": "split view composition, side-by-side comparison, two panels showing the same character",
|
||||
"head": "varying expressions, sad vs happy, neutral vs excited",
|
||||
"eyes": "looking at viewer, varying intensity",
|
||||
"arms": "neutral pose vs confident pose",
|
||||
"hands": "hanging loosely vs gesturing",
|
||||
"torso": "visible change in clothing or physique",
|
||||
"pelvis": "standing or sitting",
|
||||
"legs": "standing or sitting",
|
||||
"feet": "neutral stance",
|
||||
"additional": "transformation, makeover, dividing line, progression, evolution"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "F"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/before_after_1230829.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "before_after_1230829"
|
||||
"lora_triggers": "before_after",
|
||||
"lora_weight": 0.9,
|
||||
"lora_weight_max": 0.7,
|
||||
"lora_weight_min": 0.6
|
||||
},
|
||||
"tags": [
|
||||
"split view",
|
||||
"comparison",
|
||||
"transformation",
|
||||
"before and after",
|
||||
"multiple views",
|
||||
"concept art"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,14 +2,11 @@
|
||||
"action_id": "belly_dancing",
|
||||
"action_name": "Belly Dancing",
|
||||
"action": {
|
||||
"full_body": "belly dancing, standing",
|
||||
"base": "belly_dancing, dancing, standing",
|
||||
"head": "",
|
||||
"eyes": "",
|
||||
"arms": "hands above head",
|
||||
"hands": "palms together",
|
||||
"torso": "",
|
||||
"pelvis": "swaying hips",
|
||||
"legs": "",
|
||||
"upper_body": "arms_up",
|
||||
"lower_body": "swaying",
|
||||
"hands": "own_hands_together",
|
||||
"feet": "",
|
||||
"additional": ""
|
||||
},
|
||||
@@ -20,10 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": ""
|
||||
"lora_triggers": "",
|
||||
"lora_weight_min": 1.0,
|
||||
"lora_weight_max": 1.0
|
||||
},
|
||||
"tags": [
|
||||
"belly dancing",
|
||||
"dance"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": false
|
||||
}
|
||||
}
|
||||
@@ -2,33 +2,23 @@
|
||||
"action_id": "bentback",
|
||||
"action_name": "Bentback",
|
||||
"action": {
|
||||
"full_body": "standing, upper body bent forward at the waist, torso parallel to the ground",
|
||||
"head": "turned to look back, looking over shoulder, chin raised",
|
||||
"eyes": "looking at viewer, focused gaze",
|
||||
"arms": "arms extended downward or resting on legs",
|
||||
"hands": "hands on knees, hands on thighs",
|
||||
"torso": "back arched, spinal curve emphasized, bent forward",
|
||||
"pelvis": "hips pushed back, buttocks protruding",
|
||||
"legs": "straight legs, locked knees or slight bend",
|
||||
"feet": "feet shoulder-width apart, waiting",
|
||||
"additional": "view from behind, dorsal view, dynamic posture"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "bent_over, from_behind, arched_back",
|
||||
"head": "looking_back, looking_at_viewer",
|
||||
"upper_body": "twisted_torso, arms_at_sides",
|
||||
"lower_body": "ass_focus, kneepits, spread_legs",
|
||||
"hands": "hands_on_legs",
|
||||
"feet": "barefoot",
|
||||
"additional": "leaning_forward"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/BentBack.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "BentBack"
|
||||
"lora_triggers": "bentback, kneepits",
|
||||
"lora_weight_min": 1.0,
|
||||
"lora_weight_max": 1.0
|
||||
},
|
||||
"tags": [
|
||||
"bent over",
|
||||
"standing",
|
||||
"hands on knees",
|
||||
"looking back",
|
||||
"from behind",
|
||||
"arched back",
|
||||
"torso bend"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,34 +2,23 @@
|
||||
"action_id": "blowjobcomicpart2",
|
||||
"action_name": "Blowjobcomicpart2",
|
||||
"action": {
|
||||
"full_body": "kneeling in front of standing partner, intimate interaction, oral sex pose",
|
||||
"head": "tilted up, mouth open, cheek bulge, blushing, messy face",
|
||||
"eyes": "rolled back, heart-shaped pupils, crossed eyes, or looking up",
|
||||
"arms": "reaching forward, holding partner's legs or hips",
|
||||
"hands": "stroking, gripping thighs, holding shaft, guiding",
|
||||
"torso": "leaning forward, subordinate posture",
|
||||
"pelvis": "kneeling on ground",
|
||||
"legs": "bent at knees, shins on floor",
|
||||
"feet": "tucked under or toes curled",
|
||||
"additional": "saliva, slobber, motion lines, speech bubbles, sound effects, comic panel structure, greyscale or screentones"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "3koma, comic_strip, sequence, vertical_strip",
|
||||
"head": "tongue_out, open_mouth, saliva, empty_eyes, rolled_eyes",
|
||||
"upper_body": "arms_at_sides, torso, standing_on_knees",
|
||||
"lower_body": "sexual_activity, kneeling",
|
||||
"hands": "hands_on_penis, grasping",
|
||||
"feet": "out_of_frame",
|
||||
"additional": "fellatio, irrumatio, licking, ejaculation, cum_in_mouth, excessive_cum"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/BlowjobComicPart2.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "BlowjobComicPart2"
|
||||
"lora_triggers": "bjmcut",
|
||||
"lora_weight_min": 1.0,
|
||||
"lora_weight_max": 1.0
|
||||
},
|
||||
"tags": [
|
||||
"nsfw",
|
||||
"fellatio",
|
||||
"oral sex",
|
||||
"kneeling",
|
||||
"comic",
|
||||
"monochrome",
|
||||
"saliva",
|
||||
"ahegao"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,32 +2,23 @@
|
||||
"action_id": "bodybengirl",
|
||||
"action_name": "Bodybengirl",
|
||||
"action": {
|
||||
"full_body": "character standing and bending forward at the waist, hips raised high",
|
||||
"head": "looking back at viewer or head inverted",
|
||||
"eyes": "looking at viewer",
|
||||
"arms": "extended downwards towards the ground",
|
||||
"hands": "touching toes, ankles, or palms flat on the floor",
|
||||
"torso": "upper body folded down parallel to or against the legs",
|
||||
"pelvis": "lifted upwards, prominent posterior view",
|
||||
"legs": "straight or knees slightly locked, shoulder-width apart",
|
||||
"feet": "planted firmly on the ground",
|
||||
"additional": "often viewed from behind or the side to emphasize flexibility and curve"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "suspended_congress, lifted_by_torso, torso_grab",
|
||||
"head": "",
|
||||
"upper_body": "arms_up, bent_over",
|
||||
"lower_body": "legs_up",
|
||||
"hands": "",
|
||||
"feet": "",
|
||||
"additional": "1boy, 1girl, size_difference, loli"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/BodyBenGirl.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "BodyBenGirl"
|
||||
"lora_triggers": "bentstand-behind",
|
||||
"lora_weight_min": 1.0,
|
||||
"lora_weight_max": 1.0
|
||||
},
|
||||
"tags": [
|
||||
"bending over",
|
||||
"touching toes",
|
||||
"from behind",
|
||||
"flexibility",
|
||||
"standing",
|
||||
"jack-o' pose"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1boy 1girl",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,31 +2,23 @@
|
||||
"action_id": "bodybengirlpart2",
|
||||
"action_name": "Bodybengirlpart2",
|
||||
"action": {
|
||||
"full_body": "standing pose, bending forward at the waist while facing away from the camera",
|
||||
"head": "turned backward looking over the shoulder",
|
||||
"eyes": "looking directly at the viewer",
|
||||
"arms": "extended downwards or resting on upper thighs",
|
||||
"hands": "placed on knees or hanging freely",
|
||||
"torso": "bent forward at a 90-degree angle, lower back arched",
|
||||
"pelvis": "pushed back and tilted upwards",
|
||||
"legs": "straight or slightly unlocked at the knees",
|
||||
"feet": "standing firmly on the ground",
|
||||
"additional": "view from behind, emphasizing hip curvature and flexibility"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "suspended, from_side, bent_over, torso_grab",
|
||||
"head": "embarrassed, sweating, scared, mouth_open, looking_away, downcast",
|
||||
"upper_body": "arms_at_sides, limp_arms",
|
||||
"lower_body": "legs_dangling, knees_together, bare_feet, feet_dangling",
|
||||
"hands": "open_hands, limp_hands",
|
||||
"feet": "bare_feet, dangling",
|
||||
"additional": "motion_lines, sweat_drops"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/BodyBenGirlPart2.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "BodyBenGirlPart2"
|
||||
"lora_weight": 0.9,
|
||||
"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": [
|
||||
"bent over",
|
||||
"looking back",
|
||||
"from behind",
|
||||
"standing",
|
||||
"flexible"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": false
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "bored_retrain_000115_1336316",
|
||||
"action_name": "Bored Retrain 000115 1336316",
|
||||
"action": {
|
||||
"full_body": "slouching sitting posture, low energy, visually disinterested, exhibiting ennui",
|
||||
"head": "tilted to the side, resting heavily on hand, cheek squished against palm, blank or annoyed expression",
|
||||
"eyes": "half-lidded, dull gaze, looking away or staring into space, heavy eyelids",
|
||||
"arms": "elbow proped on surface, arm supporting the head, other arm dangling loosely or lying flat",
|
||||
"hands": "palm supporting chin or cheek, fingers lazily curled",
|
||||
"torso": "slumped shoulders, curved spine, leaning forward",
|
||||
"pelvis": "sitting back, relaxed weight",
|
||||
"legs": "stretched out under a table or loosely crossed",
|
||||
"feet": "resting idly",
|
||||
"additional": "sighing context, waiting, lethargic atmosphere"
|
||||
"base": "bored, slouching, leaning_forward, ennui, uninterested",
|
||||
"head": "head_on_hand, blank_stare, half-lidded_eyes",
|
||||
"upper_body": "slumped, leaning_forward, sitting, arms_crossed",
|
||||
"lower_body": "sitting, legs_crossed",
|
||||
"hands": "hand_on_cheek, hand_on_chin",
|
||||
"feet": "",
|
||||
"additional": "sighing, waiting"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,14 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Bored_Retrain-000115_1336316.safetensors",
|
||||
"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": [
|
||||
"boredom",
|
||||
"uninterested",
|
||||
"slouching",
|
||||
"ennui",
|
||||
"tired",
|
||||
"cheek resting on hand"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": false
|
||||
}
|
||||
}
|
||||
@@ -2,33 +2,23 @@
|
||||
"action_id": "breast_pressh",
|
||||
"action_name": "Breast Pressh",
|
||||
"action": {
|
||||
"full_body": "character pressing breasts together with hands or arms to enhance cleavage",
|
||||
"head": "slightly tilted forward, often with a flushed or embarrassed expression",
|
||||
"eyes": "looking down at chest or shyly at viewer",
|
||||
"arms": "bent at elbows, brought in front of the chest",
|
||||
"hands": "placed on the sides or underneath breasts, actively squeezing or pushing them inward",
|
||||
"torso": "upper body leaned slightly forward or arched back to emphasize the chest area",
|
||||
"pelvis": "neutral standing or sitting position",
|
||||
"legs": "standing straight or sitting with knees together",
|
||||
"feet": "planted firmly on ground if standing",
|
||||
"additional": "emphasis on soft body physics, squish deformation, and skin indentation around the fingers"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "false",
|
||||
"orientation": "FF"
|
||||
"base": "1boy, 2girls, sandwiched, standing, height_difference, size_difference",
|
||||
"head": "head_between_breasts, face_between_breasts, cheek_squash",
|
||||
"upper_body": "breast_press, hugging, arms_around_waist, chest_to_chest",
|
||||
"lower_body": "hips_touching, legs_apart",
|
||||
"hands": "hands_on_back",
|
||||
"feet": "barefoot",
|
||||
"additional": "hetero, multiple_girls"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/breast_pressH.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "breast_pressH"
|
||||
"lora_weight": 0.6,
|
||||
"lora_triggers": "breast_pressH",
|
||||
"lora_weight_min": 0.6,
|
||||
"lora_weight_max": 0.6
|
||||
},
|
||||
"tags": [
|
||||
"breast press",
|
||||
"squeezing breasts",
|
||||
"cleavage",
|
||||
"hands on breasts",
|
||||
"self groping",
|
||||
"squish",
|
||||
"upper body"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1boy 2girls",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "breast_smother_illustriousxl_lora_nochekaiser",
|
||||
"action_name": "Breast Smother Illustriousxl Lora Nochekaiser",
|
||||
"action": {
|
||||
"full_body": "intimate upper body POV or side view, character pressing another's face into their chest",
|
||||
"head": "tilted downwards, chin tucked, affectionate or dominant expression",
|
||||
"eyes": "looking down, half-closed, affectionate gaze",
|
||||
"arms": "wrapping around the partner's head or neck",
|
||||
"hands": "cradling the back of the head, fingers interlocked in hair, pressing face deeper",
|
||||
"torso": "leaning slightly backward, chest prominent, squished breasts, cleavage",
|
||||
"pelvis": "close contact",
|
||||
"legs": "standing or sitting, posture relaxed",
|
||||
"feet": "planted on ground",
|
||||
"additional": "face buried in breasts, chest covering face, soft lighting, skin compression"
|
||||
"base": "breast_smother, face_in_cleavage, intimate, (POV:1.2), side_view",
|
||||
"head": "looking_down, half-closed_eyes, affectionate, dominant",
|
||||
"upper_body": "large_breasts, cleavage, squished_breasts, hugging, embracing, chest_press",
|
||||
"lower_body": "close_contact, standing",
|
||||
"hands": "cradling_head, fingers_in_hair, pressing_head_to_breasts",
|
||||
"feet": "barefoot, feet_on_ground",
|
||||
"additional": "skin_compression, soft_lighting, motorboating"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,17 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/breast-smother-illustriousxl-lora-nochekaiser.safetensors",
|
||||
"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": [
|
||||
"breast smother",
|
||||
"buried in breasts",
|
||||
"face in cleavage",
|
||||
"motorboating",
|
||||
"breast press",
|
||||
"hugging",
|
||||
"embrace",
|
||||
"pov",
|
||||
"large breasts"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "breast_sucking_fingering_illustriousxl_lora_nochekaiser",
|
||||
"action_name": "Breast Sucking Fingering Illustriousxl Lora Nochekaiser",
|
||||
"action": {
|
||||
"full_body": "duo, sexual interaction, close-up, breast sucking, fingering, intimate embrace",
|
||||
"head": "face buried in breasts, sucking nipple, kissing breast, saliva",
|
||||
"eyes": "eyes closed, heavy breathing, blush, expression of bliss",
|
||||
"arms": "reaching down, holding partner close, arm around waist",
|
||||
"hands": "fingering, fingers inside, rubbing clitoris, squeezing breast, groping",
|
||||
"torso": "large breasts, exposed nipples, nude torso, pressing bodies",
|
||||
"pelvis": "legs spread, pussy exposed, vaginal manipulation",
|
||||
"legs": "open legs, m-legs, intertwined legs",
|
||||
"feet": "toes curled, relaxed feet",
|
||||
"additional": "saliva trail, sweat, motion lines, uncensored"
|
||||
"base": "duo, sex, sexual_intercourse, close-up, breast_sucking, fingering, intimate_embrace",
|
||||
"head": "face_buried_in_breasts, sucking_nipple, nipples_suck, saliva, eyes_closed, heavy_breathing, blush, expression_of_bliss",
|
||||
"upper_body": "reaching_down, holding_partner, arm_around_waist, large_breasts, exposed_breasts, nude_torso, pressing_bodies",
|
||||
"lower_body": "legs_spread, pussy_exposed, vaginal_fingering, m_legs, intertwined_legs",
|
||||
"hands": "fingering, fingers_inside, clitoris_rubbing, squeezing_breasts, groping",
|
||||
"feet": "toes_curled, relaxed_feet",
|
||||
"additional": "saliva_trail, sweat, sweat_drop, uncensored"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,18 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/breast-sucking-fingering-illustriousxl-lora-nochekaiser.safetensors",
|
||||
"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": [
|
||||
"breast sucking",
|
||||
"fingering",
|
||||
"nipple suck",
|
||||
"fingers in pussy",
|
||||
"duo",
|
||||
"sexual act",
|
||||
"exposed breasts",
|
||||
"pussy juice",
|
||||
"saliva",
|
||||
"stimulation"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "brokenglass_illusxl_incrs_v1",
|
||||
"action_name": "Brokenglass Illusxl Incrs V1",
|
||||
"action": {
|
||||
"full_body": "dynamic shot of character seemingly breaking through a barrier",
|
||||
"head": "intense expression, face visible through cracks",
|
||||
"eyes": "sharp focus, wide open",
|
||||
"arms": "outstretched towards the viewer or shielding face",
|
||||
"hands": "touching the surface of the invisible wall, interacting with fragments",
|
||||
"torso": "twisted slightly to suggest impact force",
|
||||
"pelvis": "anchored or mid-air depending on angle",
|
||||
"legs": "posed dynamically to support the movement",
|
||||
"feet": "grounded or trailing",
|
||||
"additional": "foreground filled with sharp broken glass shards, spiderweb cracks glowing with light, refractive surfaces, cinematic debris"
|
||||
"base": "breaking_through_barrier, dynamic_pose, impact_frame, dynamic_angle",
|
||||
"head": "intense_expression, facial_focus, visible_through_glass",
|
||||
"upper_body": "reaching_towards_viewer, twisted_torso, arms_extended",
|
||||
"lower_body": "dynamic_pose, movement",
|
||||
"hands": "hands_up, touching_glass, debris_interaction",
|
||||
"feet": "grounded, dynamic",
|
||||
"additional": "broken_glass, glass_shards, shattered, spiderweb_cracks, cinematic_lighting, refraction, debris, explosive_impact"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,16 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/BrokenGlass_illusXL_Incrs_v1.safetensors",
|
||||
"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": [
|
||||
"broken glass",
|
||||
"shattered",
|
||||
"cracked screen",
|
||||
"fragmentation",
|
||||
"glass shards",
|
||||
"impact",
|
||||
"cinematic",
|
||||
"destruction"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": false
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "butt_smother_ag_000043",
|
||||
"action_name": "Butt Smother Ag 000043",
|
||||
"action": {
|
||||
"full_body": "facesitting, character sitting on face, pov from below, dominant pose",
|
||||
"head": "looking down at viewer, looking back over shoulder",
|
||||
"eyes": "looking at viewer, half-closed eyes, seductive gaze",
|
||||
"arms": "arms reaching back, supporting weight",
|
||||
"hands": "hands spreading buttocks, hands on thighs, hands grasping victim's head",
|
||||
"torso": "back arched, leaning forward",
|
||||
"pelvis": "buttocks pressing down slightly, buttocks covering screen, heavy weight",
|
||||
"legs": "thighs straddling viewer, knees bent, spread legs",
|
||||
"feet": "feet planted on ground, toes curled",
|
||||
"additional": "extreme close-up, squished face, muffling, soft lighting on skin"
|
||||
"base": "1girl, 1boy, facesitting, pov, first-person_view, dominant_woman, submissive_man",
|
||||
"head": "looking_down, looking_away, half-closed_eyes, seductive_expression, facial_expression",
|
||||
"upper_body": "arms_behind_back, arched_back, upper_body_lean",
|
||||
"lower_body": "buttocks, ass_focus, heavy_buttocks, spread_legs, kneeling, thighs_straddling",
|
||||
"hands": "hands_on_thighs, hands_on_head",
|
||||
"feet": "feet_together, curled_toes",
|
||||
"additional": "extreme_close-up, squashed, muffling, soft_lighting, skin_texture"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,16 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Butt_smother_ag-000043.safetensors",
|
||||
"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": [
|
||||
"facesitting",
|
||||
"butt smother",
|
||||
"femdom",
|
||||
"pov",
|
||||
"big ass",
|
||||
"ass focus",
|
||||
"suffocation",
|
||||
"submissive view"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "buttjob",
|
||||
"action_name": "Buttjob",
|
||||
"action": {
|
||||
"full_body": "bent over, back turned to viewer, kneeling or standing",
|
||||
"head": "looking back over shoulder",
|
||||
"eyes": "looking at viewer, half-closed",
|
||||
"arms": "supporting upper body weight on cool surface or knees",
|
||||
"hands": "resting on bed, knees or holding buttocks apart",
|
||||
"torso": "arched back, leaning forward",
|
||||
"pelvis": "pushed backward, hips elevated high",
|
||||
"legs": "kneeling with thighs spread or standing bent",
|
||||
"feet": "arched or plantar flexion",
|
||||
"additional": "glutes pressed together, friction focus, skin indentation"
|
||||
"base": "buttjob, intercrural_sex, sex_positions",
|
||||
"head": "",
|
||||
"upper_body": "bent_over",
|
||||
"lower_body": "buttjob, genitals_between_buttocks",
|
||||
"hands": "hands_on_own_thighs",
|
||||
"feet": "",
|
||||
"additional": "missionary_position"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,16 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/buttjob.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "buttjob"
|
||||
"lora_triggers": "buttjob",
|
||||
"lora_weight_min": 1.0,
|
||||
"lora_weight_max": 1.0
|
||||
},
|
||||
"tags": [
|
||||
"buttjob",
|
||||
"back to viewer",
|
||||
"bent over",
|
||||
"arched back",
|
||||
"kneeling",
|
||||
"ass focus",
|
||||
"glutes",
|
||||
"between buttocks"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,36 +2,23 @@
|
||||
"action_id": "carwashv2",
|
||||
"action_name": "Carwashv2",
|
||||
"action": {
|
||||
"full_body": "leaning forward, bending over car hood, dynamic scrubbing pose, wet body",
|
||||
"head": "looking at viewer, smiling, wet hair sticking to face",
|
||||
"eyes": "open, energetic, happy",
|
||||
"arms": "stretched forward, one arm scrubbing, active motion",
|
||||
"hands": "holding large yellow sponge, covered in soap suds",
|
||||
"torso": "bent at waist, leaning forward, arched back, wet clothes clinging",
|
||||
"pelvis": "hips pushed back, tilted",
|
||||
"legs": "straddling or standing wide for stability",
|
||||
"feet": "planted on wet pavement",
|
||||
"additional": "soap bubbles, heavy foam on body and car, water splashing, car background"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "washing_vehicle, bending_over, suggestive_pose",
|
||||
"head": "wet_hair",
|
||||
"upper_body": "wet_clothes, breast_press, cleavage, breasts_on_glass",
|
||||
"lower_body": "",
|
||||
"hands": "holding_sponge, holding_hose",
|
||||
"feet": "",
|
||||
"additional": "car, motor_vehicle, soap_bubbles, wet, water_splashing"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/CarWashV2.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "CarWashV2"
|
||||
"lora_weight": 0.8,
|
||||
"lora_triggers": "w4sh1n, w4sh0ut",
|
||||
"lora_weight_min": 0.8,
|
||||
"lora_weight_max": 0.8
|
||||
},
|
||||
"tags": [
|
||||
"car wash",
|
||||
"holding sponge",
|
||||
"leaning forward",
|
||||
"bending over",
|
||||
"wet",
|
||||
"wet clothes",
|
||||
"foam",
|
||||
"bubbles",
|
||||
"soapy water",
|
||||
"scrubbing"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,34 +2,23 @@
|
||||
"action_id": "cat_stretchill",
|
||||
"action_name": "Cat Stretchill",
|
||||
"action": {
|
||||
"full_body": "character on all fours performing a deep cat stretch, kneeling with chest pressed to the floor and hips raised high",
|
||||
"head": "chin resting on the floor, looking forward or to the side",
|
||||
"eyes": "looking up or generally forward",
|
||||
"arms": "fully extended forward along the ground",
|
||||
"hands": "palms flat on the floor",
|
||||
"torso": "deeply arched back, chest touching the ground",
|
||||
"pelvis": "elevated high in the air, creating a steep angle with the spine",
|
||||
"legs": "kneeling, bent at the knees",
|
||||
"feet": "toes touching the ground",
|
||||
"additional": "emphasizes the curve of the spine and flexibility"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "F"
|
||||
"base": "cat_stretch, pose, all_fours",
|
||||
"head": "head_down, looking_at_viewer, closed_eyes",
|
||||
"upper_body": "arched_back, outstretched_arms, chest_support, hands_on_ground",
|
||||
"lower_body": "hips_up, buttocks_up, kneeling, knees_on_ground",
|
||||
"hands": "palms_down",
|
||||
"feet": "feet_up",
|
||||
"additional": "trembling, cat_tail, cat_ears"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/cat_stretchILL.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "cat_stretchILL"
|
||||
"lora_weight": 0.7,
|
||||
"lora_triggers": "stretching, cat stretch, downward dog, trembling",
|
||||
"lora_weight_min": 0.7,
|
||||
"lora_weight_max": 0.7
|
||||
},
|
||||
"tags": [
|
||||
"all fours",
|
||||
"ass up",
|
||||
"kneeling",
|
||||
"cat pose",
|
||||
"stretching",
|
||||
"arms extended",
|
||||
"on floor",
|
||||
"arched back"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": false
|
||||
}
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
{
|
||||
"action_id": "caught_masturbating_illustrious",
|
||||
"action_name": "Caught Masturbating Illustrious",
|
||||
"action": {
|
||||
"full_body": "character receiving a sudden shock while in a private moment of self-pleasure, body freezing or jerking in surprise",
|
||||
"head": "face flushed red with deep blush, expression of pure panic and embarrassment, mouth gaped open in a gasp",
|
||||
"eyes": "wide-eyed stare, pupils dilated, locking eyes with the intruder (viewer)",
|
||||
"arms": "shoulders tensed, one arm frantically trying to cover the chest or face, the other halted mid-motion near the crotch",
|
||||
"hands": "one hand stopping mid-masturbation typically under skirt or inside panties, other hand gesturing to stop or hiding face",
|
||||
"torso": "leaning back onto elbows or pillows, clothing disheveled, shirt lifted",
|
||||
"pelvis": "hips exposed, underwear pulled down to thighs or ankles, vulva accessible",
|
||||
"legs": "legs spread wide in an M-shape or V-shape, knees bent, trembling",
|
||||
"feet": "toes curled tightly in tension",
|
||||
"additional": "context of an intruded private bedroom, messy bed sheets, atmosphere of sudden discovery and shame"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "F"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Caught_Masturbating_ILLUSTRIOUS.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "Caught_Masturbating_ILLUSTRIOUS"
|
||||
},
|
||||
"tags": [
|
||||
"caught",
|
||||
"masturbation",
|
||||
"embarrassed",
|
||||
"blush",
|
||||
"surprised",
|
||||
"open mouth",
|
||||
"looking at viewer",
|
||||
"panties down",
|
||||
"hand in panties",
|
||||
"skirt lift",
|
||||
"sweat",
|
||||
"legs spread",
|
||||
"panic"
|
||||
]
|
||||
}
|
||||
@@ -2,33 +2,23 @@
|
||||
"action_id": "charm_person_magic",
|
||||
"action_name": "Charm Person Magic",
|
||||
"action": {
|
||||
"full_body": "standing, casting pose, dynamic angle, upper body focused",
|
||||
"head": "facing viewer, head tilted, alluring expression, seductive smile",
|
||||
"eyes": "looking at viewer, glowing eyes, heart-shaped pupils, hypnotic gaze",
|
||||
"arms": "reaching towards viewer, one arm outstretched, hand near face",
|
||||
"hands": "open palm, casting gesture, finger snaps, beckoning motion",
|
||||
"torso": "facing forward, slight arch",
|
||||
"pelvis": "hips swayed, weight shifted",
|
||||
"legs": "standing, crossed legs",
|
||||
"feet": "out of frame",
|
||||
"additional": "pink magic, magical aura, sparkles, heart particles, glowing hands, casting spell, enchantment, visual effects"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "F"
|
||||
"base": "casting_spell, magic_circle, spell_casting",
|
||||
"head": "smile, confident_expression, glowing_eyes, looking_at_viewer",
|
||||
"upper_body": "outstretched_hand, reaching_towards_viewer, arms_up, upper_body",
|
||||
"lower_body": "",
|
||||
"hands": "open_hand, hand_gesture",
|
||||
"feet": "",
|
||||
"additional": "aura, light_particles, glittering, magical_energy"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/charm_person_magic.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "charm_person_magic"
|
||||
"lora_weight": 0.7,
|
||||
"lora_triggers": "charm_person_(magic), cham_aura",
|
||||
"lora_weight_min": 0.7,
|
||||
"lora_weight_max": 0.7
|
||||
},
|
||||
"tags": [
|
||||
"magic",
|
||||
"fantasy",
|
||||
"enchantment",
|
||||
"hypnotic",
|
||||
"alluring",
|
||||
"spellcasting",
|
||||
"pink energy"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": false
|
||||
}
|
||||
}
|
||||
@@ -2,33 +2,23 @@
|
||||
"action_id": "cheekbulge",
|
||||
"action_name": "Cheekbulge",
|
||||
"action": {
|
||||
"full_body": "kneeling, leaning forward, close-up focus on face",
|
||||
"head": "visible cheek bulge, distorted cheek, stuffed mouth, mouth stretched",
|
||||
"eyes": "looking up, upturned eyes, teary eyes, eye contact",
|
||||
"arms": "reaching forward or resting on partner's legs",
|
||||
"hands": "holding object, guiding, or resting on thighs",
|
||||
"torso": "angled forward",
|
||||
"pelvis": "neutral kneeling posture",
|
||||
"legs": "kneeling, bent knees",
|
||||
"feet": "toes pointing back",
|
||||
"additional": "fellatio, oral sex, saliva, saliva trail, penis in mouth, face deformation"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "fellatio",
|
||||
"head": "cheek_bulge, head_tilt, saliva, penis_in_mouth, fellatio, looking_up, mouth_fill",
|
||||
"upper_body": "arms_behind_back, upper_body",
|
||||
"lower_body": "kneeling, kneeling_position",
|
||||
"hands": "hands_on_head",
|
||||
"feet": "plantar_flexion",
|
||||
"additional": "deepthroat, pov, penis, male_focus"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/cheekbulge.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "cheekbulge"
|
||||
"lora_triggers": "cheek bulge, male pov",
|
||||
"lora_weight_min": 1.0,
|
||||
"lora_weight_max": 1.0
|
||||
},
|
||||
"tags": [
|
||||
"cheek bulge",
|
||||
"stuffed mouth",
|
||||
"fellatio",
|
||||
"distorted face",
|
||||
"oral sex",
|
||||
"looking up",
|
||||
"face deformation"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,38 +2,23 @@
|
||||
"action_id": "chokehold",
|
||||
"action_name": "Chokehold",
|
||||
"action": {
|
||||
"full_body": "dynamic combat pose, character positioning behind an opponent, executing a rear chokehold, two people grappling",
|
||||
"head": "chin tucked tight, face pressed close to the opponent's head, intense or straining expression",
|
||||
"eyes": "focused, narrowed in concentration",
|
||||
"arms": "one arm wrapped tightly around the opponent's neck, the other arm locking the hold by gripping the bicep or clasping hands",
|
||||
"hands": "clenching tight, gripping own bicep or locking fingers behind opponent's neck",
|
||||
"torso": "chest pressed firmly against the opponent's back, leaning back slightly for leverage",
|
||||
"pelvis": "pressed close to opponent's lower back",
|
||||
"legs": "wrapped around the opponent's waist (body triangle or hooks in) or wide standing stance for stability",
|
||||
"feet": "hooked inside opponent's thighs or planted firmly on the ground",
|
||||
"additional": "struggle, tension, submission hold, restrictive motion, self-defense scenario"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "rear_naked_choke, from_behind, struggling, kneeling",
|
||||
"head": "head_back, open_mouth, rolling_eyes, teardrops, veins, suffocation, air_hunger",
|
||||
"upper_body": "arm_around_neck, struggling, grabbing_arm, posture_leaned_forward, arched_back",
|
||||
"lower_body": "kneeling, bent_over, spread_legs",
|
||||
"hands": "clenched_hands, struggling",
|
||||
"feet": "barefoot, toes_curled",
|
||||
"additional": "distress, blushing, drooling, saliva, sweat"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/chokehold.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "chokehold"
|
||||
"lora_triggers": "choke hold",
|
||||
"lora_weight_min": 1.0,
|
||||
"lora_weight_max": 1.0
|
||||
},
|
||||
"tags": [
|
||||
"chokehold",
|
||||
"grappling",
|
||||
"rear naked choke",
|
||||
"fighting",
|
||||
"wrestling",
|
||||
"martial arts",
|
||||
"restraining",
|
||||
"submission",
|
||||
"headlock",
|
||||
"strangle",
|
||||
"duo",
|
||||
"struggle"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,35 +2,23 @@
|
||||
"action_id": "cleavageteasedwnsty_000008",
|
||||
"action_name": "Cleavageteasedwnsty 000008",
|
||||
"action": {
|
||||
"full_body": "Medium shot or close-up focus on the upper body, character facing forward",
|
||||
"head": "Looking directly at viewer, chin slightly tucked or tilted, expression varying from shy blush to seductive smile",
|
||||
"eyes": "Eye contact, focused on the viewer",
|
||||
"arms": "Elbows bent, forearms brought up towards the chest",
|
||||
"hands": "Fingers grasping the hem of the collar or neckline of the top, pulling it downwards",
|
||||
"torso": "Clothing fabric stretched taut, neckline pulled down low to reveal cleavage, emphasis on the chest area",
|
||||
"pelvis": "Neutral position, often obscured in close-up shots",
|
||||
"legs": "Neutral or out of frame",
|
||||
"feet": "Out of frame",
|
||||
"additional": "Fabric tension lines, revealing skin, seductive atmosphere"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "leaning_forward, sexually_suggestive",
|
||||
"head": "looking_at_viewer, smile, blush, one_eye_closed, blue_eyes",
|
||||
"upper_body": "arms_bent_at_elbows, cleavage, breasts_squeezed_together, areola_slip, bare_shoulders, collarbone",
|
||||
"lower_body": "",
|
||||
"hands": "hands_on_own_chest, pulling_down_clothes, adjusting_clothes",
|
||||
"feet": "",
|
||||
"additional": "teasing, undressing"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/CleavageTeaseDwnsty-000008.safetensors",
|
||||
"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": [
|
||||
"cleavage",
|
||||
"clothes pull",
|
||||
"collar pull",
|
||||
"shirt pull",
|
||||
"looking at viewer",
|
||||
"breasts",
|
||||
"teasing",
|
||||
"blush",
|
||||
"holding clothes"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -1,33 +1,24 @@
|
||||
{
|
||||
"action": {
|
||||
"base": "close-up, portrait, face_focus",
|
||||
"head": "open_mouth, tongue, saliva, blush, looking_at_viewer, eyes_visible",
|
||||
"upper_body": "",
|
||||
"lower_body": "",
|
||||
"hands": "",
|
||||
"feet": "",
|
||||
"additional": "cum, messy, fluids"
|
||||
},
|
||||
"action_id": "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_name": "Illustrious/Poses/Closeup_Facial_iLLus.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "Closeup_Facial_iLLus"
|
||||
"lora_triggers": "Closeup Facial",
|
||||
"lora_weight": 1,
|
||||
"lora_weight_min": 1.0,
|
||||
"lora_weight_max": 1.0
|
||||
},
|
||||
"tags": [
|
||||
"close-up",
|
||||
"portrait",
|
||||
"face focus",
|
||||
"illustration",
|
||||
"detailed eyes",
|
||||
"macro"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "cof",
|
||||
"action_name": "Cum on Figure",
|
||||
"action": {
|
||||
"full_body": "figurine, mini-girl",
|
||||
"head": "",
|
||||
"eyes": "",
|
||||
"arms": "",
|
||||
"base": "faux_figurine, miniature, cum_on_body",
|
||||
"head": "cum_on_face",
|
||||
"upper_body": "",
|
||||
"lower_body": "",
|
||||
"hands": "",
|
||||
"torso": "",
|
||||
"pelvis": "",
|
||||
"legs": "",
|
||||
"feet": "",
|
||||
"additional": "cum, cum on body, excessive cum, cum on face, cum on breasts, cum on chest"
|
||||
"additional": "cum, excessive_cum"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,14 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/cof.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "cof"
|
||||
"lora_triggers": "cof",
|
||||
"lora_weight_min": 1.0,
|
||||
"lora_weight_max": 1.0
|
||||
},
|
||||
"tags": [
|
||||
"standing force",
|
||||
"carry on front",
|
||||
"carry",
|
||||
"lifting",
|
||||
"legs wrapped",
|
||||
"straddling"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "cooperative_grinding",
|
||||
"action_name": "Cooperative Grinding",
|
||||
"action": {
|
||||
"full_body": "duo, standing, carrying, straddling, lift and carry, legs wrapped around waist, body to body",
|
||||
"head": "head thrown back, blushing, heavy breathing, intense pleasure",
|
||||
"eyes": "eyes closed, half-closed eyes, rolled back eyes",
|
||||
"arms": "arms around neck, holding buttocks, supporting thighs, strong grip",
|
||||
"hands": "grabbing, squeezing, gripping back",
|
||||
"torso": "chest to chest, pressed together, close physical contact",
|
||||
"pelvis": "hips touching, grinding, mating press, pelvic curtain",
|
||||
"legs": "legs wrapped around, thighs spread, lifted legs",
|
||||
"feet": "dangling feet, arched toes",
|
||||
"additional": "sweat, motion lines, intimate, erotic atmosphere"
|
||||
"base": "duo, standing, lift_and_carry, straddling, legs_wrapped_around_waist, physical_contact",
|
||||
"head": "head_thrown_back, blushing, panting, eyes_closed, half-closed_eyes, rolled_back_eyes, expressionless_pleasure",
|
||||
"upper_body": "arms_around_neck, holding_buttocks, supporting_thighs, chest_to_chest, close_embrace",
|
||||
"lower_body": "hips_touching, grinding, mating_press, pelvic_curtain, thighs_spread, lifted_legs",
|
||||
"hands": "grabbing, gripping_back, squeezing",
|
||||
"feet": "arched_toes, dangling_feet",
|
||||
"additional": "sweat, motion_lines, intimate, sexual_intercourse, erotic"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "false",
|
||||
@@ -20,14 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/cooperative_grinding.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "cooperative_grinding"
|
||||
"lora_triggers": "cooperative_grinding",
|
||||
"lora_weight_min": 1.0,
|
||||
"lora_weight_max": 1.0
|
||||
},
|
||||
"tags": [
|
||||
"standing sex",
|
||||
"carry",
|
||||
"legs wrapped around",
|
||||
"straddle",
|
||||
"grinding",
|
||||
"lift and carry"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1boy 2girls",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,35 +2,23 @@
|
||||
"action_id": "cooperativepaizuri",
|
||||
"action_name": "Cooperativepaizuri",
|
||||
"action": {
|
||||
"full_body": "intimate sexual pose, two people interacting closely",
|
||||
"head": "flushed face, drooling, tongue out, expression of pleasure or submission",
|
||||
"eyes": "half-closed eyes, looking down, ahegao or heart-shaped pupils",
|
||||
"arms": "arms supporting body weight or holding partner",
|
||||
"hands": "recipient's hands grasping subject's breasts, squeezing breasts together towards center",
|
||||
"torso": "exposed breasts, heavy cleavage, chest compressed by external hands",
|
||||
"pelvis": "leaning forward, hips raised or straddling",
|
||||
"legs": "kneeling, spread legs, or wrapping around partner",
|
||||
"feet": "arched feet, toes curled",
|
||||
"additional": "penis sliding between breasts, friction, lubrication, skin indentation"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "false",
|
||||
"orientation": "MFF"
|
||||
"base": "cooperative_paizuri, 2girls, 1boy, sexual_activity, sex_position",
|
||||
"head": "smile, open_mouth, facial, looking_at_partner, eyes_closed, flushed",
|
||||
"upper_body": "arms_around_neck, breasts_between_breasts, large_breasts, cleavage, nipple_tweaking",
|
||||
"lower_body": "penis, glans, erection, kneeling, straddling, cowgirl_position",
|
||||
"hands": "holding_penis, touching_partner, reaching_for_partner",
|
||||
"feet": "barefoot, toes_curled",
|
||||
"additional": "pov, cum_on_body, fluids, (multiple_girls:1.2), erotic, masterpiece"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/cooperativepaizuri.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "cooperativepaizuri"
|
||||
"lora_triggers": "cooperative paizuri",
|
||||
"lora_weight_min": 1.0,
|
||||
"lora_weight_max": 1.0
|
||||
},
|
||||
"tags": [
|
||||
"paizuri",
|
||||
"assisted paizuri",
|
||||
"male hand",
|
||||
"breast squeeze",
|
||||
"titjob",
|
||||
"penis between breasts",
|
||||
"sexual act",
|
||||
"cleavage",
|
||||
"big breasts"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "2girls 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,34 +2,23 @@
|
||||
"action_id": "covering_privates_illustrious_v1_0",
|
||||
"action_name": "Covering Privates Illustrious V1 0",
|
||||
"action": {
|
||||
"full_body": "standing in a defensive, modest posture, body language expressing vulnerability",
|
||||
"head": "tilted down or looking away in embarrassment",
|
||||
"eyes": "averted gaze, shy or flustered expression",
|
||||
"arms": "arms pulled in tight against the body",
|
||||
"hands": "hands covering crotch, hand over breasts, covering self",
|
||||
"torso": "slightly hunched forward or twisting away",
|
||||
"pelvis": "hips slightly turned",
|
||||
"legs": "legs pressed tightly together, thighs touching, knock-kneed",
|
||||
"feet": "standing close together, possibly pigeon-toed",
|
||||
"additional": "blush, steam or light rays (optional)"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "F"
|
||||
"base": "covering_genitals, covering_breasts",
|
||||
"head": "blush, embarrassed, looking_at_viewer",
|
||||
"upper_body": "arms_crossed, covering_breasts, upper_body",
|
||||
"lower_body": "legs_together, hips",
|
||||
"hands": "covering_crotch",
|
||||
"feet": "standing",
|
||||
"additional": "modesty"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/covering privates_illustrious_V1.0.safetensors",
|
||||
"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": [
|
||||
"covering self",
|
||||
"embarrassed",
|
||||
"blush",
|
||||
"hands on crotch",
|
||||
"arm across chest",
|
||||
"modesty",
|
||||
"legs together",
|
||||
"shy"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,35 +2,23 @@
|
||||
"action_id": "coveringownmouth_ill_v1",
|
||||
"action_name": "Coveringownmouth Ill V1",
|
||||
"action": {
|
||||
"full_body": "character appearing sick or nauseous, posture slightly hunched forward",
|
||||
"head": "pale complexion, sweatdrops on face, cheeks flushed or blue (if severe), grimacing",
|
||||
"eyes": "tearing up, wincing, half-closed, or dilated pupils",
|
||||
"arms": "one or both arms raised sharply towards the face",
|
||||
"hands": "covering mouth, hand over mouth, fingers clutching face",
|
||||
"torso": "leaning forward, tense shoulders usually associated with retching or coughing",
|
||||
"pelvis": "neutral position or slightly bent forward",
|
||||
"legs": "knees slightly bent or trembling",
|
||||
"feet": "planted firmly or stumbling",
|
||||
"additional": "motion lines indicating shaking, gloom lines, vomit (optional/extreme)"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "F"
|
||||
"base": "covering_own_mouth, solo",
|
||||
"head": "hand_over_mouth",
|
||||
"upper_body": "arm_raised",
|
||||
"lower_body": "variable",
|
||||
"hands": "palm_inward",
|
||||
"feet": "variable",
|
||||
"additional": "pensive, shy, embarrassed, surprise"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/CoveringOwnMouth_Ill_V1.safetensors",
|
||||
"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": [
|
||||
"covering mouth",
|
||||
"hand over mouth",
|
||||
"ill",
|
||||
"sick",
|
||||
"nausea",
|
||||
"queasy",
|
||||
"motion sickness",
|
||||
"sweat",
|
||||
"pale"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": false
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "cowgirl_position_breast_press_illustriousxl_lora_nochekaiser",
|
||||
"action_name": "Cowgirl Position Breast Press Illustriousxl Lora Nochekaiser",
|
||||
"action": {
|
||||
"full_body": "straddling pose, body leaning forward directly into the camera view",
|
||||
"head": "face close to the viewer, looking down or directly ahead",
|
||||
"eyes": "looking at viewer, intense or half-closed gaze",
|
||||
"arms": "arms extending forward or bent to support weight",
|
||||
"hands": "placed on an invisible surface or partner's chest",
|
||||
"torso": "upper body leaning forward, breasts heavily pressed and flattened against the screen/viewer",
|
||||
"pelvis": "hips wide, seated in a straddling motion",
|
||||
"legs": "knees bent, thighs spread wide apart",
|
||||
"feet": "tucked behind or out of frame",
|
||||
"additional": "pov, squish, breast deformation, intimate distance"
|
||||
"base": "straddling, pov, on_top, leaning_forward",
|
||||
"head": "looking_at_viewer, intense_gaze, half-closed_eyes",
|
||||
"upper_body": "arms_extended, breasts_pressed_against_viewer, breast_squish, cleavage",
|
||||
"lower_body": "spread_legs, knees_up, straddling_partner",
|
||||
"hands": "on_man's_chest, hand_on_partner",
|
||||
"feet": "out_of_frame",
|
||||
"additional": "breast_deformation, intimate, close-up, first-person_view"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "false",
|
||||
@@ -20,16 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/cowgirl-position-breast-press-illustriousxl-lora-nochekaiser.safetensors",
|
||||
"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": [
|
||||
"cowgirl position",
|
||||
"breast press",
|
||||
"straddling",
|
||||
"pov",
|
||||
"leaning forward",
|
||||
"close-up",
|
||||
"breast deformation",
|
||||
"squish"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "cuckold_ntr_il_nai_py",
|
||||
"action_name": "Cuckold Ntr Il Nai Py",
|
||||
"action": {
|
||||
"full_body": "from behind, bent over, doggy style, looking back, pov",
|
||||
"head": "turned to look back over shoulder, face flushed, heavy breathing, expression of pleasure or distress",
|
||||
"eyes": "looking at viewer, tears, heart-shaped pupils or rolled back",
|
||||
"arms": "supporting body weight on surface",
|
||||
"hands": "gripping sheets or surface tightly",
|
||||
"torso": "arched back, leaning forward",
|
||||
"pelvis": "hips raised high, exposed",
|
||||
"legs": "kneeling, spread wide",
|
||||
"feet": "toes curled",
|
||||
"additional": "sweat, rude, messy hair, partner silhouette implied behind"
|
||||
"base": "from_behind, bent_over, doggy_style, looking_back, pov",
|
||||
"head": "looking_back, flushed, heavy_breathing, facial_expression, looking_at_viewer, tears, heart_shaped_pupils, eyes_rolled_back",
|
||||
"upper_body": "arched_back, leaning_forward",
|
||||
"lower_body": "hips_up, kneeling, legs_spread",
|
||||
"hands": "hands_gripping_bed_sheets",
|
||||
"feet": "curled_toes",
|
||||
"additional": "sweat, messy_hair, man_in_background"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,14 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Cuckold NTR-IL_NAI_PY.safetensors",
|
||||
"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": [
|
||||
"ntr",
|
||||
"cuckold",
|
||||
"pov",
|
||||
"from behind",
|
||||
"doggy style",
|
||||
"looking back"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "cum_bathillustrious",
|
||||
"action_name": "Cum Bathillustrious",
|
||||
"action": {
|
||||
"full_body": "reclining or sitting inside a bathtub filled with viscous white liquid, cum pool, partially submerged",
|
||||
"head": "wet hair sticking to face, flushed cheeks, steam rising",
|
||||
"eyes": "half-closed, glossy, looking at viewer",
|
||||
"arms": "resting on the rim of the bathtub or submerged",
|
||||
"hands": "coated in white fluid, dripping",
|
||||
"torso": "naked, wet skin, heavy coverage of white liquid on chest and stomach",
|
||||
"pelvis": "submerged in pool of white liquid",
|
||||
"legs": "knees bent and poking out of the liquid or spread slighty",
|
||||
"base": "cum_bath, bathtub, viscous_white_liquid, partially_submerged",
|
||||
"head": "wet_hair, blush, steam, half-closed_eyes, looking_at_viewer",
|
||||
"upper_body": "nude, wet, cum_on_chest, cum_on_stomach",
|
||||
"lower_body": "submerged, knees_up",
|
||||
"hands": "dripping_cum",
|
||||
"feet": "submerged",
|
||||
"additional": "tiled bathroom background, steam, excessive cum, sticky texture, overflowing tub"
|
||||
"additional": "bathroom, steam, excessive_cum, sticky"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,15 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/cum_bathIllustrious.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "cum_bathIllustrious"
|
||||
"lora_triggers": "cum_bathIllustrious",
|
||||
"lora_weight_min": 1.0,
|
||||
"lora_weight_max": 1.0
|
||||
},
|
||||
"tags": [
|
||||
"cum_bath",
|
||||
"covered_in_cum",
|
||||
"bathtub",
|
||||
"wet",
|
||||
"naked",
|
||||
"bukkake",
|
||||
"messy"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl solo",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,38 +2,23 @@
|
||||
"action_id": "cum_in_cleavage_illustrious",
|
||||
"action_name": "Cum In Cleavage Illustrious",
|
||||
"action": {
|
||||
"full_body": "close-up or cowboy shot focusing intensely on the upper body and chest area",
|
||||
"head": "flushed cheeks, heavy breathing, mouth slightly open, expression of embarrassment or pleasure, saliva trail",
|
||||
"eyes": "half-closed, heart-shaped pupils (optional), looking down at chest or shyly at viewer",
|
||||
"arms": "arms bent brings hands to chest level",
|
||||
"hands": "hands squeezing breasts together to deepen cleavage, or pulling clothing aside to reveal the mess",
|
||||
"torso": "large breasts pressed together, deep cleavage filled with pooling white seminal fluid, cum dripping down skin, messy upper body",
|
||||
"pelvis": "obscured or hips visible in background",
|
||||
"legs": "obscured",
|
||||
"feet": "out of frame",
|
||||
"additional": "high viscosity liquid detail, shiny skin, wet texture, after sex atmosphere"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "F"
|
||||
"base": "upper_body, focus_on_breasts, intimate",
|
||||
"head": "blush, open_mouth, expressive_eyes, looking_at_viewer, heavy_lidded_eyes",
|
||||
"upper_body": "arms_bent, breasts, cleavage, cum_in_cleavage, bare_breasts, liquid_in_cleavage",
|
||||
"lower_body": "",
|
||||
"hands": "hands_on_breasts, squeezing_breasts",
|
||||
"feet": "",
|
||||
"additional": "messy, erotic, semen, cum_on_skin"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/cum_in_cleavage_illustrious.safetensors",
|
||||
"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": [
|
||||
"cum",
|
||||
"cum in cleavage",
|
||||
"cum on breasts",
|
||||
"semen",
|
||||
"huge breasts",
|
||||
"cleavage",
|
||||
"messy",
|
||||
"sticky",
|
||||
"paizuri",
|
||||
"sex act",
|
||||
"illustration",
|
||||
"nsfw"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "cum_inside_slime_v0_2",
|
||||
"action_name": "Cum Inside Slime V0 2",
|
||||
"action": {
|
||||
"full_body": "front view, focus on midsection, semi-transparent body structure",
|
||||
"head": "flustered expression, open mouth, heavy blush, tongue out",
|
||||
"eyes": "rolled back, heart-shaped pupils",
|
||||
"arms": "bent at elbows, hands touching abdomen",
|
||||
"hands": "cupping lower belly, emphasizing fullness",
|
||||
"torso": "translucent skin, visible white liquid filling the stomach and womb area, slightly distended belly",
|
||||
"pelvis": "glowing with internal white fluid, see-through outer layer",
|
||||
"legs": "thighs touching, slime texture dripping",
|
||||
"feet": "standing firmly or slightly melting into floor",
|
||||
"additional": "internal cum, x-ray, cross-section, viscous liquid, glowing interior"
|
||||
"base": "front_view, focus_on_midsection, semi-transparent_body, translucent_skin",
|
||||
"head": "flustered, open_mouth, heavy_blush, tongue_out, eyes_rolled_back, heart-shaped_pupils",
|
||||
"upper_body": "bent_arms, hands_on_stomach, visible_internal_cum, stomach_fill, distended_belly",
|
||||
"lower_body": "glowing, slime_texture, dripping, thighs_together",
|
||||
"hands": "cupping_stomach",
|
||||
"feet": "standing, melting",
|
||||
"additional": "internal_cum, x-ray, cross-section, viscous_liquid, bioluminescence"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,16 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Cum_inside_slime_v0.2.safetensors",
|
||||
"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": [
|
||||
"slime girl",
|
||||
"monster girl",
|
||||
"transparent skin",
|
||||
"internal cum",
|
||||
"cum filled",
|
||||
"x-ray",
|
||||
"stomach fill",
|
||||
"viscous"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,35 +2,23 @@
|
||||
"action_id": "cum_shot",
|
||||
"action_name": "Cum Shot",
|
||||
"action": {
|
||||
"full_body": "close-up, portrait, upper body focus, kneeling or sitting",
|
||||
"head": "mouth open, tongue out, blushing, sweating, cum on face, cum in mouth, semen on hair, messy hair",
|
||||
"eyes": "half-closed eyes, rolling eyes, heart-shaped pupils, looking at viewer, glazed eyes",
|
||||
"arms": "arms relaxed or hands framing face",
|
||||
"hands": "hands on cheeks, making peace sign, or wiping face",
|
||||
"torso": "exposed upper body, wet skin, cleavage",
|
||||
"pelvis": "obscured or out of frame",
|
||||
"legs": "kneeling or out of frame",
|
||||
"feet": "out of frame",
|
||||
"additional": "white liquid, splashing, sticky texture, aftermath, detailed fluids, high contrast"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "cum_shot, cum, from_above",
|
||||
"head": "cum_on_face, facial, cum_in_eye, cum_in_mouth, open_mouth, messy_face",
|
||||
"upper_body": "cum_on_breasts, cum_on_body, sticky",
|
||||
"lower_body": "",
|
||||
"hands": "",
|
||||
"feet": "",
|
||||
"additional": "white_fluid, dripping, shiny_skin, fluid_on_skin"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/cum_shot.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "cum_shot"
|
||||
"lora_weight": 0.8,
|
||||
"lora_triggers": "cum, facial, ejaculation",
|
||||
"lora_weight_min": 0.8,
|
||||
"lora_weight_max": 0.8
|
||||
},
|
||||
"tags": [
|
||||
"cum_shot",
|
||||
"facial",
|
||||
"semen",
|
||||
"cum",
|
||||
"bukkake",
|
||||
"aftermath",
|
||||
"nsfw",
|
||||
"liquid",
|
||||
"messy"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "cum_swap",
|
||||
"action_name": "Cum Swap",
|
||||
"action": {
|
||||
"full_body": "two characters in close intimate proximity, upper bodies pressed together",
|
||||
"head": "faces close, mouths open and connected, engaging in a deep kiss",
|
||||
"eyes": "half-closed, heavy lidded, blushing cheeks",
|
||||
"arms": "embracing partner, wrapped around neck or waist",
|
||||
"hands": "cupping partner's face, holding back of head, fingers entagled in hair",
|
||||
"torso": "chests touching, leaning inward",
|
||||
"pelvis": "aligned with torso",
|
||||
"legs": "standing or sitting positions",
|
||||
"feet": "grounded or out of frame",
|
||||
"additional": "visible liquid bridge between mouths, thick white fluid transfer, saliva trail, messy chin"
|
||||
"base": "1girl 1girl, duo, close embrace, intimate, body contact",
|
||||
"head": "kissing, deep kiss, open mouth, closed eyes, blush",
|
||||
"upper_body": "arms around neck, arms around waist, chests touching, leaning in",
|
||||
"lower_body": "leg lock, standing, pressing.",
|
||||
"hands": "face_grabbing, hand in hair, touching partner",
|
||||
"feet": "barefoot, grounded",
|
||||
"additional": "cum_swap, spit_take, saliva, seminal_fluid, mess, liquid_bridge"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "false",
|
||||
@@ -20,18 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Cum_Swap.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "Cum_Swap"
|
||||
"lora_triggers": "Cum_Swap",
|
||||
"lora_weight_min": 1.0,
|
||||
"lora_weight_max": 1.0
|
||||
},
|
||||
"tags": [
|
||||
"cum swap",
|
||||
"mouth to mouth",
|
||||
"kissing",
|
||||
"open mouth",
|
||||
"liquid bridge",
|
||||
"saliva",
|
||||
"semen",
|
||||
"duo",
|
||||
"sharing fluids",
|
||||
"intimacy"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1girl",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
24
data/actions/cumblastfacial.json
Normal file
24
data/actions/cumblastfacial.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"action_id": "cumblastfacial",
|
||||
"action_name": "Cumblastfacial",
|
||||
"action": {
|
||||
"base": "solo, ejaculation, cumshot",
|
||||
"head": "facial, head_tilt, looking_up, cum_in_eye, cum_on_face, covered_in_cum",
|
||||
"upper_body": "arms_at_side, cum_on_upper_body, wet_clothes",
|
||||
"lower_body": "standing",
|
||||
"hands": "hands_at_side",
|
||||
"feet": "standing",
|
||||
"additional": "projectile_cum, excessive_cum, semen, cum_on_hair"
|
||||
},
|
||||
"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": {
|
||||
"participants": "solo",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,35 +2,23 @@
|
||||
"action_id": "cuminhands",
|
||||
"action_name": "Cuminhands",
|
||||
"action": {
|
||||
"full_body": "upper body focus, character presenting cupped hands towards the viewer",
|
||||
"head": "looking down at hands or looking at viewer, expression of embarrassment or lewd satisfaction, blushing",
|
||||
"eyes": "half-closed or wide open, focused on the hands",
|
||||
"arms": "elbows bent, forearms brought together in front of the chest or stomach",
|
||||
"hands": "cupped hands, palms facing up, fingers tight together, holding white liquid, messy hands",
|
||||
"torso": "posture slightly hunched or leaning forward to show hands",
|
||||
"pelvis": "stationary",
|
||||
"legs": "kneeling or standing",
|
||||
"feet": "planted",
|
||||
"additional": "white liquid, seminal fluid, dripping between fingers, sticky texture, high contrast fluids"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "F"
|
||||
"base": "after_fellatio, ejaculation",
|
||||
"head": "facial, cum_on_face, cum_in_mouth, cum_string, looking_at_hands",
|
||||
"upper_body": "arms_bent, upper_body",
|
||||
"lower_body": "",
|
||||
"hands": "cupping_hands, cum_on_hands",
|
||||
"feet": "",
|
||||
"additional": "excessive_cum"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/cuminhands.safetensors",
|
||||
"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": [
|
||||
"cum in hands",
|
||||
"cupped hands",
|
||||
"holding cum",
|
||||
"cum",
|
||||
"bodily fluids",
|
||||
"messy",
|
||||
"palms up",
|
||||
"sticky",
|
||||
"white liquid"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "cumshot",
|
||||
"action_name": "Cumshot",
|
||||
"action": {
|
||||
"full_body": "close-up portrait shot, high angle view",
|
||||
"head": "head tilted back, mouth slightly open, tongue out, face covered in white fluid",
|
||||
"eyes": "eyes closed or rolling back, expression of pleasure, wet eyelashes",
|
||||
"arms": "out of frame",
|
||||
"hands": "out of frame",
|
||||
"torso": "upper chest and collarbone visible",
|
||||
"pelvis": "kout of frame",
|
||||
"legs": "out of frame",
|
||||
"feet": "out of frame",
|
||||
"additional": "seminal fluid dripping from face, splashing liquid, thick texture, messy"
|
||||
"base": "close-up, high_angle, macro",
|
||||
"head": "head_back, mouth_open, tongue_out, face_covered_in_cum, closed_eyes, rolling_eyes, ecstatic_expression, wet_eyelashes",
|
||||
"upper_body": "bare_shoulders, cleavage",
|
||||
"lower_body": "out_of_frame",
|
||||
"hands": "out_of_frame",
|
||||
"feet": "out_of_frame",
|
||||
"additional": "cum_on_face, facial, seminal_fluid, cum_drip, dynamic_angle, splashing, messy, thick_liquid"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,15 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/cumshot.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "cumshot"
|
||||
"lora_triggers": "cumshot",
|
||||
"lora_weight_min": 1.0,
|
||||
"lora_weight_max": 1.0
|
||||
},
|
||||
"tags": [
|
||||
"cum",
|
||||
"cum on face",
|
||||
"facial",
|
||||
"messy",
|
||||
"tongue out",
|
||||
"seminal fluid",
|
||||
"detailed liquid"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "cumtube_000035",
|
||||
"action_name": "Cumtube 000035",
|
||||
"action": {
|
||||
"full_body": "kneeling or sitting, leaning back slightly to receive contents of tube",
|
||||
"head": "force feeeding, feeding tube,tilted back, face directed upwards, mouth wide open, tongue extended, chaotic facial mess",
|
||||
"eyes": "looking up, anticipating expression, half-closed or rolled back",
|
||||
"arms": "raised, holding a large clear cylinder",
|
||||
"hands": "firmly grasping the sides of the tube",
|
||||
"torso": "chest pushed forward, liquid dripping down neck and chest",
|
||||
"pelvis": "kneeling, hips resting on heels",
|
||||
"legs": "legs folded underneath, knees apart",
|
||||
"feet": "toes pointed backward",
|
||||
"additional": "clear tube filled with white viscous liquid, heavy splatter, overflowing liquid, messy environment, bubbles inside tube"
|
||||
"base": "kneeling, leaning_back",
|
||||
"head": "force_feeding, tube, head_tilted_back, mouth_open, tongue_out, facial_fluids, looking_up, eyes_rolled_back",
|
||||
"upper_body": "arms_raised, holding_object, chest_pushed_forward, fluids_dripping, torso_drenched",
|
||||
"lower_body": "kneeling, legs_together",
|
||||
"hands": "hands_on_object",
|
||||
"feet": "toes, feet_together",
|
||||
"additional": "clear_tube, cum, white_viscous_liquid, messy, splatter, overflow"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,17 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/cumtube-000035.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "cumtube-000035"
|
||||
"lora_triggers": "cumtube-000035",
|
||||
"lora_weight_min": 1.0,
|
||||
"lora_weight_max": 1.0
|
||||
},
|
||||
"tags": [
|
||||
"cumtube",
|
||||
"viscous liquid",
|
||||
"excessive liquid",
|
||||
"facial mess",
|
||||
"pouring",
|
||||
"drinking",
|
||||
"holding object",
|
||||
"open mouth",
|
||||
"wet skin"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,33 +2,23 @@
|
||||
"action_id": "cunnilingus_on_back_illustriousxl_lora_nochekaiser",
|
||||
"action_name": "Cunnilingus On Back Illustriousxl Lora Nochekaiser",
|
||||
"action": {
|
||||
"full_body": "lying on back, receiving oral sex, partner between legs",
|
||||
"head": "head tilted back, expression of pleasure, blushing, heavy breathing, mouth open",
|
||||
"eyes": "eyes closed, rolling eyes, or looking down at partner",
|
||||
"arms": "arms resting on bed or reaching towards partner",
|
||||
"hands": "gripping bedsheets, clutching pillow, or holding partner's head",
|
||||
"torso": "arched back, chest heaving",
|
||||
"pelvis": "hips lifted, crotch exposed to partner",
|
||||
"legs": "spread legs, legs apart, knees bent, m-legs",
|
||||
"feet": "toes curled, feet on bed",
|
||||
"additional": "partner's face in crotch, tongue, saliva, sexual act, intimate focus"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "lying, on_back, spread_legs, nude",
|
||||
"head": "torogao, blush, sweat, half-closed_eyes, tongue_out",
|
||||
"upper_body": "navel, nipples, sweat",
|
||||
"lower_body": "cunnilingus, vulva, spread_legs, thighs",
|
||||
"hands": "hands_on_chest",
|
||||
"feet": "",
|
||||
"additional": "on_bed, pillow, profile"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/cunnilingus-on-back-illustriousxl-lora-nochekaiser.safetensors",
|
||||
"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": [
|
||||
"cunnilingus",
|
||||
"oral sex",
|
||||
"lying on back",
|
||||
"spread legs",
|
||||
"pleasure",
|
||||
"sex",
|
||||
"NSFW"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,32 +2,23 @@
|
||||
"action_id": "danglinglegs",
|
||||
"action_name": "Danglinglegs",
|
||||
"action": {
|
||||
"full_body": "holding waist, dangling legs, size difference",
|
||||
"head": "facing forward or looking down",
|
||||
"eyes": "relaxed gaze",
|
||||
"arms": "resting on lap or gripping the edge of the seat",
|
||||
"hands": "placed on thighs or holding on",
|
||||
"torso": "upright sitting posture",
|
||||
"pelvis": "seated on edge",
|
||||
"legs": "dangling in the air, knees bent at edge, feet not touching the floor",
|
||||
"feet": "relaxed, hanging loose",
|
||||
"additional": "sitting on ledge, sitting on desk, high stool"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "suspended_congress, lifting_person, standing_sex, sex_from_behind",
|
||||
"head": "clenched_teeth, head_back, eyes_closed",
|
||||
"upper_body": "arms_around_neck, body_lifted, breasts_pressed_against_body",
|
||||
"lower_body": "penis_in_vagina, hips_held, legs_apart, feet_off_ground",
|
||||
"hands": "hands_on_shoulders, grabbing_shoulders",
|
||||
"feet": "toes_curled, barefoot",
|
||||
"additional": "size_difference, larger_male, orgasm, sweat"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/danglinglegs.safetensors",
|
||||
"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": [
|
||||
"dangling legs",
|
||||
"sitting",
|
||||
"feet off ground",
|
||||
"from below",
|
||||
"ledge",
|
||||
"high place"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "deep_kiss_000007",
|
||||
"action_name": "Deep Kiss 000007",
|
||||
"action": {
|
||||
"full_body": "intimate couple pose, two characters kissing passionately, bodies pressed tightly together in an embrace",
|
||||
"head": "heads tilted, lips locked, mouths open, french kiss, tongue touching, cheeks flushed",
|
||||
"eyes": "eyes tightly closed, passionate expression",
|
||||
"arms": "arms wrapped around neck, arms holding waist, engulfing embrace",
|
||||
"hands": "cupping face, fingers running through hair, gripping shoulders or back",
|
||||
"torso": "chest to chest contact, breasts pressed against chest",
|
||||
"pelvis": "hips pressed together, zero distance",
|
||||
"legs": "standing close, interlocked or one leg lifted behind",
|
||||
"feet": "standing, on tiptoes",
|
||||
"additional": "saliva trail, saliva string, connecting tongue, romantic atmosphere"
|
||||
"base": "1girl, 1boy, duo, kissing, deep_kiss, french_kiss, romantic, passionate, intimacy",
|
||||
"head": "eyes_closed, open_mouth, tongue, tongue_touching, flushed, blushing, tilted_head",
|
||||
"upper_body": "embrace, hugging, holding_each_other, arms_around_neck, arms_around_waist, chest_to_chest",
|
||||
"lower_body": "hips_pressed_together, standing_close",
|
||||
"hands": "cupping_face, hands_in_hair, gripping, back_embrace",
|
||||
"feet": "tiptoes, standing",
|
||||
"additional": "saliva, dripping_saliva, saliva_string, tongue_kiss"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,22 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Deep_Kiss-000007.safetensors",
|
||||
"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": [
|
||||
"deep kiss",
|
||||
"french kiss",
|
||||
"kissing",
|
||||
"tongue",
|
||||
"saliva",
|
||||
"saliva trail",
|
||||
"open mouth",
|
||||
"couple",
|
||||
"intimate",
|
||||
"romance",
|
||||
"love",
|
||||
"passionate",
|
||||
"eyes closed",
|
||||
"duo"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,39 +2,23 @@
|
||||
"action_id": "deepthroat_ponytailhandle_anime_il_v1",
|
||||
"action_name": "Deepthroat Ponytailhandle Anime Il V1",
|
||||
"action": {
|
||||
"full_body": "kneeling, performing deepthroat fellatio, body angled towards partner",
|
||||
"head": "tilted back forcedly, mouth stretched wide, gagging, face flushed, hair pulled taught",
|
||||
"eyes": "tearing up, rolled back, looking up, streaming tears",
|
||||
"arms": "reaching forward, holding onto partner's legs for support",
|
||||
"hands": "grasping thighs, fingers digging in",
|
||||
"torso": "leaning forward, back slightly arched",
|
||||
"pelvis": "kneeling position",
|
||||
"legs": "knees on ground, shins flat",
|
||||
"feet": "toes curled tightly",
|
||||
"additional": "saliva trails, heavy breathing, hand grabbing ponytail, penis in mouth, irrumatio"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "irrumatio, fellatio, 1boy, 1girl, duo, deepthroat",
|
||||
"head": "forced, head_back, mouth_open, saliva, drooling, crying, tears, expressionless, wide_eyes",
|
||||
"upper_body": "arms_at_sides, upper_body",
|
||||
"lower_body": "",
|
||||
"hands": "hands_on_hair, grabbing_hair",
|
||||
"feet": "",
|
||||
"additional": "penis, ponytail, pov"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Deepthroat_PonytailHandle_Anime_IL_V1.safetensors",
|
||||
"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": [
|
||||
"deepthroat",
|
||||
"fellatio",
|
||||
"oral sex",
|
||||
"hair pull",
|
||||
"grabbing hair",
|
||||
"ponytail",
|
||||
"kneeling",
|
||||
"gagging",
|
||||
"irrumatio",
|
||||
"tears",
|
||||
"saliva",
|
||||
"submissive",
|
||||
"forced oral"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1boy 1girl",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "defeat_ntr_il_nai_py",
|
||||
"action_name": "Defeat Ntr Il Nai Py",
|
||||
"action": {
|
||||
"full_body": "kneeling on the ground, slumped forward in defeat, on hands and knees, orz pose, sex from behind",
|
||||
"head": "bowed head, looking down, face shadowed or hiding face",
|
||||
"eyes": "crying, tears, empty eyes, or eyes squeezed shut in anguish",
|
||||
"arms": "arms straight down supporting weight against the floor",
|
||||
"hands": "hands flat on the ground, palms down, or clenched fists on ground",
|
||||
"torso": "hunched back, crushed posture, leaning forward",
|
||||
"pelvis": "hips raised slightly or sitting back on heels in submission",
|
||||
"legs": "knees on ground, kneeling",
|
||||
"feet": "tops of feet flat on floor",
|
||||
"additional": "gloom, depression, dramatic shadows, humiliation, emotional devastation"
|
||||
"base": "kneeling, on_all_fours, orz, slumped, defeat, dogeza, sex_from_behind",
|
||||
"head": "bowed_head, looking_down, shadowed_face, crying, tears, empty_eyes, closed_eyes, anguish",
|
||||
"upper_body": "arms_on_ground, hunched_back, leaning_forward",
|
||||
"lower_body": "hips_up, kneeling, on_knees",
|
||||
"hands": "hands_on_ground, palms_down, clenched_hand",
|
||||
"feet": "barefoot, curled_toes",
|
||||
"additional": "gloom, depression, dramatic_shadows, humiliation, emotional_breakdown"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,18 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Defeat NTR-IL_NAI_PY.safetensors",
|
||||
"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": [
|
||||
"defeat",
|
||||
"on hands and knees",
|
||||
"all fours",
|
||||
"despair",
|
||||
"crying",
|
||||
"orz",
|
||||
"humiliation",
|
||||
"kneeling",
|
||||
"looking down",
|
||||
"tears"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "defeat_suspension_il_nai_py",
|
||||
"action_name": "Defeat Suspension Il Nai Py",
|
||||
"action": {
|
||||
"full_body": "suspended sex, holding waist, dangling legs, full body suspended in air, hanging limp, defeated posture, complete lack of resistance",
|
||||
"head": "head hanging low, chin resting on chest, looking down, neck relaxed",
|
||||
"eyes": "eyes closed, unconscious, pained expression, or empty gaze",
|
||||
"arms": "arms stretched vertically upwards, arms above head, shoulders pulled up by weight",
|
||||
"hands": "wrists bound together, hands tied overhead, handcuffs, shackles",
|
||||
"torso": "torso elongated by gravity, ribcage visible, stomach stretched",
|
||||
"pelvis": "hips sagging downwards, dead weight",
|
||||
"legs": "legs dangling freely, limp legs, knees slightly bent or hanging straight",
|
||||
"feet": "feet pointing downwards, hovering off the ground, toes dragging",
|
||||
"additional": "ropes, chains, metal hooks, dungeon background, exhaustion"
|
||||
"base": "suspension, hanging, bondage, arms_up, limp, dangling, defeated, total_submission",
|
||||
"head": "head_down, hair_over_eyes, eyes_closed, unconscious, expressionless",
|
||||
"upper_body": "arms_above_head, stretched_arms, chest_up, ribcage",
|
||||
"lower_body": "limp_legs, dangling_legs, sagging_hips",
|
||||
"hands": "bound, wrists_bound, handcuffs",
|
||||
"feet": "barefoot, dangling",
|
||||
"additional": "ropes, chains, dungeon, interior"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,17 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Defeat suspension-IL_NAI_PY.safetensors",
|
||||
"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": [
|
||||
"suspension",
|
||||
"hanging",
|
||||
"bound",
|
||||
"arms_up",
|
||||
"limp",
|
||||
"unconscious",
|
||||
"dangling",
|
||||
"bdsm",
|
||||
"bondage"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "defeatspitroast_illustrious",
|
||||
"action_name": "Defeatspitroast Illustrious",
|
||||
"action": {
|
||||
"full_body": "oral sex, vaginal, threesome, double penetration, suspended sex, dangling legs",
|
||||
"head": "tilted back or looking aside, mouth wide open, tongue sticking out, exhausted expression",
|
||||
"eyes": "rolled back, half-closed, ahegao",
|
||||
"arms": "bent at elbows, supporting upper body weight",
|
||||
"hands": "gripping the ground or sheets, clenching",
|
||||
"torso": "sweaty, deeply arched spine",
|
||||
"pelvis": "ass up, presenting rear",
|
||||
"legs": "kneeling, thighs spread wide",
|
||||
"feet": "toes curled",
|
||||
"additional": "messy hair, trembling, heavy breathing, defeated posture"
|
||||
"base": "threesome, double penetration, oral, vaginal, spitroast, suspended, dangling_legs",
|
||||
"head": "head_back, mouth_open, tongue_out, exhausted, eyes_rolled_back, semi-closed_eyes, ahegao",
|
||||
"upper_body": "arms_bent, arched_back, sweaty",
|
||||
"lower_body": "ass_up, kneeling, spread_legs",
|
||||
"hands": "gripping, clenching",
|
||||
"feet": "toes_curled",
|
||||
"additional": "messy_hair, trembling, heavy_breathing, defeated"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,20 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Defeatspitroast_Illustrious.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "Defeatspitroast_Illustrious"
|
||||
"lora_triggers": "Defeatspitroast_Illustrious",
|
||||
"lora_weight_min": 1.0,
|
||||
"lora_weight_max": 1.0
|
||||
},
|
||||
"tags": [
|
||||
"doggystyle",
|
||||
"spitroast",
|
||||
"double_penetration",
|
||||
"all_fours",
|
||||
"ass_up",
|
||||
"open_mouth",
|
||||
"tongue_out",
|
||||
"ahegao",
|
||||
"sweat",
|
||||
"looking_back",
|
||||
"",
|
||||
"1girl"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 2boys",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "disinterested_sex___bored_female",
|
||||
"action_name": "Disinterested Sex Bored Female",
|
||||
"action": {
|
||||
"full_body": "female lying on back, legs spread, passive body language, completely disengaged from implicit activity",
|
||||
"head": "turned slightly or facing forward but focused on phone, resting on pillow",
|
||||
"eyes": "looking at smartphone, dull gaze, half-closed, unenthusiastic",
|
||||
"arms": "holding smartphone above face with one or both hands, elbows resting on surface",
|
||||
"hands": "holding phone, scrolling on screen",
|
||||
"torso": "lying flat, relaxed, exposed",
|
||||
"pelvis": "hips passive, legs open",
|
||||
"legs": "spread wide, knees bent, relaxed",
|
||||
"feet": "loose, resting on bed",
|
||||
"additional": "holding smartphone, checking phone, indifference, ignoring, nonchalant attitude"
|
||||
"base": "1girl, hetero, doggystyle, male_focused, (solo_focus:1.2)",
|
||||
"head": "lying, stomach, on_stomach, pillow, looking_at_phone, bored, uninterested, expressionless",
|
||||
"upper_body": "lying, stomach",
|
||||
"lower_body": "doggystyle",
|
||||
"hands": "holding_phone",
|
||||
"feet": "",
|
||||
"additional": ""
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,17 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Disinterested_Sex___Bored_Female.safetensors",
|
||||
"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": [
|
||||
"bored",
|
||||
"disinterested",
|
||||
"looking at phone",
|
||||
"smartphone",
|
||||
"lying",
|
||||
"spread legs",
|
||||
"passive",
|
||||
"indifferent",
|
||||
"expressionless"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "display_case_bdsm_illus",
|
||||
"action_name": "Display Case Bdsm Illus",
|
||||
"action": {
|
||||
"full_body": "trapped inside a rectangular glass display case, standing or kneeling limitation, whole body confined",
|
||||
"head": "looking out through the glass, potentially gagged or expressionless",
|
||||
"eyes": "open, staring at the viewer through reflections",
|
||||
"arms": "restricted movement, potentially bound behind back or pressed against glass",
|
||||
"hands": "palms pressed against the transparent wall or tied",
|
||||
"torso": "upright relative to the container, visible behind glass",
|
||||
"pelvis": "hips aligned with the standing or kneeling posture",
|
||||
"legs": "straight or folded to fit inside the box",
|
||||
"feet": "resting on the bottom platform of the case",
|
||||
"additional": "glass reflections, airtight container aesthetic, museum or auction setting, objectification"
|
||||
"base": "glass_box, confinement, trapped, human_exhibit, enclosure",
|
||||
"head": "looking_at_viewer, open_mouth, empty_eyes, expressionless",
|
||||
"upper_body": "bound, arms_behind_back, arms_pressed_against_glass, restricted_movement",
|
||||
"lower_body": "kneeling, standing",
|
||||
"hands": "hands_pressed_against_glass, bound_hands",
|
||||
"feet": "barefoot",
|
||||
"additional": "reflections, glass, transparent_wall, exhibit, bondage, bdsm"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,14 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/display_case_bdsm_illus.safetensors",
|
||||
"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": [
|
||||
"glass box",
|
||||
"confinement",
|
||||
"exhibitionism",
|
||||
"trapped",
|
||||
"through glass",
|
||||
"human exhibit"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "display_case_illustr",
|
||||
"action_name": "Display Case Illustr",
|
||||
"action": {
|
||||
"full_body": "standing stiffly like an action figure, encased inside a rectangular transparent box",
|
||||
"head": "neutral expression, facing forward, slightly doll-like",
|
||||
"eyes": "fixed gaze, looking at viewer",
|
||||
"arms": "resting at sides or slightly bent in a static pose",
|
||||
"hands": "open palms or loosely curled, possibly pressing against the front glass",
|
||||
"torso": "facing front, rigid posture",
|
||||
"pelvis": "aligned with torso",
|
||||
"legs": "standing straight, feet positioned securely on the box base",
|
||||
"feet": "flat on the floor of the case",
|
||||
"additional": "transparent plastic packaging, cardboard backing with product design, barcode, reflections on glass, sealed box"
|
||||
"base": "standing, action_figure, encased, display_box, transparent_packaging",
|
||||
"head": "neutral_expression, face_forward, fixed_gaze, doll_joint",
|
||||
"upper_body": "rigid_posture, standing_stiffly, front_view",
|
||||
"lower_body": "standing_straight, feet_together",
|
||||
"hands": "hands_at_sides, open_palm, pressing_against_glass",
|
||||
"feet": "flat_feet",
|
||||
"additional": "cardboard_backing, toy_packaging, barcode, reflections_on_glass, sealed_box, plastic_container"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,17 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/display_case_illustr.safetensors",
|
||||
"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": [
|
||||
"display case",
|
||||
"action figure",
|
||||
"packaging",
|
||||
"in box",
|
||||
"plastic box",
|
||||
"collectible",
|
||||
"sealed",
|
||||
"toy",
|
||||
"transparent"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": false
|
||||
}
|
||||
}
|
||||
@@ -2,32 +2,23 @@
|
||||
"action_id": "doggydoublefingering",
|
||||
"action_name": "Doggydoublefingering",
|
||||
"action": {
|
||||
"full_body": "all fours, doggy style, kneeling, presenting rear, from behind",
|
||||
"head": "looking back, looking at viewer, blushing face",
|
||||
"eyes": "half-closed eyes, expressionless or aroused",
|
||||
"arms": "reaching back between legs, reaching towards crotch",
|
||||
"hands": "fingering, double fingering, both hands used, spreading vaginal lips, manipulating genitals",
|
||||
"torso": "arched back, curvature of spine",
|
||||
"pelvis": "hips raised, presenting pussy, exposed gluteal crease",
|
||||
"legs": "knees bent on ground, thighs spread",
|
||||
"feet": "toes curled, relaxing instep",
|
||||
"additional": "pussy juice, focus on buttocks, focus on genitals"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "3girls, group_sex, doggystyle, fingering, multiple_females_fingered",
|
||||
"head": "blushing, sweating, facial_expression, eyes_closed, looking_at_viewer",
|
||||
"upper_body": "leaning_forward, upper_body_focus",
|
||||
"lower_body": "all_fours, spread_legs, hips_up",
|
||||
"hands": "arms_extended, fingers_touching_surface",
|
||||
"feet": "kneeling, soles_of_feet",
|
||||
"additional": "male_focus, male_fingering, multiple_females, group_sex, vaginal_penetration, doggystyle_from_behind, shared_pleasure"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/DoggyDoubleFingering.safetensors",
|
||||
"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": [
|
||||
"masturbation",
|
||||
"solo",
|
||||
"ass focus",
|
||||
"pussy",
|
||||
"kneeling",
|
||||
"NSFW"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "3girls, 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,36 +2,23 @@
|
||||
"action_id": "dunking_face_in_a_bowl_of_cum_r1",
|
||||
"action_name": "Dunking Face In A Bowl Of Cum R1",
|
||||
"action": {
|
||||
"full_body": "leaning forward over a table or surface, bent at the waist",
|
||||
"head": "face submerged in a bowl, head bent downward",
|
||||
"eyes": "closed or obscured by liquid",
|
||||
"arms": "resting on the surface to support weight or holding the bowl",
|
||||
"hands": "palms flat on table or gripping the sides of the bowl",
|
||||
"torso": "leaned forward, horizontal alignment",
|
||||
"pelvis": "pushed back",
|
||||
"legs": "standing or kneeling",
|
||||
"feet": "resting on floor",
|
||||
"additional": "cum pool, large bowl filled with viscous white liquid, semen, messy, splashing, dripping"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "kneeling, all_fours, head_down, humiliation, close-up, from_below, solo",
|
||||
"head": "face_down, cum_in_mouth, cum_bubble, crying, closed_eyes",
|
||||
"upper_body": "",
|
||||
"lower_body": "",
|
||||
"hands": "clutching_head",
|
||||
"feet": "",
|
||||
"additional": "bowl, cum, drowning, air_bubble"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Dunking_face_in_a_bowl_of_cum_r1.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "Dunking_face_in_a_bowl_of_cum_r1"
|
||||
"lora_triggers": "gokkun, cum bowl",
|
||||
"lora_weight_min": 0.4,
|
||||
"lora_weight_max": 0.6
|
||||
},
|
||||
"tags": [
|
||||
"dunking face",
|
||||
"face in bowl",
|
||||
"bowl of cum",
|
||||
"semen",
|
||||
"messy",
|
||||
"submerged",
|
||||
"leaning forward",
|
||||
"bent over",
|
||||
"white liquid",
|
||||
"cum"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "ekiben_ill_10",
|
||||
"action_name": "Ekiben Ill 10",
|
||||
"action": {
|
||||
"full_body": "duo, 1boy, 1girl, standing, male lifting female, carrying, sexual position",
|
||||
"head": "looking at another, head back or looking down",
|
||||
"eyes": "eye contact or eyes closed",
|
||||
"arms": "arms supporting legs, arms around neck",
|
||||
"hands": "holding legs, grabbing thighs, gripping",
|
||||
"torso": "chest to chest, upright",
|
||||
"pelvis": "connected, groins touching",
|
||||
"legs": "spread legs, legs up, legs around waist, m-legs, bent knees",
|
||||
"feet": "dangling feet, plantar flexion",
|
||||
"additional": "strength, suspension, height difference"
|
||||
"base": "duo, 1boy, 1girl, male_lifting_female, standing, holding, sexual_position, intercourse",
|
||||
"head": "looking_at_each_other, head_back, closed_eyes",
|
||||
"upper_body": "arms_around_neck, chest_to_chest, close_embrace, torso_embrace",
|
||||
"lower_body": "connected, groins_touching, legs_around_male, legs_up, m_legs, bent_knees",
|
||||
"hands": "hands_on_thighs, gripping_thighs, holding_legs",
|
||||
"feet": "dangling_feet, toes_curled",
|
||||
"additional": "strength, suspension, height_difference, lifting_person"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,16 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/ekiben_ill-10.safetensors",
|
||||
"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": [
|
||||
"ekiben",
|
||||
"lifting",
|
||||
"carrying",
|
||||
"standing",
|
||||
"spread legs",
|
||||
"holding legs",
|
||||
"duo",
|
||||
"sex"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1boy, 1girl, duo",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "elbow_squeeze__concept_lora_000008",
|
||||
"action_name": "Elbow Squeeze Concept Lora 000008",
|
||||
"action": {
|
||||
"full_body": "Character standing with upper arms pressed tightly against the torso, emphasizing the chest area through the pressure of the elbows.",
|
||||
"head": "Facing forward, slightly tucked chin or tilted, expression often shy or teasing.",
|
||||
"eyes": "Looking directly at viewer.",
|
||||
"arms": "Upper arms squeezing inward against the sides of the ribs/chest, elbows tucked tight to the body.",
|
||||
"hands": "Forearms angled out or hands clasped near the navel/chest area.",
|
||||
"torso": "Chest pushed upward or compressed slightly by the lateral pressure of the arms.",
|
||||
"pelvis": "Neutral stance.",
|
||||
"legs": "Standing straight or slightly knock-kneed for a shy effect.",
|
||||
"feet": "Planted firmly.",
|
||||
"additional": "Clothing often pulled tight across the chest due to the arm position."
|
||||
"base": "standing, arms_at_sides, upper_body, elbow_squeeze, pushing_together",
|
||||
"head": "looking_at_viewer, shy, teasing",
|
||||
"upper_body": "arms_pressed_against_body, cleavage, breast_compression, arms_crossed_under_breasts",
|
||||
"lower_body": "standing, standing_on_one_leg, knock-kneed",
|
||||
"hands": "hands_together, hand_on_torso",
|
||||
"feet": "barefoot, shoes",
|
||||
"additional": "tight_clothes"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,13 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Elbow_Squeeze__Concept_Lora-000008.safetensors",
|
||||
"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": [
|
||||
"elbow squeeze",
|
||||
"arms at sides",
|
||||
"upper body",
|
||||
"squeezing",
|
||||
"tight clothes"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": false
|
||||
}
|
||||
}
|
||||
@@ -2,36 +2,23 @@
|
||||
"action_id": "extreme_sex_v1_0_illustriousxl",
|
||||
"action_name": "Extreme Sex V1 0 Illustriousxl",
|
||||
"action": {
|
||||
"full_body": "lying on back, mating press, legs lifted high, dynamic angle, foreshortening",
|
||||
"head": "head leaning back, heavy blush, sweat, mouth open, tongue out, intense expression",
|
||||
"eyes": "rolling eyes, heart-shaped pupils, eyelashes",
|
||||
"arms": "arms reaching forward, grabbing sheets, or holding own legs",
|
||||
"hands": "clenched hands, grabbing",
|
||||
"torso": "arched back, chest exposed, sweat on skin",
|
||||
"pelvis": "hips lifted, pelvis tilted upwards",
|
||||
"legs": "legs spread, m-legs, legs folded towards torso, knees bent",
|
||||
"feet": "feet in air, toes curled, plantar view",
|
||||
"additional": "motion lines, shaking, bodily fluids, bed sheet, pillow"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "sexual_activity, sex, multiple_positions",
|
||||
"head": "ahegao, rolling_eyes, head_back, mouth_open, drooling, saliva_trail",
|
||||
"upper_body": "sweaty, flushed, messy_hair, heavy_breathing",
|
||||
"lower_body": "legs_spread, wrapped_around_partner",
|
||||
"hands": "hands_on_partner, gripping",
|
||||
"feet": "curled_toes",
|
||||
"additional": "passionate, climax, facial_flush, intense_expression"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/extreme-sex-v1.0-illustriousxl.safetensors",
|
||||
"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": [
|
||||
"mating press",
|
||||
"lying on back",
|
||||
"legs up",
|
||||
"open mouth",
|
||||
"blush",
|
||||
"sweat",
|
||||
"m-legs",
|
||||
"intense",
|
||||
"ahegao",
|
||||
"explicit"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,35 +2,23 @@
|
||||
"action_id": "face_grab_illustrious",
|
||||
"action_name": "Face Grab Illustrious",
|
||||
"action": {
|
||||
"full_body": "medium shot or close up of a character having their face grabbed by a hand",
|
||||
"head": "face obscured by hand, cheeks squeezed, skin indentation from fingers, annoyed or pained expression",
|
||||
"eyes": "squinting or partially covered by fingers",
|
||||
"arms": "raised upwards attempting to pry the hand away",
|
||||
"hands": "holding the wrist or forearm of the grabbing hand",
|
||||
"torso": "upper body slightly leaned back from the force of the grab",
|
||||
"pelvis": "neutral alignment",
|
||||
"legs": "standing still",
|
||||
"feet": "planted firmly",
|
||||
"additional": "the grabbing hand usually belongs to another person or is an off-screen entity, commonly referred to as the iron claw technique"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "pov, first-person_view, close-up, grabbing_another's_face",
|
||||
"head": "forced_expression, open_mouth, tongue_out, pout, crying, streaming_tears, looking_at_viewer",
|
||||
"upper_body": "upper_body, nude, partially_clad",
|
||||
"lower_body": "out_of_frame",
|
||||
"hands": "pov_hands, grabbing_face",
|
||||
"feet": "out_of_frame",
|
||||
"additional": "after_fellatio, cum_on_tongue, cum_on_face"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/face_grab_illustrious.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "face_grab_illustrious"
|
||||
"lora_weight": 0.5,
|
||||
"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": [
|
||||
"face grab",
|
||||
"iron claw",
|
||||
"hand on face",
|
||||
"hand over face",
|
||||
"skin indentation",
|
||||
"squeezed face",
|
||||
"fingers on face",
|
||||
"forced",
|
||||
"cheek pinch"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,33 +2,23 @@
|
||||
"action_id": "facesit_08",
|
||||
"action_name": "Facesit 08",
|
||||
"action": {
|
||||
"full_body": "POV perspective from below, character straddling the camera/viewer in a squatting or kneeling position",
|
||||
"head": "tilted downwards, looking directly at the viewer",
|
||||
"eyes": "gazing down, maintaining eye contact",
|
||||
"arms": "resting comfortably",
|
||||
"hands": "placed on own thighs or knees for support",
|
||||
"torso": "foreshortened from below, leaning slightly forward",
|
||||
"pelvis": "positioned directly over the camera lens, dominating the frame",
|
||||
"legs": "spread wide, knees bent deeply, thighs framing the view",
|
||||
"feet": "resting on the surface on either side of the viewpoint",
|
||||
"additional": "extreme low angle, forced perspective, intimate proximity"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "sitting_on_face, cunnilingus, oral",
|
||||
"head": "looking_at_viewer, looking_down",
|
||||
"upper_body": "hand_on_head, nude, close-up",
|
||||
"lower_body": "pussy, spread_legs, vaginal_fluids, clitoris",
|
||||
"hands": "hands_on_head",
|
||||
"feet": "out_of_frame",
|
||||
"additional": "yuri, female_pov, 2girls"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/facesit-08.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "facesit-08"
|
||||
"lora_weight": 0.8,
|
||||
"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": [
|
||||
"facesitting",
|
||||
"pov",
|
||||
"femdom",
|
||||
"squatting",
|
||||
"looking down",
|
||||
"low angle",
|
||||
"thighs"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "2girls",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
{
|
||||
"action_id": "facial_bukkake",
|
||||
"action_name": "Facial Bukkake",
|
||||
"action": {
|
||||
"full_body": "close-up portrait shot, focus primarily on the face and neck area",
|
||||
"head": "tilted slightly backward, mouth open or tongue out, face heavily covered in white liquid",
|
||||
"eyes": "closed or looking upward, eyelashes wet/clumped",
|
||||
"arms": "out of frame or hands interacting with face/hair",
|
||||
"hands": "holding hair back or wiping cheek",
|
||||
"torso": "upper chest or shoulders visible, possibly stained",
|
||||
"pelvis": "not visible",
|
||||
"legs": "not visible",
|
||||
"feet": "not visible",
|
||||
"additional": "streaming white liquid, dripping, messy, wet skin texture, high viscosity"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "F"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/facial_bukkake.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "facial_bukkake"
|
||||
},
|
||||
"tags": [
|
||||
"bukkake",
|
||||
"facial",
|
||||
"cum on face",
|
||||
"semen",
|
||||
"messy",
|
||||
"white liquid",
|
||||
"cum in eyes",
|
||||
"cum in mouth",
|
||||
"splatter",
|
||||
"after sex"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"action_id": "fellatio_from_below_illustriousxl_lora_nochekaiser",
|
||||
"action_name": "Fellatio From Below Illustriousxl Lora Nochekaiser",
|
||||
"action": {
|
||||
"base": "fellatio, from_below, squatting",
|
||||
"head": "looking_at_viewer, open_mouth, looking_down",
|
||||
"upper_body": "nude, navel, breasts, nipples",
|
||||
"lower_body": "nude, pussy, spread_legs, bent_legs",
|
||||
"hands": "hands_on_ground",
|
||||
"feet": "barefoot",
|
||||
"additional": "penis, testicles, fellatio, 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": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,37 +2,23 @@
|
||||
"action_id": "fellatio_on_couch_illustriousxl_lora_nochekaiser",
|
||||
"action_name": "Fellatio On Couch Illustriousxl Lora Nochekaiser",
|
||||
"action": {
|
||||
"full_body": "kneeling on couch, leaning forward, performing fellatio, sexual act, duo focus",
|
||||
"head": "face in crotch, mouth open, sucking, cheeks hollowed, saliva trail",
|
||||
"eyes": "looking up, half-closed eyes, eye contact, ahegao",
|
||||
"arms": "reaching forward, holding partner's thighs, resting on cushions",
|
||||
"hands": "stroking penis, gripping legs, guiding head",
|
||||
"torso": "leaning forward, bent over, arched back",
|
||||
"pelvis": "kneeling, hips pushed back",
|
||||
"legs": "kneeling on sofa, spread slightly, knees bent",
|
||||
"feet": "toes curled, resting on upholstery, plantar flexion",
|
||||
"additional": "indoor, living room, sofa, couch, fabric texture, motion lines"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "fellatio, oral, sitting, on_couch, sex, hetero",
|
||||
"head": "blush, sweat, head_down, eyes_closed, looking_down",
|
||||
"upper_body": "nude, breasts, breast_press, leaning_forward",
|
||||
"lower_body": "sitting, spread_legs, nude",
|
||||
"hands": "hands_on_legs",
|
||||
"feet": "feet_on_floor",
|
||||
"additional": "couch, penis, testicles, focus_on_penis"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/fellatio-on-couch-illustriousxl-lora-nochekaiser.safetensors",
|
||||
"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": [
|
||||
"fellatio",
|
||||
"oral sex",
|
||||
"on couch",
|
||||
"kneeling",
|
||||
"sofa",
|
||||
"penis",
|
||||
"cum",
|
||||
"saliva",
|
||||
"indoor",
|
||||
"sex",
|
||||
"blowjob"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "femdom_face_between_breasts",
|
||||
"action_name": "Femdom Face Between Breasts",
|
||||
"action": {
|
||||
"full_body": "upper body view, female character pressing a person's face into her chest",
|
||||
"head": "looking down, chin tucked, dominant expression",
|
||||
"eyes": "narrowed, looking down at the person",
|
||||
"arms": "wrapping around the person's head, holding head firmly",
|
||||
"hands": "fingers tangled in hair, or pressing the back of the head",
|
||||
"torso": "chest pushed forward, breasts pressed tightly together around a face",
|
||||
"pelvis": "neutral alignment",
|
||||
"legs": "standing or sitting",
|
||||
"feet": "not visible",
|
||||
"additional": "male face buried in breasts, squished face, soft lighting, close-up"
|
||||
"base": "upper_body, 1girl, 1boy, couple, breast_smother",
|
||||
"head": "looking_down, dominant, smirk, narrowed_eyes, looking_at_viewer",
|
||||
"upper_body": "arms_around_head, chest, breasts_pressed_together, cleavage, breast_smother",
|
||||
"lower_body": "standing",
|
||||
"hands": "hands_in_hair, holding_head",
|
||||
"feet": "",
|
||||
"additional": "face_buried_in_breasts, squished_face, dominance, sexual_intercourse, suggestive"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,15 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/femdom_face_between_breasts.safetensors",
|
||||
"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": [
|
||||
"breast smother",
|
||||
"buried in breasts",
|
||||
"face between breasts",
|
||||
"facesitting",
|
||||
"femdom",
|
||||
"big breasts",
|
||||
"cleavage"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,36 +2,23 @@
|
||||
"action_id": "femdom_held_down_illust",
|
||||
"action_name": "Femdom Held Down Illust",
|
||||
"action": {
|
||||
"full_body": "dominant character straddling someone, pinning them to the surface, assertive posture, on top",
|
||||
"head": "looking down at viewer (pov), dominance expression, chin tilted down",
|
||||
"eyes": "narrowed, intense eye contact, looking down",
|
||||
"arms": "extended downwards, locked elbows, exerting pressure",
|
||||
"hands": "forcefully holding wrists against the surface, pinning hands, wrist grab",
|
||||
"torso": "leaning forward slightly, arching back, looming over",
|
||||
"pelvis": "straddling the subject's waist or chest, hips grounded",
|
||||
"legs": "knees bent, kneeling on either side of the subject, thighs active",
|
||||
"feet": "kneeling position, toes touching the ground or bed",
|
||||
"additional": "pov, from below, power dynamic, submission, floor or bed background"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "straddling, pin, 1girl, 1boy, lying_on_back",
|
||||
"head": "looking_down, looking_at_viewer, intense_expression",
|
||||
"upper_body": "arms_above_head, holding_wrists, dominant_female",
|
||||
"lower_body": "spread_legs, crotch_straddle",
|
||||
"hands": "hands_holding, grasping, clenched_hand",
|
||||
"feet": "barefoot",
|
||||
"additional": "femdom, power_dynamic, struggle, restraint"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Femdom_Held_Down_Illust.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "Femdom_Held_Down_Illust"
|
||||
"lora_weight": 0.8,
|
||||
"lora_triggers": "fdom_held",
|
||||
"lora_weight_min": 0.8,
|
||||
"lora_weight_max": 0.8
|
||||
},
|
||||
"tags": [
|
||||
"femdom",
|
||||
"held down",
|
||||
"pinning",
|
||||
"straddling",
|
||||
"on top",
|
||||
"looking down",
|
||||
"pov",
|
||||
"from below",
|
||||
"wrist grab",
|
||||
"dominance"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,34 +2,23 @@
|
||||
"action_id": "fertilization_illustriousxl_lora_nochekaiser",
|
||||
"action_name": "Fertilization Illustriousxl Lora Nochekaiser",
|
||||
"action": {
|
||||
"full_body": "lying on back, legs spread, internal view, cross-section, x-ray view of abdomen",
|
||||
"head": "head resting on pillow, heavy breathing, blushing",
|
||||
"eyes": "half-closed eyes, rolled back eyes or heart-shaped pupils",
|
||||
"arms": "arms resting at sides or holding bed sheets",
|
||||
"hands": "hands clutching sheets or resting on stomach",
|
||||
"torso": "exposed tummy, navel, transparent skin effect",
|
||||
"pelvis": "focus on womb, uterus visible, internal female anatomy",
|
||||
"legs": "legs spread wide, m-legs, knees up",
|
||||
"feet": "toes curled",
|
||||
"additional": "visualized fertilization process, sperm, egg, cum inside, glowing internal organs, detailed uterus, biology diagram style"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "sex, vaginal, on_bed, nude, cowboy_shot, ejaculation",
|
||||
"head": "ahegao, flushed, open_mouth, head_back, rolled_eyes, half-closed_eyes",
|
||||
"upper_body": "nude, nipples, navel, arms_at_sides",
|
||||
"lower_body": "pussy, cum_in_pussy, internal_cumshot, penis, hetero, spread_legs, legs_up",
|
||||
"hands": "clenched_hands",
|
||||
"feet": "bare_feet",
|
||||
"additional": "cross-section, fertilization, pregnancy, uterus, ovum, sperm_cell, ovaries"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/fertilization-illustriousxl-lora-nochekaiser.safetensors",
|
||||
"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": [
|
||||
"fertilization",
|
||||
"internal view",
|
||||
"cross-section",
|
||||
"x-ray",
|
||||
"womb",
|
||||
"cum inside",
|
||||
"uterus",
|
||||
"impregnation"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,38 +2,23 @@
|
||||
"action_id": "fff_imminent_masturbation",
|
||||
"action_name": "Fff Imminent Masturbation",
|
||||
"action": {
|
||||
"full_body": "lying on back, reclining mostly nude, body tense with anticipation",
|
||||
"head": "tilted back slightly, chin up, face flushed",
|
||||
"eyes": "half-closed, heavy-lidded, lustful gaze",
|
||||
"arms": "reaching downwards along the body",
|
||||
"hands": "hovering near genitals, fingers spreading, one hand grasping thigh, one hand reaching into panties or towards crotch",
|
||||
"torso": "arched back, chest heaving",
|
||||
"pelvis": "tilted upward, hips lifted slightly",
|
||||
"legs": "spread wide, knees bent and falling outward (M-legs)",
|
||||
"feet": "toes curled",
|
||||
"additional": "sweaty skin, disheveled clothing, underwear pulled aside, messy sheets"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "false",
|
||||
"orientation": "FFF"
|
||||
"base": "hand_on_crotch, trembling, legs_together, knock-kneed, blushing, arousal",
|
||||
"head": "heavy_breathing, sweat, looking_down, narrowed_eyes, half-closed_eyes, dilated_pupils, flushed",
|
||||
"upper_body": "arched_back, squirming, knees_together",
|
||||
"lower_body": "hips_forward, standing, legs_together",
|
||||
"hands": "hand_on_crotch, grasping, squeezing, rubbing_crotch",
|
||||
"feet": "standing, feet_together",
|
||||
"additional": "clothed_masturbation, urgency, arousal, intimate_touch"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/FFF_imminent_masturbation.safetensors",
|
||||
"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": [
|
||||
"solo",
|
||||
"female",
|
||||
"imminent masturbation",
|
||||
"hand near crotch",
|
||||
"hand in panties",
|
||||
"fingering",
|
||||
"spread legs",
|
||||
"lying",
|
||||
"on bed",
|
||||
"aroused",
|
||||
"blush",
|
||||
"nsfw"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "ffm3some_footjob_efeme3ftfe_il_1475115",
|
||||
"action_name": "Ffm3Some Footjob Efeme3Ftfe Il 1475115",
|
||||
"action": {
|
||||
"full_body": "FFM threesome scenario, one male lying on back receiving stimulation, two females sitting or reclining near his, performing a double footjob",
|
||||
"head": "females looking down at their feet, male head bathed in pleasure, expressions of focus and arousal",
|
||||
"eyes": "looking at penis, eyes closed, eye contact with male",
|
||||
"arms": "females arms resting behind them for support or on their own legs",
|
||||
"hands": "hands resting on bed sheets, gripping sheets, or touching own legs",
|
||||
"torso": "male torso exposed supine, females upper bodies leaning back or sitting upright",
|
||||
"pelvis": "hips positioned to extend legs towards the male",
|
||||
"legs": "females legs extended towards center, male legs spread or straight",
|
||||
"feet": "barefoot, soles rubbing against penis, toes curling, sandwiching penis between feet, four feet visible",
|
||||
"additional": "indoors, bed, crumpled sheets, sexual activity, multiple partners"
|
||||
"base": "ffm, threesome, 1boy, 2girls, footjob, multiple_partners, sexual_activity",
|
||||
"head": "looking_down, male focus, arousal, eyes_closed, looking_at_penis, eye_contact",
|
||||
"upper_body": "supine, bare_torso, torso_focus, arms_at_sides, reclining",
|
||||
"lower_body": "spread_legs, legs_up, legs_spread",
|
||||
"hands": "gripping_sheets, hands_on_bed, hands_on_legs",
|
||||
"feet": "barefoot, soles, toes_curling, sandwich, four_feet",
|
||||
"additional": "indoors, bed, crumpled_sheets, climax, sweaty"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "false",
|
||||
@@ -20,18 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/FFM3SOME-footjob-EFEME3ftfe-IL_1475115.safetensors",
|
||||
"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": [
|
||||
"footjob",
|
||||
"ffm",
|
||||
"threesome",
|
||||
"2girls",
|
||||
"1boy",
|
||||
"soles",
|
||||
"barefoot",
|
||||
"legs",
|
||||
"penis",
|
||||
"sexual"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1boy, 2girls, ffm, threesome",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,37 +2,23 @@
|
||||
"action_id": "ffm_threesome___kiss_and_fellatio_illustrious",
|
||||
"action_name": "Ffm Threesome Kiss And Fellatio Illustrious",
|
||||
"action": {
|
||||
"full_body": "FFM threesome composition, 1boy between 2girls, simultaneous sexual activity",
|
||||
"head": "one female kissing the male deep french kiss, second female bobbing head at crotch level",
|
||||
"eyes": "eyes closed in pleasure, half-lidded, rolling back",
|
||||
"arms": "wrapping around neck, holding head, bracing on thighs",
|
||||
"hands": "fingers tangled in hair, holding penis, guiding head, groping",
|
||||
"torso": "leaning forward, arched back, sitting upright",
|
||||
"pelvis": "kneeling, sitting on lap, hips thrust forward",
|
||||
"legs": "kneeling, spread legs, wrapped around waist",
|
||||
"feet": "arched feet, curled toes",
|
||||
"additional": "saliva trail, tongue, penis in mouth, cheek poking, blush, sweat, intimate lighting"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "false",
|
||||
"orientation": "FFM"
|
||||
"base": "ffm_threesome, 2girls, 1boy, group_sex, sandwich_position",
|
||||
"head": "kissing, fellatio, head_grab, closed_eyes, tilted_head",
|
||||
"upper_body": "arms_around_neck, hand_on_head, leaning_forward, physical_contact, messy_hair, collarbone",
|
||||
"lower_body": "kneeling, sitting, straddling, spread_legs, barefoot",
|
||||
"hands": "stroking, hand_on_penis",
|
||||
"feet": "barefoot",
|
||||
"additional": "indoor, couch, faceless_male, saliva, blush, intimate, pleasure"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/FFM_threesome_-_Kiss_and_Fellatio_Illustrious.safetensors",
|
||||
"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": [
|
||||
"ffm",
|
||||
"threesome",
|
||||
"group sex",
|
||||
"kissing",
|
||||
"fellatio",
|
||||
"blowjob",
|
||||
"2girls",
|
||||
"1boy",
|
||||
"simultaneous oral",
|
||||
"french kiss",
|
||||
"penis in mouth"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1boy, 2girls",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "ffm_threesome_doggy_style_front_view_illustrious",
|
||||
"action_name": "Ffm Threesome Doggy Style Front View Illustrious",
|
||||
"action": {
|
||||
"full_body": "threesome, 2girls, 1boy, doggy style, all fours, kneeling, from front, bodies overlapping",
|
||||
"head": "looking at viewer, head raised, blushing, sweating, tongues out",
|
||||
"eyes": "open eyes, heart-shaped pupils, eye contact",
|
||||
"arms": "arms straight, supporting weight, hands on ground",
|
||||
"hands": "palms flat, fingers spread, on bed sheet",
|
||||
"torso": "leaning forward, arched back, breasts hanging",
|
||||
"pelvis": "hips raised high, buttocks touching",
|
||||
"legs": "knees bent, kneeling, legs spread",
|
||||
"feet": "toes curled, feet relaxed",
|
||||
"additional": "sex, penetration, vaginal, motion lines, saliva trail, indoors, bed"
|
||||
"base": "threesome, 2girls, 1boy, doggy_style, from_front, all_fours, kneeling, bodies_overlapping",
|
||||
"head": "looking_at_viewer, head_raised, blushes, sweat, tongue_out, open_eyes, heart_pupils, eye_contact",
|
||||
"upper_body": "arms_straight, hands_on_ground, leaning_forward, arched_back, breasts_hanging",
|
||||
"lower_body": "hips_raised, buttocks, knees_bent, kneeling, legs_spread",
|
||||
"hands": "palms_flat, fingers_spread, on_bed",
|
||||
"feet": "toes_curled, feet_relaxed",
|
||||
"additional": "sex, penetration, vaginal_intercourse, motion_lines, saliva_trail, indoors, bed"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "false",
|
||||
@@ -20,18 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/FFM_Threesome_doggy_style_front_view_Illustrious.safetensors",
|
||||
"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": [
|
||||
"threesome",
|
||||
"2girls",
|
||||
"1boy",
|
||||
"doggy style",
|
||||
"from front",
|
||||
"all fours",
|
||||
"sex",
|
||||
"penetration",
|
||||
"blush",
|
||||
"sweat"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "2girls 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"action_id": "ffm_threesome_girl_sandwichdouble_dip_illustrious",
|
||||
"action_name": "Ffm Threesome Girl Sandwichdouble Dip Illustrious",
|
||||
"action": {
|
||||
"base": "ffm_threesome, 2girls, 1boy, sandwiched, bed, messy_bed",
|
||||
"head": "ahegao, flushed, closed_eyes, rolled_back_eyes, looking_at_viewer",
|
||||
"upper_body": "embracing, cleavage, breasts_pressed_together, holding_bed_sheet",
|
||||
"lower_body": "straddling, legs_spread, pelvis_against_pelvis, implied_penetration",
|
||||
"hands": "grabbing_sheet, touching_partner",
|
||||
"feet": "barefoot",
|
||||
"additional": "group_sex, orgasm, erotic, indoors"
|
||||
},
|
||||
"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": {
|
||||
"participants": "1boy, 2girls",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,39 +2,23 @@
|
||||
"action_id": "ffm_threesome_one_girl_on_top_and_bj",
|
||||
"action_name": "Ffm Threesome One Girl On Top And Bj",
|
||||
"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",
|
||||
"head": "heads close together, expressions of pleasure, mouth open, blushing",
|
||||
"eyes": "rolled back, heart-shaped pupils, closed eyes, looking down",
|
||||
"arms": "reaching out, holding hips, caressing face, resting on bed",
|
||||
"hands": "gripping waist, holding hair, touching chest",
|
||||
"torso": "arching back, leaning forward, sweat on skin, bare skin",
|
||||
"pelvis": "interlocking hips, straddling, grinding motion",
|
||||
"legs": "kneeling, spread wide, bent at knees",
|
||||
"feet": "toes curled, resting on mattress",
|
||||
"additional": "bedroom setting, crumpled sheets, intimate atmosphere, soft lighting"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "false",
|
||||
"orientation": "FFM"
|
||||
"base": "ffm_threesome, cowgirl_position, straddling, lying, on_back",
|
||||
"head": "blush, half-closed_eyes, heavy_breathing, open_mouth",
|
||||
"upper_body": "nude, breasts",
|
||||
"lower_body": "legs_apart, straddling, kneeling, bent_legs",
|
||||
"hands": "hands_on_body, touching_self",
|
||||
"feet": "barefoot",
|
||||
"additional": "fellatio, penis, testicles, multiple_girls, 2girls, 1boy, sex"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/FFM_threesome_one_girl_on_top_and_BJ.safetensors",
|
||||
"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": [
|
||||
"2girls",
|
||||
"1boy",
|
||||
"ffm",
|
||||
"threesome",
|
||||
"cowgirl",
|
||||
"fellatio",
|
||||
"woman on top",
|
||||
"sex",
|
||||
"vaginal",
|
||||
"oral",
|
||||
"group sex",
|
||||
"lying on back",
|
||||
"nude"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy 1girl",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "ffmnursinghandjob_ill_v3",
|
||||
"action_name": "Ffmnursinghandjob Ill V3",
|
||||
"action": {
|
||||
"full_body": "threesome, 2girls, 1boy, ffm, male lying on back, two females kneeling or straddling",
|
||||
"head": "blushing faces, looking down, ecstatic expressions, tongue out",
|
||||
"eyes": "half-closed eyes, heart-shaped pupils, looking at penis",
|
||||
"arms": "holding breasts, offering breast, reaching for penis",
|
||||
"hands": "double handjob, stroking penis, squeezing breasts",
|
||||
"torso": "exposed breasts, leaning forward, nipples visible",
|
||||
"pelvis": "hips positioned near male's face or chest",
|
||||
"legs": "kneeling, spread legs",
|
||||
"base": "threesome, 2girls, 1boy, ffm, male_lying_on_back, females_kneeling, straddle",
|
||||
"head": "blush, looking_down, ecstatic, tongue_out, half-closed_eyes, heart-shaped_pupils, looking_at_penis",
|
||||
"upper_body": "holding_breasts, reaching_for_penis, exposed_breasts, leaning_forward, nipples",
|
||||
"lower_body": "kneeling, spread_legs, phallus_straddle",
|
||||
"hands": "double_handjob, stroking_penis, squeezing_breasts",
|
||||
"feet": "barefoot",
|
||||
"additional": "lactation, breast milk, saliva string, messy"
|
||||
"additional": "lactation, breast_milk, saliva, mess"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "false",
|
||||
@@ -20,20 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/ffmNursingHandjob_ill_v3.safetensors",
|
||||
"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": [
|
||||
"threesome",
|
||||
"2girls",
|
||||
"1boy",
|
||||
"ffm",
|
||||
"handjob",
|
||||
"double_handjob",
|
||||
"nursing",
|
||||
"breast_feeding",
|
||||
"lactation",
|
||||
"breast_milk",
|
||||
"big_breasts",
|
||||
"kneeling"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1boy, 2girls, threesome",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "finish_blow_ill_v0_90_000004",
|
||||
"action_name": "Finish Blow Ill V0 90 000004",
|
||||
"action": {
|
||||
"full_body": "highly dynamic combat pose, delivering a final powerful strike, lunging forward or mid-air jump",
|
||||
"head": "intense battle expression, shouting or gritted teeth, hair flowing with motion",
|
||||
"eyes": "fierce gaze, focused on target, angry eyes",
|
||||
"arms": "swinging wildy, outstretched with weapon, motion blur on limbs",
|
||||
"hands": "tightly gripping weapon, two-handed grip, or clenched fist",
|
||||
"torso": "twisted torso for momentum, leaning into the attack",
|
||||
"pelvis": "hips rotated to generate power, low center of gravity",
|
||||
"legs": "wide stance, knees bent, dynamic foreshortening",
|
||||
"feet": "planted firmly on ground or pointed in air, debris kicks up",
|
||||
"additional": "light trails, speed lines, impact effects, shockwaves, cinematic lighting, dutch angle, weapon smear"
|
||||
"base": "dynamic_pose, fighting_stance, lunging, aerial_pose, mid-air",
|
||||
"head": "intense_expression, screaming, gritted_teeth, flowing_hair, fierce_eyes, glare",
|
||||
"upper_body": "weapon_swing, motion_blur, torso_twist, dynamic_angle",
|
||||
"lower_body": "wide_stance, knees_bent, rotated_hips, foreshortening",
|
||||
"hands": "grip, clenched_hand, holding_weapon, two-handed_weapon",
|
||||
"feet": "standing_on_ground, mid-air",
|
||||
"additional": "speed_lines, impact_frames, shockwave, cinematic_lighting, dutch_angle, smear_frame"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,14 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/finish_blow_ill_v0.90-000004.safetensors",
|
||||
"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": [
|
||||
"action shot",
|
||||
"fighting",
|
||||
"masterpiece",
|
||||
"motion blur",
|
||||
"intense",
|
||||
"cinematic composition"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": false
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "fixed_perspective_v3_1558768",
|
||||
"action_name": "Fixed Perspective V3 1558768",
|
||||
"action": {
|
||||
"full_body": "Character positioned with exaggerated depth, utilizing strong foreshortening to create a 3D effect aimed at the viewer",
|
||||
"head": "Face centered and close to the camera, looking directly at the viewer",
|
||||
"eyes": "Intense eye contact, detailed eyes",
|
||||
"arms": "One or both arms reaching towards the lens, appearing larger due to perspective",
|
||||
"hands": "Enlarged hands/fingers reaching out (foreshortened)",
|
||||
"torso": "Angled to recede into the background",
|
||||
"pelvis": "Visually smaller, further back",
|
||||
"legs": "Trailing off into the distance, significantly smaller than the upper body",
|
||||
"feet": "Small or out of frame due to depth",
|
||||
"additional": "Fisheye lens effect, dramatic camera angle, depth of field, high distortion, 3D composition"
|
||||
"base": "foreshortening, exaggerated_perspective, depth, 3d, cinematic_composition",
|
||||
"head": "extreme_close_up, looking_at_viewer, eye_contact, detailed_eyes, face_focus",
|
||||
"upper_body": "reaching_towards_viewer, hand_in_foreground, perspective_distortion, angled_body",
|
||||
"lower_body": "diminutive, distant, perspective_shift",
|
||||
"hands": "enlarged_hand, fingers_spread, reaching, holding_frame",
|
||||
"feet": "",
|
||||
"additional": "fisheye, low_angle, depth_of_field, wide_angle_lens, distortion"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,15 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/fixed_perspective_v3_1558768.safetensors",
|
||||
"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": [
|
||||
"foreshortening",
|
||||
"perspective",
|
||||
"fisheye",
|
||||
"reaching",
|
||||
"dynamic angle",
|
||||
"portrait",
|
||||
"depth of field"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": false
|
||||
}
|
||||
}
|
||||
@@ -2,33 +2,23 @@
|
||||
"action_id": "fixed_point_v2",
|
||||
"action_name": "Fixed Point V2",
|
||||
"action": {
|
||||
"full_body": "standing, assertive posture, foreshortening effect on the arm",
|
||||
"head": "facing viewer, chin slightly tucked or tilted confidentially",
|
||||
"eyes": "looking at viewer, focused gaze, winking or intense stare",
|
||||
"arms": "arm extended forward towards the camera, elbow straight or slightly bent",
|
||||
"hands": "finger gun, pointing, index finger extended, thumb raised, hand gesture",
|
||||
"torso": "facing forward, slight rotation to align with the pointing arm",
|
||||
"pelvis": "neutral standing position",
|
||||
"legs": "standing, hip width apart",
|
||||
"feet": "grounded",
|
||||
"additional": "depth of field, focus on hand, perspective usually from front"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "kneeling, on_floor, indoors, bedroom",
|
||||
"head": "looking_at_viewer, open_eyes",
|
||||
"upper_body": "leaning_on_bed, torso_facing_viewer",
|
||||
"lower_body": "kneeling, legs_together",
|
||||
"hands": "hands_resting",
|
||||
"feet": "barefoot",
|
||||
"additional": "fxdpt, wide_shot, room_interior"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/fixed_point_v2.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "fixed_point_v2"
|
||||
"lora_weight": 0.8,
|
||||
"lora_triggers": "fxdpt, full room view",
|
||||
"lora_weight_min": 0.8,
|
||||
"lora_weight_max": 0.8
|
||||
},
|
||||
"tags": [
|
||||
"gesture",
|
||||
"finger gun",
|
||||
"pointing",
|
||||
"aiming",
|
||||
"looking at viewer",
|
||||
"foreshortening",
|
||||
"bang"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": false
|
||||
}
|
||||
}
|
||||
@@ -2,33 +2,23 @@
|
||||
"action_id": "flaccid_after_cum_illustrious_000009",
|
||||
"action_name": "Flaccid After Cum Illustrious 000009",
|
||||
"action": {
|
||||
"full_body": "lying on back, limp pose, completely spent, relaxed muscles, spread eagle",
|
||||
"head": "head tilted back, mouth open, tongue hanging out, messy hair, heavy breathing",
|
||||
"eyes": "half-closed eyes, eyes rolled back, glassy eyes, ahegao",
|
||||
"arms": "arms spread wide, limp arms, resting on surface",
|
||||
"hands": "loosely open hands, twitching fingers",
|
||||
"torso": "heaving chest, sweating skin, relaxed abdomen",
|
||||
"pelvis": "exposed, hips flat on surface",
|
||||
"legs": "legs spread wide, m-legs, knees bent and falling outward",
|
||||
"feet": "toes curled",
|
||||
"additional": "covered in white liquid, messy body, bodily fluids, after sex, exhaustion, sweat drops"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
"orientation": "MF"
|
||||
"base": "post-coital, exhausted, lying, bed",
|
||||
"head": "flushed_face, eyes_rolled_back, messy_hair, half-closed_eyes, expressionless",
|
||||
"upper_body": "sweaty, bare_chest, heaving_chest",
|
||||
"lower_body": "flaccid_penis, soft_penis, semen, legs_spread",
|
||||
"hands": "relaxed_hands",
|
||||
"feet": "relaxed_feet",
|
||||
"additional": "messy_bed, steam"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Flaccid_After_Cum_Illustrious-000009.safetensors",
|
||||
"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": [
|
||||
"lying",
|
||||
"sweat",
|
||||
"blush",
|
||||
"open mouth",
|
||||
"bodily fluids",
|
||||
"spread legs",
|
||||
"ahegao"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "fleshlight_position_doggystyle_dangling_legs_sex_from_behind_hanging_legs_ponyilsdsdxl",
|
||||
"action_name": "Fleshlight Position Doggystyle Dangling Legs Sex From Behind Hanging Legs Ponyilsdsdxl",
|
||||
"action": {
|
||||
"full_body": "doggystyle, sex from behind, hanging legs, vaginal",
|
||||
"head": "facing down or looking back over shoulder",
|
||||
"eyes": "half-closed or expression of pleasure",
|
||||
"arms": "supporting upper body weight, elbows often bent",
|
||||
"hands": "gripping the sheets or resting flat on the surface",
|
||||
"torso": "prone, leaning forward, back deeply arched",
|
||||
"pelvis": "elevated and pushed back to the edge of the surface",
|
||||
"legs": "dangling down off the edge, knees slightly bent, not supporting weight",
|
||||
"feet": "hanging freely, toes connecting with nothing, off the ground",
|
||||
"additional": "on edge of bed, precarious balance, from behind perspective"
|
||||
"base": "doggystyle, sex, vaginal, from_behind, hanging_legs",
|
||||
"head": "looking_back, expressionless, open_mouth, closed_eyes",
|
||||
"upper_body": "arched_back, leaning_forward, elbows_on_bed",
|
||||
"lower_body": "raised_hips, legs_dangling, dangling",
|
||||
"hands": "hands_on_bed, gripping_bedclothes",
|
||||
"feet": "barefoot, curled_toes",
|
||||
"additional": "on_bed, from_behind, sex_position"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,18 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Fleshlight_Position_Doggystyle_Dangling_Legs_Sex_From_Behind_Hanging_Legs_PonyILSDSDXL.safetensors",
|
||||
"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": [
|
||||
"doggystyle",
|
||||
"dangling legs",
|
||||
"hanging legs",
|
||||
"edge of bed",
|
||||
"prone",
|
||||
"arched back",
|
||||
"from behind",
|
||||
"raised hips",
|
||||
"feet off ground",
|
||||
"sex act"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "folded_xl_illustrious_v1_0",
|
||||
"action_name": "Folded Xl Illustrious V1 0",
|
||||
"action": {
|
||||
"full_body": "Character standing in a confident or defensive posture with weight shifted to one side",
|
||||
"head": "Chin slightly raised, facing the viewer directly",
|
||||
"eyes": "Sharp gaze, expressing confidence, skepticism, or annoyance",
|
||||
"arms": "Both arms crossed firmly over the chest (folded arms)",
|
||||
"hands": "Hands tucked under the biceps or grasping the opposite upper arm",
|
||||
"torso": "Upright posture, chest slightly expanded",
|
||||
"pelvis": "Hips slightly cocked to one side for attitude",
|
||||
"legs": "Standing straight, legs apart or one knee relaxed",
|
||||
"feet": "Planted firmly on the ground",
|
||||
"additional": "Often implies an attitude of arrogance, patience, or defiance"
|
||||
"base": "standing, crossed_arms, posture",
|
||||
"head": "looking_at_viewer, chin_up, confident_expression, skeptical_expression, annoyed",
|
||||
"upper_body": "crossed_arms",
|
||||
"lower_body": "standing, hip_cocked",
|
||||
"hands": "hands_on_upper_arms",
|
||||
"feet": "feet_together, standing",
|
||||
"additional": "arrogance, defiance"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,15 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Folded XL illustrious V1.0.safetensors",
|
||||
"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": [
|
||||
"crossed arms",
|
||||
"standing",
|
||||
"confident",
|
||||
"attitude",
|
||||
"looking at viewer",
|
||||
"skeptical",
|
||||
"upper body"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "solo",
|
||||
"nsfw": false
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@
|
||||
"action_id": "forced_cunnilingus",
|
||||
"action_name": "Forced Cunnilingus",
|
||||
"action": {
|
||||
"full_body": "female lying on back, legs spread wide, partner positioning head between legs performing oral sex",
|
||||
"head": "head tilted back, blushing, expression of distress or shock, mouth slightly open",
|
||||
"eyes": "teary eyes, squeezed shut or looking away",
|
||||
"arms": "arms pinned above head or held down against surface",
|
||||
"hands": "clenched fists, wrists held",
|
||||
"torso": "arched back, chest heaving",
|
||||
"pelvis": "hips lifted slightly, exposed crotch",
|
||||
"legs": "legs spread, m-legs, knees bent, thighs held apart by partner",
|
||||
"feet": "toes curled in tension",
|
||||
"additional": "cunnilingus, saliva trail, partner's head buried in crotch, struggle, non-consensual undertones"
|
||||
"base": "cunnilingus, oral_sex, lying_on_back, legs_spread, partner_positioning, 1girl, 1boy",
|
||||
"head": "head_tilted_back, blushing, distressed, tears, mouth_open, looking_away, teary_eyes",
|
||||
"upper_body": "arms_pinned, arched_back, chest_heaving",
|
||||
"lower_body": "hips_lifted, spread_legs, m_legs, knees_bent, exposed_crotch",
|
||||
"hands": "clenched_hands, held_wrists",
|
||||
"feet": "curled_toes",
|
||||
"additional": "saliva, head_between_thighs, struggle, non-consensual"
|
||||
},
|
||||
"participants": {
|
||||
"solo_focus": "true",
|
||||
@@ -20,19 +17,12 @@
|
||||
"lora": {
|
||||
"lora_name": "Illustrious/Poses/Forced_cunnilingus.safetensors",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": "Forced_cunnilingus"
|
||||
"lora_triggers": "Forced_cunnilingus",
|
||||
"lora_weight_min": 1.0,
|
||||
"lora_weight_max": 1.0
|
||||
},
|
||||
"tags": [
|
||||
"cunnilingus",
|
||||
"oral sex",
|
||||
"lying on back",
|
||||
"legs spread",
|
||||
"legs held",
|
||||
"pinned down",
|
||||
"distressed",
|
||||
"blushing",
|
||||
"crying",
|
||||
"vaginal",
|
||||
"sex act"
|
||||
]
|
||||
"tags": {
|
||||
"participants": "1girl 1boy",
|
||||
"nsfw": true
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user