VectorNode Image Generation
GPT Image (gpt-image-2) generation and editing via VectorNode relay API.
Auto-routing: short prompts → token billing · long prompts → per-request billing.
Trigger
Use when: "生成图片", "generate image", "create illustration", "画一张", "编辑图片", "edit image", "GPT生图", "gpt image".
Quick Start
# Generation (auto-route billing)
python3 ~/.openclaw/skills/vectornode-image-gen/scripts/vectornode_gen.py \
-p "你的提示词" \
-o "/path/to/output.png"
# Edit existing image
python3 ~/.openclaw/skills/vectornode-image-gen/scripts/vectornode_gen.py \
-p "add a sunset background" \
-i "/path/to/input.png" \
-o "/path/to/output.png"
# Force billing mode
python3 ~/.openclaw/skills/vectornode-image-gen/scripts/vectornode_gen.py \
-p "long detailed prompt..." \
-o "/path/to/output.png" \
--billing per-request # or token
Routing Logic
| Prompt Length |
Billing |
Model |
Best For |
| < 300 chars |
Token |
gpt-image-2 |
Simple prompts, quick iterations |
| ≥ 300 chars |
Per-request |
gpt-image-2-all |
Detailed prompts, content covers |
Threshold configurable via VECTORNODE_ROUTE_THRESHOLD env var (default: 300).
Parameters
| Flag |
Required |
Default |
Description |
-p, --prompt |
✅ |
— |
Image prompt (max 1000 chars for gen) |
-o, --output |
✅ |
— |
Output file path (.png/.jpg/.webp) |
-i, --image |
❌ |
— |
Input image for edit mode |
-m, --mask |
❌ |
— |
Mask image for edit (transparent areas = edit zone) |
-s, --size |
❌ |
1024x1024 |
1024x1024, 1536x1024, 1024x1536, 2048x2048, etc. |
-n, --count |
❌ |
1 |
Number of images (1-10) |
-q, --quality |
❌ |
auto |
low, medium, high, auto |
--billing |
❌ |
auto |
auto, token, per-request |
--background |
❌ |
auto |
opaque, transparent, auto (edit mode only) |
--moderation |
❌ |
auto |
low, auto |
API Endpoints
| Mode |
Endpoint |
Method |
Content-Type |
| Generate |
/v1/images/generations |
POST |
application/json |
| Edit |
/v1/images/edits |
POST |
multipart/form-data |
Configuration
API credentials read from (in priority order):
- Environment variables:
VECTORNODE_API_KEY, VECTORNODE_BASE_URL
~/.openclaw/workspace/.env file
Supported Sizes
1024x1024 — Square (default)
1536x1024 — Landscape 3:2
1024x1536 — Portrait 2:3
2048x2048 — 2K Square
2048x1152 — 2K Landscape
3840x2160 — 4K Landscape
2160x3840 — 4K Portrait
auto — Model decides
Constraints: max dimension ≤ 3840px, aspect ratio ≤ 3:1, pixel range 655360–8294400.
Output Formats
png, jpeg, webp. Transparent background requires png or webp + --background transparent.
Workflow
- Determine mode: has
-i → edit, otherwise → generate
- Auto-route billing if
--billing auto:
- Prompt < threshold chars → token billing (
gpt-image-2)
- Prompt ≥ threshold chars → per-request (
gpt-image-2-all)
- Call API, decode base64 response, save to output path
- Return output path for downstream use
Integration with Content Workflow
When generating content covers, combine with content-cover-gen skill for prompt design:
1. Read content-cover-gen SKILL.md for visual metaphor methodology
2. Design prompt with visual metaphor + Chinese text
3. Call vectornode-image-gen with the designed prompt
4. Use output image as article cover
Error Handling
- API errors surfaced with HTTP status + response body
- Network timeout: 120s
- Retry: 1 automatic retry on 5xx
- Invalid image format: validated before upload (PNG < 50MB, mask PNG < 4MB)
1---
2name: vectornode-image-gen
3description: "GPT image generation/editing via VectorNode relay; auto-routes token vs per-request billing based on prompt length."
4allowed-tools: [exec, read, write]
5user-invocable: true
6---
7
8# VectorNode Image Generation
9
10GPT Image (gpt-image-2) generation and editing via VectorNode relay API.
11Auto-routing: short prompts → token billing · long prompts → per-request billing.
12
13## Trigger
14
15Use when: "生成图片", "generate image", "create illustration", "画一张", "编辑图片", "edit image", "GPT生图", "gpt image".
16
17## Quick Start
18
19```bash
20# Generation (auto-route billing)
21python3 ~/.openclaw/skills/vectornode-image-gen/scripts/vectornode_gen.py \
22 -p "你的提示词" \
23 -o "/path/to/output.png"
24
25# Edit existing image
26python3 ~/.openclaw/skills/vectornode-image-gen/scripts/vectornode_gen.py \
27 -p "add a sunset background" \
28 -i "/path/to/input.png" \
29 -o "/path/to/output.png"
30
31# Force billing mode
32python3 ~/.openclaw/skills/vectornode-image-gen/scripts/vectornode_gen.py \
33 -p "long detailed prompt..." \
34 -o "/path/to/output.png" \
35 --billing per-request # or token
36```
37
38## Routing Logic
39
40| Prompt Length | Billing | Model | Best For |
41|---|---|---|---|
42| < 300 chars | Token | `gpt-image-2` | Simple prompts, quick iterations |
43| ≥ 300 chars | Per-request | `gpt-image-2-all` | Detailed prompts, content covers |
44
45Threshold configurable via `VECTORNODE_ROUTE_THRESHOLD` env var (default: 300).
46
47## Parameters
48
49| Flag | Required | Default | Description |
50|---|---|---|---|
51| `-p, --prompt` | ✅ | — | Image prompt (max 1000 chars for gen) |
52| `-o, --output` | ✅ | — | Output file path (.png/.jpg/.webp) |
53| `-i, --image` | ❌ | — | Input image for edit mode |
54| `-m, --mask` | ❌ | — | Mask image for edit (transparent areas = edit zone) |
55| `-s, --size` | ❌ | `1024x1024` | `1024x1024`, `1536x1024`, `1024x1536`, `2048x2048`, etc. |
56| `-n, --count` | ❌ | `1` | Number of images (1-10) |
57| `-q, --quality` | ❌ | `auto` | `low`, `medium`, `high`, `auto` |
58| `--billing` | ❌ | `auto` | `auto`, `token`, `per-request` |
59| `--background` | ❌ | `auto` | `opaque`, `transparent`, `auto` (edit mode only) |
60| `--moderation` | ❌ | `auto` | `low`, `auto` |
61
62## API Endpoints
63
64| Mode | Endpoint | Method | Content-Type |
65|---|---|---|---|
66| Generate | `/v1/images/generations` | POST | `application/json` |
67| Edit | `/v1/images/edits` | POST | `multipart/form-data` |
68
69## Configuration
70
71API credentials read from (in priority order):
721. Environment variables: `VECTORNODE_API_KEY`, `VECTORNODE_BASE_URL`
732. `~/.openclaw/workspace/.env` file
74
75## Supported Sizes
76
77- `1024x1024` — Square (default)
78- `1536x1024` — Landscape 3:2
79- `1024x1536` — Portrait 2:3
80- `2048x2048` — 2K Square
81- `2048x1152` — 2K Landscape
82- `3840x2160` — 4K Landscape
83- `2160x3840` — 4K Portrait
84- `auto` — Model decides
85
86Constraints: max dimension ≤ 3840px, aspect ratio ≤ 3:1, pixel range 655360–8294400.
87
88## Output Formats
89
90`png`, `jpeg`, `webp`. Transparent background requires `png` or `webp` + `--background transparent`.
91
92## Workflow
93
941. Determine mode: has `-i` → edit, otherwise → generate
952. Auto-route billing if `--billing auto`:
96 - Prompt < threshold chars → token billing (`gpt-image-2`)
97 - Prompt ≥ threshold chars → per-request (`gpt-image-2-all`)
983. Call API, decode base64 response, save to output path
994. Return output path for downstream use
100
101## Integration with Content Workflow
102
103When generating content covers, combine with **content-cover-gen** skill for prompt design:
104
105```
1061. Read content-cover-gen SKILL.md for visual metaphor methodology
1072. Design prompt with visual metaphor + Chinese text
1083. Call vectornode-image-gen with the designed prompt
1094. Use output image as article cover
110```
111
112## Error Handling
113
114- API errors surfaced with HTTP status + response body
115- Network timeout: 120s
116- Retry: 1 automatic retry on 5xx
117- Invalid image format: validated before upload (PNG < 50MB, mask PNG < 4MB)