本文へ移動
cccskills
無料GitHub で公開

qwen21-nsfw-pose

Use when generating sexy/NSFW or posed images with local Qwen-Image 2.1 — pose/NSFW LoRAs (tawsLoRa femaledVaginus, TheseAlpacas, posture-v3), pose transfer from an existing image, or exact pose control via VNCCS PoseStudio 3D pose library. Triggers: 性感姿势, 摆姿势, NSFW 出图, 换姿势, 姿势控制, pose transfer, pose lora, VNCCS, 人偶姿势, 姿势库. Independent of any general image-generation skill (which handles SFW text/edit/cutout work).

インストール方法を見る

含まれるファイル(141)

  • SKILL.md19.8 KB
  • .github/workflows/validate.yml474 B
  • .gitignore38 B
  • downloads/samples/comfy_145231547.json48.0 KB
  • downloads/samples/comfy_145233010.json48.9 KB
  • downloads/samples/comfy_145340251.json367.0 KB
  • downloads/samples/phase5_meta.json4.3 KB
  • downloads/samples/taws_v13_massage_author.jpg9.0 MB
  • downloads/samples/taws_v13_shower_author.jpg10.4 MB
  • downloads/samples/thesealpacas_v2_selfie_author.jpg2.5 MB
  • install/setup.md7.4 KB
  • pose_library/local_user_poses/Uncategorized/1.json18.7 KB
  • pose_library/local_user_poses/Uncategorized/1.webp20.3 KB
  • pose_library/local_user_poses/Uncategorized/Bent over toe touch profile.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Bent over toe touch profile.webp17.1 KB
  • pose_library/local_user_poses/Uncategorized/Boxing Stance.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Boxing Stance.webp13.3 KB
  • pose_library/local_user_poses/Uncategorized/Crawling rear.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Crawling rear.webp0 B
  • pose_library/local_user_poses/Uncategorized/Crawling.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Crawling.webp20.3 KB
  • pose_library/local_user_poses/Uncategorized/Feet Apart profile.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Feet Apart profile.webp10.7 KB
  • pose_library/local_user_poses/Uncategorized/feet apart rear.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/feet apart rear.webp10.7 KB
  • pose_library/local_user_poses/Uncategorized/Feet Apart.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Feet Apart.webp0 B
  • pose_library/local_user_poses/Uncategorized/Fetal overhead.json18.7 KB
  • pose_library/local_user_poses/Uncategorized/Fetal overhead.webp22.2 KB
  • pose_library/local_user_poses/Uncategorized/Fetal rear.json18.7 KB
  • pose_library/local_user_poses/Uncategorized/Fetal rear.webp0 B
  • pose_library/local_user_poses/Uncategorized/Fighting Straight Punch.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Fighting Straight Punch.webp0 B
  • pose_library/local_user_poses/Uncategorized/forward step.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/forward step.webp10.1 KB
  • pose_library/local_user_poses/Uncategorized/Jumping.json18.7 KB
  • pose_library/local_user_poses/Uncategorized/Jumping.webp13.6 KB
  • pose_library/local_user_poses/Uncategorized/Kicking.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Kicking.webp15.4 KB
  • pose_library/local_user_poses/Uncategorized/knee raised profile.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/knee raised profile.webp10.8 KB
  • pose_library/local_user_poses/Uncategorized/Kneeling Forward on Hands.json18.9 KB
  • pose_library/local_user_poses/Uncategorized/Kneeling Forward on Hands.webp18.5 KB
  • pose_library/local_user_poses/Uncategorized/Kneeling Leaning Back.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Kneeling Leaning Back.webp21.3 KB
  • pose_library/local_user_poses/Uncategorized/Kneeling Legs Apart.json19.0 KB
  • pose_library/local_user_poses/Uncategorized/Kneeling Legs Apart.webp17.8 KB
  • pose_library/local_user_poses/Uncategorized/Kneeling overhead.json18.9 KB
  • pose_library/local_user_poses/Uncategorized/Kneeling overhead.webp23.5 KB
  • pose_library/local_user_poses/Uncategorized/Kneeling side.json19.4 KB
  • pose_library/local_user_poses/Uncategorized/Kneeling side.webp19.4 KB
  • pose_library/local_user_poses/Uncategorized/Kneeling.json19.1 KB
  • pose_library/local_user_poses/Uncategorized/Kneeling.webp15.7 KB
  • pose_library/local_user_poses/Uncategorized/Laying Back Knees Spread Apart.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Laying Back Knees Spread Apart.webp23.0 KB
  • pose_library/local_user_poses/Uncategorized/Laying Back Knees Up Together.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Laying Back Knees Up Together.webp19.2 KB
  • pose_library/local_user_poses/Uncategorized/Laying Back Legs Akimbo.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Laying Back Legs Akimbo.webp19.1 KB
  • pose_library/local_user_poses/Uncategorized/Laying Back Legs Crossed.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Laying Back Legs Crossed.webp17.2 KB
  • pose_library/local_user_poses/Uncategorized/Laying Back Legs Spread.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Laying Back Legs Spread.webp16.9 KB
  • pose_library/local_user_poses/Uncategorized/Laying on Back.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Laying on Back.webp17.3 KB
  • pose_library/local_user_poses/Uncategorized/Leaning Back legs spread.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Leaning Back legs spread.webp22.0 KB
  • pose_library/local_user_poses/Uncategorized/Legs Crosed.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Legs Crosed.webp10.4 KB
  • pose_library/local_user_poses/Uncategorized/Prone Feet Up profile.json18.7 KB
  • pose_library/local_user_poses/Uncategorized/Prone Feet Up profile.webp21.2 KB
  • pose_library/local_user_poses/Uncategorized/Prone Legs Up Side.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Prone Legs Up Side.webp22.1 KB
  • pose_library/local_user_poses/Uncategorized/Prone on Knees side.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Prone on Knees side.webp17.8 KB
  • pose_library/local_user_poses/Uncategorized/Prone.json18.7 KB
  • pose_library/local_user_poses/Uncategorized/Prone.webp20.9 KB
  • pose_library/local_user_poses/Uncategorized/raised foot.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/raised foot.webp11.2 KB
  • pose_library/local_user_poses/Uncategorized/Seated on Floor.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Seated on Floor.webp18.0 KB
  • pose_library/local_user_poses/Uncategorized/Sitting legs crossed.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Sitting legs crossed.webp17.7 KB
  • pose_library/local_user_poses/Uncategorized/sitting up on side.json18.7 KB
  • pose_library/local_user_poses/Uncategorized/sitting up on side.webp16.7 KB
  • pose_library/local_user_poses/Uncategorized/Squatting Forward on Hands.json19.0 KB
  • pose_library/local_user_poses/Uncategorized/Squatting Forward on Hands.webp15.8 KB
  • pose_library/local_user_poses/Uncategorized/Squatting Leaning Back.json18.9 KB
  • pose_library/local_user_poses/Uncategorized/Squatting Leaning Back.webp0 B
  • pose_library/local_user_poses/Uncategorized/Squatting Leg Extended.json18.9 KB
  • pose_library/local_user_poses/Uncategorized/Squatting Leg Extended.webp16.7 KB
  • pose_library/local_user_poses/Uncategorized/Squatting Legs Spread.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Squatting Legs Spread.webp20.9 KB
  • pose_library/local_user_poses/Uncategorized/Squatting overhead.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Squatting overhead.webp16.1 KB
  • pose_library/local_user_poses/Uncategorized/Squatting rear.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Squatting rear.webp16.5 KB
  • pose_library/local_user_poses/Uncategorized/Squatting side.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Squatting side.webp14.6 KB
  • pose_library/local_user_poses/Uncategorized/Squatting.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Squatting.webp13.1 KB
  • pose_library/local_user_poses/Uncategorized/Standing Hand on Hip.json18.7 KB
  • pose_library/local_user_poses/Uncategorized/Standing Hand on Hip.webp12.3 KB
  • pose_library/local_user_poses/Uncategorized/Standing Leaning Back.json18.7 KB
  • pose_library/local_user_poses/Uncategorized/Standing Leaning Back.webp13.0 KB
  • pose_library/local_user_poses/Uncategorized/Standing Leaning Forward.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Standing Leaning Forward.webp14.2 KB
  • pose_library/local_user_poses/Uncategorized/Standing One Hand on Hip 2.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Standing One Hand on Hip 2.webp13.3 KB
  • pose_library/local_user_poses/Uncategorized/Standing One Leg Up.json18.7 KB
  • pose_library/local_user_poses/Uncategorized/Standing One Leg Up.webp12.7 KB
  • pose_library/local_user_poses/Uncategorized/standing profile right.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/standing profile right.webp9.1 KB
  • pose_library/local_user_poses/Uncategorized/Standing profile.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Standing profile.webp9.9 KB
  • pose_library/local_user_poses/Uncategorized/standing rear.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/standing rear.webp9.8 KB
  • pose_library/local_user_poses/Uncategorized/Standing.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Standing.webp10.2 KB
  • pose_library/local_user_poses/Uncategorized/Walking profile.json18.8 KB
  • pose_library/local_user_poses/Uncategorized/Walking profile.webp11.5 KB
  • prompts/taws_v13_massage.params.json247 B
  • prompts/taws_v13_massage.txt1.2 KB
  • prompts/taws_v13_shower.params.json314 B
  • prompts/taws_v13_shower.txt1.4 KB
  • prompts/thesealpacas_v2_selfie.params.json318 B
  • prompts/thesealpacas_v2_selfie.txt507 B
  • README.md5.0 KB
  • references/pose_examples/01_seaside.png3.3 MB
  • references/pose_examples/01b_seaside_lora.png3.1 MB
  • references/pose_examples/06_l2_squat_lowangle.png3.0 MB
  • references/src_standing.png1.2 MB
  • scripts/build_phase5_sheet.py2.9 KB
  • scripts/media_lock.py2.5 KB
  • scripts/qwen_pose_test.py11.7 KB
  • scripts/run_phase5.py2.6 KB
  • scripts/run_vnccs_ui.py12.1 KB
  • scripts/validate_package.py2.6 KB
  • workflows/qwen21_edit.json1.6 KB
  • workflows/qwen21_t2i.json1.6 KB
  • workflows/VNCCS_PoseStudio_QI2.1.json42.0 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Qwen-Image 2.1 NSFW / Pose Pipeline

