Goblin Transform · skill pública de Open Skill

Goblin Transform

Goblin Transform

@ExploreFly

Internal

1 1 1

https://d7qlwi7tl2u27.cloudfront.net/skill-covers/prod/3656543/2026-10-14/amuptesb.jpg

# Goblin Transform

Transform a person into a goblin portrait. If the user supplies a photo, use image-to-image on one of the approved HD channels. If not, use text-to-image. When the user wants video, generate a reference-to-video clip of the goblin facing the camera and delivering one fixed line in the **user's language**.

There is no structured project state — track the latest goblin still in the conversation and on the canvas.

## When to use

- User uploads a person photo and wants a goblin version (fun filter, avatar, meme, etc.).
- User has no photo and wants a goblin character generated from a text description.
- User wants a **video** of the goblin **looking at the camera** and **saying** (in their language): equivalent of **「我是一只丑陋的哥布林。」** / **「I am an ugly goblin.」**
- User asks to redo only the image or only the video — run that branch without redoing the other unless they ask.

## Before you generate

1. **Confirm intent** in one short message if ambiguous: image only vs image + video; optional style notes (cute vs grotesque, background, orientation).
2. **User language for the spoken line**: detect from the user's messages (e.g. Chinese → say the Chinese line; English → English line). Do not force English dialogue unless the user writes in English.
3. **Orientation**: default `portrait` for social-style clips; use `landscape` or `square` only if the user asks. Omit `resolution` unless they request a specific tier (platform default is `720P`).
4. **Image prompts**: write in **English**. **Video motion prompts**: write in **English**, but embed the **exact spoken sentence in the user's language** inside the prompt (quoted), e.g. `The goblin looks into the camera and clearly says: "我是一只丑陋的哥布林。"`

## Image prompt reference

Do **not** guess goblin wording from memory. Before every `generate_image` call (new still or redo), use `read_skill_file(name='goblin-transform', path='references/goblin_image_prompts.md')`, then build **one** positive prompt from the templates (core anatomy + style preset + framing + I2I identity block or T2I traits). Append the negative/avoidance line when useful.

| Need | File |
|------|------|
| Goblin anatomy, style presets, I2I/T2I templates, examples | `references/goblin_image_prompts.md` |

## Workflow

Use `write_todos` when doing image + video in one request.

### A. Goblin still (required)

**Path 1 — User provided a person image**

- Use the user's upload URL / canvas asset / `asset_id` as the sole reference in `input_urls`.
- Call `generate_image` with **`model` set to exactly one of** (never use physical model names):
  - **`i2i.hd.lite`** — default when the user did not ask for higher quality.
  - **`i2i.hd`** — when the user asks for better quality, sharper detail, or HD.
  - **`i2i.hd.gpt`** — when the user asks for the GPT-tier / best i2i, or you need stronger semantic edit fidelity.
- **Prompt**: assemble from `references/goblin_image_prompts.md` (default I2I **Template A** + **playful** or user tone + matching framing). Must include the **identity block** for I2I.
- `name`: short label like `Goblin portrait` or `Goblin - {user name if known}`.
- `entity_type`: `characters`.

**Path 2 — No person image**

- Call `generate_image` with **`model='t2i.hd'`** (or `t2i.hd.lite` if the user wants faster/cheaper; prefer `t2i.hd` for a single hero goblin portrait unless they say otherwise).
- **Prompt**: assemble from `references/goblin_image_prompts.md` (**Template D** or **E** + style preset + framing + user traits).
- Same `name` / `entity_type` conventions as Path 1.

If `success=false`, report the error honestly; do not invent URLs.

### B. Goblin video (only if the user wants video)

Prerequisites: a goblin **still** from step A (same session). Use that image's URL / `asset_id` in `input_urls`.

- Call `generate_video` with:
  - **`model='ref2v'`** (required; do not pass physical model names or omit model expecting a non-ref path).
  - **`input_urls`**: `[goblin_still]` — at lea