Back to Alchemy
Alchemy RecipeBeginnerworkflow

AI image editing for e-commerce: batch process product photos without a designer

Your product photos are either costing you time or money, sometimes both. Either you're spending two hours every morning resizing, background-removing, and colour-correcting product images before they go live, or you're paying a designer £30 to £50 per image to do it for you. At scale, a clothing brand with 200 new SKUs per month is looking at £6,000 to £10,000 in design fees alone, and that's before anyone checks the photos for quality. This workflow solves that problem by automating batch image editing without manual handoffs. You upload raw product photos to a folder or send them via an API, and they come out the other end with consistent backgrounds, optimised dimensions, and ready-to-list product descriptions. The entire process runs unattended. We're going to wire together AI Boost for image processing, Pixelcut AI for background removal as a fallback, and Copy.ai to auto-generate product descriptions. Everything orchestrates through Zapier or n8n, depending on whether you prefer a visual builder or a code-first approach.

The Automated Workflow

Which orchestration tool to choose

For this workflow, Zapier works well if your team is non-technical and you want to set it up in 20 minutes. n8n is better if you need retry logic, conditional branching, or want to avoid per-task charges.

Make is a solid middle ground. We'll show the Zapier version here because it's fastest to deploy; the logic translates directly to n8n or Make.

The full pipeline

Here's what happens: 1. You drop product images into a Google Drive or Dropbox folder (or email them, or POST them to a webhook) 2. Zapier detects new files and passes them to AI Boost via API 3. AI Boost upscales and backgrounds the image, returning a URL 4. The processed image is saved back to a "done" folder 5. Copy.ai auto-generates a product description based on the image filename and category 6. The image URL and description are appended to a Google Sheet or sent to your e-commerce platform

Setting up the Zapier workflow

Start with a Google Drive trigger. Create a shared folder called "product_photos_incoming" and set Zapier to watch it.

Trigger: Google Drive , New File in Folder
Folder: /product_photos_incoming
File type: Images only
Polling interval: Every 15 minutes

Next, add an action to upload the file to AI Boost. You'll need your API key from the AI Boost dashboard.

Action: Webhooks by Zapier , POST
URL: https://api.aiboost.com/v1/images/process
Headers: Authorization: Bearer YOUR_AIBOOST_API_KEY Content-Type: application/json Body (JSON):
{ "image_url": "{{step_1_download_url}}", "operations": [ { "type": "upscale", "scale": 2 }, { "type": "remove_background", "replace_with": "white" } ], "output_format": "jpeg", "quality": 95
}

Wait for the response. AI Boost returns a processed image URL and metadata.

Response example:
{ "status": "success", "processed_image_url": "https://output.aiboost.com/abc123xyz.jpg", "processing_time_ms": 2400, "operations_applied": ["upscale", "remove_background"]
}

Now pass that URL to Copy.ai to generate a product description. Extract the filename from the original file to use as context.

Action: Webhooks by Zapier , POST
URL: https://api.copy.ai/v1/generate
Headers: Authorization: Bearer YOUR_COPYAI_API_KEY Content-Type: application/json Body (JSON):
{ "template": "ecommerce_product_description", "variables": { "product_name": "{{step_1_file_name}}", "category": "clothing", "tone": "professional" }, "max_tokens": 150
}

Copy.ai responds with a generated description.

Response example:
{ "generated_text": "Premium cotton blend shirt with a relaxed fit. Perfect for everyday wear. Machine washable.", "tokens_used": 28
}

Finally, save the result. Add a Google Sheets action to append a new row with the image URL, description, and original filename.

Action: Google Sheets , Add Spreadsheet Row
Spreadsheet: Product Photos Log
Worksheet: Processed
Columns: - Original filename: {{step_1_file_name}} - Processed image URL: {{step_2_processed_image_url}} - Description: {{step_3_generated_text}} - Processed at: {{now}}

Optionally, copy the processed image to a "done" folder so you have a clean record of what's been processed.

Action: Google Drive , Upload File
File content: {{step_2_processed_image_url}}
Destination folder: /product_photos_done
File name: {{step_1_file_name}} (processed)

