计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
portrait-clone【效率与协作】Turn any n reference images (with at least one person) into one exhaustively locked, always de-slopped, JSON-only AIGC image prompt whose every variable is pinned so each generation is nearly identical. Use for replicating a person's look, extracting portrait features into a prompt, locking a character, or revising such a JSON after comparing a gener…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Convert n reference images (at least one contains a person) into ONE AIGC image prompt in JSON.
The single goal: pin down every variable an image model could otherwise choose, so the same prompt yields a nearly identical, non-AI-looking image on every run. Any detail left unspecified is a detail the model will randomize. Stability is measured by how little freedom the model has left.
"none" (glasses, hat, earrings, bag, second person, text, logos, props, sweat, tattoos elsewhere) and also listed in negative_prompt.critical_constraints and negative_prompt are top-level keys, right after prompt_id / prompt_language.prompt_id version suffix bumped (_v1, _v2, ...).For each image note: shot type (face close-up / half body / full body / detail / scene / style reference), aspect ratio and pixel size, capture medium (video frame grab, phone photo, DSLR, film scan, render), and which traits it shows reliably.
Pose, framing, lighting, camera, aspect ratio and resolution come from ONE anchor: the image the user names, otherwise the clearest medium shot. All other images only refine identity traits (face, hair, body, outfit construction, jewelry, marks). When images conflict, trust the sharpest, most frontal, least compressed evidence. Motion blur, compression and lens distortion are not traits of the person. Traits not visible in any image are still locked: choose the single most plausible value consistent with the rest and state it definitively.
Walk this list and give each item a concrete value (or "none" / "not visible"). Add any further variable the specific images introduce.
Image models pull every person toward a default "beautiful AI person". Any trait of the reference that differs from that default will be ignored unless escalated. For each deviation, do all three:
critical_constraints, prefixed with an uppercase label (EYES:, BODY:, FACE:, HAIR:, POSE:, TOP:, LOOK:, MEDIUM: ...).negative_prompt.Check these drift axes every time:
| Axis | Model default | Typical real-reference deviation |
|---|---|---|
| Eyes | big, round, double eyelid, aegyo sal | small, narrow, monolid, heavy lid |
| Face | V-line, doll face, perfect symmetry | long oval, flat midface, asymmetry |
| Body | curvy, busty, hourglass | slim straight frame, flat chest |
| Clothing | tighter, more skin, cleavage, midriff | coverage exactly as in reference |
| Hair | voluminous, glossy, perfect waves | flatter, straighter, clumped, frizz |
| Skin | poreless, glowing | pores, fuzz, redness |
| Stance | seated or model pose | the reference stance |
| Look | idol / model / glamour | ordinary real person |
| Background | saturated | muted exact hex |
| Additions | earrings, extra props, text | explicit none |
Counter-steer toward the reference's features, not toward plainness: if the person in the reference is glamorous, describe their features faithfully and skip anti-glamour constraints. This affects features only; De-slop still applies in full.
negative_prompt.style.medium states a real photograph or frame grab, never a render.camera.sharpness specifies no sharpening and low micro-contrast; camera.focus never uses "sharp focus" or "crisp".guidance_scale 4, steps 28, fixed seed, fixed sampler.critical_constraints always ends with a MEDIUM: line stating the image must read as an unretouched real capture in the reference medium, never as a render or retouched photo.Start from the Schema, fill every key, then add every extra key the audit produced. Keep related keys together in the most relevant section.
negative_prompt.MEDIUM: constraint present.negative_prompt (e.g. positive noise vs negative "film grain" → write "heavy film grain"); ring, bracelet and tattoo sides agree across all sections; output.resolution matches output.aspect_ratio; every color has a hex and the palette lists the main ones.critical_constraints and negative_prompt.When the user shows a generated image next to the reference, or says a trait does not match:
critical_constraints line, and add the drifted appearance to negative_prompt.{
"prompt_id": "{snake_case_name}_locked_v1",
"prompt_language": "en",
"critical_constraints": [
"{LABEL}: {one-line imperative per drift axis}",
"MEDIUM: must read as an unretouched {reference medium}, never as a render or retouched photo"
],
"negative_prompt": [
"ultra-detailed, hyper-detailed, 8K, 4K, masterpiece, best quality, ultra-realistic, photorealistic render, sharp focus, crisp, intricate details",
"oversharpened, high clarity, HDR, high micro-contrast, glowing skin, luminous, radiant, dreamy glow, soft glow bloom",
"flawless skin, poreless, smooth skin, perfect skin, porcelain, waxy, glossy highlights on skin, airbrushed, retouched, plastic skin",
"perfect symmetry, perfect teeth, perfect hair, every strand defined, shiny hair highlights",
"pristine clothing, wrinkle-free fabric, perfectly even background, studio perfection",
"stock photo, advertising photo, magazine cover, professional retouching, beauty campaign",
"{one line per drift axis: the model-default version}",
"{every absent item: glasses, hat, earrings, bag, second person, props, text}",
"{wrong garments, colors, jewelry}",
"{wrong hand poses}",
"extra fingers, missing fingers, fused fingers, deformed hands, extra arms",
"{wrong framing and angles}",
"{wrong background}",
"{wrong lighting}",
"{wrong grading}",
"illustration, 3D render, CGI, painting, cartoon, watermark, text, subtitles"
],
"subject": {"count": 1, "gender": "", "ethnicity": "", "apparent_age": "", "attractiveness_level": "", "height_impression": "", "build": "", "posture": "", "weight_distribution": ""},
"face": {
"shape": "", "length_width_ratio": "", "forehead": "", "cheekbones": "", "midface": "", "jaw": "", "chin": "", "philtrum": "", "eye_spacing": "", "asymmetry": "",
"skin": {"tone": "{desc}, hex #", "undertone": "", "texture": "", "color_variation": "", "shine_zones": "", "blemishes": "", "freckles": "", "moles": "", "sweat": "none"},
"eyes": {"type": "", "shape": "", "tilt": "", "size": "", "height_width_ratio": "", "lid": "", "aperture": "", "blink_state": "", "smile_behavior": "", "iris_color": "", "liner": "", "eyeshadow": "", "lashes": "", "under_eye": ""},
"eyebrows": {"shape": "", "position": "", "thickness": "", "color": "", "texture": ""},
"nose": {"bridge": "", "tip": "", "nostrils": ""},
"mouth": {"lip_shape": "", "lip_ratio": "", "lip_color": "", "lip_finish": "", "opening": "", "visible_teeth": "", "tongue": "not visible"},
"makeup": {"foundation": "", "blush": "", "highlighter": "", "contour": ""},
"ears": {"left": "", "right": ""}
},
"hair": {"color": "", "highlight_color": "", "length": "", "texture": {"roots": "", "mids": "", "ends": ""}, "density": "", "volume": "", "cut": "", "fringe": "", "part": "", "crown": "", "placement": {"left_shoulder": "", "right_shoulder": ""}, "behind_ears": {"left": "", "right": ""}, "imperfections": "", "shine": ""},
"neck": "",
"hands": {"front_hand": "", "nails": {"length_mm": "", "shape": "", "color": ""}, "rings": {"left_hand": "", "right_hand": ""}, "fingers": ""},
"jewelry": {"necklace": "", "bracelet": "", "earrings": "", "watch": "", "other": "none"},
"accessories": {"glasses": "none", "headwear": "none", "bag": "none", "other": "none"},
"body_marks": {"tattoos": "", "moles": "", "scars": "none"},
"outfit": {
"top": {"item": "", "color": "", "fabric": "", "fit": {"shoulders": "", "chest": "", "waist": ""}, "neckline": "", "sleeves": "", "construction": "", "hem": "", "tuck": "", "skin_gap": "", "logo": "", "wrinkles": "", "wear": ""},
"bottom": {"item": "", "color": "", "fabric": "", "fit": "", "rise": "", "details": "", "wrinkles": ""},
"belt": "", "shoes": ""
},
"pose": {"stance": "", "legs": "", "body_orientation": "", "shoulder_tilt": "", "head": "", "gaze": "", "right_arm": "", "left_arm": "", "gesture_meaning": "", "moment": ""},
"expression": {"mouth": "", "eyes": "", "brows": "", "cheeks": "", "smile_symmetry": "", "emotion": "", "intensity": "{n} out of 10"},
"scene": {"location": "", "background": "", "background_texture": "", "background_variation": "", "background_distance": "", "props": "none", "floor": "", "visible_edges": "none"},
"lighting": {"key": "", "fill": "", "background_light": "", "hair_light": "", "shadows": "", "color_temperature": "", "clipping": "", "catchlights": ""},
"camera": {"capture_pipeline": "", "camera_height": "", "subject_distance": "", "shot_type": "", "crop_top": "", "crop_bottom": "", "subject_position": "", "headroom": "", "lead_room": "", "angle": "", "horizon_tilt": "0 degrees", "lens": "", "lens_distortion": "", "aperture": "", "shutter": "", "iso": "", "focus": "", "depth_of_field": "", "sharpness": "no sharpening, low micro-contrast, {calibrated softness}", "motion": "", "noise": ""},
"color_grading": {"style": "", "saturation": "", "contrast": "", "black_level": "", "white_balance": "", "palette": ["#"]},
"style": {"medium": "real photograph: {medium}", "genre": "", "realism": "unretouched, unpolished, true-to-life, no idealization", "overall_vibe": ""},
"output": {"aspect_ratio": "", "resolution": "", "orientation": "", "num_images": 1},
"generation_params": {"seed": 20260911, "guidance_scale": 4, "steps": 28, "sampler": "DPM++ 2M Karras", "reference_image": "none", "note_to_model": "critical_constraints override any default beauty or quality bias. Follow every field literally; do not add, remove, beautify, sharpen or reinterpret any attribute. Anything not described does not exist in the image."},
"post_processing": {"step_1": "", "step_2": "", "step_3": ""}
}