Back to Alchemy
Alchemy RecipeIntermediateautomation

E-commerce product listing factory from supplier images and descriptions

Supplier images arrive in your inbox at 3 p.m. on a Friday. They're flat, poorly lit, and completely generic. Your team has four days to transform them into polished listings across Amazon, Shopify, and your own website. Someone writes product copy. Someone else removes backgrounds. A third person adjusts colours and uploads variants. By Monday morning, you're burnt out and three SKUs still aren't live. This is the tax that every e-commerce operation pays when inventory moves faster than your creative capacity. The work isn't complex, but it's repetitive. Each supplier sends images in a different format. Each marketplace has different image specifications and SEO requirements. Manual handoffs multiply errors and delays. What if instead, you automated the entire pipeline? One person uploads a supplier image and writes a basic product description. Everything else happens automatically: images get upscaled and optimised for each channel, backgrounds swap to match your brand guidelines, product descriptions rewrite themselves for SEO and tone, and final files land in your storage ready to publish. This is the kind of workflow that sounds like science fiction until you wire it together in an afternoon. For more on this, see E-commerce product photography variation suite from singl....

The Automated Workflow

You'll orchestrate this workflow with n8n, which gives you fine-grained control over conditional branching and file handling. Start with a webhook that listens for new uploads to a shared folder (Google Drive, Dropbox, or S3); alternatively, trigger the workflow manually from a form if you prefer explicit control over batch timing. Here's the flow: 1. Receive image and description via webhook or form submission.

  1. Upscale and enhance the image using AI Boost.

  2. Generate marketplace-specific descriptions using Claude Opus 4.6 or GPT-4o via HyperWrite's API.

  3. Remove or replace the background using Pixelcut AI.

  4. Create platform-specific variants (different aspect ratios and dimensions for Amazon, Shopify, TikTok Shop).

  5. Store results in a cloud folder organised by SKU and platform.

  6. Notify your team via Slack with preview links. Set up n8n on a self-hosted server or use the cloud version. Create a new workflow and add these nodes in sequence: Node 1: Webhook trigger

Trigger type: Webhook
Method: POST
Authentication: Basic Auth (create a token)
Endpoint: https://your-n8n-instance.com/webhook/product-listing

Your form or automation tool posts JSON like this:

json
{ "supplier_id": "SUP-001", "sku": "WIDGET-BLUE-L", "image_url": "https://supplier-cdn.com/images/widget-blue-large.jpg", "description": "Blue aluminium widget with ergonomic handle", "target_platforms": ["amazon", "shopify", "tiktok"]
}

Node 2: AI Boost image upscale

Use n8n's HTTP node to call AI Boost's REST API. If AI Boost doesn't have a public API, use their web interface via a headless browser node or manual step (limitations noted below).

POST https://api.aiboost.com/v1/upscale
Headers: Authorization: Bearer YOUR_API_KEY Content-Type: application/json
Body:
{ "image_url": "{{ $json.image_url }}", "upscale_factor": 2, "enhance_quality": true
}

The response includes a processed_image_url. Store this in a variable:

$variables.upscaled_image = response.processed_image_url

Node 3: Parallel branch for description generation

This runs simultaneously with image processing. Use n8n's Split node to generate three variations: one for Amazon (keyword-heavy), one for Shopify (brand voice), one for TikTok (casual, hashtag-friendly).

POST https://api.openai.com/v1/chat/completions
Headers: Authorization: Bearer YOUR_OPENAI_KEY Content-Type: application/json
Body:
{ "model": "gpt-4o", "messages": [ { "role": "system", "content": "You are an e-commerce copywriter. Write product descriptions optimised for search engines and conversions. Use the platform tone provided." }, { "role": "user", "content": "Product: {{ $json.description }}\nPlatform: {{ $nodeData.platform }}\nTone: {{ $nodeData.tone }}\n\nWrite a 150-word product description with 3-5 bullet points." } ], "temperature": 0.7, "max_tokens": 300
}

For each platform, adjust the system prompt:

  • Amazon: "Focus on technical specs, ASIN optimisation, and search keywords."
  • Shopify: "Use conversational brand voice. Emphasise benefits and lifestyle."
  • TikTok: "Use trendy language, emojis, and casual tone. Include 5-10 relevant hashtags." Node 4: Pixelcut background removal
POST https://api.pixelcut.com/v1/remove-background
Headers: Authorization: Bearer YOUR_PIXELCUT_KEY Content-Type: application/json
Body:
{ "image_url": "{{ $variables.upscaled_image }}", "output_format": "png", "quality": "high"
}

Save the response URL:

$variables.background_removed = response.image_url

Node 5: Apply brand background

If your brand uses a consistent background colour or pattern, add it now. Use Stable Diffusion 3.5 or DALL-E 3 to generate a custom background, or use a simple n8n condition to apply a static colour overlay:

