August 15, 2026 • 12 min read • By TokenEase Marketing
Writing compelling product descriptions at scale is one of the biggest challenges for e-commerce businesses. A mid-sized online store with 5,000 SKUs can spend hundreds of hours crafting unique, SEO-optimized descriptions. AI-powered content generation using Chinese LLMs offers a cost-effective solution, producing high-quality copy in seconds at a fraction of the cost of human writers.
In this guide, we show you how to build an AI product description generator using DeepSeek, GLM, and Qwen, with proven prompt templates and integration patterns for Shopify, WooCommerce, and custom platforms.
The Business Case for AI Product Descriptions
E-commerce sites with AI-generated descriptions see an average 15-30% improvement in organic search traffic and 8-12% lift in conversion rates. At $0.03-0.20 per description using Chinese LLMs, the ROI is immediate.
1. Model Comparison for E-Commerce Copy
| Model |
Copy Quality |
Creativity |
SEO Awareness |
Cost per 1K descriptions |
| DeepSeek-V4 |
9.0/10 |
8.5/10 |
9.2/10 |
$25-40 |
| Qwen2.5-72B |
8.8/10 |
9.0/10 |
8.5/10 |
$35-50 |
| GLM-4-9B |
8.0/10 |
7.5/10 |
8.0/10 |
$8-15 |
| Doubao-pro-32k |
8.5/10 |
8.0/10 |
8.8/10 |
$12-20 |
2. Core Prompt Templates
These prompt templates are optimized for e-commerce conversion and SEO:
2.1 Product Description Generator
def generate_product_description(product_data, model="deepseek"):
"""Generate a compelling product description."""
prompt = f"""Write a compelling product description for an e-commerce listing.
Product Name: {product_data['name']}
Category: {product_data['category']}
Key Features: {', '.join(product_data['features'])}
Target Audience: {product_data['audience']}
Brand Voice: {product_data.get('tone', 'professional and friendly')}
Requirements:
- 150-200 words
- Include primary keyword "{product_data['primary_keyword']}" naturally 2-3 times
- Include secondary keywords: {', '.join(product_data.get('secondary_keywords', []))}
- Highlight top 3 benefits, not just features
- Include a subtle urgency or social proof element
- End with a clear, action-oriented closing
- Write in {product_data.get('language', 'English')}
- Avoid: generic phrases like "high quality" without specifics, all caps, excessive exclamation marks
Output format: Provide only the description text, no markdown, no headers."""
# Call TokenEase API
response = requests.post(
"https://tokenease.io/v1/chat/completions",
headers={"Authorization": f"Bearer {api_key}"},
json={
"model": model,
"messages": [{"role": "user", "content": prompt}],
"temperature": 0.7,
"max_tokens": 500
}
)
return response.json()["choices"][0]["message"]["content"].strip()
2.2 SEO Title and Meta Description
def generate_seo_metadata(product_name, keywords, category):
"""Generate SEO-optimized title and meta description."""
prompt = f"""Generate SEO-optimized title tag and meta description.
Product: {product_name}
Category: {category}
Target Keywords: {', '.join(keywords)}
Rules:
- Title: 50-60 characters, include primary keyword near the beginning, compelling and clickable
- Meta Description: 150-160 characters, include primary keyword, clear value proposition, call-to-action
- Avoid duplicate words between title and description where possible
Output as JSON:
{{"title": "...", "meta_description": "..."}}"""
# API call with JSON mode
response = requests.post(
"https://tokenease.io/v1/chat/completions",
headers={"Authorization": f"Bearer {api_key}"},
json={
"model": "deepseek",
"messages": [{"role": "user", "content": prompt}],
"temperature": 0.3,
"max_tokens": 200,
"response_format": {"type": "json_object"}
}
)
return json.loads(response.json()["choices"][0]["message"]["content"])
2.3 Multi-Variant A/B Testing Copy
def generate_ab_variants(product_data, num_variants=3):
"""Generate multiple description variants for A/B testing."""
approaches = [
"Benefit-focused: Lead with the transformation the customer will experience",
"Story-focused: Open with a relatable scenario or problem",
"Spec-focused: Lead with impressive technical specifications and data"
][:num_variants]
variants = []
for i, approach in enumerate(approaches):
prompt = f"""Write a product description using this approach: {approach}
Product: {product_data['name']}
Features: {', '.join(product_data['features'])}
Keywords: {product_data['primary_keyword']}
Requirements: Same as standard description. Variant {i+1} of {num_variants}."""
# API call
variant = call_llm_api(prompt, temperature=0.8)
variants.append({"approach": approach, "text": variant})
return variants
3. Real Examples
Here is what AI-generated product copy looks like in practice:
Input Data
Product: UltraSonic Pro Electric Toothbrush
Features: 40,000 BPM motor, 5 cleaning modes, 30-day battery, UV sanitizing case
Audience: Health-conscious professionals, ages 25-45
Keyword: "electric toothbrush for adults"
AI-Generated Description (DeepSeek-V4)
Experience dentist-level clean from home with the UltraSonic Pro. Its industry-leading 40,000 brush movements per minute break up plaque that manual brushes miss, while five precision modes let you customize every session, from gentle gum care to deep whitening. The built-in UV case eliminates 99.9% of bacteria between uses, and a single charge powers a full month of brushing, perfect for busy schedules. Join over 50,000 professionals who have upgraded their oral care routine. Your healthiest smile starts with one press.
4. Bulk Generation Pipeline
For large catalogs, you need an efficient batch pipeline:
import pandas as pd
import asyncio
import aiohttp
async def bulk_generate_descriptions(product_csv_path, output_csv_path, concurrency=10):
"""Generate descriptions for an entire product catalog."""
df = pd.read_csv(product_csv_path)
semaphore = asyncio.Semaphore(concurrency)
async def process_product(session, row):
async with semaphore:
product_data = {
"name": row['product_name'],
"category": row['category'],
"features": row['features'].split('|'),
"audience": row['target_audience'],
"primary_keyword": row['seo_keyword'],
"tone": row.get('brand_tone', 'professional')
}
# Generate description
desc = await generate_description_async(session, product_data)
# Generate SEO metadata
seo = await generate_seo_async(session, product_data)
return {
"product_id": row['product_id'],
"description": desc,
"seo_title": seo['title'],
"meta_description": seo['meta_description']
}
async with aiohttp.ClientSession() as session:
tasks = [process_product(session, row) for _, row in df.iterrows()]
results = await asyncio.gather(*tasks, return_exceptions=True)
# Save results
output_df = pd.DataFrame([r for r in results if not isinstance(r, Exception)])
output_df.to_csv(output_csv_path, index=False)
success_rate = len([r for r in results if not isinstance(r, Exception)]) / len(results)
print(f"Generated {len(output_df)} descriptions. Success rate: {success_rate:.1%}")
# Run: asyncio.run(bulk_generate_descriptions('products.csv', 'descriptions.csv'))
5. Platform Integrations
5.1 Shopify Integration
from shopify import Session, Product
def update_shopify_product(product_id, description, seo_title, meta_desc):
"""Update a Shopify product with AI-generated content."""
session = Session("your-store.myshopify.com", "2024-01", access_token)
Session.setup(session)
product = Product.find(product_id)
product.body_html = description.replace('\n', '
')
product.title = seo_title # Or keep original if title is brand-critical
product.metafields = [{
"namespace": "global",
"key": "description_tag",
"value": meta_desc,
"type": "string"
}]
product.save()
return product.id
5.2 WooCommerce Integration
from woocommerce import API
wcapi = API(
url="https://your-store.com",
consumer_key="ck_...",
consumer_secret="cs_...",
version="wc/v3"
)
def update_woocommerce_product(product_id, description, short_desc):
"""Update WooCommerce product with AI content."""
data = {
"description": description,
"short_description": short_desc
}
response = wcapi.put(f"products/{product_id}", data)
return response.json()
6. Quality Control and Post-Processing
AI-generated content needs quality checks before publishing:
def validate_description(text, primary_keyword, min_words=120, max_words=250):
"""Validate generated description quality."""
issues = []
word_count = len(text.split())
# Length check
if word_count < min_words:
issues.append(f"Too short: {word_count} words (min {min_words})")
if word_count > max_words:
issues.append(f"Too long: {word_count} words (max {max_words})")
# Keyword check
keyword_count = text.lower().count(primary_keyword.lower())
if keyword_count < 2:
issues.append(f"Primary keyword '{primary_keyword}' only appears {keyword_count} time(s)")
if keyword_count > 5:
issues.append(f"Keyword stuffing detected: {keyword_count} occurrences")
# Forbidden phrases
forbidden = ["in conclusion", "furthermore", "moreover", "it is important to note"]
for phrase in forbidden:
if phrase.lower() in text.lower():
issues.append(f"Avoid academic/formal phrase: '{phrase}'")
# All caps check
if re.search(r'\b[A-Z]{4,}\b', text):
issues.append("Remove ALL CAPS words")
return {
"valid": len(issues) == 0,
"word_count": word_count,
"issues": issues,
"keyword_density": keyword_count / word_count * 100
}
7. Cost Analysis
| Catalog Size |
Human Cost (est.) |
AI Cost (DeepSeek) |
Time Saved |
| 100 products |
$500-1,000 |
$3-5 |
25 hours |
| 1,000 products |
$5,000-10,000 |
$30-50 |
250 hours |
| 10,000 products |
$50,000-100,000 |
$300-500 |
2,500 hours |
8. Advanced Techniques
- Multi-language generation: Generate descriptions in 10+ languages simultaneously using the same product data, expanding global reach at minimal incremental cost.
- Seasonal variants: Automatically generate holiday-themed versions (Black Friday, Christmas) by adding seasonal context to prompts.
- Competitor differentiation: Feed competitor product pages into the prompt and ask the AI to highlight unique differentiators.
- Review integration: Include top customer reviews in the prompt to surface real user-validated benefits in descriptions.
- Image-to-description: Use vision-capable models (Qwen-VL, GPT-4V) to generate descriptions directly from product photos.
Scale Your E-Commerce Content with AI
Access DeepSeek, Qwen, GLM, and more through a single API. Start generating product descriptions at scale today.
Start with TokenEase
Related Articles