This workflow corresponds to n8n.io template #6282 — we link there as the canonical source.
This workflow follows the Agent → Form Trigger recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "gdQ7R3obn4CWmI29",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Create Data-Driven UX personas (descriptio and images) using Perplexity, OpenAI and Google Doc",
"tags": [],
"nodes": [
{
"id": "13cb8a59-e5de-49dc-9d2f-a14c2f7fd12c",
"name": "On form submission1",
"type": "n8n-nodes-base.formTrigger",
"position": [
2320,
112
],
"parameters": {
"options": {},
"formTitle": "Creating Personas",
"formFields": {
"values": [
{
"fieldLabel": "Website url",
"placeholder": "Enter website url",
"requiredField": true
},
{
"fieldLabel": "Region"
},
{
"fieldLabel": "Inductry"
}
]
},
"formDescription": "This form is used to create personas for your service based on market research."
},
"typeVersion": 2.2
},
{
"id": "edb2152e-a8fd-415a-921d-13d7bb952b48",
"name": "Update a document1",
"type": "n8n-nodes-base.googleDocs",
"position": [
3376,
-96
],
"parameters": {
"actionsUi": {
"actionFields": [
{
"text": "={{ $json.output }}",
"action": "insert"
}
]
},
"operation": "update"
},
"credentials": {
"googleDocsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "2e4e8c52-e702-406d-bace-740ab2df1a6e",
"name": "OpenAI Chat Model2",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
2864,
320
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "2d577fd4-e97a-4344-8940-8b588902214f",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1648,
0
],
"parameters": {
"color": 5,
"width": 520,
"height": 808,
"content": "***Automated Data-Driven UX Persona Creation \u2013 Try It Out!***\n\n## About\nYou can create personas based on your website, region, and industry.\nUnlike traditional persona creation, this process uses reliable data sources and can estimate market size for each persona.\n\nUX personas have a wide range of applications: use them to better define your target users during product development, align your team around user goals during workshops, or inspire new features and ideas by deeply understanding user needs and behaviors.\n\n## How It Works\n- The flow is triggered via a web form\n- Perplexity analyzes the market and creates a data foundation for the personas\n- An AI agent transforms the data into detailed persona descriptions and publishes them in a Google Doc\n- We use DALL\u00b7E 3 to generate an image for each persona, which is saved to your Google Drive\n\n## How To Use\n- Import the package into your N8N interface\n- Set up the credentials in each node to access the necessary tools\n- Wait for the process to run (it takes just a few seconds)\n- Check the final output in Google Docs and your Google Drive\n\n## Requirements\n- Perplexity for research\n- OpenAI for LLM and Image generation\n- Google Doc\n- Google Drive to upload images\n\n"
},
"typeVersion": 1
},
{
"id": "79fc67ed-7b0b-4f78-9704-20c4b1db0176",
"name": "Parse Prompts into JSON Array",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
3552,
496
],
"parameters": {
"jsonSchemaExample": "[\n {\n \"prompt\": \"...\"\n },\n {\n \"prompt\": \"...\"\n },\n {\n \"prompt\": \"...\"\n }\n]"
},
"typeVersion": 1.2
},
{
"id": "be5b036d-bcc2-41ba-b697-4aebc8198dd4",
"name": "\ud83d\udd0d Research",
"type": "n8n-nodes-base.perplexity",
"position": [
2592,
112
],
"parameters": {
"model": "sonar-deep-research",
"options": {},
"messages": {
"message": [
{
"content": "=You are a user experience researcher and a Perplexity (research) prompt agent. Your task is to generate a UX personas for each segment based on credible market research and statistics. Use the following structured scope to guide your research and findings. Your output should be data-informed and well-cited with links to relevant sources.\n\n{{ $json['Website url'] }}{{ $json.Region }}{{ $json.Inductry }}\n\u2e3b\n\n1. Business Overview\n\nProvide a brief summary of the business based on its website, industry, and regional context. Include an overview of all user segments relevant to the product/service. For each segment, provide:\n\t\u2022\tSegment name\n\t\u2022\tBrief description\n\t\u2022\tEstimated size\nQuantify the potential market this segment represents. Include data such as:\n\t\u2022\tTAM (Total Addressable Market)\n\t\u2022\tCAGR (Compound Annual Growth Rate)\n\t\u2022\tNumber of companies or professionals\n\t\u2022\tRegional breakdown (if relevant)\n\nReference links:\n\t\u2022\t[URL]\n\t\u2022\t[URL]\n\n\u2e3b\n\n2. Persona Descriptions\n\nDevelop a detailed persona profile for each user segment identified in the business overview. Use the following structure:\n\nA. Identify and describe a distinct user segment relevant to the query, grounded in market data. Include:\n\t\u2022\tDemographic details (age, gender, location, income level)\n\t\u2022\tPsychographics (lifestyle, behavior, interests)\n\t\u2022\tJob roles or consumer type (if relevant)\n\nReference links:\n\t\u2022\t[URL]\n\t\u2022\t[URL]\n\n\n\u2e3b\n\nB. Market Size\n\nEstimate the size of the target user group, including:\n\t\u2022\tNumber of potential users/customers\n\t\u2022\tGrowth rate (if available)\n\t\u2022\tRelevant geographic distribution\n\nReference links:\n\t\u2022\t[URL]\n\t\u2022\t[URL]\n\n\n\u2e3b\n\nC. User Needs\n\nList the primary needs or goals of this persona in relation to the product or service described in the query. Back your findings with:\n\t\u2022\tBehavioral data\n\t\u2022\tIndustry reports or surveys\n\t\u2022\tRelevant UX research or trend reports\n\nReference links:\n\t\u2022\t[URL]\n\t\u2022\t[URL]\n\n\n\u2e3b\n\nD. Pain Points\n\nDescribe key frustrations, obstacles, or unmet needs of the user segment. Support with:\n\t\u2022\tUser feedback data\n\t\u2022\tCustomer reviews or complaint summaries\n\t\u2022\tResearch studies on the user experience\n\nReference links:\n\t\u2022\t[URL]\n\t\u2022\t[URL]\n\n\n\u2e3b\n\nE. Usage Story\n\nWrite a concise story showing how this persona would interact with the product or service in a real-life scenario. The story should demonstrate:\n\t\u2022\tMotivation to use\n\t\u2022\tUsage context\n\t\u2022\tKey touchpoints and emotional moments\n\t\u2022\tOutcome\n\nReference links include to the output:\n\t\u2022\t[URL]\n\t\u2022\t[URL]\n\n"
}
]
},
"requestOptions": {}
},
"credentials": {
"perplexityApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "779f98ee-2f84-42ea-a8a9-06cec6724a4e",
"name": "Personas descriptions",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
2864,
112
],
"parameters": {
"text": "={{ $json.choices[0].message.content }}{{ $json.citations }}{{ $json.search_results }}",
"options": {
"systemMessage": "You are a helpful formatter assistant, you will receive a copy, your job is to format it.\n\nGoal:\nDevelop full personas descriptions tailored to different user groups. The personas will be used in a business case to illustrate target users, validate product\u2013market fit, and guide go-to-market strategy.\n\n\u2e3b\n\n\ud83d\udcc4 Output Format\n\n\u2e3b\n\nPersona 1: [Name and Segment Title]\n\n\u2e3b\n\n1. User Segment\n\nBrief overview of this group. Describe who they are (e.g., role, industry), what they do, and why they are relevant to the product or market.\nReference links:\n\t\u2022\t[Include the full url of Source ] \n\u2e3b\n\n2. Market Size\n\nQuantify the potential market this persona represents. Include data such as:\n\t\u2022\tTAM (Total Addressable Market)\n\t\u2022\tCAGR (Compound Annual Growth Rate)\n\t\u2022\tNumber of companies or professionals\n\t\u2022\tRegional breakdown (if relevant)\n\nReference links:\n\t\u2022\t[Include the full url of Source]\n\t\n\u2e3b\n\n3. User Needs\n\nWhat problems or goals does this persona need the product to solve or support?\n\nReference links:\n\t\u2022\t[Include the full url of Source]\n\t\n\u2e3b\n\n4. Pain Points\n\nDescribe typical challenges or friction this persona experiences.\n\nReference links:\n\t\u2022\t[Include the full url of Source]\n\t\n\n\u2e3b\n\n5. Usage Story\n\nA realistic story showing how this persona uses the product to solve problems or achieve goals.\n\n\u201cAs a [job title], I use the product to [action], which helps me [benefit].\u201d\n\n\u2013 Format headings using Markdown\u2011style (e.g., `## Executive Summary`) so the Google Doc node will render them as section titles. \n- Copy Reference links section\n"
},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "2d6627be-3236-430f-95e9-604acd66a36f",
"name": "Generate Prompts for Images",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
3360,
288
],
"parameters": {
"text": "=",
"options": {
"systemMessage": "={{ $json.output }}\nCreate from this input a prompt for Image Generation for each persona based on Usage Story section.\n\n\nRequirements:\n400x400 pixel square, with no props or text, name the file using Persona title. One image for each Persona\n\nPlease return **only** a JSON array of objects, each with a single property `\"prompt\"` containing the image prompt. Example output structure:\n[\n {\n \"prompt\"...\"\n },\n {\n \"prompt\": \"...\"\n },\n {\n \"prompt\": \"...\"\n }\n]"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.7
},
{
"id": "b3652274-f800-4bdc-8807-124b60cafb20",
"name": "Generate images",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
4016,
288
],
"parameters": {
"prompt": "={{ $json.prompt }}",
"options": {},
"resource": "image"
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "b727493c-53ac-40b5-b2e4-dcd525f87232",
"name": "Upload images",
"type": "n8n-nodes-base.googleDrive",
"position": [
4224,
288
],
"parameters": {
"name": "={{ $now.format(\"yyyyMMddHHmmSSS\") }}",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "1kv3Yo3cKK6Vsd2sBQYUN2RsBL4E1KOW8",
"cachedResultUrl": "https://drive.google.com/drive/folders/1kv3Yo3cKK6Vsd2sBQYUN2RsBL4E1KOW8",
"cachedResultName": "n8n"
},
"inputDataFieldName": "=data"
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "37946092-3323-4cd8-8472-5f4ab94a17f3",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
2496,
16
],
"parameters": {
"color": 5,
"width": 312,
"height": 376,
"content": "Research on user segments and their market size"
},
"typeVersion": 1
},
{
"id": "cba606d5-aa81-456e-aded-fb7c87537f60",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
2832,
16
],
"parameters": {
"color": 4,
"width": 328,
"height": 440,
"content": "Persona description creation"
},
"typeVersion": 1
},
{
"id": "442d43ce-ec95-4de9-aa77-c46fa82b8ba9",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
3312,
240
],
"parameters": {
"color": 7,
"width": 360,
"height": 456,
"content": "Create a prompt for generating an image for each persona"
},
"typeVersion": 1
},
{
"id": "19c19e43-c318-4978-856c-aafb98e6261a",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
3952,
240
],
"parameters": {
"color": 6,
"width": 472,
"height": 456,
"content": "Generate images and upload to Google Drive"
},
"typeVersion": 1
},
{
"id": "4b0eac98-81ee-4b60-90a0-be6d35c01313",
"name": "GPT-4o",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
3360,
480
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "1b7144ac-6147-4f24-a02e-9c491176ae01",
"name": "Split Prompts",
"type": "n8n-nodes-base.splitOut",
"position": [
3776,
288
],
"parameters": {
"options": {
"includeBinary": true
},
"fieldToSplitOut": "output"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "472470fe-db1d-4fab-9751-e89d980f4e4c",
"connections": {
"GPT-4o": {
"ai_languageModel": [
[
{
"node": "Generate Prompts for Images",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Split Prompts": {
"main": [
[
{
"node": "Generate images",
"type": "main",
"index": 0
}
]
]
},
"Upload images": {
"main": [
[]
]
},
"\ud83d\udd0d Research": {
"main": [
[
{
"node": "Personas descriptions",
"type": "main",
"index": 0
}
]
]
},
"Generate images": {
"main": [
[
{
"node": "Upload images",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model2": {
"ai_languageModel": [
[
{
"node": "Personas descriptions",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"On form submission1": {
"main": [
[
{
"node": "\ud83d\udd0d Research",
"type": "main",
"index": 0
}
]
]
},
"Personas descriptions": {
"main": [
[
{
"node": "Update a document1",
"type": "main",
"index": 0
},
{
"node": "Generate Prompts for Images",
"type": "main",
"index": 0
}
]
]
},
"Generate Prompts for Images": {
"main": [
[
{
"node": "Split Prompts",
"type": "main",
"index": 0
}
]
]
},
"Parse Prompts into JSON Array": {
"ai_outputParser": [
[
{
"node": "Generate Prompts for Images",
"type": "ai_outputParser",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleDocsOAuth2ApigoogleDriveOAuth2ApiopenAiApiperplexityApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
Source: https://n8n.io/workflows/6282/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
🎯 Create viral TikToks, Shorts, Reels, podcasts, and ASMR videos in minutes — all on autopilot.
The best content automation template in the market is now even better—with “deep research” on time-sensitive topics\! Unlike most n8n content automation templates that are mainly for “demo purposes,”
This workflow creates an automated Product Intelligence Engine that continuously collects signals from multiple product sources and generates structured PRD updates using AI. It ingests conversations,
HR Job Posting and Evaluation with AI. Uses formTrigger, airtable, googleDrive, stickyNote. Event-driven trigger; 36 nodes.
HR Job Posting and Evaluation with AI. Uses formTrigger, airtable, googleDrive, stickyNote. Event-driven trigger; 36 nodes.