---
name: qwen-image-generation
description: Generate images using Qwen DashScope API with support for custom prompts, aspect ratios, and multiple image generation.
metadata: {"clawdbot":{"emoji":"🎨","os":["linux","darwin","win32"]}}
---

# Qwen Image Generation SKILL

## Description

Generate images using Qwen (通义千问) API via DashScope. Supports custom prompts, aspect ratios, generation count, prompt enhancement, and image-to-image generation.

## Quick Start (MCP Server)

### Setup

1. Set the environment variable:
   ```bash
   export DASHSCOPE_API_KEY=your-api-key
   ```

2. Add to your MCP client config (e.g., Claude Desktop, Cursor, etc.):
   
   ```json
   {
     "mcpServers": {
       "qwen-image": {
         "command": "python",
         "args": ["path/to/qwen_image_mcp.py"]
       }
     }
   }
   ```

3. Use the `generate_image` tool:
   
   ```
   generate_image({
     prompt: "A beautiful mountain landscape at sunset",
     size: "1024*1024"
   })
   ```

## MCP Tool: generate_image

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `prompt` | string | true | - | Image generation prompt (max 800 chars) |
| `negative_prompt` | string | false | - | Negative prompt to avoid elements (max 500 chars) |
| `prompt_extend` | boolean | false | `true` | Enable prompt enhancement |
| `size` | string | false | `1024*1024` | Image resolution |
| `n` | integer | false | `1` | Number of images (1-6) |
| `image_url` | string | false | - | Reference image URL for img2img |
| `output_path` | string | false | - | Local path to save image |

### Size Options

| Size | Aspect Ratio |
|------|--------------|
| `1024*1024` | 1:1 (default) |
| `1344*768` | 16:9 |
| `768*1344` | 9:16 |
| `1184*864` | 4:3 |
| `864*1184` | 3:4 |

### Example Usage

```javascript
// Basic generation
{
  "prompt": "A beautiful mountain landscape at sunset"
}

// High resolution with multiple images
{
  "prompt": "A realistic portrait",
  "size": "1024*1024",
  "n": 3
}

// With reference image
{
  "prompt": "Transform to oil painting style",
  "image_url": "https://example.com/input.jpg"
}

// With local save
{
  "prompt": "A sunset over the ocean",
  "output_path": "./output/sunset"
}

// With negative prompt
{
  "prompt": "A beautiful garden",
  "negative_prompt": "blurry, low quality, distorted"
}
```

## CLI Usage

```bash
python scripts/run.py --api-key "your-api-key" --prompt "your-prompt" [options]
```

### CLI Arguments

| Argument | Type | Required | Description |
|----------|------|----------|-------------|
| `--api-key` | string | true | DashScope API key |
| `--prompt` | string | true | Generation prompt |
| `--size` | string | false | Image size (default: 1024*1024) |
| `--n` | integer | false | Number of images (default: 1, max: 6) |
| `--negative-prompt` | string | false | Negative prompt |
| `--prompt-extend` | boolean | false | Enable prompt extend (default: true) |
| `--image-url` | string | false | Reference image URL for img2img |
| `--output-path` | string | false | Local path to save image |

## API Reference

- **Endpoint**: `POST https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation`
- **Auth**: Bearer Token
- **Env Var**: `DASHSCOPE_API_KEY`
- **Model**: `qwen-image-2.0-pro`

## Examples

### MCP Server Examples

```
generate_image({ prompt: "A sunset over the ocean" })

generate_image({ 
  prompt: "A realistic portrait",
  size: "1024*1024",
  n: 3
})

generate_image({
  prompt: "Transform into anime style",
  image_url: "https://example.com/photo.jpg"
})
```

### CLI Examples

```bash
# Basic generation
python scripts/run.py --api-key "sk-xxx" --prompt "A sunset"

# Multiple images with custom size
python scripts/run.py --api-key "sk-xxx" --prompt "A portrait" --size "1024*1024" --n 3

# With negative prompt
python scripts/run.py --api-key "sk-xxx" --prompt "A garden" --negative-prompt "blurry, low quality"

# With reference image
python scripts/run.py --api-key "sk-xxx" --prompt "Transform to anime style" --image-url "https://example.com/photo.jpg"

# Save to local path
python scripts/run.py --api-key "sk-xxx" --prompt "A mountain" --output-path "./output/mountain"
```
