Install
openclaw skills install alibabacloud-bailian-image-creatorGenerates, edits, and analyzes images using Alibaba Cloud DashScope API with supported qwen and wan2.7 models via predefined scripts.
openclaw skills install alibabacloud-bailian-image-creatorProfessional-grade AI image creation skill built on Alibaba Cloud DashScope API.
Warning: Before executing any image task, you must read and follow the "Mandatory Rules" section. Violations will cause task failure.
All image generation, editing, and understanding tasks must and can only be completed by running existing scripts in the scripts/ directory.
wanx-v1, wanx-v2, wan2.6-image and other legacy models are discontinuedMultiModalConversation.call(), Wanx models (wan2.7-) can only use ImageGeneration.call()Based on user request keywords, look up the table to select the script. No other methods are allowed:
| User Request Keywords | Script | API | Default Model |
|---|---|---|---|
| Wanx, wan2.7, reference image + generation, style fusion, multi-image fusion, graffiti-on-car, virtual try-on | wanx_generate.py | ImageGeneration.call() | wan2.7-image |
| 4K HD text-to-image | wanx_generate.py | ImageGeneration.call() | wan2.7-image-pro |
| A set of coherent images, image series generation | wanx_generate.py | ImageGeneration.call() | wan2.7-image-pro |
| Text-to-image, generate image, draw a picture (no reference image) | text_to_image.py | MultiModalConversation.call() | qwen-image-2.0-pro |
| Edit image (URL input) | image_edit.py | MultiModalConversation.call() | qwen-image-edit-max |
| Edit image (local file) | image_edit_base64.py | MultiModalConversation.call() | qwen-image-edit-max |
| Analyze/understand image content, describe image | image_understanding.py | chat.completions.create() | qwen3.5-plus |
Disambiguation Priority Rules (when multiple keywords match simultaneously):
wanx_generate.py directly, regardless of whether "generate image" or similar words are presentwanx_generate.py (Wanx supports multi-image reference input)text_to_image.pyAllowed Models:
| Script | Allowed Models |
|---|---|
text_to_image.py | qwen-image-2.0-pro, qwen-image-2.0 |
wanx_generate.py | wan2.7-image-pro, wan2.7-image |
image_edit.py / image_edit_base64.py | qwen-image-edit-max, qwen-image-2.0-pro, qwen-image-edit-plus, qwen-image-edit |
image_understanding.py | qwen3.5-plus, qwen-vl-max, qwen-vl-plus |
Scripts automatically handle key retrieval via api_key.py. The Agent does not need to and should not manually extract, set, or pass API Key values.
api_key.py to automatically obtain keys from config files/environment variables, or auto-create via CLI. The Agent only needs to run the script commandapi_key = "sk-...", export DASHSCOPE_API_KEY="sk-...", and assigning keys in shell scriptsaliyun modelstudio create-api-key is automatically saved by api_key.py. The Agent must not write this value into any script, variable, or filesk-cat ~/.aliyun/config.json, jq, python -c, or other commands to read and output API Key values from config filesaliyun modelstudio create-api-key or aliyun modelstudio list-api-keys. These commands are only called internally by api_key.pygrep -rn "sk-" <output_directory>/ to check all output files; if any strings starting with sk- are found (excluding "sk-xxx" placeholders), delete the affected files and regeneratestatus_code must be 200, otherwise abort the taskhttp). No valid URL means failureapi_key.py will automatically retry creationgrep -rn "sk-" <output_directory>/ to check all output files (including logs, summaries, scripts). If leaks are found, delete and regenerate| Model Family | Size Format | Supported Values |
|---|---|---|
qwen-image-2.0-pro / qwen-image-2.0 (text-to-image) | "width*height" | 1024*1024, 720*1280, 1280*720, 1440*720, 720*1440 |
qwen-image-edit-* / qwen-image-2.0-pro (editing) | "width*height" | Width and height each [512, 2048], freely combined |
wan2.7-image-pro (text-to-image) | Preset tier | 1K, 2K, 4K |
wan2.7-image-pro (editing/series) | Preset tier | 1K, 2K |
wan2.7-image | Preset tier | 1K, 2K |
Mapping Rules:
1280x720) -> Choose Qwen series, set size='1280*720'720*1280)size can only be 1K/2K/4K, not pixel valuespip install -r scripts/requirements.txt
Selection Logic: First check if the user mentions "Wanx"/"wan2.7" or provides reference image URLs -> If yes, use wanx_generate.py; otherwise match by other keywords in the mapping table.
API Key is automatically managed by scripts (three-level retrieval: config file -> environment variable -> auto-create). No manual key handling is needed. The Agent only needs to run the commands in the table below. Do not write your own scripts, set environment variables, or use curl to call APIs.
| Scenario | Command | Example |
|---|---|---|
| Text-to-image (Qwen) | python scripts/text_to_image.py <prompt> [size] [model] | python scripts/text_to_image.py 'An orange cat sitting on a windowsill, 8K' 1024*1024 qwen-image-2.0-pro |
| Text-to-image / Multi-image fusion (Wanx) | python scripts/wanx_generate.py <prompt> [ref_image_URLs...] | python scripts/wanx_generate.py 'Paint the graffiti from image 2 on the car in image 1' url1 url2 |
| Image editing (URL input) | python scripts/image_edit.py <instruction> <image_URL1> [URL2] [URL3] | python scripts/image_edit.py 'Change the background to white' https://example.com/photo.png |
| Image editing (local file) | python scripts/image_edit_base64.py <instruction> <local_image1> [image2] [image3] | python scripts/image_edit_base64.py 'Change the background to white' ./photo.png |
| Image understanding | python scripts/image_understanding.py <image_URL> [question] | python scripts/image_understanding.py https://example.com/photo.jpg 'What is in this image?' |
Scripts will print the list of generated image URLs; text_to_image.py also auto-downloads images to the current directory.
| Condition | Choice | Reason |
|---|---|---|
| Need accurate in-image text rendering | qwen-image-2.0-pro | Qwen series has the strongest text rendering capability |
| Need 4K ultra-high definition | wan2.7-image-pro | Only Wanx pro text-to-image supports 4K |
| Need a set of style-consistent images | wan2.7-image-pro + enable_sequential | Wanx exclusive image series capability |
| Product/industrial design editing | qwen-image-edit-max | Stronger geometric reasoning and character consistency |
| Multi-image reference + composition | wan2.7-image | Wanx supports flexible multi-image reference editing |
| Image content analysis/Q&A | qwen3.5-plus | General multimodal understanding, cost-effective |
| Complex visual reasoning | qwen-vl-max | Stronger visual understanding capability |
| Low cost priority | qwen-image-2.0 / wan2.7-image | Standard version at lower cost |
| No special requirements (default) | qwen-image-2.0-pro | Most balanced overall capability |
For detailed guide, see Prompt Design Guide
Prompt structure formula: [Subject description] + [Scene/environment] + [Lighting/mood] + [Composition/angle] + [Art style] + [Quality parameters]
Complete example:
A 30-year-old Asian male detective standing on a rainy night Tokyo street, wearing a dark gray trench coat, holding a black umbrella, neon red and blue lights reflecting on his face, raindrops dripping along the umbrella edge, puddles on the ground reflecting brilliant city lights, Rembrandt lighting, volumetric fog, cinematic composition, 35mm anamorphic lens, film grain, moody atmosphere, high detail, photorealistic, 8K
Negative prompt template (Qwen series supports negative_prompt, Wanx series does not):
low quality, blurry, pixelated, oversaturated, deformed hands, extra fingers, distorted face, uncanny valley, text, watermark, logo, signature, cropped, out of frame, worst quality
| Package | Version Constraint | Purpose |
|---|---|---|
dashscope | ==1.25.16 | Text-to-image, image editing, Wanx generation |
openai | ==2.23.0 | Image understanding (OpenAI-compatible interface) |
This skill manages DashScope API Keys through scripts/api_key.py, which automatically validates key format (detects invalid keys like sk-sp-).
Retrieval Priority: ~/.aliyun/config.json > Environment variable DASHSCOPE_API_KEY > Auto-create via Alibaba Cloud CLI
Method 1: Alibaba Cloud CLI Config File (Recommended)
Add a dashscope field to the current profile in ~/.aliyun/config.json:
{
"current": "default",
"profiles": [
{
"name": "default",
"mode": "AK",
"access_key_id": "...",
"access_key_secret": "...",
"dashscope": {
"api_key": "sk-xxx",
"api_key_id": "4359606"
}
}
]
}
Method 2: System Environment Variable
export DASHSCOPE_API_KEY=sk-xxx
| Item | Description |
|---|---|
| Key Format | sk-xxx (standard DashScope API Key) |
| Not Supported | sk-sp-xxx (Coding Plan Key, does not support image generation) |
| Get Key | https://help.aliyun.com/zh/model-studio/get-api-key |
| Security | Never hardcode; use from api_key import get_api_key; never output full API Key values to terminal, logs, or any files |
scripts/api_key.py creates and deletes API Keys via aliyun modelstudio commands. Complete the following setup before use:
# Enable AI-Mode (allow Agent to call CLI)
aliyun configure ai-mode enable
# Set User-Agent
aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-bailian-image-creator"
# Update plugins to latest version
aliyun plugin update
# Install ModelStudio plugin (if not already installed)
aliyun plugin install --names aliyun-cli-modelstudio --enable-pre
# Disable AI-Mode after task completion
aliyun configure ai-mode disable
| Command | Purpose | Called From |
|---|---|---|
aliyun modelstudio list-workspaces | Get Bailian Workspace ID | api_key.py: generate_api_key() |
aliyun modelstudio create-api-key | Create DashScope API Key | api_key.py: generate_api_key() |
aliyun modelstudio list-api-keys | List existing API Keys (used for limit recycling) | api_key.py: generate_api_key() |
aliyun modelstudio delete-api-key | Delete cloud API Key | api_key.py: delete_api_key() / generate_api_key() |
| Region | DashScope API | OpenAI Compatible Mode |
|---|---|---|
| Beijing (China) | https://dashscope.aliyuncs.com/api/v1 | https://dashscope.aliyuncs.com/compatible-mode/v1 |
| Singapore | https://dashscope-intl.aliyuncs.com/api/v1 | https://dashscope-intl.aliyuncs.com/compatible-mode/v1 |
| Virginia (US) | https://dashscope-us.aliyuncs.com/api/v1 | https://dashscope-us.aliyuncs.com/compatible-mode/v1 |
Note: API Keys are not interchangeable between regions.
| Parameter | Description |
|---|---|
size | Only supports 1024*1024, 720*1280, 1280*720, 1440*720, 720*1440 |
prompt_extend | True to auto-optimize prompts |
negative_prompt | Negative prompt to avoid generating undesired content |
watermark | Whether to add watermark |
| Parameter | Type | Description |
|---|---|---|
n | int | Number of output images, 1-6 (qwen-image-edit fixed at 1) |
size | str | Output resolution, format "width*height", range [512, 2048] |
negative_prompt | str | Negative prompt |
prompt_extend | bool | Smart prompt rewriting, default true |
watermark | bool | Whether to add watermark, default false |
seed | int | Random seed [0, 2147483647], for result reproduction |
Editing Model Comparison:
| Model | Strengths | Use Case |
|---|---|---|
qwen-image-edit-max | Strong geometric reasoning, character consistency | Product design, precise editing |
qwen-image-2.0-pro | Strong text rendering, realistic quality | General editing, text editing |
qwen-image-edit-plus | Multi-image output and custom resolution | General editing |
qwen-image-edit | Basic version, fixed single image output | Simple editing |
Common Resolution Recommendations:
| Aspect Ratio | Recommended Resolution |
|---|---|
| 1:1 | 1024*1024, 1536*1536 |
| 2:3 | 768*1152, 1024*1536 |
| 3:2 | 1152*768, 1536*1024 |
| 3:4 | 960*1280, 1080*1440 |
| 4:3 | 1280*960, 1440*1080 |
| 9:16 | 720*1280, 1080*1920 |
| 16:9 | 1280*720, 1920*1080 |
| 21:9 | 1344*576, 2048*872 |
Image Input Methods:
"https://example.com/image.png""data:image/png;base64,..." -- See scripts/image_edit_base64.pyn parameter)| Parameter | Description |
|---|---|
size | 1K, 2K, 4K (4K only for wan2.7-image-pro text-to-image) |
enable_sequential | Series mode, generates 1-12 style-consistent images |
thinking_mode | Default true, enhances reasoning quality (increases latency) |
n | Normal mode 1-4, series mode 1-12 |
| Model | Strengths |
|---|---|
wan2.7-image-pro | Pro version, text-to-image supports 4K HD |
wan2.7-image | Standard version, faster generation |
Uses OpenAI-compatible mode to call DashScope. Default model qwen3.5-plus (general understanding), optional qwen-vl-max (complex reasoning).
| Model | Unit Price | Notes |
|---|---|---|
| qwen-image-2.0-pro | CN price | Pro version, strongest text rendering and realistic quality |
| qwen-image-edit-max | CN price | Pro version, image generation and editing fusion |
| qwen-image-2.0 | CN price | Standard version |
| qwen-image-edit-plus | CN price | Standard editing |
| wan2.7-image-pro | CN price | Wanx pro version |
| wan2.7-image | CN price | Wanx standard version |
New users get 100 free image credits (valid for 90 days) after activating Bailian. View bills: https://usercenter2.aliyun.com/finance/expense-center/overview
prompt_extend=True to let the model auto-optimize promptsnegative_prompt, Wanx series does not support this parametern parameter to generate multiple images at once for selectionfile:// protocol for large filesScripts have built-in error handling logic. For errors, refer to: https://help.aliyun.com/zh/model-studio/developer-reference/error-code
| Script | Function | Description |
|---|---|---|
text_to_image.py | Text-to-image | Generate images from text descriptions, supports auto-download |
image_edit.py | Image editing | Supports URL, local file, and Base64 input methods |
image_edit_base64.py | Base64 image editing | Demonstrates Base64 encoding method |
base64_tool.py | Base64 tool | CLI tool for image-Base64 conversion |
wanx_generate.py | Wanx generation | Uses wan2.7-image model for generation |
image_understanding.py | Image understanding | Analyze image content, answer questions |