DEV Community

ShotaTanikawa
ShotaTanikawa

Posted on

Generate E-Commerce Product Descriptions with AI (API Tutorial)

Generate E-Commerce Product Descriptions with AI (API Tutorial)

Writing product descriptions is one of the most tedious parts of running an online store. You need SEO-friendly titles, compelling descriptions, and relevant hashtags — for every single product.

In this tutorial, I'll show you how to automate this with the Product Description Generator API, which uses Claude AI to generate professional product copy in seconds.

What You Get

For each product, the API generates:

  • 3 title options (SEO-optimized, under 60 characters)
  • 3 description options (100-200 words, ready for Shopify/Etsy/Amazon)
  • 15 hashtags (for Instagram/TikTok social selling)

Quick Start

cURL

curl -X POST https://description-api-omega.vercel.app/api/generate \
  -H "Content-Type: application/json" \
  -d '{
    "product_name": "Handmade Ceramic Coffee Mug",
    "category": "Kitchen",
    "features": "Hand-thrown stoneware, 12oz capacity, microwave safe, unique glaze",
    "appeal": "Perfect morning coffee ritual, each piece is one-of-a-kind",
    "tone": "handmade",
    "language": "en"
  }'
Enter fullscreen mode Exit fullscreen mode

Response

{
  "titles": [
    "Hand-Thrown Stoneware Coffee Mug – One of a Kind",
    "Artisan Ceramic Mug – Unique Glaze, 12oz",
    "Handcrafted Coffee Mug – Microwave Safe Stoneware"
  ],
  "descriptions": [
    "Start your morning ritual with a mug that tells a story. Each hand-thrown stoneware coffee mug is crafted with care, featuring a unique glaze pattern that ensures no two pieces are exactly alike...",
    "There's something special about wrapping your hands around a mug that was shaped by human hands...",
    "Elevate your daily coffee experience with this beautifully crafted 12oz stoneware mug..."
  ],
  "hashtags": "#HandmadeCeramics #CoffeeMug #Stoneware #PotteryLove #ArtisanMade #UniqueGlaze #MorningCoffee #HandThrown #CeramicArt #KitchenDecor #CoffeeLover #OneOfAKind #ShopHandmade #PotteryMug #CraftedWithLove"
}
Enter fullscreen mode Exit fullscreen mode

Supported Tones

Tone Style Best For
professional Polished, trustworthy B2B, electronics, professional gear
casual Friendly, approachable Everyday items, food, casual wear
luxury Elegant, sophisticated Jewelry, fashion, premium goods
playful Fun, energetic Kids products, novelty items, games
handmade Warm, artisanal Crafts, handmade goods, Etsy shops

Supported Languages

en (English), ja (Japanese), es (Spanish), fr (French), de (German)

Japanese Example

curl -X POST https://description-api-omega.vercel.app/api/generate \
  -H "Content-Type: application/json" \
  -d '{
    "product_name": "手編みウールマフラー",
    "category": "ファッション",
    "features": "メリノウール100%, 手編み, 180cm",
    "tone": "handmade",
    "language": "ja"
  }'
Enter fullscreen mode Exit fullscreen mode

Python Example

import requests

response = requests.post(
    "https://description-api-omega.vercel.app/api/generate",
    json={
        "product_name": "Leather Laptop Sleeve",
        "category": "Accessories",
        "features": "Full grain leather, fits 13-14 inch laptops, felt lining",
        "appeal": "Professional look for remote workers and digital nomads",
        "tone": "professional",
        "language": "en",
    },
)

data = response.json()

print("=== Titles ===")
for title in data["titles"]:
    print(f"  {title}")

print("\n=== Best Description ===")
print(data["descriptions"][0])

print(f"\n=== Hashtags ===")
print(data["hashtags"])
Enter fullscreen mode Exit fullscreen mode

Node.js Example

const response = await fetch(
  "https://description-api-omega.vercel.app/api/generate",
  {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      product_name: "Wireless Bluetooth Speaker",
      category: "Electronics",
      features: "IPX7 waterproof, 24hr battery, 360 sound",
      appeal: "Take your music anywhere",
      tone: "casual",
      language: "en",
    }),
  }
);

const { titles, descriptions, hashtags } = await response.json();
console.log(titles[0]); // Best title
console.log(descriptions[0]); // Best description
Enter fullscreen mode Exit fullscreen mode

Batch Processing (Multiple Products)

import requests

products = [
    {"product_name": "Silver Earrings", "category": "Jewelry", "tone": "luxury"},
    {"product_name": "Organic Soap", "category": "Beauty", "tone": "natural"},
    {"product_name": "Kids T-Shirt", "category": "Clothing", "tone": "playful"},
]

for product in products:
    product["language"] = "en"
    resp = requests.post(
        "https://description-api-omega.vercel.app/api/generate",
        json=product,
    )
    data = resp.json()
    print(f"\n--- {product['product_name']} ---")
    print(f"Title: {data['titles'][0]}")
    print(f"Description: {data['descriptions'][0][:100]}...")
Enter fullscreen mode Exit fullscreen mode

Use Cases

  • Shopify/Etsy sellers: Generate descriptions for new listings in seconds
  • Dropshipping: Create unique descriptions instead of copying supplier text
  • Social media: Get ready-made hashtags for Instagram/TikTok product posts
  • Multilingual stores: Generate descriptions in 5 languages from one input
  • A/B testing: Get 3 variations to test which converts best

Try It

Available on RapidAPI with a free tier (50 requests/month).


Built by @ShotaTanikawa. Feedback and feature requests welcome!

Top comments (0)