image-inpainting

>

INSTALLATION
npx skills add https://github.com/runcomfy-com/skills --skill image-inpainting
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

$2a

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

BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills →

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free · no credit card