SKILL.md
$29
3. Inpaint
runcomfy run tongyi-mai/z-image/turbo/inpainting
--input '{"image": "...", "mask_image": "...", "prompt": "..."}'
--output-dir ./out
CLI deep dive: [`runcomfy-cli`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/runcomfy-cli) skill.
---
## Pick the right model
Listed by precision of region targeting (mask-required first, then description-based).
**Z-Image Turbo Inpainting** — `tongyi-mai/z-image/turbo/inpainting` *(default — mask required)*
> Dedicated inpainting endpoint with mask, strength, and control-scale. Open-weights, sub-second to a few seconds.
> Pick for: precise region edits with a binary mask — object removal, watermark cleanup, full-region replacement.
> Avoid for: edits without a mask — use Nano Banana 2 Edit (description-based).
**Z-Image Turbo Inpainting LoRA** — [`tongyi-mai/z-image/turbo/inpainting/lora`](https://www.runcomfy.com/models/tongyi-mai/z-image/turbo/inpainting/lora?utm_source=skills.sh&utm_medium=skill&utm_campaign=image-inpainting)
> Inpainting endpoint with LoRA adapter support — apply a fine-tuned style during inpainting.
> Pick for: brand-style-locked inpainting (LoRA captures the look, mask defines the region).
> Avoid for: generic inpainting — use the base inpainting endpoint.
**Nano Banana 2 Edit** — `google/nano-banana-2/edit` *(description-based fallback)*
> Identity-preserving edit driven by spatial language ("the watermark in the bottom-right", "the cables overhead"). No mask required.
> Pick for: when no mask is available and the region can be described.
> Avoid for: precise pixel-level region edges — use Z-Image Inpainting.
**GPT Image 2 Edit** — `openai/gpt-image-2/edit`
> Multi-ref edit with layout-precise instructions; honors "remove only the X" directives.
> Pick for: complex prompt + reference composition where the masked region needs context from other images.
> Avoid for: simple single-image mask-driven jobs — use Z-Image Inpainting.
**FLUX Kontext Pro** — `blackforestlabs/flux-1-kontext/pro/edit`
> Single-instruction local edit with maximum preservation of everything else.
> Pick for: "keep everything except X" style local edits without a mask.
> Avoid for: explicit mask-driven workflows — use Z-Image Inpainting.
---
## Route 1: Z-Image Turbo Inpainting — default
**Model**: `tongyi-mai/z-image/turbo/inpainting`
**Catalog**: [Z-Image inpainting](https://www.runcomfy.com/models/tongyi-mai/z-image/turbo/inpainting?utm_source=skills.sh&utm_medium=skill&utm_campaign=image-inpainting)
### Schema
| Field | Type | Required | Notes |
|---|---|---|---|
| `prompt` | string | yes | What fills the masked region; describe preservation constraints for the surround |
| `image` | string | yes | Source image URL |
| `mask_image` | string | yes | **Grayscale mask URL** (white = inpaint, black = preserve) |
| `strength` | float | no | 0.3–0.6 for retouching, 0.7–1.0 for full replacement |
| `control_scale` | float | no | 0.6–0.9 typical |
| `aspect_ratio` | enum | no | W:H output ratio |
| `seed` | int | no | Reproducibility |
### Invoke
**Object removal (low strength):**
runcomfy run tongyi-mai/z-image/turbo/inpainting \
--input '{
"prompt": "Remove overhead cables; preserve rooflines and sky gradient; thin clean sky.",
"image": "https://your-cdn.example/street.jpg",
"mask_image": "https://your-cdn.example/cables-mask.png",
"strength": 0.5,
"control_scale": 0.8
}' \
--output-dir ./out
**Region replacement (high strength):**
runcomfy run tongyi-mai/z-image/turbo/inpainting \
--input '{
"prompt": "Replace busy backdrop with smooth light gray studio paper; mask background only.",
"image": "https://your-cdn.example/product.jpg",
"mask_image": "https://your-cdn.example/bg-mask.png",
"strength": 0.9
}' \
--output-dir ./out
### Prompting tips
- **A mask URL is required.** Grayscale, white = inpaint region, black = preserve. Slight blur on mask edges (1–3 px) blends better than a sharp binary edge.
- **Strength by intent**:
- `0.3–0.5` retouching / blemish cleanup
- `0.6–0.7` object replacement with style match
- `0.8–1.0` full region replacement
- **Name what stays outside the mask** in the prompt: `"preserve rooflines and sky gradient"`, `"match brick pattern and mortar tone"`.
- **Spatial labels still help** even with a mask: `"the left shelf"`, `"upper-right quadrant"` — disambiguates if the mask covers multiple objects.
## Route 2: Description-based fallback (no mask)
When you don't have a mask, use **Nano Banana 2 Edit** with spatial language. The model identifies the target region from your prompt:
runcomfy run google/nano-banana-2/edit \
--input '{
"prompt": "Remove the watermark in the bottom-right corner. Keep everything else exactly as in the input.",
"image_urls": ["https://your-cdn.example/photo.jpg"]
}' \
--output-dir ./out