That's the full loop. Every 15 minutes, Zapier checks for new images, processes them, generates descriptions, and logs everything. No manual steps needed.

The Manual Alternative

If you prefer direct control, you can run this via command line or a custom Python script. This is useful if you want to process a large batch all at once or integrate with your own backend.

python
import requests
import json
from datetime import datetime AIBOOST_KEY = "your_api_key_here"
COPYAI_KEY = "your_copyai_key_here" def process_image(image_path, filename): # Upload to AI Boost with open(image_path, 'rb') as f: aiboost_response = requests.post( "https://api.aiboost.com/v1/images/process", headers={"Authorization": f"Bearer {AIBOOST_KEY}"}, json={ "image_url": f"file://{image_path}", "operations": [ {"type": "upscale", "scale": 2}, {"type": "remove_background", "replace_with": "white"} ], "output_format": "jpeg", "quality": 95 } ) if aiboost_response.status_code != 200: print(f"Error processing {filename}: {aiboost_response.text}") return None processed_url = aiboost_response.json()["processed_image_url"] # Generate description copyai_response = requests.post( "https://api.copy.ai/v1/generate", headers={"Authorization": f"Bearer {COPYAI_KEY}"}, json={ "template": "ecommerce_product_description", "variables": { "product_name": filename, "category": "clothing", "tone": "professional" }, "max_tokens": 150 } ) description = copyai_response.json()["generated_text"] return { "original_filename": filename, "processed_image_url": processed_url, "description": description, "processed_at": datetime.now().isoformat() } # Example usage
result = process_image("./photos/shirt_blue_001.jpg", "shirt_blue_001")
print(json.dumps(result, indent=2))

This gives you the full result in JSON, which you can then pipe to your database or CSV.

Pro Tips

Rate limit batching

AI Boost allows 100 images per minute on most plans.

If you're processing more than that, throttle Zapier to process one image every 30 seconds instead of all at once. This prevents hitting rate limits and keeps costs predictable.

Error handling and retries

Set up a Zapier error handler to catch failed images. Create a separate workflow that Slack notifications you with the filename and error message, then moves the original image to a "failed" folder for manual review. Most failures are oversized files or unsupported formats.

Fallback to Pixelcut

If AI Boost's background removal produces poor results on certain image types, set up a secondary path in Zapier. Use a conditional: if the processed image quality score falls below 80%, re-run the image through Pixelcut AI instead. This is a safety net for edge cases.

Save on API calls

Instead of generating a description for every image, batch descriptions only for new SKUs. If you're uploading multiple photos of the same product, use the same description for all variants. This cuts Copy.ai costs by 70% without sacrificing quality.

Monitor costs in real time

Add a monthly cost tracker to your Google Sheet that sums API calls. Calculate: (images processed × £0.04 per image for AI Boost) + (descriptions × £0.002 per description for Copy.ai). At 1,000 images per month, you're looking at roughly £42. This is a useful number to show stakeholders because it justifies the investment versus hiring a part-time designer.

Cost Breakdown

ToolPlan NeededMonthly CostNotes
AI BoostPay-as-you-go£40–100£0.04 per image. Upscale and background removal. Higher volumes qualify for volume discounts.
Pixelcut AIFree tier or Pro (£9.99)£0–10Only needed if you want a fallback or need background removal on tricky images. Free tier is sufficient for <500 images/month.
Copy.aiFree tier (100 outputs/month) or Growth (£49)£0–49Generate descriptions only for new products, not variants. Free tier covers most small shops.
ZapierFree or Starter (£25–99)£25–99Free tier allows 100 tasks per month. At 1,000 images/month, upgrade to Starter (£25 for 750 tasks). Zaps are billed per task.
Google Drive / SheetsFree (personal) or Workspace (£6–14 per user)£0–14Storage and sheets are included in most plans; only counts if you don't already have it.
Total (1,000 images/month),~£65–150Comparison: one designer @ £15/hour × 40 hours = £600/month. This pays for itself instantly.