OpenAI + Claude: 50 brand prompts to CSV, ready
You know the task. Someone says, “We should track how AI tools talk about our brand,” and suddenly you’re staring at a blank sheet with zero prompts, zero structure, and a deadline that somehow stayed the same.
This is the kind of mess that slows down SEO/GEO marketers first, but Growth leads and founders get dragged into it too. An AI prompt CSV dataset sounds simple until you realize you need research, personas, categories, languages, and consistent formatting that a monitoring platform will actually accept.
This n8n workflow takes one company name and URL, researches the business, generates 50 monitoring prompts (English + German), tags everything, and exports a ready-to-import CSV. You’ll see what it automates, what results it creates, and how to adapt it to your own tracking setup.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: OpenAI + Claude: 50 brand prompts to CSV, ready
flowchart LR
subgraph sg0["Form Submission Flow"]
direction LR
n0["<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/form.svg' width='40' height='40' /></div><br/>Form Submission Trigger"]
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map Input Fields", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>Company Research Request"]
n3["<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/>Parse Research JSON"]
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/code.svg' width='40' height='40' /></div><br/>Strip Citation Marks"]
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Assemble Profile Fields", pos: "b", h: 48 }
n6["<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/>Build 13 Seed Phrases"]
n7@{ icon: "mdi:robot", form: "rounded", label: "Claude Phrase Refiner", pos: "b", h: 48 }
n8["<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/>Parse Refined Phrases"]
n9["<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/merge.svg' width='40' height='40' /></div><br/>Combine Phrase Sources"]
n10["<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/>Consolidate Prompts"]
n11@{ icon: "mdi:robot", form: "rounded", label: "Claude Prompt Generator", pos: "b", h: 48 }
n12["<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/>Parse Prompt Questions"]
n13["<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/merge.svg' width='40' height='40' /></div><br/>Merge English Outputs"]
n14["<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/>Compile English Dataset"]
n15["<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/>Tabularize Prompts"]
n16["<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/>Fetch Top Keywords"]
n17["<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/>Extract Keyword JSON"]
n18@{ icon: "mdi:robot", form: "rounded", label: "Claude German Translator", pos: "b", h: 48 }
n19["<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/>Parse German Translations"]
n20["<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/merge.svg' width='40' height='40' /></div><br/>Merge Languages"]
n21["<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/>Append Upload Fields"]
n22@{ icon: "mdi:cog", form: "rounded", label: "Export File", pos: "b", h: 48 }
n9 --> n10
n13 --> n14
n20 --> n21
n10 --> n13
n1 --> n2
n5 --> n6
n5 --> n16
n5 --> n11
n15 --> n20
n4 --> n5
n7 --> n8
n3 --> n4
n0 --> n1
n17 --> n9
n8 --> n9
n12 --> n13
n19 --> n20
n14 --> n15
n14 --> n18
n2 --> n3
n16 --> n17
n18 --> n19
n11 --> n12
n6 --> n7
n21 --> n22
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 trigger
class n7,n11,n18 ai
class n2,n16 api
class n3,n4,n6,n8,n10,n12,n14,n15,n17,n19,n21 code
classDef customIcon fill:none,stroke:none
class n0,n2,n3,n4,n6,n8,n9,n10,n12,n13,n14,n15,n16,n17,n19,n20,n21 customIcon
The Problem: Building AI monitoring prompts is a time sink
Creating a useful prompt dataset is deceptively hard. You can’t just write “What do people say about Brand X?” fifty times and call it monitoring. You need prompts that reflect real buyer language, real use cases, competitor comparisons, and category-specific questions that models like ChatGPT, Perplexity, Claude, and Gemini will answer differently. And then there’s the formatting: columns, tags, languages, and consistent categories so the dataset stays usable next month, not just today.
It adds up fast. Here’s where it usually breaks down.
- Research gets done in scattered tabs, which means the prompts don’t match the company’s actual positioning.
- Prompt writing turns into a half-day project because you need variety, not duplicates with tiny wording changes.
- Translations are often an afterthought, so you end up with awkward German (or none at all) and inconsistent intent.
- Without clean tags (industry, category, model, language), you can’t filter results later, so reporting becomes manual again.
The Solution: Company research → structured prompts → tagged CSV export
This workflow turns a single input (company name + website URL) into a structured, platform-ready prompt dataset. It starts by collecting company context via OpenAI with web search, pulling the kind of details you’d normally assemble manually: core offer, positioning, features, and likely buyer personas. Then Claude takes over for prompt craftsmanship, generating natural-sounding monitoring queries that reflect what prospects and customers actually ask. The workflow produces 25 English prompts and automatically translates them into 25 German prompts, then merges both languages into one consistent table with metadata. Finally, it exports everything as a CSV file you can upload directly into an AI visibility tracking system (or keep as your internal monitoring library).
The workflow begins with a simple form submission in n8n. From there, research, prompt refinement, translation, and table formatting happen in sequence. At the end you download a tagged CSV, ready to import, without cleaning anything by hand.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you need a fresh dataset for a new brand launch. Manually, you might spend about 2 hours researching the company, then another 2 hours writing and deduplicating 50 prompts, then about 1 hour tagging and formatting the CSV. If you also need German, add about 1 more hour to translate and clean it up. With this workflow you submit the company name + URL in under 5 minutes, wait about 5 minutes for processing, then download the finished CSV. That’s roughly a half-day of busywork turned into a quick handoff.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- OpenAI API for company research with web search
- Anthropic (Claude) API to generate and translate prompts
- OpenAI API key (get it from the OpenAI API dashboard)
Skill level: Beginner. You’ll paste API keys, run a test submission, and tweak prompt text if you want different categories.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
You submit a company name and URL. The workflow starts from an n8n form trigger (the “Form Submission Trigger”), then maps the fields into the format needed for the research request.
OpenAI researches the company and returns structured context. An HTTP request pulls the research response, then the workflow parses and cleans it (including stripping citation marks) so later steps can reuse the data reliably.
Claude generates monitoring prompts from seed phrases and findings. Seed phrases are built and refined, keyword data is fetched, and Claude produces prompt questions that fit visibility tracking across different AI engines. Some logic checks help consolidate sources so you don’t end up with repetitive rows.
A CSV file is created and exported. English prompts are compiled into a table, translated into German, merged with metadata tags (company, industry, category, language, model), and converted into a downloadable CSV.
You can easily modify the prompt categories to match your product lines or target segments. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Form Submission Trigger
Set up the form that kicks off the workflow and captures the company inputs.
- Add and open Form Submission Trigger.
- Set Form Title to
Input. - Set Form Description to
Provide a company name and a website. - Add two form fields: Provide a Company Name (placeholder
ALLMO.ai) and Provide a Website URL (placeholderwww.allmo.ai).
Step 2: Connect OpenAI research and keyword services
Map the form fields and run research/keyword extraction via OpenAI responses.
- In Map Input Fields, add assignments for company_name with
{{ $json['Provide a Company Name'] }}and company_website with{{ $json['Provide a Website URL'] }}. - Open Company Research Request and set URL to
https://api.openai.com/v1/responsesand Method toPOST. - Set Authentication to
predefinedCredentialTypeand Node Credential Type toopenAiApi. Credential Required: Connect youropenAiApicredentials. - Keep the request body as JSON and ensure the user content uses
{{ $json.company_name }}and{{ $json.company_website }}, plus the tool filter{{ $json.company_website }}in Company Research Request. - In Fetch Top Keywords, confirm the same URL and Method, and that the user prompt references
{{ $('Map Input Fields').item.json.company_name }},{{ $('Map Input Fields').item.json.company_website }},{{ $('Strip Citation Marks').item.json.industry }}, and{{ $('Strip Citation Marks').item.json.solution.unbranded_name }}. Credential Required: Connect youropenAiApicredentials.
Step 3: Set up profile parsing and phrase sources
Clean the research response, assemble structured fields, then generate and refine phrases. Several code nodes work together here (11 code nodes total), so focus on the critical path below.
- In Parse Research JSON and Strip Citation Marks, keep the provided JavaScript to parse and clean the research JSON output.
- In Assemble Profile Fields, map fields like industry to
{{ $json.industry }}, Unbranded category to{{ $json.solution.unbranded_name }}, and category to{{ $json.solution.category }}. - Continue mapping persona, problem, and feature fields in Assemble Profile Fields, e.g., Persona 0 - name to
{{ $json.buyer_personas[0].name }}and Problem 1 to{{ $json.problems_solved[0] }}. - From Assemble Profile Fields the workflow branches in parallel: Assemble Profile Fields outputs to both Build 13 Seed Phrases, Fetch Top Keywords, and Claude Prompt Generator in parallel.
- Leave the JavaScript in Build 13 Seed Phrases as-is to generate the 13 initial phrases from the assembled fields.
- Open Claude Phrase Refiner and keep the prompt structure. Credential Required: Connect your
anthropicApicredentials. - In Parse Refined Phrases, keep the JSONL parsing logic; it extracts refined phrases from the model response.
- Keep Extract Keyword JSON and Combine Phrase Sources as-is to merge refined phrases with OpenAI keyword terms.
Step 4: Set up AI prompt generation and English dataset assembly
Generate additional questions via Claude, then merge all English prompts into a dataset.
- Open Claude Prompt Generator and keep the prompt content and input mapping. Credential Required: Connect your
anthropicApicredentials. - In Parse Prompt Questions, keep the JSON parsing logic to extract the
questionsarray intoprompts. - Ensure Consolidate Prompts is connected after Combine Phrase Sources to produce the unified English prompt list.
- Verify Merge English Outputs receives both Consolidate Prompts and Parse Prompt Questions.
- Keep Compile English Dataset to output a single JSON item with language
englishand countryglobal.
Step 5: Configure translation, tabularization, and merge logic
Split the English dataset into a table, translate to German, and merge both languages.
- After Compile English Dataset, the workflow branches in parallel: Compile English Dataset outputs to both Tabularize Prompts and Claude German Translator in parallel.
- In Tabularize Prompts, keep the code that creates one row per prompt with language
englishand countryglobal. - Open Claude German Translator and keep the translation instructions. Credential Required: Connect your
anthropicApicredentials. - In Parse German Translations, keep the JSON parsing to output one item per German prompt with language
germanand countryDE. - Confirm Merge Languages receives outputs from Tabularize Prompts and Parse German Translations.
Step 6: Configure output file export
Append upload-ready fields and convert the dataset into a file.
- In Append Upload Fields, keep the code that adds model as
["gpt-5-mini-2025-08-07","sonar","gemini-2.5-flash-lite-search"], search_question as{{ $json.prompt }}, tracking_interval asWeekly, and status asactive. - Ensure Export File is connected after Append Upload Fields to create the downloadable file.
Step 7: Test and Activate Your Workflow
Run a full test to validate research, prompt generation, translations, and file export before enabling the workflow.
- Click Execute Workflow and submit the Form Submission Trigger with a real company name and website.
- Confirm Company Research Request returns valid JSON and that Parse Research JSON outputs structured fields.
- Verify Combine Phrase Sources and Compile English Dataset produce a populated
promptsarray. - Check that Parse German Translations outputs German rows and that Merge Languages includes both English and German records.
- Open the output from Export File to ensure the file includes
prompt,language,country,model,search_question,tracking_interval, andstatus. - When satisfied, switch the workflow to Active for production use.
Common Gotchas
- OpenAI credentials can expire or lack the right access for web-capable models. If things break, check your OpenAI API key status and model permissions in the OpenAI dashboard first.
- If you’re using Wait nodes or external processing, timing varies. 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.
Frequently Asked Questions
About 30 minutes if your API keys are ready.
No. You’ll connect accounts, paste keys, and run a test submission. The workflow’s code nodes are already built, so you mainly configure inputs and prompts.
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 and Anthropic API usage costs, which vary based on how much text you generate.
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 it’s one of the easiest upgrades. You can duplicate the Claude German Translator section and swap the target language in the translation prompt, then merge the new language the same way “Merge Languages” does now. Many teams add Spanish or French first, then split outputs into separate CSVs if their monitoring platform prefers one language per import.
Usually it’s an API key issue or a model access problem. Regenerate your OpenAI key, update it in n8n, and confirm your account can use a web-enabled research model. If it fails only on some websites, the target URL may be blocking bots or returning a non-standard response that the parsing step can’t read cleanly.
It generates 50 prompts per run by default, but you can raise that if you’re comfortable with higher API usage and longer processing time.
Often, yes, because this workflow has multiple AI steps, merging, parsing, and file export logic that gets clunky (and expensive) in simpler automation tools. n8n is also easier to extend when you want extra languages, new tag columns, or different prompt “packs” by category. Zapier or Make can still be fine if you only want a basic two-step “form → AI → spreadsheet” setup, honestly. If you’re unsure, Talk to an automation expert and we’ll map the cheapest option for your volume. Bring your target platform and we’ll design around its import format.
Once you have a clean prompt dataset, AI visibility tracking stops being a one-off project and becomes a repeatable routine. Set it up once, then spend your time on the insights instead of the spreadsheet grooming.
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.