Bright Data + OpenAI: consistent product copy fast
You finally have product data… and then you lose hours turning it into copy that actually matches your brand. Specs are scattered, descriptions are inconsistent, and “quick edits” turn into another round of rewrites.
Ecommerce managers feel it when launches slip. Content leads feel it when five people write five different tones. And a small team owner feels it because there is no time for “just one more pass.” This product copy automation pulls clean product details and generates on-brand descriptions you can reuse confidently.
This guide breaks down what the workflow does, what you need to run it, and how to think about the results before you commit to fine-tuning your own model.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: Bright Data + OpenAI: consistent product copy fast
flowchart LR
subgraph sg0["When clicking 'Execute workflow' Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking 'Execute workf..", pos: "b", h: 48 }
n1@{ icon: "mdi:cog", form: "rounded", label: "BrightData", pos: "b", h: 48 }
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Code"]
n3@{ icon: "mdi:robot", form: "rounded", label: "OpenAI", pos: "b", h: 48 }
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>HTTP Request"]
n2 --> n3
n3 --> n4
n1 --> n2
n0 --> n1
end
subgraph sg1["When chat message received Flow"]
direction LR
n5@{ icon: "mdi:play-circle", form: "rounded", label: "When chat message received", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n7@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n7 -.-> n6
n5 --> n6
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0,n5 trigger
class n3,n6 ai
class n7 aiModel
class n4 api
class n2 code
classDef customIcon fill:none,stroke:none
class n2,n4 customIcon
Why This Matters: Product Copy That Never Quite Matches
If you sell across multiple storefronts or marketplaces, “product description” stops being a one-time task. It becomes a constant maintenance job. One supplier changes a spec, a competitor updates their positioning, your SEO team wants different keywords, and suddenly you have 40 SKUs that need “small tweaks.” Multiply that by seasonal collections, bundles, and variants and you end up spending about 2 hours a day rewriting copy you already wrote once. Worse, the tone drifts. You can feel it when a product page reads like three different brands stitched together.
It adds up fast. Here’s where it breaks down in real teams.
- Scraping or copying product details by hand invites errors, especially when specs and features live in different places.
- Writers end up guessing context because they do not have a consistent “source of truth” for each product.
- Generic AI prompts create generic copy, so you spend the time you hoped to save doing heavy edits.
- When you scale to dozens of new items, quality control becomes a bottleneck and launches slip.
What You’ll Build: Scrape Products, Fine-Tune a Model, Generate On-Brand Copy
This workflow runs in two practical modes: training your custom model, then using it whenever you need copy. You manually start a training run, and Bright Data scrapes product details from supported ecommerce sites (think Amazon, Shopify stores, Walmart, Target, and plenty more). A script then cleans and reshapes that product data into the JSONL format OpenAI requires for fine-tuning. Once the training file is ready, the workflow uploads it to OpenAI and kicks off a fine-tuning job using GPT-4o-mini as the base. After that, you get a simple chat-style entry point where you can ask for product descriptions, marketing bullets, or alternate variants, and the model responds in the style you trained.
The workflow starts with a manual trigger for data collection and training. Then it switches to “usage mode,” where an incoming chat message routes to an AI agent that talks to your fine-tuned model. You get consistent copy on demand, without rebuilding prompts every time.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you’re launching 50 new SKUs and each description takes about 15 minutes to write and polish. That’s around 12 hours of focused work, plus reviews. With this workflow, you spend maybe 20 minutes configuring the product URLs and dataset, then let Bright Data collect the details and OpenAI run the fine-tune job in the background. After training, generating a description is closer to 1 minute per SKU through chat, so you move from a full-day writing block to quick review and approval.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Bright Data for ecommerce product scraping access
- OpenAI to fine-tune and generate descriptions
- Bright Data API credentials (get them from your Bright Data dashboard)
- OpenAI API key (get it from the OpenAI API settings page)
Skill level: Intermediate. You’ll be comfortable pasting API keys, editing a dataset configuration, and sanity-checking the training examples.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
You trigger training when you’re ready. The workflow starts with a manual launch, which is useful because fine-tuning is not something you want firing accidentally every time a row changes somewhere.
Bright Data collects the raw product truth. The scraper pulls structured product information from a supported ecommerce site based on your dataset configuration and URLs. This is the “garbage in, garbage out” moment, so it’s worth double-checking you’re scraping the right pages.
A script turns scraped items into training examples. A Code step reshapes each product into a system message, a user prompt containing the product specifics, and an “ideal” assistant response. Those examples are compiled into a single JSONL file that OpenAI accepts for fine-tuning.
OpenAI is used twice: upload, then fine-tune. The workflow uploads the JSONL file, then an HTTP request starts the fine-tuning job against a base model (GPT-4o-mini). Once the job completes, your model ID becomes the engine behind the chat experience.
Your team generates copy through chat. An incoming chat trigger routes the request to an AI agent and the OpenAI chat model configured with your fine-tuned model. The result is on-brand copy you can paste into a CMS, a PIM, or a spreadsheet for review.
You can easily modify the scraping dataset and the training prompt format to fit different categories, marketplaces, or brand voices. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Manual Trigger
Set up the manual and chat-based triggers that start the scraping and conversational branches.
- Add the Manual Launch Trigger node to start the scraping flow on demand.
- Add the Incoming Chat Trigger node to start the conversational flow from a chat session.
- Confirm that Manual Launch Trigger connects to BrightData Scraper, and Incoming Chat Trigger connects to Conversational Agent.
Step 2: Connect BrightData Scraper
Configure the web scraping dataset and URLs for product data extraction.
- Open BrightData Scraper and set Resource to
webScrapper. - Set URLs to the provided JSON list of Amazon product pages (use the exact value from the workflow).
- Ensure the dataset is selected as Amazon best seller products in the dataset selector.
- Credential Required: Connect your brightdataApi credentials.
Step 3: Set Up the Data Transformation and Upload
Transform scraped items into a JSONL fine-tuning file and upload it to OpenAI.
- In Transform Payload Script, keep the JavaScript Code exactly as provided to generate
data.jsonland output it as binary. - Connect BrightData Scraper → Transform Payload Script to pass scraped product data.
- In OpenAI File Upload, set Resource to
fileand Binary Property Name todata.jsonl. - In OpenAI File Upload, set Options → Purpose to
fine-tune. - Credential Required: Connect your openAiApi credentials in OpenAI File Upload.
data.jsonl binary. Verify the scraper output contains valid product fields.Step 4: Configure Fine-Tuning and Chat AI
Launch the fine-tune job and set up the conversational AI model for chat usage.
- In Fine-Tune Job Request, set URL to
https://api.openai.com/v1/fine_tuning/jobsand Method toPOST. - Set Specify Body to
jsonand JSON Body to={ "training_file": "{{ $json.id }}", "model": "gpt-4o-mini-2024-07-18" }. - Credential Required: Connect your openAiApi credentials in Fine-Tune Job Request.
- Open OpenAI Chat Engine and set Model to your fine-tuned model ID (replace
YOUR_FINE_TUNED_MODEL_ID). - Credential Required: Connect your openAiApi credentials in OpenAI Chat Engine.
- Ensure OpenAI Chat Engine is connected as the language model for Conversational Agent.
Step 5: Test and Activate Your Workflow
Validate both the fine-tuning pipeline and the chat flow before going live.
- Click Execute Workflow to run Manual Launch Trigger and confirm BrightData Scraper → Transform Payload Script → OpenAI File Upload → Fine-Tune Job Request completes successfully.
- Check the output of OpenAI File Upload for a returned
idand verify Fine-Tune Job Request receives it via{{ $json.id }}. - Trigger Incoming Chat Trigger and confirm Conversational Agent responds using OpenAI Chat Engine.
- When both branches work as expected, toggle the workflow to Active for production use.
Troubleshooting Tips
- Bright Data credentials can expire or lack access to the dataset you selected. If things break, check your Bright Data dashboard permissions and active API key status first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Quick Answers
About 45 minutes if your Bright Data dataset and OpenAI account are ready.
No. You’ll mostly connect accounts and edit prompts, although the included script can be tweaked if you want different training fields.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI fine-tuning and usage costs, plus Bright Data scraping charges based on the dataset and volume.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and you should. You can swap the Bright Data dataset configuration to target a different store or marketplace, then adjust the “Transform Payload Script” to include the fields that matter for your category (materials, sizing, compatibility, warranties). Most teams also change the system message inside the training examples so the voice matches their brand guidelines. If you already have “gold standard” descriptions, use them as the assistant responses in training data so the model learns your exact structure.
Usually it’s an API key problem or the dataset you selected isn’t enabled on your account. Check your Bright Data dashboard for an active key, then confirm the dataset config matches the site you’re scraping. If the pages you’re targeting require location or device settings, you may need to adjust those options too.
If you self-host n8n, there’s no execution limit, but throughput depends on your server and scraping speed.
Often, yes, because this is more than a simple “app to app” sync. You’re scraping structured data, transforming it into JSONL, uploading files, and managing a fine-tune job, which usually needs branching logic and custom code. n8n also gives you a self-hosting option for unlimited runs, which matters when you’re iterating on training data. Zapier or Make can still work for lighter versions (like “generate one description from one input”), but they get clunky when you add file handling and multi-stage pipelines. If you’re unsure, Talk to an automation expert and we’ll map the simplest path.
Once your model is trained, new copy stops being a writing project and becomes a repeatable operation. The workflow handles the busywork so your team can focus on launches, merchandising, and what to say next.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.