This workflow corresponds to n8n.io template #15167 — 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 →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "0bb808f7-e9df-4a58-a9a0-e15ffda64b63",
"name": "Overview",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2176,
-256
],
"parameters": {
"color": 4,
"width": 524,
"height": 1176,
"content": "## Landing Page Headline A/B Test Generator \u2014 GPT-4o-mini + Sheets + Gmail\n\nFor marketers, growth teams, and conversion specialists who want data-driven headline variants ready to A/B test in minutes. Submit your landing page URL and current headline via the form. The workflow scrapes the page, cleans the HTML, and sends the content to GPT-4o-mini which generates exactly 10 headline variations \u2014 each using a different psychological framework such as benefit-led, pain-led, curiosity, social proof, urgency, and FOMO. Every headline is scored on clarity, emotional pull, specificity, and SEO fit. Test priority is automatically assigned. All 10 headlines are logged to Google Sheets and a Gmail report groups them by test priority with specific testing tips for each.\n\n## How it works\n- **1. Form \u2014 Landing Page Headline Generator** collects the page URL, current headline, page name, conversion goal, target audience, and your name\n- **2. Set \u2014 Config Values** stores Sheet ID, recipient email, sender name, and all form values\n- **3. HTTP \u2014 Scrape Landing Page** fetches the raw HTML so GPT has real page context\n- **4. Code \u2014 Clean Page Content** strips nav, footer, scripts, and styles \u2014 keeps 3500 chars of clean body text\n- **5. AI Agent \u2014 Generate Headlines** uses GPT-4o-mini to write 10 headlines across 10 frameworks, each scored on 4 dimensions with a testing tip and priority assignment\n- **8. Code \u2014 Split Headlines for Sheets** splits the array to one item per headline, marks isLastRow on headline 10, and carries the full array on the last item for Gmail\n- **9. Google Sheets \u2014 Log Headline Tests** appends one row per headline \u2014 10 rows per run\n- **10. IF \u2014 All Headlines Logged?** gates the Gmail report so it fires exactly once after all 10 rows are saved\n- **11. Code \u2014 Build Gmail Report** groups headlines by test priority, formats scores, and adds step-by-step testing instructions\n- **12. Gmail \u2014 Send Headline Report** delivers the complete report to your inbox\n\n## Set up steps\n1. In **2. Set \u2014 Config Values** \u2014 replace PASTE_YOUR_GOOGLE_SHEET_ID_HERE, PASTE_YOUR_EMAIL_HERE, and PASTE_YOUR_NAME_HERE\n2. In **6. OpenAI \u2014 GPT-4o-mini Model** \u2014 connect your OpenAI credential\n3. In **9. Google Sheets \u2014 Log Headline Tests** \u2014 connect your Google Sheets OAuth2 credential\n4. In **12. Gmail \u2014 Send Headline Report** \u2014 connect your Gmail OAuth2 credential\n5. Create a Google Sheet tab named Headline Tests with columns: Date, Page URL, Page Name, Headline #, Framework, Headline Copy, Clarity Score, Emotional Pull, Specificity, SEO Fit, Overall Score, Test Priority, Submitted By\n6. Activate and open the Form URL to submit your first page"
},
"typeVersion": 1
},
{
"id": "b8ebba65-4db9-4fa2-a6a3-d9d8bf1cecfa",
"name": "Section \u2014 Form Input, Config, Page Scraping, and HTML Cleaning",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1600,
32
],
"parameters": {
"color": 5,
"width": 884,
"height": 484,
"content": "## Form Input, Config, Page Scraping, and HTML Cleaning\nUser submits page URL, current headline, conversion goal, and target audience. Config stores all credentials and form values. HTTP scrapes the page HTML. A Code node strips nav, footer, scripts, and styles \u2014 leaving 3500 chars of clean body text for GPT."
},
"typeVersion": 1
},
{
"id": "c4e137b8-9a9d-4e2b-a4a3-3e8401736c1a",
"name": "Section \u2014 AI Headline Generation",
"type": "n8n-nodes-base.stickyNote",
"position": [
-672,
32
],
"parameters": {
"color": 6,
"width": 596,
"height": 900,
"content": "## AI Headline Generation\nGPT-4o-mini generates exactly 10 headlines across 10 psychological frameworks. Each headline is scored on clarity, emotional pull, specificity, and SEO fit. Test priority is auto-assigned and a specific testing tip is included per headline."
},
"typeVersion": 1
},
{
"id": "5f7d49d7-334a-4801-be1e-63f7e8c90360",
"name": "Section \u2014 Headline Split, Sheet Logging, and Gmail Report",
"type": "n8n-nodes-base.stickyNote",
"position": [
32,
-48
],
"parameters": {
"color": 4,
"width": 996,
"height": 740,
"content": "## Headline Split, Sheet Logging, and Gmail Report\nSplits the 10 headlines to one item per row. Google Sheets logs every headline. The IF node checks isLastRow \u2014 only the 10th headline triggers the Gmail report. The report groups headlines by test priority with scores and testing tips for each."
},
"typeVersion": 1
},
{
"id": "179431b4-b0ec-47c8-b971-249f219ac8ac",
"name": "1. Form \u2014 Landing Page Headline Generator",
"type": "n8n-nodes-base.formTrigger",
"position": [
-1536,
224
],
"parameters": {
"options": {},
"formTitle": "Landing Page Headline Generator",
"formFields": {
"values": [
{
"fieldLabel": "Landing Page URL",
"placeholder": "https://yoursite.com/landing-page",
"requiredField": true
},
{
"fieldLabel": "Current Headline",
"placeholder": "The headline currently showing on your page",
"requiredField": true
},
{
"fieldLabel": "Page Name",
"placeholder": "Example: Homepage, Pricing Page, Free Trial Page",
"requiredField": true
},
{
"fieldLabel": "Conversion Goal",
"placeholder": "Example: Book a demo, Start free trial, Buy now, Get a quote",
"requiredField": true
},
{
"fieldLabel": "Target Audience",
"placeholder": "Example: SaaS founders, personal injury lawyers, medical spa owners",
"requiredField": true
},
{
"fieldLabel": "Your Name",
"placeholder": "Example: Rahul Dutt"
}
]
},
"formDescription": "Get 10 scored headline variations for your landing page \u2014 each using a different psychological framework. Ready to A/B test immediately."
},
"typeVersion": 2.2
},
{
"id": "06ea1c4b-3563-4e51-952a-9a3e5875d478",
"name": "2. Set \u2014 Config Values",
"type": "n8n-nodes-base.set",
"position": [
-1312,
224
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "cfg-001",
"name": "sheetId",
"type": "string",
"value": "PASTE_YOUR_GOOGLE_SHEET_ID_HERE"
},
{
"id": "cfg-002",
"name": "sheetName",
"type": "string",
"value": "Headline Tests"
},
{
"id": "cfg-003",
"name": "recipientEmail",
"type": "string",
"value": "PASTE_YOUR_EMAIL_HERE"
},
{
"id": "cfg-004",
"name": "senderName",
"type": "string",
"value": "PASTE_YOUR_NAME_HERE"
},
{
"id": "cfg-005",
"name": "pageUrl",
"type": "string",
"value": "={{ $json['Landing Page URL'].trim() }}"
},
{
"id": "cfg-006",
"name": "currentHeadline",
"type": "string",
"value": "={{ $json['Current Headline'] }}"
},
{
"id": "cfg-007",
"name": "pageName",
"type": "string",
"value": "={{ $json['Page Name'] }}"
},
{
"id": "cfg-008",
"name": "conversionGoal",
"type": "string",
"value": "={{ $json['Conversion Goal'] }}"
},
{
"id": "cfg-009",
"name": "targetAudience",
"type": "string",
"value": "={{ $json['Target Audience'] }}"
},
{
"id": "cfg-010",
"name": "submittedBy",
"type": "string",
"value": "={{ $json['Your Name'] || 'Unknown' }}"
},
{
"id": "cfg-011",
"name": "today",
"type": "string",
"value": "={{ $now.toFormat('dd MMM yyyy') }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "6cab9d4a-4b8b-468d-ac91-ca57df40f71c",
"name": "3. HTTP \u2014 Scrape Landing Page",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1088,
224
],
"parameters": {
"url": "={{ $json.pageUrl }}",
"options": {
"timeout": 15000,
"response": {
"response": {
"responseFormat": "text"
}
}
}
},
"typeVersion": 4.2
},
{
"id": "f1c84865-423d-4413-896b-3f17daf94fc5",
"name": "4. Code \u2014 Clean Page Content",
"type": "n8n-nodes-base.code",
"position": [
-864,
224
],
"parameters": {
"jsCode": "const html = $input.first().json;\nconst config = $('2. Set \u2014 Config Values').item.json;\n\nlet rawHtml = typeof html === 'string' ? html : (html?.data || JSON.stringify(html));\n\nif (!rawHtml || rawHtml.length < 100) {\n throw new Error('Page scrape returned no content. Check the URL and try again.');\n}\n\nlet cleanText = rawHtml\n .replace(/<script[\\s\\S]*?<\\/script>/gi, '')\n .replace(/<style[\\s\\S]*?<\\/style>/gi, '')\n .replace(/<!--[\\s\\S]*?-->/g, '')\n .replace(/<nav[\\s\\S]*?<\\/nav>/gi, '')\n .replace(/<footer[\\s\\S]*?<\\/footer>/gi, '')\n .replace(/<header[\\s\\S]*?<\\/header>/gi, '')\n .replace(/<\\/(div|p|li|h[1-6]|section|article)>/gi, '\\n')\n .replace(/<[^>]+>/g, ' ')\n .replace(/ /g, ' ')\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/"/g, '\"')\n .replace(/\\s{3,}/g, '\\n\\n')\n .trim()\n .substring(0, 3500);\n\nreturn [{\n json: {\n pageContent: cleanText,\n pageUrl: config.pageUrl,\n currentHeadline: config.currentHeadline,\n pageName: config.pageName,\n conversionGoal: config.conversionGoal,\n targetAudience: config.targetAudience,\n submittedBy: config.submittedBy,\n today: config.today,\n sheetId: config.sheetId,\n sheetName: config.sheetName,\n recipientEmail: config.recipientEmail,\n senderName: config.senderName\n }\n}];"
},
"typeVersion": 2
},
{
"id": "bce0cfc3-3ee8-47e8-9c04-9d0cd12f52b2",
"name": "5. AI Agent \u2014 Generate Headlines",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-560,
224
],
"parameters": {
"text": "=You are a world-class conversion copywriter with 15 years of experience writing headlines that increase click-through rates and conversions.\n\nYou are analyzing this landing page to write 10 headline variations.\n\nPage details:\nCurrent headline: {{ $json.currentHeadline }}\nConversion goal: {{ $json.conversionGoal }}\nTarget audience: {{ $json.targetAudience }}\nPage name: {{ $json.pageName }}\n\nPage content:\n{{ $json.pageContent }}\n\nWrite exactly 10 headline variations. Each headline must use a different psychological framework from the list below.\n\nReturn ONLY a valid JSON array of exactly 10 objects. No extra text. No markdown. No backticks.\n\nEach object must have exactly these fields:\n\nheadlineNumber\nA number from 1 to 10.\n\nframework\nThe psychological framework used. Choose one different framework for each headline from this list:\nBenefit-led, Pain-led, Curiosity, Social proof, Specificity and numbers, Urgency, Before and after, Question, Bold claim, Fear of missing out\n\nheadlineCopy\nThe actual headline text. Under 12 words. Written for the target audience. Directly connected to the conversion goal. Do NOT use the current headline.\n\nclarityScore\nA number from 1 to 10. How instantly clear is the message to a first-time visitor?\n\nemotionalPull\nA number from 1 to 10. How strongly does this headline create a feeling or desire?\n\nspecificity\nA number from 1 to 10. How specific and concrete is this headline versus generic?\n\nseoFit\nA number from 1 to 10. How well does this headline include natural search-friendly language?\n\noverallScore\nThe average of the four scores above rounded to one decimal place.\n\ntestPriority\nExactly one of: Test First, Test Second, Test Third, Lower Priority\nAssign Test First to the 2 strongest headlines, Test Second to the next 3, Test Third to the next 3, Lower Priority to the remaining 2.\n\ntestingTip\nOne sentence of specific advice for testing this particular headline. Under 20 words.",
"options": {},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.7
},
{
"id": "0a262787-139d-4b93-b891-d7bf4a6ef168",
"name": "6. OpenAI \u2014 GPT-4o-mini Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-560,
480
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {
"maxTokens": 1500,
"temperature": 0.7
}
},
"typeVersion": 1.2
},
{
"id": "7dfce289-90bd-46cd-bf34-efa844d5fab3",
"name": "7. Parser \u2014 Structured Headline Output",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-416,
688
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"headlineNumber\": { \"type\": \"number\" },\n \"framework\": { \"type\": \"string\" },\n \"headlineCopy\": { \"type\": \"string\" },\n \"clarityScore\": { \"type\": \"number\" },\n \"emotionalPull\": { \"type\": \"number\" },\n \"specificity\": { \"type\": \"number\" },\n \"seoFit\": { \"type\": \"number\" },\n \"overallScore\": { \"type\": \"number\" },\n \"testPriority\": { \"type\": \"string\" },\n \"testingTip\": { \"type\": \"string\" }\n },\n \"required\": [\"headlineNumber\", \"framework\", \"headlineCopy\", \"clarityScore\", \"emotionalPull\", \"specificity\", \"seoFit\", \"overallScore\", \"testPriority\", \"testingTip\"]\n }\n}"
},
"typeVersion": 1.3
},
{
"id": "1a86546d-5af3-4a88-befc-b93d6fa37845",
"name": "8. Code \u2014 Split Headlines for Sheets",
"type": "n8n-nodes-base.code",
"position": [
96,
224
],
"parameters": {
"jsCode": "const aiOutput = $input.first().json.output;\nconst pageData = $('4. Code \u2014 Clean Page Content').item.json;\n\nif (!aiOutput || !Array.isArray(aiOutput) || aiOutput.length === 0) {\n throw new Error('GPT did not return headline data. Check OpenAI credentials.');\n}\n\nconst sorted = [...aiOutput].sort((a, b) => (b.overallScore || 0) - (a.overallScore || 0));\nconst topHeadline = sorted[0];\n\n// Return one item per headline\nreturn aiOutput.map(h => ({\n json: {\n today: pageData.today,\n pageUrl: pageData.pageUrl,\n pageName: pageData.pageName,\n headlineNum: h.headlineNumber,\n framework: h.framework,\n headlineCopy: h.headlineCopy,\n clarityScore: h.clarityScore + ' out of 10',\n emotionalPull: h.emotionalPull + ' out of 10',\n specificity: h.specificity + ' out of 10',\n seoFit: h.seoFit + ' out of 10',\n overallScore: h.overallScore + ' out of 10',\n testPriority: h.testPriority,\n submittedBy: pageData.submittedBy,\n isLastRow: h.headlineNumber === 10,\n allHeadlines: h.headlineNumber === 10 ? aiOutput : [],\n currentHeadline: pageData.currentHeadline,\n conversionGoal: pageData.conversionGoal,\n targetAudience: pageData.targetAudience,\n recipientEmail: pageData.recipientEmail,\n senderName: pageData.senderName,\n sheetId: pageData.sheetId,\n sheetName: pageData.sheetName\n }\n}));"
},
"typeVersion": 2
},
{
"id": "0d771cff-cc8f-42a6-8b06-b6fe04d8ee15",
"name": "9. Google Sheets \u2014 Log Headline Tests",
"type": "n8n-nodes-base.googleSheets",
"position": [
320,
64
],
"parameters": {
"columns": {
"value": {
"Date": "={{ $json.today }}",
"SEO Fit": "={{ $json.seoFit }}",
"Page URL": "={{ $json.pageUrl }}",
"Framework": "={{ $json.framework }}",
"Page Name": "={{ $json.pageName }}",
"Headline #": "={{ $json.headlineNum }}",
"Specificity": "={{ $json.specificity }}",
"Submitted By": "={{ $json.submittedBy }}",
"Clarity Score": "={{ $json.clarityScore }}",
"Headline Copy": "={{ $json.headlineCopy }}",
"Overall Score": "={{ $json.overallScore }}",
"Test Priority": "={{ $json.testPriority }}",
"Emotional Pull": "={{ $json.emotionalPull }}"
},
"mappingMode": "defineBelow"
},
"options": {
"cellFormat": "USER_ENTERED"
},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "={{ $json.sheetName }}"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.sheetId }}"
}
},
"typeVersion": 4.5
},
{
"id": "08f51e08-cb8a-45b8-88c4-acaeef7e1f56",
"name": "10. IF \u2014 All Headlines Logged?",
"type": "n8n-nodes-base.if",
"position": [
320,
384
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": false,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "cond-last",
"operator": {
"type": "boolean",
"operation": "true"
},
"leftValue": "={{ $('8. Code \u2014 Split Headlines for Sheets').item.json.isLastRow }}",
"rightValue": true
}
]
}
},
"typeVersion": 2.2
},
{
"id": "475dac20-8447-43c1-aaff-e2787f64d195",
"name": "11. Code \u2014 Build Gmail Report",
"type": "n8n-nodes-base.code",
"position": [
528,
224
],
"parameters": {
"jsCode": "const data = $('8. Code \u2014 Split Headlines for Sheets').item.json;\nconst allHeadlines = data.allHeadlines || [];\n\nconst sorted = [...allHeadlines].sort((a, b) => (b.overallScore || 0) - (a.overallScore || 0));\nconst testFirst = sorted.filter(h => h.testPriority === 'Test First');\nconst testSecond = sorted.filter(h => h.testPriority === 'Test Second');\nconst testThird = sorted.filter(h => h.testPriority === 'Test Third');\nconst lower = sorted.filter(h => h.testPriority === 'Lower Priority');\n\nlet body = 'Hello ' + data.senderName + ',\\n\\n';\nbody += 'Here are 10 scored headline variations for your landing page.\\n\\n';\nbody += 'Page: ' + data.pageName + '\\n';\nbody += 'URL: ' + data.pageUrl + '\\n';\nbody += 'Conversion goal: ' + data.conversionGoal + '\\n';\nbody += 'Target audience: ' + data.targetAudience + '\\n';\nbody += 'Current headline: ' + data.currentHeadline + '\\n\\n';\nbody += '============================================================\\n\\n';\n\nconst formatGroup = (headlines, label) => {\n if (headlines.length === 0) return '';\n let text = label + '\\n\\n';\n headlines.forEach(h => {\n text +=\n 'Framework: ' + h.framework + '\\n' +\n 'Headline: ' + h.headlineCopy + '\\n' +\n 'Overall score: ' + h.overallScore + ' out of 10\\n' +\n 'Clarity: ' + h.clarityScore + ' | Emotional pull: ' + h.emotionalPull + ' | Specificity: ' + h.specificity + ' | SEO fit: ' + h.seoFit + '\\n' +\n 'Testing tip: ' + h.testingTip + '\\n\\n';\n });\n return text + '------------------------------------------------------------\\n\\n';\n};\n\nbody += formatGroup(testFirst, 'TEST FIRST \u2014 Strongest headlines');\nbody += formatGroup(testSecond, 'TEST SECOND \u2014 Strong alternatives');\nbody += formatGroup(testThird, 'TEST THIRD \u2014 Good backups');\nbody += formatGroup(lower, 'LOWER PRIORITY \u2014 Use if above are tested');\n\nbody += 'HOW TO USE THESE HEADLINES\\n\\n';\nbody += '1. Start with the Test First headlines \u2014 run for at least 1000 visitors each\\n';\nbody += '2. Measure click-through rate and conversion rate for each\\n';\nbody += '3. Keep the winner and move to Test Second for further improvement\\n';\nbody += '4. Replace your current headline: ' + data.currentHeadline + '\\n\\n';\nbody += 'All 10 headlines with full scores are saved in your Google Sheets Headline Tests tab.\\n\\n';\nbody += 'Best regards,\\n' + data.senderName;\n\nreturn [{\n json: {\n emailSubject: '10 Headline Variations Ready \u2014 ' + data.pageName + ' \u2014 ' + data.today,\n emailBody: body,\n recipientEmail: data.recipientEmail\n }\n}];"
},
"typeVersion": 2
},
{
"id": "d89f8c8d-279d-464e-862b-a988a4c93317",
"name": "12. Gmail \u2014 Send Headline Report",
"type": "n8n-nodes-base.gmail",
"position": [
768,
224
],
"parameters": {
"sendTo": "={{ $json.recipientEmail }}",
"message": "={{ $json.emailBody }}",
"options": {
"appendAttribution": false
},
"subject": "={{ $json.emailSubject }}"
},
"typeVersion": 2.1
},
{
"id": "4d3cdca0-232d-4c1f-a736-68d08eae0d0a",
"name": "13. Set \u2014 More Rows",
"type": "n8n-nodes-base.set",
"position": [
528,
544
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "loop-001",
"name": "result",
"type": "string",
"value": "More headlines being logged to Sheets \u2014 loop continues."
}
]
}
},
"typeVersion": 3.4
}
],
"connections": {
"2. Set \u2014 Config Values": {
"main": [
[
{
"node": "3. HTTP \u2014 Scrape Landing Page",
"type": "main",
"index": 0
}
]
]
},
"4. Code \u2014 Clean Page Content": {
"main": [
[
{
"node": "5. AI Agent \u2014 Generate Headlines",
"type": "main",
"index": 0
}
]
]
},
"11. Code \u2014 Build Gmail Report": {
"main": [
[
{
"node": "12. Gmail \u2014 Send Headline Report",
"type": "main",
"index": 0
}
]
]
},
"3. HTTP \u2014 Scrape Landing Page": {
"main": [
[
{
"node": "4. Code \u2014 Clean Page Content",
"type": "main",
"index": 0
}
]
]
},
"6. OpenAI \u2014 GPT-4o-mini Model": {
"ai_languageModel": [
[
{
"node": "5. AI Agent \u2014 Generate Headlines",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"10. IF \u2014 All Headlines Logged?": {
"main": [
[
{
"node": "11. Code \u2014 Build Gmail Report",
"type": "main",
"index": 0
}
],
[
{
"node": "13. Set \u2014 More Rows",
"type": "main",
"index": 0
}
]
]
},
"5. AI Agent \u2014 Generate Headlines": {
"main": [
[
{
"node": "8. Code \u2014 Split Headlines for Sheets",
"type": "main",
"index": 0
}
]
]
},
"8. Code \u2014 Split Headlines for Sheets": {
"main": [
[
{
"node": "9. Google Sheets \u2014 Log Headline Tests",
"type": "main",
"index": 0
},
{
"node": "10. IF \u2014 All Headlines Logged?",
"type": "main",
"index": 0
}
]
]
},
"7. Parser \u2014 Structured Headline Output": {
"ai_outputParser": [
[
{
"node": "5. AI Agent \u2014 Generate Headlines",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"1. Form \u2014 Landing Page Headline Generator": {
"main": [
[
{
"node": "2. Set \u2014 Config Values",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Submit your landing page URL, current headline, conversion goal, and target audience using a simple form and the workflow does the rest. It scrapes your page, cleans the content, and sends everything to GPT-4o-mini which generates 10 headline variations — each using a different…
Source: https://n8n.io/workflows/15167/ — 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.
Digistars - Scrape & Crawl. Uses httpRequest, n8n-nodes-firecrawl-scraper, googleSheets, lmChatOpenAi. Event-driven trigger; 63 nodes.
🧠 Automate end-to-end SEO blog creation and WordPress publishing using a GPT-5 multi-agent workflow with real-time research, metadata generation, and optional featured images.
This workflow automates end-to-end contract and invoice management using AI intelligence. It processes proposals through intelligent contract generation, approval workflows, and automated invoicing. O
This n8n workflow template automates your lead generation and follow-up process using AI. It captures leads through a form, enriches them with company data, classifies them into different categories,