if $json.target_platforms includes "amazon": background_colour = "white"
else if $json.target_platforms includes "shopify": background_colour = "your_brand_hex_colour"
else if $json.target_platforms includes "tiktok": background_colour = "transparent"

Node 6: Resize for each platform

Create variants with different dimensions using ImageMagick or a similar tool via n8n's System node:

bash
convert {{ $variables.background_removed }} -resize 1200x1200 amazon_{{ $json.sku }}.jpg
convert {{ $variables.background_removed }} -resize 2048x2048 shopify_{{ $json.sku }}.jpg
convert {{ $variables.background_removed }} -resize 1080x1080 tiktok_{{ $json.sku }}.jpg

Node 7: Store files and metadata

Save images to Google Drive or S3 in a folder structure like:

/products/{{ $json.sku }}/amazon/
/products/{{ $json.sku }}/shopify/
/products/{{ $json.sku }}/tiktok/

Also create a JSON metadata file with descriptions, links, and timestamps:

json
{ "sku": "WIDGET-BLUE-L", "supplier_id": "SUP-001", "created_at": "2026-03-15T14:32:00Z", "images": { "amazon": "https://drive.google.com/...", "shopify": "https://drive.google.com/...", "tiktok": "https://drive.google.com/..." }, "descriptions": { "amazon": "...", "shopify": "...", "tiktok": "..." }
}

Node 8: Slack notification

POST https://hooks.slack.com/services/YOUR_WEBHOOK_URL
Body:
{ "text": "Product listing complete: {{ $json.sku }}", "blocks": [ { "type": "section", "text": { "type": "mrkdwn", "text": "*SKU:* {{ $json.sku }}\n*Amazon Description:* {{ $variables.amazon_description }}\n*Files:* <https://drive.google.com/...| View in Drive>" } } ]
}

Error handling and retries

Add a Try-Catch node around AI Boost and Pixelcut API calls. If either fails, send an alert and log to a sheet for manual review. Set retries to 3 with 5-second intervals:

try { call AI Boost API
} catch (error) { if error.status == 429: retry after 30 seconds (rate limit) else if error.status >= 500: retry after 5 seconds (server error) else: log to error_sheet and notify Slack
}

The Manual Alternative

If you prefer to keep humans in the loop at certain steps, pause the workflow and send preview links to your team instead of auto-publishing. Create an approval node that waits for a manual review step on Google Sheets or Airtable before files move to final storage. This works well if you want quality assurance or brand guideline verification before images go live.

Pro Tips

Rate limits and costs scale quickly.

AI Boost, Pixelcut, and OpenAI all have rate limits.

Start with 10 products per day and monitor your dashboard. If you hit limits, implement a queue system in n8n using a Delay node to space requests by 2 seconds. OpenAI's GPT-4o costs roughly 2.5 pence per 1 million input tokens; three descriptions per product at ~150 words each will cost you under £1 per 50 products.

Image upscaling is your biggest variable cost.

AI Boost charges per upscale operation. If you're processing 500 products per month, this adds up. Test whether GPT-4o mini or Claude Haiku 4.5 can generate acceptable copy first; both are significantly cheaper and often good enough for repurposing supplier descriptions.

Store versions, not just finals.

Keep the original supplier image, the upscaled version, and each platform variant in separate folders. Suppliers sometimes update product details, and you might need to regenerate a listing quickly without re-uploading.

Use conditionals to skip unnecessary steps.

Not all products need upscaling. If a supplier image is already 4000×4000 pixels, skip Node 2. Add a conditional: if image_width < 1500, then upscale; else skip.

Automate the boring text revisions.

Use Claude Opus 4.6 as a second pass to refine descriptions generated by GPT-4o. Have Claude check for keyword density, readability, and factual accuracy. This two-stage approach costs a bit more but catches errors that single-pass generation misses.

Cost Breakdown

ToolPlan NeededMonthly CostNotes
n8nCloud Professional or Self-Hosted£40 (cloud) or £0 (self-hosted)Self-hosted reduces cost but requires server maintenance.
AI BoostPay-as-you-go£0.05–£0.20 per upscaleDepends on image size and enhancement level. Budget £50–£150 for 500 products.
Pixelcut AIPro subscription£10–£20Unlimited background removal. Cheaper than per-operation pricing.
OpenAI (GPT-4o)Pay-as-you-go£0.01–£0.03 per 1K tokensThree descriptions per product at 200 tokens each: ~£0.02 per product.
HyperWritePersonal or Team£10–£30Optional if you use OpenAI directly; skip if using GPT-4o.
Google Drive or S3Standard storage£0–£20Depends on image volume. 500 products with 4 variants each at 2 MB average: ~50 GB.
Total estimate50 products/month£150–£250Scales roughly linearly. 500 products: £1,200–£2,000 per month.