SKILLS/image-generation-qwen/SKILL.md

163 lines
4.1 KiB
Markdown

---
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"
```