Alibabacloud Bailian Image Creator

Data & APIs

Generates, edits, and analyzes images using Alibaba Cloud DashScope API with supported qwen and wan2.7 models via predefined scripts.

Install

openclaw skills install alibabacloud-bailian-image-creator

AI Image Creator

Professional-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.

Mandatory Rules

First Principle: Must Use Existing Scripts

All image generation, editing, and understanding tasks must and can only be completed by running existing scripts in the scripts/ directory.

  • Do NOT write your own API call code -- Do not create new Python scripts to call DashScope API. You must use the scripts specified in the "Task-to-Script Mapping" table below
  • Do NOT use PIL/Pillow or other local libraries for image generation or editing (only allowed for auxiliary operations such as size validation)
  • Do NOT use third-party APIs -- Including but not limited to Pollinations.ai, Stability.ai, DALL-E, Midjourney
  • Do NOT create mock/simulated scripts -- Do not bypass real API calls in any way
  • Do NOT use deprecated models -- wanx-v1, wanx-v2, wan2.6-image and other legacy models are discontinued
  • Do NOT mix APIs -- Qwen models (qwen-) can only use MultiModalConversation.call(), Wanx models (wan2.7-) can only use ImageGeneration.call()
  • Do NOT use curl to call DashScope REST API -- Must call through provided scripts, do not write shell scripts as substitutes
  • Do NOT generate placeholder/blank images -- Do not use hardcoded byte streams, blank canvases, or PIL-scaled images to impersonate API-generated images
  • Do NOT claim success when API calls fail -- Must truthfully report failure reasons, do not generate false success reports

Task-to-Script Mapping (The Only Execution Method)

Based on user request keywords, look up the table to select the script. No other methods are allowed:

User Request KeywordsScriptAPIDefault Model
Wanx, wan2.7, reference image + generation, style fusion, multi-image fusion, graffiti-on-car, virtual try-onwanx_generate.pyImageGeneration.call()wan2.7-image
4K HD text-to-imagewanx_generate.pyImageGeneration.call()wan2.7-image-pro
A set of coherent images, image series generationwanx_generate.pyImageGeneration.call()wan2.7-image-pro
Text-to-image, generate image, draw a picture (no reference image)text_to_image.pyMultiModalConversation.call()qwen-image-2.0-pro
Edit image (URL input)image_edit.pyMultiModalConversation.call()qwen-image-edit-max
Edit image (local file)image_edit_base64.pyMultiModalConversation.call()qwen-image-edit-max
Analyze/understand image content, describe imageimage_understanding.pychat.completions.create()qwen3.5-plus

Disambiguation Priority Rules (when multiple keywords match simultaneously):

  1. User mentions "Wanx" or "wan2.7" -> Use wanx_generate.py directly, regardless of whether "generate image" or similar words are present
  2. User provides reference image URLs and requests generating a new image -> Use wanx_generate.py (Wanx supports multi-image reference input)
  3. Text description only, no reference image -> Use text_to_image.py

Allowed Models:

ScriptAllowed Models
text_to_image.pyqwen-image-2.0-pro, qwen-image-2.0
wanx_generate.pywan2.7-image-pro, wan2.7-image
image_edit.py / image_edit_base64.pyqwen-image-edit-max, qwen-image-2.0-pro, qwen-image-edit-plus, qwen-image-edit
image_understanding.pyqwen3.5-plus, qwen-vl-max, qwen-vl-plus

API Key Security Management

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.

  1. Key retrieval is automated: Scripts internally call 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 command
  2. Never hardcode any form of key: Including api_key = "sk-...", export DASHSCOPE_API_KEY="sk-...", and assigning keys in shell scripts
  3. Never extract keys from CLI output: The key value returned by aliyun modelstudio create-api-key is automatically saved by api_key.py. The Agent must not write this value into any script, variable, or file
  4. Never expose keys in any output: Including generated scripts, shell commands, log files (summary.md, task_summary.md, execution_log.md, etc.), and terminal output containing strings starting with sk-
  5. Never read or print keys from config files: Do not use cat ~/.aliyun/config.json, jq, python -c, or other commands to read and output API Key values from config files
  6. Never directly call CLI key commands: Do not directly run aliyun modelstudio create-api-key or aliyun modelstudio list-api-keys. These commands are only called internally by api_key.py
  7. Mandatory self-check before task completion: Run grep -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 regenerate