Local photorealistic NSFW + pose control: ComfyUI + Qwen-Image 2.1 (int8 convrot)

  • NSFW LoRAs + a 136-pose VNCCS 3D pose library.

Path convention: everything in this skill is relative to the skill root (this directory). Scripts in scripts/, workflow graphs in workflows/, author prompts in prompts/, reference images in references/, author sample data (originals + metadata) in downloads/samples/. ComfyUI-side locations (models, LoRAs, pose library) are configurable via env vars — see install/setup.md and §2. The default host for ComfyUI is http://127.0.0.1:8188 (override with COMFYUI_URL).

This file is self-contained: setup, recipe, pose selection, and a first-run author case are all inside.

0. First run — follow the author's case (recommended)

The fastest way to trust the pipeline is re-running the author's own sample prompt and comparing against the author's published image (verified 2026-10-12):

python3 scripts/qwen_pose_test.py \
  --mode t2i --name author_case_shower \
  --prompt "$(cat prompts/taws_v13_shower.txt)" \
  --seed 80964 \
  --steps 50 --cfg 2.5 --sampler er_sde --scheduler beta \
  --width 1152 --height 1728 \
  --lora "qwen2_1-femaledVaginus-nsfw-v1_3-fine_L22-31.safetensors" \
  --lora-strength 1.0 \
  --out outputs/author_case/shower.png
  • Other cases: prompts/taws_v13_massage.txt (30 steps, same seed, per its .params.json) and prompts/thesealpacas_v2_selfie.txt (CFG 4.0 + thesealpacas-nsfw-v2 @0.8; its .txt ends with a [negative] section — pass that to --negative).
  • Author originals to compare against: downloads/samples/*_author.jpg (shower / massage / selfie). Full author metadata (prompts/params/seed/ complete ComfyUI graph) in downloads/samples/phase5_meta.json.

1. Routing

RequestRouteTool
New sexy/NSFW image from a text idea① T2I + NSFW LoRA (mandatory)scripts/qwen_pose_test.py --mode t2i
Change pose of an existing character image (keep face/clothes)② Editscripts/qwen_pose_test.py --mode edit
Exact pose from the 3D pose library (136 poses)④ VNCCS PoseStudioscripts/run_vnccs_ui.py (browser automation)
Do NOT use: a plain photo as pose reference — the model composites it as a second person or ignores it (tested)

Outputs land under ./outputs/ (the scripts create directories as needed).

2. Setup — what this package contains and what to install

2.1 In this package

PathContent
SKILL.mdthis file
scripts/qwen_pose_test.py (routes ①②), run_vnccs_ui.py (route ④), run_phase5.py + build_phase5_sheet.py (case re-run & comparison sheet), media_lock.py (shared media lock, bundled), validate_package.py (offline package integrity check)
workflows/qwen21_t2i.json, qwen21_edit.json (official Qwen-Image 2.1 graphs), VNCCS_PoseStudio_QI2.1.json
prompts/the 3 author prompts + .params.json (the exact local-test settings)
references/pose_examples/ (L0/L1/L2 seaside examples), src_standing.png (default character for route ④)
downloads/samples/author originals *_author.jpg (shower/massage/selfie) + phase5_meta.json (prompt, params, seed, complete graph JSONs) + the 3 raw ComfyUI graph files — used by scripts/run_phase5.py & build_phase5_sheet.py
pose_library/local_user_poses/Uncategorized/55 curated extra pose JSONs + previews — copy into ComfyUI's PoseLibrary/local_user_poses/Uncategorized/ after installing the node
install/setup.mdfull install guide (models, LoRAs, node, pose repos, commands)

2.2 ComfyUI-side dependencies (see install/setup.md for exact commands)

  • Base models (3 files) from HF Comfy-Org/Qwen-Image-2.1: diffusion_models/qwen_image_2.1_int8_convrot.safetensors, text_encoders/qwen3vl_8b_int8_convrot.safetensors, vae/qwen_image_2.1_vae_bf16.safetensors — into the ComfyUI model dirs.
  • LoRAs (into ComfyUI models/loras/):
File (size)UseSource
qwen2_1-femaledVaginus-nsfw-v1_3-fine_L22-31.safetensors (608M)default: anatomy + pose, sharpestCivitai model 2986844 — tawsLoRa "Qwen Image 2.1 - FemaledVaginus-NSFW"
qwen2_1-femaledVaginus-nsfw-v1.3-fine.safetensors (608M)same family, v1.3Civitai model 2986844
thesealpacas-nsfw-v2.safetensors (79.7M)most reveal, "influencer" face driftCivitai model 2958918
nsfw-posture-v3.safetensors (84M)strongest pose/body emphasisCivitai model 2988215
qwen21-nsfw-image-edit.safetensors (84M)edit-route undress/pose changesHF RunningHubAI/Qwen-Image-2.1-NSFW-Image-Edit (mirror of oreolove "Nude Edit"; original Civitai page delisted)
VNCCS_QI2_PoseStudioV1.1.safetensors (159M)only for route ④HF MIUProject/VNCCS_PoseStudio_QI2.1 (same repo as the workflow JSON)
  • VNCCS_Utils custom node: https://github.com/AHEKOT/ComfyUI_VNCCS_Utils → clone into ComfyUI/custom_nodes/, then restart ComfyUI once.
  • Pose library: 4 HuggingFace repos (the public catalog as of 2026-10-12): Totemistyk/General_Poses_PoseStudio (50), Totemistyk/Ballet_PoseStudio (3 in manifest; the repo actually ships 58 — register + refresh, then copy this package's 55 curated extras into local_user_poses/Uncategorized/), MIUProject/VNCCS_PoseLibrary_Main (16), MIUProject/MySuperPoseRepo (12). Register: curl -X POST 127.0.0.1:8188/vnccs/pose_library/repositories/add -d '{"repo_id":"<owner>/<repo>"}'. Total after setup: 136. A repo refresh deletes local files not in the remote manifest — extra/ curated poses belong in PoseLibrary/local_user_poses/<Category>/ (always listed, never auto-cleaned). Pose list API: GET /vnccs/pose_library/list.
  • Route ④ extras: any CDP Chrome (default 127.0.0.1:18800) + browser_client.py + playwright. On the original host these live in ~/.openclaw/tools/browser/; elsewhere point run_vnccs_ui.py at an equivalent CDP endpoint (it only needs connect_sync(playwright) to return a browser with one context — a minimal stand-in is fine).
  • media_lock: bundled in scripts/; both scripts import it first from the package, then fall back to ~/.openclaw/tools.

The base model is qwen_image_2.1_int8_convrot.safetensors — the same model the Civitai authors of these LoRAs used, so their published prompts/params transfer well. (Note: one of the three author samples actually ran on a different base with 5 stacked LoRAs; we reproduced it with the single thesealpacas-v2 LoRA on the convrot base — see Parameter provenance below.)

Download tips (verified): Civitai via the official CLI or curl -H "Authorization: Bearer <token>" <file-url>; HuggingFace via hf-mirror.com directly (no proxy — a proxy causes SSL_ERROR).

3. Route ① — T2I (the "author recipe", validated 2026-10-12)

3.1 Mandatory recipe — do not weaken silently

This recipe reproduces Civitai showcase-level results. All of the following are part of the recipe; a deviation changes the result and must be told to the user:

  • Sampler er_sde + scheduler beta (not euler/simple)
  • CFG 2.5 (the A1 reference; 2.5–4 works, CFG 1 starves the LoRA)
  • Steps = the reference sample's value: 50 (A1 provenance, table below)
  • Size 1152×1728 portrait 2:3 (--width 1152 --height 1728); keep --resolution 1024 (that flag feeds TextEncodeQwenImage21, it is not pixel size)
  • A LoRA is always on for route ①. Default: qwen2_1-femaledVaginus-nsfw-v1_3-fine_L22-31.safetensors @ 1.0
  • The prompt is the main lever — it must follow the author structure (§3.2) at the author's density (300–1500 characters, explicit terms). Short/keyword prompts and SFW-generic phrasing are what make output look bland.
  • Pass the reference sample's seed when you claim "reproduction" (A1 seed = 80964). The harness default seed (424242) is fine for new creative runs but must not be labelled as the author's result.

Parameter provenance (source: scripts/run_phase5.py + each run's *.png.json):

Run recordStepsCFGSeedLoRA strength (local test)
A1 shower (primary reference)502.5809641.0
A2 massage (separate sample)302.5809641.0
B1 selfie504.01248808447575610.8 (thesealpacas-v2)
C1 control502.580964no LoRA

Preserve each sample's settings as a unit; do not mix one sample's prompt with another sample's params and present it as "the author recipe".

3.2 Prompt structure (copy the pattern, fill the scene)

The working prompts all contain, in this order — write all 7, no omissions:

  1. Camera: "A hyper-realistic photograph / low-angle shot / top-down overhead shot", lens and angle
  2. Subject: age, build, hair (color, wet/dry, placement)
  3. Pose: pick one from the pose ladder (§4) and spell out each limb (which leg bent, where the hands are, what the head/gaze does)
  4. Setting + lighting: "warm steamy light", "neon bokeh", "soft morning light through sheer curtains"
  5. Skin: "glistening", "visible pores", "natural skin texture", "slick oily sheen"
  6. Anatomy/reveal where desired — the LoRAs were trained on explicit terms (e.g. "labia majora ... innie distinctly visible"); generic words ("seductive") do almost nothing
  7. Finish: "8k resolution, cinematic lighting, candid 'caught in the moment' atmosphere, photorealistic anatomy"

Template (a real author prompt runs 300–1500 chars):

A hyper-realistic, {camera} shot {subject with age/build/hair state},
{one pose from §4, limb by limb}. {Setting + lighting}. Her skin is
{glistening/visible pores/slick oily sheen}. {explicit anatomy/reveal wording}.
{face/expression}. 8k resolution, cinematic lighting, candid "caught in the
moment" atmosphere, photorealistic anatomy.

Before writing, load a verified author prompt and rewrite it for your scene — prompts/*.txt (+ matching .params.json). Writing from scratch is what makes results look generic.

3.3 Deviations — tell, don't silently do it

If the user asks for a shorter prompt, a SFW-generic prompt, "no LoRA", fewer steps, or a different sampler — and if you (the agent) ever need to deviate from the recipe for any reason (model refuses a token, out-of-memory, etc.): say the expected cost out loud, show the evidence, and proceed only after confirmation. Never present a weakened run as "the recipe's result"; label what was changed next to the delivered image. Evidence to cite:

  • True controlled experiment (single variable = LoRA): C1 (author prompt, 50 steps, seed 80964, no LoRA) vs A1 (identical prompt/params + LoRA): no-LoRA still looks showcase-grade as a photograph, but the LoRA is what adds the skin/gloss/anatomy detail the author's images have. So "no LoRA" ≈ "good photograph, not the author's texture".
  • Visual demo (multiple variables: prompt + outfit + LoRA + seed): references/pose_examples/01_seaside.png (L0, no LoRA) vs 01b_seaside_lora.png (L1 + LoRA) vs 06_l2_squat_lowangle.png (L2 + low angle + LoRA) — shows the ladder of how much the full recipe adds. It demonstrates the effect but does not isolate any single factor.

3.4 Known limits of the harness

  • One LoRA per run. qwen_pose_test.py injects a single LoraLoaderModelOnly (node id 99) between UNETLoader and KSampler. Civitai showcase workflows often stack 3–5 LoRAs; to reproduce those, chain extra LoraLoaderModelOnly nodes in build_workflow().
  • No refine pass / no EasyCache. Authors add a 2× lanczos upscale + a 25-step denoise 0.35 pass and EasyCache; QwenImage21Cache is broken on the original host (aimdo memory compile error) and the route ④ runner removes it. A/B runs matched the authors' look without the refine pass — add it only when a job needs extra sharpness.

4. Pose selection (the "boldness scale") — match the user's request

Read the user's request (clothes state, desired mood, scene) → pick a tier → give a concrete pose, not a vague one. "Bold" is three levers combined: pose openness × camera angle × clothing/wet state.

4.1 Tiers (English wording to use in route ① prompts)

  • L0 closed / editorial (clothed SFW): standing with weight on one leg, hand on hip or in pocket; sitting on a chair, legs crossed at the ankles; leaning on a railing/wall, looking back over the shoulder; mid-stride walking.
  • L1 open (swimwear / wet / relaxed): crouching with knees apart, hands on the floor; sitting on the floor with knees opened to one side; lying on her side in bed, propped on an elbow, looking back over the shoulder; kneeling with hands behind; reclining on a sofa with legs open.
  • L2 bold (author style — always pair with the NSFW LoRA + low angle): standing with legs apart, shot from a low angle looking up; lying prone with hips lifted toward the camera; sitting with legs wide open, leaning forward on the elbows; kneeling on one knee with the other leg extended to the side, torso arched back; lying on her back with legs open, one hand behind the head.
  • L3 extreme / cropped: extreme low angle looking up between open legs; overhead shot lying flat with legs open; cropped framing (waist-up or mid-thigh) to emphasize the pose.

4.2 Suggestion table (user request → tier → concrete pose)

User asks for (examples)TierRoute ④ library pose families (--list-poses names)Route ① prompt wording
全着装、自然/编辑感 (standing, portrait, office/street)L0Standing / Sitting / Walking / Close Upstanding with weight on one leg, hand in pocket; seated on a chair, legs crossed at the ankles
泳装/湿身/海滩/浴室 (swimwear, wet, relaxed)L1Squatting / Kneeling / Laying Backcrouching with knees apart, hands on the floor, looking back over the shoulder
大胆/NSFW (nude + LoRA, low angle, "author style")L2Kneeling / Laying Back / Prone / Splits / Crawling / Dancing on kneesstanding with legs apart from a low angle; prone with hips lifted toward the camera; seated wide, leaning forward on elbows
极端/特写构图 (crop, extreme low, overhead)L3Splits / any L2 family + crop framingextreme low angle looking up between open legs; overhead, lying flat with legs open

Rules:

  1. Decide the reveal first: clothed → L0; swimwear/wet → L1; nude + NSFW LoRA → L2. Pairing the LoRA with an L0 pose is the most common cause of "bland" NSFW output (observed, not a proven law).
  2. Camera angle amplifies the pose (empirical heuristic): low angle ≈ +1 boldness, overhead ≈ +1. "Low angle + L1" ≈ "eye level + L2" — this is why the author's shower/massage shots read as bold despite simple poses.
  3. One pose per prompt, limb by limb; two competing pose descriptions get blended.
  4. When the user names a pose they saw somewhere, search the library first: python3 scripts/run_vnccs_ui.py --list-poses (136 entries with file paths).

5. Route ② — Edit (pose change with identity preservation)

python3 scripts/qwen_pose_test.py \
  --mode edit --name pose_change --input /absolute/base.png \
  --prompt "change her pose to kneeling on one knee, hands on hips, keep face hair and outfit" \
  --cfg 3 --sampler er_sde --scheduler beta --steps 20 \
  --out outputs/pose_change.png

CFG 3 is more stable for edit mode. SFW instruction prompts keep NSFW LoRAs from triggering; add --lora qwen21-nsfw-image-edit.safetensors only when undressing.

6. Route ④ — VNCCS PoseStudio (exact pose from the 3D library)

The VNCCS_PoseStudio node needs the ComfyUI web frontend for its 3D "live capture"; the headless API fails with "Live capture timed out". So the runner drives a CDP browser: load the official graph → set character image + pose JSON → queue → collect outputs from disk. ~60–90 s each.

# list all 136 poses with resolved file paths
python3 scripts/run_vnccs_ui.py --list-poses

# run one pose on a character image
python3 scripts/run_vnccs_ui.py --pose "squatting leaning back" \
  [--char /absolute/face.png] [--timeout 900]
  • --pose takes the name/slug case-insensitively (crawling, Squatting Leaning Back, arabesque). 9 names exist in more than one repository (Standing A, CloseUp A, …); qualify with <repo>/<category>/<name> (exact keys printed by --list-poses, e.g. miuproject_vnccs_poselibrary_main/standing/standing_a).
  • The runner re-indexes the pose library on every call — newly downloaded poses are usable immediately. Each run writes <pose>_<stamp>.meta.json next to the outputs and never clobbers previous results (unique comfy prefix per run).
  • Output: ./outputs/vnccs_ui/ (override with VNCCS_UI_OUT). The 3D doll is a bare MakeHuman mannequin — nude prompts + pose transfer can produce nude output (expected: the model reads the doll's state).
  • Pose fidelity caveat: each pose JSON carries its own cameraParams (yaw/pitch/zoom); the generated image inherits that viewpoint. Poses whose shape only reads from another angle (e.g. a true arabesque's extended back leg) come out front-facing and ambiguous — rotate the doll in the UI and re-run, or pick a pose that reads from the front.

7. Environment & Safety

  • ComfyUI as a service (original host: systemctl --user status|restart comfyui.service). After installing new custom nodes, one restart is required.
  • Both route scripts take the bundled media lock in shared mode (media_lock(exclusive=False, wait_timeout=...)) so they don't fight video jobs on a shared machine; route ④ wraps the whole browser run in it.
  • On the original host, video tasks hold the lock exclusively (~06:45 / 09:00 / 11:30 openclaw windows); expect waits, not conflicts.
  • If a graph includes QwenImage21Cache and the host errors on it (aimdo memory compile error), remove the node and rewire LoRA → KSampler (the route ④ runner does this automatically in the browser).
  • Never modify the workflow JSONs in this package's workflows/ while a run is in flight; the harness works on in-memory copies anyway.
  • A 50-step 1152×1728 run takes ~200–400 s on the int8 model; a 30-step edit run ~60–120 s.

8. Verification

  1. Check the harness printed ok: true and the output file is non-empty.
  2. Visually inspect with an image-reading tool (composition, pose match, anatomy, face). For pose-transfer runs, compare against the reference.
  3. For reproductions of published images, compare side-by-side with the author original (downloads/samples/*_author.jpg; comparison-sheet example: scripts/build_phase5_sheet.py).
  4. Record prompt/seed/steps/LoRA in the run's *.json meta file (harnesses write one automatically for routes ①②④).
  5. When a recipe deviation was made (weaker prompt, no LoRA, fewer steps, default seed), label the output and state the deviation next to it in the delivery message.

Last full verification: 2026-10-12 — route ① (4 author-prompt reproductions), route ② (9/9 pose edits with identity preserved), route ④ (6 pose runs: crawling, kneeling side, leaning back, sitting side, squatting leaning back, arabesque — the last one verified for output only, pose-shape match unverified), pose index count 136 == GET /vnccs/pose_library/list, pose-ladder A/B images in references/pose_examples/.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

このスキルの問題を報告する