Generate high-quality images from text prompts using the ZhiPu GLM-Image API.
When to Use / When to Use
- Generate images from text descriptions / Generate images from text descriptions
- Create AI art, illustrations, or concept art / Create AI art, illustrations, or concept art
- User mentions 生图 (generate images), 文生图 (text-to-image), AI 绘画 (AI drawing), generate image, text-to-image, or create image.
- User provides a prompt and wants to see it visualized / User provides a prompt and wants to see it visualized
Key Features / Key Features
- High-quality generation: HD mode produces more detailed, refined images (~20s)
- Multiple aspect ratios: Square, portrait, landscape formats supported
- GLM-Image model: Latest model with improved understanding and quality
- Excellent at: Scientific illustrations (Chinese label: 科普插画), high-quality portraits (高质量人像), social media graphics (社交媒体图文), commercial posters (商业海报)
- Watermark control: Enable/disable watermarks (requires signed disclaimer for no-watermark)
- Content safety: Built-in content filtering for compliance
Resource Links / Resource Links
| Resource | Link |
|---|---|
| Get API Key | Zhipu Open Platform API Keys |
| API Docs | Image Generation / Image Generation |
| Model Docs | GLM-Image Model Documentation |
Prerequisites / Prerequisites
API Key Setup / API Key Setup (Required / Required)
The script reads the key from the ZHIPU_API_KEY environment variable, and it can be shared with other Zhipu skills.
This script reads the key from the ZHIPU_API_KEY environment variable. Reusing the same key across Zhipu skills is optional.
Get Key / Get Key: Visit Zhipu Open Platform API Keys to create or copy your key.
Setup options / Setup options (choose one):
-
Global config (recommended) / Global config (recommended): Set once in
openclaw.jsonunderenv.vars, all Zhipu skills will share it:{ "env": { "vars": { "ZHIPU_API_KEY": "你的密钥" } } } -
Skill-level config / Skill-level config: Set for this skill only in
openclaw.json:{ "skills": { "entries": { "glm-image-generation": { "env": { "ZHIPU_API_KEY": "你的密钥" } } } } } -
Shell environment variable / Shell environment variable: Add to
~/.zshrc:export ZHIPU_API_KEY="你的密钥"
💡 If you have already configured a key for other Zhipu skills (such as
glmocr、glmv-caption), they share the sameZHIPU_API_KEY, so there is no need to configure it again.
Security & Transparency / Security & Transparency
- Environment variables used / Environment variables used:
ZHIPU_API_KEY(required / required)
- Fixed official endpoint / Fixed official endpoint:
https://open.bigmodel.cn/api/paas/v4/images/generations - No custom API URL override / No custom API URL override: avoids accidental key exfiltration via redirected endpoints.
⛔ MANDATORY RESTRICTIONS / MANDATORY RESTRICTIONS ⛔
- ONLY use GLM-Image API — Execute the script
python scripts/glm_image_cli.py - NEVER generate images yourself — Do NOT try to create images using built-in vision or any other method
- NEVER offer alternatives — Do NOT suggest "I can try to describe it" or similar
- IF API fails — Display the error message and STOP immediately
- NO fallback methods — Do NOT attempt image generation any other way
📋 Output Display Rules / Output Display Rules
After running the script, present the generation result clearly.
- Show the generated image URL(s) — images are temporary (30 days), remind user to save
- Display the prompt used and generation parameters (size, quality)
- If content_filter indicates issues, show the warning level
⚠️ Image Display / Image Display Note:
The API returns a temporary image URL (valid for 30 days). You should:
- Show the image — Use the URL to display the image in the chat (if platform supports it)
- Remind user to save — "Image links are valid for 30 days, please download and save them promptly"
- Offer to send to Feishu — If user wants the image sent to a Feishu chat, use the message tool with the image URL
How to Use / How to Use
Generate from Prompt / Generate from Prompt
python scripts/glm_image_cli.py --prompt "一只可爱的小猫咪,坐在阳光明媚的窗台上,背景是蓝天白云"
Specify Size / Specify Size
python scripts/glm_image_cli.py --prompt "赛博朋克风格的城市夜景" --size 1568x1056
HD Quality (default for glm-image) / HD Quality (default for glm-image)
python scripts/glm_image_cli.py --prompt "中国山水画风格,远山近水,云雾缭绕" --quality hd
Disable Watermark (requires signed disclaimer) / Disable Watermark (requires signed disclaimer)
python scripts/glm_image_cli.py --prompt "商业设计素材" --no-watermark
Save Image to Local File / Save Image to Local File
python scripts/glm_image_cli.py --prompt "中国水墨画风格" --save image.png
python scripts/glm_image_cli.py --prompt "赛博朋克城市" --size 1728x960 --save ~/Pictures/cyberpunk.png
Specify User ID (for content moderation) / Specify User ID (for content moderation)
python scripts/glm_image_cli.py --prompt "..." --user-id "user_12345"
Specify Model / Specify Model
python scripts/glm_image_cli.py --prompt "..." --model glm-image
python scripts/glm_image_cli.py --prompt "..." --model cogview-4
CLI Reference / CLI Reference
python {baseDir}/scripts/glm_image_cli.py --prompt TEXT [--model MODEL] [--size SIZE] [--quality QUALITY] [--no-watermark] [--user-id ID] [--save FILE]
| Parameter | Required | Description |
|---|---|---|
--prompt, -p |
Yes | Text description of the desired image / Text description of the desired image |
--model, -m |
No | Model: glm-image (default), cogview-4, cogview-3-flash / Model |
--size, -s |
No | Image size (default: 1280x1280) / Image size |
--quality, -q |
No | Quality: hd (default) or standard / Quality |
--no-watermark |
No | Disable watermark (requires signed disclaimer) / Disable watermark |
--user-id |
No | End-user ID for content moderation (6-128 chars) / End-user ID |
--save |
No | Save generated image to local file / Save the generated image to a local file |
Supported Sizes / Supported sizes
GLM-Image recommended sizes:
| Size | Aspect Ratio | Use Case |
|---|---|---|
| 1280x1280 | 1:1 | Square (default) |
| 1568×1056 | 3:2 | Landscape / Horizontal |
| 1056×1568 | 2:3 | Portrait / Vertical |
| 1472×1088 | ~4:3 | Wide landscape |
| 1088×1472 | ~3:4 | Tall portrait |
| 1728×960 | 16:9 | Ultra-wide landscape |
| 960×1728 | 9:16 | Ultra-tall portrait |
Custom sizes / Custom sizes:
- Width and height: 1024px - 2048px
- Both dimensions must be multiples of 32 / Both length and width must be multiples of 32
- Maximum total pixels: 2^22 (4,194,304 px) / Maximum total pixels must not exceed 2^22
Response Format / Response format
Official API Response:
{
"created": 123,
"data": [
{
"url": "<string>"
}
],
"content_filter": [
{
"role": "assistant",
"level": 1
}
]
}
CLI Output Format:
{
"ok": true,
"model": "glm-image",
"image_url": "https://open.bigmodel.cn/.../generated_image.png",
"prompt": "一只可爱的小猫咪,坐在阳光明媚的窗台上,背景是蓝天白云",
"size": "1280x1280",
"quality": "hd",
"created": 1710835200,
"content_filter": [
{
"role": "assistant",
"level": 3
}
],
"saved_file": "/Users/xxx/image.png",
"error": null
}
Key fields:
ok— whether generation succeededmodel— model used for generationimage_url— extracted fromdata[0].url, temporary URL (valid 30 days)prompt— the text prompt usedsize— generated image dimensionsquality— hd or standardcreated— Unix timestamp when request was createdcontent_filter— content safety analysis array (may be empty)role: where the issue was detected (user/assistant/history)level: severity 0-3 (0 = most severe, 3 = minor)
saved_file— absolute path to saved local file (if--savewas used)error— error details on failure
Content Safety / Content safety
The API includes content filtering. If issues are detected, content_filter will contain entries with:
role: where the issue was detected (user/assistant/history)level: severity 0-3 (0 = most severe, 3 = minor)
If level 0-1 detected: Generation will fail, show error to user. If level 2-3 detected: Generation may succeed, but warn user about potential issues.
Error Handling / Error Handling
API key not configured:
{
"ok": false,
"error": {
"code": "MISSING_API_KEY",
"message": "ZHIPU_API_KEY not configured. Get your API key at: https://bigmodel.cn/usercenter/proj-mgmt/apikeys"
}
}
→ Show exact error to user, guide them to configure
Authentication failed (401/403):
{
"ok": false,
"error": {
"code": "authentication_error",
"message": "令牌已过期或验证不正确",
"status": 401
}
}
→ API key invalid/expired → reconfigure
Rate limit (429):
{
"ok": false,
"error": {
"code": "rate_limit_exceeded",
"message": "API rate limit exceeded. Please try again later.",
"status": 429
}
}
→ Quota exhausted → inform user to wait or check quota
Content filter violation:
{
"ok": false,
"error": {
"code": "content_filter_violation",
"message": "Content safety check failed",
"status": 400
}
}
→ Explain that the prompt may contain inappropriate content
Invalid size:
{
"ok": false,
"error": {
"code": "INVALID_SIZE",
"message": "Invalid size: 512x512 for model glm-image. Must be multiple of 32, 1024-2048px, max 2^22 pixels"
}
}
→ Guide user to use valid size from the supported list
Download failed:
{
"ok": false,
"error": {
"code": "DOWNLOAD_FAILED",
"message": "Failed to download image to image.png"
}
}
→ Check file path permissions and disk space
Network error:
{
"ok": false,
"error": {
"code": "NETWORK_ERROR",
"message": "Network error: [Errno 8] nodename nor servname provided, or not known"
}
}
→ Check internet connection
Prompt Tips / Prompt tips
Good prompts:
- Specific detail: 一只橘色的英国短毛猫,绿色眼睛,坐在木质窗台上 (an orange British Shorthair cat with green eyes sitting on a wooden windowsill).
- Style keywords: 赛博朋克风格 (cyberpunk style), 中国水墨画 (Chinese ink painting), 油画质感 (oil-painting texture), and 3D 渲染 (3D rendering).
- Lighting: 阳光明媚 (bright sunshine), 柔和的逆光 (soft backlighting), and 电影感灯光 (cinematic lighting).
- Composition: 特写镜头 (close-up), 广角视角 (wide-angle view), and 俯视角度 (overhead angle).
Avoid:
- Vague description: 好看的图片 (a nice-looking image).
- Contradictory elements: 白天和夜晚同时 (day and night at the same time).
- Too many subjects: Keep focus on 1-2 main elements