Install
openclaw skills install glm-image-genOfficial skill for generating high-quality images from text prompts using ZhiPu GLM-Image API. Excellent at scientific illustrations, high-quality portraits, social media graphics, and commercial posters. Supports multiple aspect ratios, HD quality, and watermark control. Use this skill when the user wants to generate images, create AI art, text-to-image, or convert text descriptions into visual content.
openclaw skills install glm-image-genGenerate high-quality images from text prompts using the ZhiPu GLM-Image API.
| Resource | Link |
|---|---|
| Get API Key | 智谱开放平台 API Keys |
| API Docs | Image Generation / 图像生成 |
| Model Docs | GLM-Image 模型文档 |
脚本通过 ZHIPU_API_KEY 环境变量获取密钥,可与其他智谱技能复用同一个 key。
This script reads the key from the ZHIPU_API_KEY environment variable. Reusing the same key across Zhipu skills is optional.
Get Key / 获取 Key: Visit 智谱开放平台 API Keys to create or copy your key.
Setup options / 配置方式(任选一种):
Global config (recommended) / 全局配置(推荐): Set once in openclaw.json under env.vars, all Zhipu skills will share it:
{
"env": {
"vars": {
"ZHIPU_API_KEY": "你的密钥"
}
}
}
Skill-level config / Skill 级别配置: Set for this skill only in openclaw.json:
{
"skills": {
"entries": {
"glm-image-generation": {
"env": {
"ZHIPU_API_KEY": "你的密钥"
}
}
}
}
}
Shell environment variable / Shell 环境变量: Add to ~/.zshrc:
export ZHIPU_API_KEY="你的密钥"
💡 如果你已为其他智谱 skill(如
glmocr、glmv-caption)配置过 key,它们共享同一个ZHIPU_API_KEY,无需重复配置。
ZHIPU_API_KEY (required / 必需)https://open.bigmodel.cn/api/paas/v4/images/generations⛔ MANDATORY RESTRICTIONS / 强制限制 ⛔
python scripts/glm_image_cli.pyAfter running the script, present the generation result clearly.
⚠️ Image Display / 图片展示注意:
The API returns a temporary image URL (valid for 30 days). You should:
python scripts/glm_image_cli.py --prompt "一只可爱的小猫咪,坐在阳光明媚的窗台上,背景是蓝天白云"
python scripts/glm_image_cli.py --prompt "赛博朋克风格的城市夜景" --size 1568x1056
python scripts/glm_image_cli.py --prompt "中国山水画风格,远山近水,云雾缭绕" --quality hd
python scripts/glm_image_cli.py --prompt "商业设计素材" --no-watermark
python scripts/glm_image_cli.py --prompt "中国水墨画风格" --save image.png
python scripts/glm_image_cli.py --prompt "赛博朋克城市" --size 1728x960 --save ~/Pictures/cyberpunk.png
python scripts/glm_image_cli.py --prompt "..." --user-id "user_12345"
python scripts/glm_image_cli.py --prompt "..." --model glm-image
python scripts/glm_image_cli.py --prompt "..." --model cogview-4
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 / 图片的文本描述 |
--model, -m | No | Model: glm-image (default), cogview-4, cogview-3-flash / 模型 |
--size, -s | No | Image size (default: 1280x1280) / 图片尺寸 |
--quality, -q | No | Quality: hd (default) or standard / 质量 |
--no-watermark | No | Disable watermark (requires signed disclaimer) / 关闭水印 |
--user-id | No | End-user ID for content moderation (6-128 chars) / 终端用户 ID |
--save | No | Save generated image to local file / 保存生成的图片到本地文件 |
GLM-Image recommended sizes:
| Size | Aspect Ratio | Use Case |
|---|---|---|
| 1280x1280 | 1:1 | Square (default) |
| 1568×1056 | 3:2 | Landscape / 横向 |
| 1056×1568 | 2:3 | Portrait / 纵向 |
| 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 / 自定义尺寸:
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 from data[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 --save was used)error — error details on failureThe 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.
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
Good prompts:
Avoid: