goai-image-gen
# When To Use
Use this skill when the user wants image generation, image editing, or reference-image-based image creation through GoAI, especially for prompts like 生成图片, 画图, 出图, 做图, 修图, and 改图.
Pass the user's image prompt through as-is unless the user explicitly asks for prompt optimization, prompt polishing, rewriting, translation, or additional creative detail. Do not silently embellish short prompts such as `画一个老虎`.
Do not translate the user's prompt to another language. If the user writes in Chinese, pass Chinese to `--prompt`. If the user writes in English, pass English to `--prompt`. You may strip only lightweight request wrappers such as `帮我`, `给我`, `请`, `生成`, or `画一张`, but do not rewrite the core prompt content.
Examples:
- User: `给我生成一只狮子` -> `--prompt "一只狮子"` or `--prompt "给我生成一只狮子"`
- User: `画一个老虎` -> `--prompt "画一个老虎"` or `--prompt "一个老虎"`
- Never turn `给我生成一只狮子` into `a lion` unless the user explicitly asks for English translation.
# Default Behavior
This package currently targets the production environment at `https://mustgoai.com`. Override `GOAI_BASE_URL` only when you intentionally need a different endpoint.
This skill now uses a single cross-platform Python entrypoint through `uv`. If the user does not specify a model, the script queries `/api/v1/models/capabilities`, sorts enabled image models by `display.priority`, and picks the highest-priority model.
Treat `uv` as the only runtime dependency the user needs to install manually. On first run, `uv` may create a local environment, install `httpx`, and download Python if the machine does not already have a usable interpreter. That first-run setup is expected and should not be described as an error.
If the user provides local image paths, the script uploads them first and sends the resulting URLs as `reference_images`. If the user provides remote URLs, the script passes them through unchanged.
# Script Rules
Always use the Python entrypoint through `uv`:
```bash
uv run --project . python scripts/generate_image.py \
--prompt "..." \
[--model "..."] \
[--aspect-ratio "..."] \
[--resolution "..."] \
[--reference "/path/to/image.png"] \
[--reference "https://example.com/image.png"]
```
The Python path validates `GOAI_API_KEY`, defaults to `https://mustgoai.com` unless `GOAI_BASE_URL` is set, and treats `401`, `402`, `429`, content blocking, missing `task_id`, missing `image_url`, and backend terminal failure states as hard failures. Polling follows the web client behavior: it checks every 3 seconds, retries transient polling errors, and waits for a backend terminal status instead of enforcing a client-side timeout.
The Python entrypoint self-heals into `uv run` if it is accidentally invoked as `python scripts/generate_image.py ...` or `python3 scripts/generate_image.py ...`. Do not try to repair the system Python environment for this skill.
When invoking this skill through OpenClaw's `exec` tool, always use `timeout=600` to allow up to 10 minutes for long-running image generation. Do not describe the run as timed out or killed unless the script itself exits non-zero or the backend reports a terminal failure state.
If `uv` is missing, explicitly guide the user to install it first:
- macOS: `brew install uv`
- Windows: `winget install astral-sh.uv`
After `uv` is installed, rerun the same command. Do not ask the user to install Python packages by hand; `uv` is responsible for preparing Python and the skill dependencies.
If execution reports a missing Python module such as `httpx`, do not run `pip install`, `pip install --user`, or `pip install --break-system-packages`. Re-run the skill through `uv`; the dependency set comes only from `pyproject.toml` and `uv.lock`.
If `GOAI_API_KEY` is missing, explicitly guide the user to visit `https://mustgoai.com`, register or log in, open `Settings -> API Key`, create a key, and then configure the skill env in `~/.openclaw/openclaw.json`.
# Output Contract
On success, print all four lines below in this order:
- `MEDIA:/absolute/path/to/generated-file`
- `MEDIA_URL:https://...`
- `RESULT_PATH:/absolute/path/to/generated-file`
- `RESULT_URL:https://...`
When responding to the user after a successful run, always include both the exact local file path and the exact public URL in plain text, even if OpenClaw already rendered or read the local media file. Do not omit the URL just because the image preview succeeded. On failure, exit non-zero and print a concise error message. Do not inline the binary output back into the conversation.
标签
skill
ai