API Call Result Validation

  1. Check status code: API response status_code must be 200, otherwise abort the task
  2. Check output content: Response must contain valid image URLs (starting with http). No valid URL means failure
  3. Never fabricate results: Do not generate simulated data, false success reports, or placeholder image URLs
  4. Never mock/simulate: Do not create mock scripts or simulate API calls to bypass real calls
  5. Correct behavior on failure:
    • Print error information (status code, error code, error message)
    • Stop executing subsequent steps
    • If it's a key issue, api_key.py will automatically retry creation
    • If retries still fail, report the real error reason without concealment

Output Validation (Must execute before reporting task completion)

  1. Check output files: Confirm image files exist in the output directory and have reasonable size (typically > 10KB)
  2. Key leak scan: Run grep -rn "sk-" <output_directory>/ to check all output files (including logs, summaries, scripts). If leaks are found, delete and regenerate
  3. No false claims: If API calls actually failed or were not executed, do not claim success in the task summary (e.g., listing checkmarks)
  4. Blank image detection: If output images are blank, solid color, or merely scaled versions of input images, treat as task failure

Output Size Control

Model FamilySize FormatSupported 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 tier1K, 2K, 4K
wan2.7-image-pro (editing/series)Preset tier1K, 2K
wan2.7-imagePreset tier1K, 2K

Mapping Rules:

  1. User requests exact pixels (e.g., 1280x720) -> Choose Qwen series, set size='1280*720'
  2. User requests portrait/landscape -> Use the closest fixed size for Qwen text-to-image (e.g., portrait -> 720*1280)
  3. Wanx models -> size can only be 1K/2K/4K, not pixel values

Execution Flow

Step 1: Install Dependencies

pip install -r scripts/requirements.txt

Step 2: Select and Run Script Based on "Task-to-Script Mapping" Table

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.

ScenarioCommandExample
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 understandingpython scripts/image_understanding.py <image_URL> [question]python scripts/image_understanding.py https://example.com/photo.jpg 'What is in this image?'

Step 3: Return Results

Scripts will print the list of generated image URLs; text_to_image.py also auto-downloads images to the current directory.


Model Selection Guide

ConditionChoiceReason
Need accurate in-image text renderingqwen-image-2.0-proQwen series has the strongest text rendering capability
Need 4K ultra-high definitionwan2.7-image-proOnly Wanx pro text-to-image supports 4K
Need a set of style-consistent imageswan2.7-image-pro + enable_sequentialWanx exclusive image series capability
Product/industrial design editingqwen-image-edit-maxStronger geometric reasoning and character consistency
Multi-image reference + compositionwan2.7-imageWanx supports flexible multi-image reference editing
Image content analysis/Q&Aqwen3.5-plusGeneral multimodal understanding, cost-effective
Complex visual reasoningqwen-vl-maxStronger visual understanding capability
Low cost priorityqwen-image-2.0 / wan2.7-imageStandard version at lower cost
No special requirements (default)qwen-image-2.0-proMost balanced overall capability

Prompt Design Guide

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

Reference Information

Environment & Dependencies

PackageVersion ConstraintPurpose
dashscope==1.25.16Text-to-image, image editing, Wanx generation
openai==2.23.0Image understanding (OpenAI-compatible interface)

API Key Configuration

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
ItemDescription
Key Formatsk-xxx (standard DashScope API Key)
Not Supportedsk-sp-xxx (Coding Plan Key, does not support image generation)
Get Keyhttps://help.aliyun.com/zh/model-studio/get-api-key
SecurityNever hardcode; use from api_key import get_api_key; never output full API Key values to terminal, logs, or any files

Alibaba Cloud CLI Configuration (API Key Auto-Create/Delete)

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
CommandPurposeCalled From
aliyun modelstudio list-workspacesGet Bailian Workspace IDapi_key.py: generate_api_key()
aliyun modelstudio create-api-keyCreate DashScope API Keyapi_key.py: generate_api_key()
aliyun modelstudio list-api-keysList existing API Keys (used for limit recycling)api_key.py: generate_api_key()
aliyun modelstudio delete-api-keyDelete cloud API Keyapi_key.py: delete_api_key() / generate_api_key()

Regions & API Endpoints

