Watermark Removal · skill pubblica Open Skill

Watermark Removal

Watermark Removal è una Open Skill pubblica su Digen. Aprila per vedere cosa crea questo workflow.

@akjshdk

Custom

0 0 1

https://d7qlwi7tl2u27.cloudfront.net/skill-covers/prod/4173183/2026-10-15/xh6fhrjr.jpg

# Watermark Removal

Remove **watermarks, logos, text overlays, and semi-transparent stamps** from a user-supplied image using **image-to-image** reconstruction. Output **exactly one** cleaned image per user request unless they explicitly ask for multiple variants.

No project state.

**Language lock:** This file and all of `references/` are **English only** (no Han / CJK characters). Reply in the **user's language**. Every `generate_image` `prompt` is **English**.

Do not tell the user tool names, channel names, or full generation prompts.

## User-visible speech (hard)

Do not narrate the pipeline. Never mention skill files, `read_skill_file`, silent redo, or channels.

**Allowed lines only:**

- Need input: one short note to **upload the image** and optionally **say which mark to remove** — then pause **P-empty** or **P-brief**.
- Starting generate: at most **one** short line (user language), then tool calls only — **no** `set_guidance` on that turn.
- Success: one or two sentences that the cleaned image is ready — no URL, no prompt dump. Pause **P-done**.
- Tool failure: brief honest note. Pause **P-fail**.
- Safety block: one polite refusal. Pause **P-refuse**.

## Pause = clickable buttons (hard)

Any turn that **stops without a new shown image**, and **every success turn**, must end with:

1. One or two short sentences (user language).
2. **`set_guidance`** in the **same turn**, with **at least two** clickable options. **No tool calls after `set_guidance`.**

Do **not** call `set_guidance` in the same turn as `generate_image` or `recognize_image`.

Each button is an object with `text` and `action` (not bare strings):

- **`send_message`**: `content` is the full sentence sent when tapped.
- **`fill_input`**: `content` is starter text the user can edit.

Offer **2–4** options. Localize `text` and `content` to the user's language. No channel or tool names on buttons.

Before every pause turn, `read_skill_file` → `references/guidance-buttons.md`.

| Pause | When | Example intents (localize) |
|---|---|---|
| P-empty | No upload and no canvas image to clean | I'll upload a photo · Use my last image · Example request (`fill_input`) |
| P-brief | Upload present but user did not say which mark and recognition is ambiguous | Remove corner logo · Remove center text · Remove all visible marks |
| P-refuse | Fraud, forged credentials, non-consensual imagery, explicit NSFW cleanup goal | Upload my own photo · Family-safe edit only |
| P-fail | `generate_image` `success=false` after retry | Try again same photo · Softer cleanup · Upload a different photo |
| P-done | One cleaned image ready | Stronger removal · Keep more texture · Fix one small area · Upload another photo |

## When to use

- User wants **watermark**, **logo**, **text overlay**, **timestamp**, or **stamp** removed from a **photo or still image**.
- User **uploads** an image or points at a **recent canvas image** from this skill to refine.
- User asks to **retry**, **remove more aggressively**, or **fix a small leftover patch** on the last successful output.

**Do not use:** video watermark removal; generating images from scratch with no source; helping remove marks to **pass off others' work as their own** or bypass **paid stock / rights management** they do not hold.

## Reference files

| File | When |
|---|---|
| `references/removal_spec.md` | Before every `generate_image` — mark types, prompt blocks, safety stop |
| `references/generation.md` | Before every `generate_image` — channels, `input_urls`, retry |
| `references/guidance-buttons.md` | Before every pause turn that calls `set_guidance` |

Read only what the current step needs.

## Channels (hard)

Every `generate_image` passes `model`. Never use physical model names. Never tell the user a channel or model name.

This skill is **I2I only** — always pass the user's source image in `input_urls`.

| `model` | When |
|---------|------|
| **`i2i.hd`** | Default — single photo, moderate marks, identity and scene