Skip to content
Back to skills

Surgepix Remove Background

ASecurity

Use SurgePix API to remove image background, returning a transparent PNG download URL. Use when the user says "remove background", "去背景", "抠图", "make transparent", "extract subject", or wants to isolate the subject from an image.

  • 4 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 13, 2026
ai-agentsbashnodeapifrontend

Works with

  • api

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned October 13, 2026

npx -y skills add SurgePix/agent-skills --skill surgepix-remove-background --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Surgepix Remove Background?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Surgepix Remove Background
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/surgepix-surgepix-remove-background/badge)](https://www.skillsdirectory.com/skills/surgepix-surgepix-remove-background)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: surgepix-remove-background
description: Use SurgePix API to remove image background, returning a transparent PNG download URL. Use when the user says "remove background", "去背景", "抠图", "make transparent", "extract subject", or wants to isolate the subject from an image.
---

# Remove Background — AI-Powered Background Removal

Remove the background from an image and return a transparent PNG using the platform API. Use when the user asks to remove background, cut out a subject, make an image transparent, or create a PNG with no background.

## Language consistency

This skill does not generate on-image text. Reply to the user in the **same language they used** in their request.

---

## What the Skill Does

| Action                   | Description                                                             |
|--------------------------|-------------------------------------------------------------------------|
| Remove background        | Pass a local file or URL; script uploads and processes in one step      |
| Check task status        | Poll a generation task by `taskId` to check progress                   |
| Batch remove backgrounds | Process multiple images sequentially and return all download links      |
| Download result          | Retrieve the PNG download URL from the completed task                   |

> The script **always submits the task asynchronously** (the API returns a `taskId` immediately). The `--nowait` flag controls what the script does next:
> - `--nowait false` (default) — the script polls internally until the task is `succeeded`/`failed` and returns the final `download` URL in one call.
> - `--nowait true` — the script returns the `taskId` immediately without waiting; resolve it later with the **surgepix-query-task** skill.

---

## Setup

**Requirement:** Set the `SURGEPIX_API_KEY` environment variable.
Get your API Key at your platform's API management page.

```bash
export SURGEPIX_API_KEY=your-api-key-here
```

This skill uses the script at `<skills-dir>/surgepix-remove-background/scripts/remove_background.mjs`.

---

## Usage Examples

**First run — pass a local file, script uploads automatically:**
```bash
node "<skills-dir>/surgepix-remove-background/scripts/remove_background.mjs" \
  ./photo.jpg
# Script uploads the image automatically — no separate step needed.
# Output (JSON):
#   {"ok":true,"taskId":"task_abc123","sessionId":123,"progress":"succeeded","download":"<DOWNLOAD_URL>"}
#   ← Save sessionId for retries
```

**Not satisfied — retry with same session ID:**
```bash
node "<skills-dir>/surgepix-remove-background/scripts/remove_background.mjs" \
  ./photo.jpg \
  --session-id 123                ← Pass the sessionId from previous output (number type)
```

**Submit task and get taskId only (do not wait for completion):**
```bash
node "<skills-dir>/surgepix-remove-background/scripts/remove_background.mjs" \
  ./photo.jpg --nowait true
# Returns JSON immediately:
#   {"ok":true,"async":true,"taskId":"task_abc123","sessionId":123,"progress":"processing","download":null,"hint":"<HINT>"}

# Then use the surgepix-query-task skill to poll the taskId until progress becomes succeeded
```

**Batch: remove backgrounds from multiple images:**
```bash
node "<skills-dir>/surgepix-remove-background/scripts/remove_background.mjs" ./img1.jpg
node "<skills-dir>/surgepix-remove-background/scripts/remove_background.mjs" ./img2.jpg
node "<skills-dir>/surgepix-remove-background/scripts/remove_background.mjs" ./img3.jpg
```

---

## Workflow

### Step 0: Check environment (required)

Before first use, run the environment check:

```bash
node "<skills-dir>/surgepix-setup/scripts/check_env.mjs"
```

- **Exit 0** → proceed to Step 1
- **Exit 1** → follow the **surgepix-setup** skill to configure `.env`, then retry

### Step 1: Identify the input

- **Local file** → script uploads automatically, then calls API
- **URL** → script uses it directly

### Step 2: Collect inputs
   - The user must provide an image. Accept either:
     - **Local file path** (e.g. `./photo.jpg`)
     - **URL** pointing to an image
   - **Session ID** (optional): if the user is retrying the same image,
     ask them to provide the `sessionId` printed by the last run. If this is
     a fresh image, omit it — the platform will auto-create a new session.
   - Validate the file before submitting:
     - Supported formats: `JPEG`, `JPG`, `PNG`, `WEBP`
     - Maximum size: 20MB
     - If unsupported format or oversized, inform the user and ask for a different file.

### Step 3: Submit the removal task
   ```bash
   node "<skills-dir>/surgepix-remove-background/scripts/remove_background.mjs" \
     "<file path or URL>" \
     [--session-id <sessionId>] \
     [--nowait <true|false>]
   ```
   - The image parameter is a **positional argument** (required). Pass the file path or URL directly — no `--file` prefix needed. The script uploads the image automatically, then calls the platform API and receives a `taskId`.
   - The request is always submitted asynchronously. By default (`--nowait false`), the script polls `GET /tasks/{taskId}` every 2 seconds until status is
     `succeeded` or `failed`.
   - Pass `--nowait true` to skip polling and return the `taskId` immediately; resolve it later with the **surgepix-query-task** skill.
   - Output is always `.png` to preserve transparency information.

### Step 4: Parse output

**Sync success** (`--nowait false`, stdout):

```json
{"ok":true,"taskId":"task_abc123","sessionId":123,"progress":"succeeded","download":"<DOWNLOAD_URL>"}
```

**Async submitted** (`--nowait true`, stdout) — resolve later with the **surgepix-query-task** skill:

```json
{"ok":true,"async":true,"taskId":"task_abc123","sessionId":123,"progress":"processing","download":null,"hint":"<HINT>"}
```

**Failure** (stderr):

```json
{"ok":false,"error":"<ERROR>"}
```

### Step 5: Handle the result
   - **On success:** Show the download URL. **Always show `sessionId`** (note: it is a number type, e.g. `123`) so the user can pass it in a retry if needed.
   - **Edge quality issues:** If the user reports rough edges (common with hair, fur, or complex backgrounds), inform them that a higher-contrast or higher-resolution source image may improve results, and offer to retry with the same `sessionId`.
   - **On failure:** Report the error message from the `error` field. Common causes:
     - `unsupported_image_format` — file format not supported
     - `image_too_large` — file exceeds 20MB

### Step 6: Session sync and iteration
   - The result is automatically attached to the session (auto-created or reused). The user can open the platform frontend to see all iterations in one place.
   - If the user wants to retry, instruct them to pass `--session-id 123` (number type) — both attempts appear in the same session history.

### Step 7: Batch processing
   - If the user provides multiple images, repeat Steps 3–6 for each one.
   - After all are complete, present all download links together.

---

## Parameters

### remove-background

| Parameter                | Required | Default       | Description                                                                  |
|--------------------------|----------|---------------|------------------------------------------------------------------------------|
| `<file path or URL>`     | Yes      | —             | **Positional argument.** Local file path or image URL; script uploads automatically before processing |
| `--session-id <id>`      | No       | auto-created  | Omit on first run (platform creates a new session and returns it in stdout); provide on subsequent runs to group iterations in the same session |
| `--nowait <true\|false>` | No       | `false`       | `false` = synchronous: script polls internally and returns the final `download`. `true` = asynchronous: returns `taskId` immediately; resolve later via the **surgepix-query-task** skill |

---

## Notes

- Output is always `.png` — do not rename to `.jpg` as transparency will be lost.
- Supported input formats: `JPEG`, `JPG`, `PNG`, `WEBP`. Max file size: **20MB**.
- The download link in the result is valid for **24 hours**; download before it expires.
- **Always display the `sessionId` from the output** (note: it is a number type, e.g. `123`). If the user wants to retry (e.g. due to edge quality issues), they pass `--session-id 123` in the next run — both attempts appear in the same session on the frontend.
- If `--session-id` is omitted, the platform auto-creates a new session for the run.
- The image parameter is a **positional argument** — pass the path or URL directly, no `--file` prefix. The script auto-detects whether it is a local file or a remote URL.
- **Must** run `check_env.mjs` before first use in each session.
- **Never** pass local paths to the API — script handles upload internally.
- **Never** invent download URLs — only use the `download` value from the output.
- **Never** expose auth tokens in logs or output.

Files in this skill

  • SKILL.md8.8 KB
  • scripts/env.mjs4.7 KB
  • scripts/file_upload.mjs7.1 KB
  • scripts/remove_background.mjs8.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.