Package Information
Documentation
n8n-nodes-qwen-image
šØ Dual-Purpose Image Generation Package: Use as both an n8n community node and an AI tool for generating high-quality images using Qwen Image model from ModelScope.
⨠Features
- š Dual Functionality: Works as both n8n node and AI tool calling interface
- šØ High-Quality Image Generation: Powered by Qwen Image model from ModelScope
- š Flexible Prompting: Support for positive and negative prompts
- š Multiple Sizes: Configurable image dimensions (1024x1024, 720x1280, 1280x720)
- āļø Advanced Controls: Seed, steps, CFG scale parameters
- š Smart Polling: Automatic task status checking with configurable intervals
- š”ļø Robust Error Handling: Built-in retry mechanisms and comprehensive error handling
- š AI Framework Compatible: Supports OpenAI Functions, LangChain, and other AI frameworks
š¦ Installation
For n8n Usage
Community Nodes (Recommended)
- Go to Settings > Community Nodes
- Select Install
- Enter
n8n-nodes-qwen-image - Agree to the risks of using community nodes
- Select Install
After installation, restart n8n to see the new nodes.
Manual Installation
npm install n8n-nodes-qwen-image
For Docker deployments:
RUN cd /usr/local/lib/node_modules/n8n && npm install n8n-nodes-qwen-image
For AI Tool Usage
npm install n8n-nodes-qwen-image
š Usage
š§ As n8n Node
- Add the Qwen Image node to your workflow
- Configure API credentials (ModelScope API key)
- Set generation parameters
- Connect to other nodes in your workflow
Example n8n Workflow
{
"nodes": [
{
"name": "Generate Image",
"type": "n8n-nodes-qwen-image.qwenImage",
"parameters": {
"prompt": "A serene mountain landscape at sunset, digital art",
"negativePrompt": "blurry, low quality, distorted",
"size": "1024x1024",
"steps": 25,
"cfgScale": 7.5
}
}
]
}
š¤ As AI Tool
Basic Usage
import { createQwenImageTool, generateImage } from 'n8n-nodes-qwen-image';
// Method 1: Using tool instance
const tool = createQwenImageTool({
apiKey: 'your-modelscope-api-key',
baseUrl: 'https://dashscope.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis'
});
const result = await tool.call({
prompt: 'A beautiful sunset over mountains',
size: '1024x1024',
steps: 20
});
console.log(result);
// {
// success: true,
// data: {
// task_id: 'xxx',
// status: 'SUCCEEDED',
// image_url: 'https://...',
// prompt: 'A beautiful sunset over mountains',
// ...
// }
// }
// Method 2: Direct function call
const quickResult = await generateImage(
{ apiKey: 'your-api-key', baseUrl: 'https://...' },
'A cyberpunk cityscape at night',
{ size: '1280x720', steps: 30 }
);
OpenAI Functions Integration
import { QWEN_IMAGE_TOOL_FUNCTION, createQwenImageTool } from 'n8n-nodes-qwen-image';
import OpenAI from 'openai';
const openai = new OpenAI({ apiKey: 'your-openai-key' });
const qwenTool = createQwenImageTool({ apiKey: 'your-modelscope-key' });
const response = await openai.chat.completions.create({
model: 'gpt-4',
messages: [{ role: 'user', content: 'Generate an image of a sunset' }],
tools: [{ type: 'function', function: QWEN_IMAGE_TOOL_FUNCTION }],
tool_choice: 'auto'
});
// Handle tool calls
if (response.choices[0].message.tool_calls) {
for (const toolCall of response.choices[0].message.tool_calls) {
if (toolCall.function.name === 'generate_qwen_image') {
const args = JSON.parse(toolCall.function.arguments);
const result = await qwenTool.call(args);
console.log('Generated image:', result);
}
}
}
LangChain Integration
import { QwenImageTool, QWEN_IMAGE_TOOL_FUNCTION } from 'n8n-nodes-qwen-image';
import { DynamicTool } from 'langchain/tools';
const qwenImageTool = new DynamicTool({
name: QWEN_IMAGE_TOOL_FUNCTION.name,
description: QWEN_IMAGE_TOOL_FUNCTION.description,
func: async (input: string) => {
const tool = new QwenImageTool({ apiKey: 'your-api-key' });
const args = JSON.parse(input);
const result = await tool.call(args);
return JSON.stringify(result);
}
});
// Use with LangChain agents
const tools = [qwenImageTool];
// ... rest of your LangChain setup
āļø Configuration
API Credentials
You need ModelScope API credentials:
- API Key: Your ModelScope API key (required)
- Base URL: API endpoint (optional, has default)
Getting ModelScope API Key
- Visit ModelScope
- Sign up or log in
- Go to profile settings
- Generate an API key
- Copy for use in your application
š Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
prompt |
string | ā | - | Text description of the image to generate |
negative_prompt |
string | ā | - | What to avoid in the image |
size |
string | ā | '1024x1024' | Image dimensions (1024x1024, 720x1280, 1280x720) |
seed |
integer | ā | -1 | Random seed for reproducible results (-1 for random) |
steps |
integer | ā | 20 | Denoising steps (1-50) |
cfg_scale |
number | ā | 7 | Classifier-free guidance scale (1-20) |
polling_interval |
integer | ā | 5 | Time between status checks (1-60 seconds) |
max_polling_time |
integer | ā | 300 | Maximum wait time (60-1800 seconds) |
š¤ Output
n8n Node Output
{
"taskId": "unique-task-identifier",
"status": "SUCCEEDED",
"imageUrl": "https://generated-image-url",
"imageData": "base64-encoded-image-data",
"metadata": {
"prompt": "original-prompt",
"size": "1024x1024",
"steps": 20,
"cfgScale": 7
}
}
AI Tool Output
interface ToolCallResult {
success: boolean;
data?: {
task_id: string;
status: string;
image_url: string;
prompt: string;
negative_prompt?: string;
size: string;
seed: number;
steps: number;
cfg_scale: number;
metadata: any;
};
error?: string;
}
š§ Advanced Usage
Custom Configuration
import { QwenImageAPI } from 'n8n-nodes-qwen-image/core';
// Direct API usage
const api = new QwenImageAPI({
apiKey: 'your-key',
baseUrl: 'custom-endpoint'
});
const result = await api.generateImage(
{
prompt: 'A futuristic robot',
size: '1024x1024',
steps: 30,
cfgScale: 8
},
{
pollingInterval: 3,
maxPollingTime: 600
}
);
Tool Metadata
import { QWEN_IMAGE_TOOL_METADATA } from 'n8n-nodes-qwen-image';
console.log(QWEN_IMAGE_TOOL_METADATA);
// {
// name: 'qwen-image-generator',
// version: '2.0.0',
// description: 'AI tool for generating images using Qwen Image model',
// capabilities: ['text-to-image', 'negative-prompting', ...],
// supported_sizes: ['1024x1024', '720x1280', '1280x720'],
// ...
// }
š ļø Error Handling
Both n8n node and AI tool include comprehensive error handling:
- ā API authentication errors
- ā Network connectivity issues
- ā Task timeout scenarios
- ā Invalid parameter validation
- ā Rate limiting responses
- ā Malformed API responses
Error Examples
// AI Tool error handling
const result = await tool.call({ prompt: '' }); // Invalid prompt
console.log(result);
// {
// success: false,
// error: 'Missing or invalid prompt parameter'
// }
// API error handling
try {
const result = await api.generateImage(params, options);
} catch (error) {
console.error('Generation failed:', error.message);
}
š Troubleshooting
Common Issues
Authentication Failed
- ā Verify API key is correct
- ā Check ModelScope account credits
- ā Ensure API key has proper permissions
Task Timeout
- ā
Increase
max_polling_timeparameter - ā Check ModelScope service status
- ā Try with simpler prompts
- ā
Increase
Invalid Parameters
- ā Ensure prompt is not empty
- ā Verify size is supported (1024x1024, 720x1280, 1280x720)
- ā Check numeric parameters are within valid ranges
Import Issues
- ā Ensure package is properly installed
- ā Check TypeScript configuration
- ā Verify import paths are correct
š API Reference
Core Classes
QwenImageAPI: Core API clientQwenImageTool: AI tool wrapperQwenImage: n8n node implementation
Utility Functions
createQwenImageTool(config): Create tool instancegenerateImage(config, prompt, options): Quick generation
Constants
QWEN_IMAGE_TOOL_FUNCTION: OpenAI Functions schemaQWEN_IMAGE_TOOL_METADATA: Tool metadataVERSION: Package version
š License
š¤ Support
If you have any issues or questions:
- š Open an issue on GitHub
- š¬ Join our community discussions
- š§ Contact the maintainer
š¤ Contributing
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
š Changelog
See CHANGELOG.md for details about changes in each version.
š·ļø Version 2.0.0
New in v2.0.0:
- ⨠Dual-purpose functionality (n8n node + AI tool)
- š OpenAI Functions compatibility
- š¦ LangChain integration support
- šļø Improved architecture with core API separation
- š Enhanced documentation and examples
- š”ļø Better error handling and validation
- š¦ Modern package structure with proper exports
š Table of Contents
- Installation
- Quick Start
- Operations
- Credentials
- Configuration
- Usage Examples
- Troubleshooting
- Compatibility
- Contributing
- Resources
š Installation
Method 1: Via n8n Community Nodes (Recommended)
- Open your n8n instance
- Go to Settings ā Community Nodes
- Click Install a community node
- Enter the package name:
n8n-nodes-qwen-image - Click Install
- Restart your n8n instance
Method 2: Via npm (Self-hosted)
# Navigate to your n8n installation directory
cd ~/.n8n
# Install the community node
npm install n8n-nodes-qwen-image
# Restart n8n
n8n start
Method 3: Docker
If you're using n8n with Docker, add the package to your Dockerfile:
FROM n8nio/n8n
USER root
RUN npm install -g n8n-nodes-qwen-image
USER node
For more detailed installation instructions, follow the official n8n community nodes installation guide.
ā” Quick Start
- Install the node using one of the methods above
- Get your ModelScope API key from ModelScope Console
- Create credentials in n8n (Settings ā Credentials ā Add Credential ā ModelScope API)
- Add the Qwen Image node to your workflow
- Configure and execute your first image generation!
š ļø Operations
Generate Image
The primary operation allows you to create stunning images from text descriptions with extensive customization options:
Core Parameters
- Prompt (required): Detailed text description of the image you want to generate
- Image Size: Choose from multiple aspect ratios:
1024x1024- Square format (default)720x1280- Portrait format1280x720- Landscape format
Advanced Parameters
- Negative Prompt: Specify what you don't want in the image
- Seed: Set a specific seed for reproducible results (optional)
- Steps: Number of inference steps (1-50, default: 20)
- CFG Scale: Classifier-free guidance scale (1-20, default: 7)
- Poll Interval: How often to check task status in seconds (default: 5)
- Max Poll Attempts: Maximum polling attempts before timeout (default: 60)
š Credentials
Setting up ModelScope API Credentials
Step 1: Get Your API Key
- Visit ModelScope and create an account
- Navigate to your API Keys page
- Generate a new API key or copy your existing one
Step 2: Configure in n8n
- In your n8n instance, go to Settings ā Credentials
- Click Add Credential
- Search for and select "ModelScope API"
- Enter your API key in the API Key field
- Test the connection and save
Security Notes
- Keep your API key secure and never share it publicly
- Use environment variables for production deployments
- Regularly rotate your API keys for enhanced security
āļø Configuration
Environment Variables (Optional)
For production deployments, you can set environment variables:
# ModelScope API Configuration
MODELSCOPE_API_KEY=your_api_key_here
MODELSCOPE_API_URL=https://api-inference.modelscope.cn
š Compatibility
| Component | Version Requirement |
|---|---|
| n8n | >= 1.0.0 |
| Node.js | >= 18.0.0 |
| npm | >= 8.0.0 |
Tested Versions
- ā n8n 1.32.2+
- ā Node.js 18.x, 20.x, 22.x
- ā npm 8.x, 9.x, 10.x
Platform Support
- ā Linux (Ubuntu, CentOS, Alpine)
- ā macOS (Intel & Apple Silicon)
- ā Windows 10/11
- ā Docker containers
š Usage Examples
Example 1: Basic Image Generation
{
"prompt": "A majestic dragon flying over a medieval castle at sunset, fantasy art style",
"imageSize": "1024x1024",
"steps": 20,
"cfgScale": 7
}
Example 2: Advanced Configuration with Negative Prompts
{
"prompt": "Professional headshot of a business person, clean background, high quality",
"negativePrompt": "blurry, low quality, distorted, cartoon, anime",
"imageSize": "720x1280",
"seed": 12345,
"steps": 30,
"cfgScale": 8
}
Example 3: Batch Image Generation Workflow
- HTTP Request Node: Fetch prompts from an API
- Code Node: Process and format the prompts
- Qwen Image Node: Generate images for each prompt
- Google Drive Node: Save generated images to cloud storage
Example 4: Content Creation Pipeline
- Webhook Node: Receive content requests
- OpenAI Node: Generate image descriptions
- Qwen Image Node: Create images from descriptions
- Slack Node: Send results to team channel
Pro Tips
- Detailed Prompts: More specific prompts yield better results
- Negative Prompts: Use to avoid unwanted elements
- Seed Values: Use the same seed for consistent results
- Aspect Ratios: Choose based on your intended use case
š§ Troubleshooting
Common Issues
"Authentication Failed"
- ā Verify your ModelScope API key is correct
- ā Check if your API key has sufficient permissions
- ā Ensure the credential is properly configured in n8n
"Task Timeout"
- ā
Increase the
maxPollAttemptsparameter - ā Check ModelScope service status
- ā Try with a simpler prompt
"Invalid Image Size"
- ā
Use only supported sizes:
1024x1024,720x1280,1280x720 - ā Check for typos in the imageSize parameter
"Rate Limit Exceeded"
- ā Implement delays between requests
- ā Check your ModelScope API quota
- ā Consider upgrading your ModelScope plan
Debug Mode
Enable debug logging in n8n to see detailed request/response information:
N8N_LOG_LEVEL=debug n8n start
Getting Help
- š Check the ModelScope API Documentation
- š¬ Join the n8n Community
- š Report issues on GitHub
š¤ Contributing
We welcome contributions! Here's how you can help:
Development Setup
# Clone the repository
git clone https://github.com/your-username/n8n-nodes-qwen-image.git
cd n8n-nodes-qwen-image
# Install dependencies
npm install
# Build the project
npm run build
# Run linting
npm run lint
# Run tests
npm test
Contribution Guidelines
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Code Standards
- Follow TypeScript best practices
- Maintain test coverage above 80%
- Use ESLint configuration provided
- Write clear commit messages
- Update documentation for new features
Reporting Issues
When reporting issues, please include:
- n8n version
- Node.js version
- Operating system
- Steps to reproduce
- Expected vs actual behavior
- Error messages or logs
š Resources
Official Documentation
- š n8n Community Nodes Documentation
- š§ ModelScope API Documentation
- š ModelScope Inference API
- š” n8n Node Development Guide
Community & Support
- š¬ n8n Community Forum
- š n8n Discord Server
- š Report Issues
- š§ Contact Support
Related Projects
- šØ Qwen Image Model
- š¤ Other n8n AI Nodes
- š ModelScope Community
š License
This project is licensed under the MIT License - see the LICENSE file for details.
š Acknowledgments
- Thanks to the n8n team for creating an amazing automation platform
- Thanks to Alibaba Cloud for the Qwen Image model
- Thanks to the ModelScope team for providing the API
- Thanks to all contributors who help improve this project