Catalog content Independent solution

Product Content Generator

Feed it a spec sheet or supplier feed and get conversion-focused, SEO-ready product copy — titles, descriptions, bullets and metadata — written in your brand voice and ready to sync to the store.

The problem

Thin, inconsistent product copy costs rankings and conversions

Manually writing copy for thousands of SKUs is impossible, so most stores ship supplier boilerplate — duplicate across the web, thin on detail, and invisible to search. Conversion and organic traffic both suffer.

This solution turns structured product data into unique, persuasive, search-optimised copy at catalog scale, with a human approving before anything goes live.

Primary objective
Produce accurate, on-brand product copy for thousands of SKUs in minutes, not weeks.
How it works

Ingest feed → draft copy → SEO & QA → sync to store

Ingest feed
Specs, attributes, supplier data
Draft copy
Titles, descriptions, bullets on voice
SEO & QA
Keywords, claims, duplicate check
Sync
Push to CMS / PIM on approval
What it does
  • ✓ SEO-ready titles & meta
  • ✓ Benefit-led descriptions
  • ✓ Scannable bullet points
  • ✓ Multi-locale translation
  • ✓ Tone & length controls
  • ✓ Bulk catalog runs
Built with
  • ✓ Claude for copy & translation
  • ✓ PIM / feed connectors
  • ✓ Keyword data integration
  • ✓ Duplicate-content detection
  • ✓ Human approval queue
Guardrails
  • ✓ No unsupported claims
  • ✓ Spec-grounded generation
  • ✓ Brand voice enforcement
  • ✓ Compliance term filters
  • ✓ Full edit audit trail
Under the hood

Spec-grounded copy generation

Copy is generated from the product's real attributes so it never invents features — and every field is length-checked before it can sync.

catalog/generate.py PYTHON
from anthropic import Anthropic
client = Anthropic()

def write_copy(product: dict, voice: str) -> dict:
    # Ground strictly in real attributes — no invented features
    prompt = f"""Write ecommerce copy from these attributes ONLY:
{product['attributes']}
Brand voice: {voice}. Return JSON:
{{"title": str(<=60), "description": str, "bullets": [str]}}"""
    msg = client.messages.create(
        model="claude-sonnet-4-20250514", max_tokens=800, temperature=0.4,
        messages=[{"role": "user", "content": prompt}],
    )
    copy = parse_json(msg.content[0].text)
    assert len(copy["title"]) <= 60      # enforce store limits
    return copy
Outcomes
1000s
SKUs per run
Unique
Non-duplicate copy
Multi-locale
Every market
Minutes
Not weeks

Give every SKU copy that ranks and sells

Deploy standalone, or pair it with Catalog Enrichment for clean data in, great copy out.

Start a conversation →
More E-commerce solutions
Product Content Generator | Smort