RegionDashScope APIOpenAI Compatible Mode
Beijing (China)https://dashscope.aliyuncs.com/api/v1https://dashscope.aliyuncs.com/compatible-mode/v1
Singaporehttps://dashscope-intl.aliyuncs.com/api/v1https://dashscope-intl.aliyuncs.com/compatible-mode/v1
Virginia (US)https://dashscope-us.aliyuncs.com/api/v1https://dashscope-us.aliyuncs.com/compatible-mode/v1

Note: API Keys are not interchangeable between regions.

Script Parameter Reference

text_to_image.py -- Text-to-Image (Qwen Series)

ParameterDescription
sizeOnly supports 1024*1024, 720*1280, 1280*720, 1440*720, 720*1440
prompt_extendTrue to auto-optimize prompts
negative_promptNegative prompt to avoid generating undesired content
watermarkWhether to add watermark

image_edit.py / image_edit_base64.py -- Image Editing (Qwen Series)

ParameterTypeDescription
nintNumber of output images, 1-6 (qwen-image-edit fixed at 1)
sizestrOutput resolution, format "width*height", range [512, 2048]
negative_promptstrNegative prompt
prompt_extendboolSmart prompt rewriting, default true
watermarkboolWhether to add watermark, default false
seedintRandom seed [0, 2147483647], for result reproduction

Editing Model Comparison:

ModelStrengthsUse Case
qwen-image-edit-maxStrong geometric reasoning, character consistencyProduct design, precise editing
qwen-image-2.0-proStrong text rendering, realistic qualityGeneral editing, text editing
qwen-image-edit-plusMulti-image output and custom resolutionGeneral editing
qwen-image-editBasic version, fixed single image outputSimple editing

Common Resolution Recommendations:

Aspect RatioRecommended Resolution
1:11024*1024, 1536*1536
2:3768*1152, 1024*1536
3:21152*768, 1536*1024
3:4960*1280, 1080*1440
4:31280*960, 1440*1080
9:16720*1280, 1080*1920
16:91280*720, 1920*1080
21:91344*576, 2048*872

Image Input Methods:

  • HTTP/HTTPS URL: "https://example.com/image.png"
  • Base64 Encoding: "data:image/png;base64,..." -- See scripts/image_edit_base64.py
  • Input: 1-3 reference images; Output: 1-6 images (controlled via n parameter)

wanx_generate.py -- Wanx Image Generation

ParameterDescription
size1K, 2K, 4K (4K only for wan2.7-image-pro text-to-image)
enable_sequentialSeries mode, generates 1-12 style-consistent images
thinking_modeDefault true, enhances reasoning quality (increases latency)
nNormal mode 1-4, series mode 1-12
ModelStrengths
wan2.7-image-proPro version, text-to-image supports 4K HD
wan2.7-imageStandard version, faster generation

image_understanding.py -- Image Understanding

Uses OpenAI-compatible mode to call DashScope. Default model qwen3.5-plus (general understanding), optional qwen-vl-max (complex reasoning).

Pricing

ModelUnit PriceNotes
qwen-image-2.0-proCN pricePro version, strongest text rendering and realistic quality
qwen-image-edit-maxCN pricePro version, image generation and editing fusion
qwen-image-2.0CN priceStandard version
qwen-image-edit-plusCN priceStandard editing
wan2.7-image-proCN priceWanx pro version
wan2.7-imageCN priceWanx 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

Best Practices

  1. Use prompt_extend=True to let the model auto-optimize prompts
  2. Qwen series supports negative_prompt, Wanx series does not support this parameter
  3. Choose appropriate sizes based on requirements to avoid unnecessary large image generation
  4. Use the n parameter to generate multiple images at once for selection
  5. Use URLs for online images, Base64 for small local files, file:// protocol for large files

Error Handling

Scripts have built-in error handling logic. For errors, refer to: https://help.aliyun.com/zh/model-studio/developer-reference/error-code

Related Resources

ScriptFunctionDescription
text_to_image.pyText-to-imageGenerate images from text descriptions, supports auto-download
image_edit.pyImage editingSupports URL, local file, and Base64 input methods
image_edit_base64.pyBase64 image editingDemonstrates Base64 encoding method
base64_tool.pyBase64 toolCLI tool for image-Base64 conversion
wanx_generate.pyWanx generationUses wan2.7-image model for generation
image_understanding.pyImage understandingAnalyze image content, answer questions