带审批流程的AI广告文案生成器
高级
这是一个Content Creation, Multimodal AI领域的自动化工作流,包含 20 个节点。主要使用 If, Set, Slack, FormTrigger, OpenAi 等节点。 使用OpenAI和Slack审批流程生成Meta和TikTok广告文案
前置要求
- •Slack Bot Token 或 Webhook URL
- •OpenAI API Key
使用的节点 (20)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"id": "34PvJdDlpImfxGsS",
"meta": {
"instanceId": "efe08e2da7cae43f565dfacaafdb0e67025886141ccd3ddbe001880f7b5ecf5b"
},
"name": "带审批流程的 AI 广告文案生成器",
"tags": [],
"nodes": [
{
"id": "1e70ec29-68b3-441b-9e18-3c8cf6d3e999",
"name": "适用于时尚品牌",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
0,
0
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": ""
},
"options": {},
"messages": {
"values": [
{
"content": "=\"You are the “Fashion Brand Copy Strategist,” trained to write subtle, stylish, brand-aligned ad copy for fashion labels. This is not direct-response ecommerce. Your copy should reflect the tone, world, and aesthetics of the brand—not just the product benefits.\nHere’s what you need to know to build a winning ad:\n📌 Brand/Product Info\nWebsite/Product collection: {{ $json['Product Name'] }}\nDescription: {{ $json['Product Page Link'] }}\nKey differentiators (if any): {{ $json['USP - 1 liner'] }}. Also see attached for additional information\nTarget audience: {{ $json['Target Audience'] }}\nPain Points: {{ $json['Pain Points'] }}\nReference Ads:\n Also included are sample ads that previously worked for the brand or category. Use them to understand the visual tone, caption style, and level of copy aggression. (Avoid being too pushy. Fashion = allure, not pressure.) - {{ $json['\\'Proven Winners\\' Ad Samples'] }}\nAnother set of ad copies from competitors for additional data - {{ $json['Ad Copies from Competitors'] }}\n\nCustomer Review - {{ $json['Customer Review (optional)'] }}\n\n⚠️ Key Guidelines to Follow:\nKeep it cool – Never sound desperate for a sale. Cool > Clear.\nLess is more – One-liner captions often perform best. Silence is power.\nBrand comes first – The tone should sound like it’s from the brand’s own Instagram, not a sales rep.\nDirect-response formats (problem → solution) rarely work in fashion.\nVisuals do the heavy lifting – Sometimes, the best copy is no copy. Keep that in mind.\nStay aligned with the fashion ecosystem – If it wouldn’t be seen on a Dior, Moshi, or Reformation ad, don’t say it here.\n✅ Deliverables:\n3–5 ad copy variations (60 characters to 90 words max)\nUse the format: Hook (optional) + Vibe Copy (brand voice) + Optional Tagline (if needed)\nKeep it minimal, editorial, and always in-brand.\n\n{{ $json['Attach Research Brief and other references'] }}\n"
}
]
}
},
"typeVersion": 1.8
},
{
"id": "f36aa2d0-cdd9-4604-b6b0-3cc98426cfc7",
"name": "适用于问题解决型品牌",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
0,
416
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": ""
},
"options": {},
"messages": {
"values": [
{
"content": "=You are the \"Winning-Ad Generator,\" trained to write 3 ad copies designed for Meta or TikTok.\n\n🔹 Format: Hook + Benefits + Call to Action (Casual, benefit-driven, VoC language, fun emojis)\n🔹 Tone: Conversational, playful, Gen Z/Millennial-friendly\n🔹 Output: 3 ad variations, 60–90 words each\n\nHere’s the product info:\n- Product Name: {{ $json['Product Name'] }}\n- Description/Product link: {{ $json['Product Page Link'] }}\n- Target Audience: {{ $json['Target Audience'] }}\n- Pain Points: {{ $json['Pain Points'] }}\n- Unique Selling Point: {{ $json['USP - 1 liner'] }}\n- Optional Customer Review: {{ $json['Customer Review (optional)'] }}\n - Previous successful ads - {{ $json['\\'Proven Winners\\' Ad Samples'] }}\n - Competitors' successful ads - {{ $json['Ad Copies from Competitors'] }}\n - Research Brief and other information - {{ $json['Attach Research Brief and other references'] }}\nUse one of these hook styles for each ad:\n1. Testimonial lead\n2. Pain point or \"ditch the old way\"\n3. Demographic call-out\n\nInclude emojis. End with hype + CTA."
}
]
}
},
"typeVersion": 1.8
},
{
"id": "d0f1d89d-c6cc-4a39-b6f7-35d6f90373a0",
"name": "表单提交时",
"type": "n8n-nodes-base.formTrigger",
"position": [
-480,
208
],
"webhookId": "24964cef-aba3-4c93-b56a-3be0af0448ae",
"parameters": {
"options": {},
"formTitle": "Create Ad Copies",
"formFields": {
"values": [
{
"fieldType": "dropdown",
"fieldLabel": "Brand Name",
"fieldOptions": {
"values": [
{
"option": "Fashion Brand"
},
{
"option": "Problem-Solution Brand"
}
]
},
"requiredField": true
},
{
"fieldType": "file",
"fieldLabel": "Attach Research Brief and other references",
"requiredField": true
},
{
"fieldLabel": "Product Name",
"requiredField": true
},
{
"fieldLabel": "Product Page Link",
"placeholder": "Paste product page link here",
"requiredField": true
},
{
"fieldType": "textarea",
"fieldLabel": "Target Audience",
"requiredField": true
},
{
"fieldType": "textarea",
"fieldLabel": "Pain Points"
},
{
"fieldType": "textarea",
"fieldLabel": "USP - 1 liner",
"requiredField": true
},
{
"fieldType": "textarea",
"fieldLabel": "Customer Review (optional)"
},
{
"fieldType": "textarea",
"fieldLabel": "'Proven Winners' Ad Samples",
"requiredField": true
},
{
"fieldType": "textarea",
"fieldLabel": "Ad Copies from Competitors",
"requiredField": true
}
]
},
"formDescription": "Create Winning Ad copies in seconds!"
},
"typeVersion": 2.2
},
{
"id": "26d3885d-2b2a-4334-9387-7bf0c1de492b",
"name": "Slack:发送并审核广告文案",
"type": "n8n-nodes-base.slack",
"position": [
608,
176
],
"webhookId": "0859d0d9-69c7-41a3-b3ea-206adce81ecc",
"parameters": {
"select": "channel",
"message": "=Suggested Ad Copies for {{ $('On form submission').item.json['Product Name'] }} of {{ $('On form submission').item.json['Brand Name'] }}\n\n{{ $json.message.content }}",
"options": {},
"channelId": {
"__rl": true,
"mode": "list",
"value": ""
},
"operation": "sendAndWait",
"approvalOptions": {
"values": {
"approvalType": "double",
"disapproveLabel": "Try again!"
}
}
},
"typeVersion": 2.3
},
{
"id": "b45a3f11-9078-4eb9-b9bf-b4ffcdde47bd",
"name": "如果:品牌类型",
"type": "n8n-nodes-base.if",
"position": [
-224,
208
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "87fd45fb-42d7-48d1-b435-48ed158a525e",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json['Brand Name'] }}",
"rightValue": "Fashion Brand"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "06120531-7647-49d8-9312-42c4e95dadba",
"name": "如果:广告文案是否批准",
"type": "n8n-nodes-base.if",
"position": [
816,
176
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "4629180e-de2a-4cf2-b97b-744fdf2140ba",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.data.approved }}",
"rightValue": "approved"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "613fa585-dc2f-4a7b-b86c-1b21f4181eaa",
"name": "Slack:恭喜您的广告文案获得批准",
"type": "n8n-nodes-base.slack",
"position": [
2896,
160
],
"webhookId": "973a98d6-4d56-4d76-bc19-0d48363622bf",
"parameters": {
"text": "Congratulations! You now have your Ad Copies for {{ $('On form submission').item.json['Product Name'] }} of {{ $('On form submission').item.json['Brand Name'] }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": ""
},
"otherOptions": {}
},
"typeVersion": 2.3
},
{
"id": "706f4e3f-d0c6-423c-9f55-31fc07ffc31a",
"name": "Slack:接收修订反馈",
"type": "n8n-nodes-base.slack",
"position": [
1056,
464
],
"webhookId": "b4de3f96-ca54-4a1d-ae13-2a8dc673b2ae",
"parameters": {
"select": "channel",
"message": "Alright! Can you give us some feedback on the ad copies - what is off, what should be changed etc. and we will pass it to chatgpt? Click Respond now!",
"options": {},
"channelId": {
"__rl": true,
"mode": "list",
"value": ""
},
"operation": "sendAndWait",
"responseType": "freeText"
},
"typeVersion": 2.3
},
{
"id": "b2b9acb7-e8de-4d86-9bf7-465ec2f405f2",
"name": "OpenAI:修订广告文案",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1760,
480
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": ""
},
"options": {},
"messages": {
"values": [
{
"content": "=The initial batch of ad copies for {{ $('If: Type of Brand').item.json['Product Name'] }} of {{ $('If: Type of Brand').item.json['Brand Name'] }} is NOT APPROVED. Our head of marketing is requesting for revision. \n\nHere's the feedback - {{ $json.data.text }}\n\nUse that feedback to generate another batch of 3-5 ad copies.\n\nYou may need the data previously influded on the initial ad request. Here you go:\nInitial Ad copies that needs to be revised - {{\n $('For Fashion Brands').item?.json?.message?.content || \n $('For Problem Solution Brands').item?.json?.message?.content\n}}\n\nProduct: {{ $('If: Type of Brand').item.json['Product Name'] }} of {{ $('If: Type of Brand').item.json['Brand Name'] }}\nProduct Link: {{ $('If: Type of Brand').item.json['Product Page Link'] }}\nTarget Audience: {{ $('If: Type of Brand').item.json['Target Audience'] }}\nPain Points: {{ $('If: Type of Brand').item.json['Pain Points'] }}\nUSP:{{ $('If: Type of Brand').item.json['USP - 1 liner'] }}\nCustomer Review: {{ $('If: Type of Brand').item.json['Customer Review (optional)'] }}\nProven Winner Ads:{{ $('If: Type of Brand').item.json['\\'Proven Winners\\' Ad Samples'] }}\nCompetitor winning ads:{{ $('If: Type of Brand').item.json['Ad Copies from Competitors'] }}\nResearch and other notes: {{ $('If: Type of Brand').item.json['Attach Research Brief and other references'][0].filename }}\n\n"
}
]
}
},
"executeOnce": false,
"typeVersion": 1.8,
"alwaysOutputData": true
},
{
"id": "55fc1aa6-56a3-44c2-8c78-96783dd38938",
"name": "Slack:感谢您的反馈",
"type": "n8n-nodes-base.slack",
"position": [
1280,
256
],
"webhookId": "b93d20ef-3da7-42e9-9148-6a51e3528799",
"parameters": {
"text": "Thank you for your feedback... Currently working on the revisions...",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": ""
},
"otherOptions": {}
},
"typeVersion": 2.3
},
{
"id": "d2c1f8f5-3208-4da2-9e9d-7a672ab832ec",
"name": "如果",
"type": "n8n-nodes-base.if",
"position": [
2416,
480
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "e8632a89-32d4-454f-bc06-8fab551151c6",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.data.approved }}",
"rightValue": "approved"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "2d998128-7307-47e1-b595-370097ac0565",
"name": "Slack:发送修订后的广告文案",
"type": "n8n-nodes-base.slack",
"position": [
2208,
480
],
"webhookId": "d64e54b7-6ed5-468f-a155-76f5ed5b03c7",
"parameters": {
"select": "channel",
"message": "=Here's the new version of Ad copies \n\n {{ $json.message.content }}",
"options": {},
"channelId": {
"__rl": true,
"mode": "list",
"value": ""
},
"operation": "sendAndWait",
"approvalOptions": {
"values": {
"approvalType": "double",
"disapproveLabel": "Try again!"
}
}
},
"typeVersion": 2.3
},
{
"id": "227e34be-3865-4451-9385-015c0bd7d589",
"name": "编辑字段:修订计数器最大为 3",
"type": "n8n-nodes-base.set",
"position": [
1280,
464
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "90f59bde-b04b-4c41-b578-ca43102f3a29",
"name": "revisionCount",
"type": "number",
"value": "={{ $json[\"revisionCount\"] ? $json[\"revisionCount\"] + 1 : 1 }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "e7694ae4-8525-4158-8793-a57192db5682",
"name": "如果:继续修订或停止",
"type": "n8n-nodes-base.if",
"position": [
1504,
464
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "c2d54c5b-5e45-4135-b8ed-ada5abfb90ca",
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{$json[\"revisionCount\"]}}",
"rightValue": 3
}
]
}
},
"typeVersion": 2.2
},
{
"id": "1105ab26-1006-4dba-a9d3-d8112cca9246",
"name": "Slack:已达到最大修订次数",
"type": "n8n-nodes-base.slack",
"position": [
1760,
256
],
"webhookId": "1e5ce4c4-dafd-4b1c-952c-912af05ba69b",
"parameters": {
"text": "Too many revisions! Sorry, I wont be able to help you anymore. Please check with ChatGPT or Claude. ",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": ""
},
"otherOptions": {}
},
"typeVersion": 2.3
},
{
"id": "e5633eb5-2b66-43f2-9bb5-ed7aa71f3501",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1168,
-272
],
"parameters": {
"width": 784,
"height": 880,
"content": "# 带审批流程的 AI 广告文案生成器"
},
"typeVersion": 1
},
{
"id": "f0d82f05-10e6-4b24-9e8c-a461d052120d",
"name": "便签1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-544,
336
],
"parameters": {
"color": 7,
"height": 80,
"content": "步骤 1:收集品牌信息和需求"
},
"typeVersion": 1
},
{
"id": "0f97bc32-395d-4f68-9f25-0795e30cbddf",
"name": "便签2",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
-96
],
"parameters": {
"color": 7,
"height": 80,
"content": "步骤 2:根据品牌类型生成初始广告文案"
},
"typeVersion": 1
},
{
"id": "91b9902d-41b8-4594-81d9-d7b0f690546c",
"name": "便签3",
"type": "n8n-nodes-base.stickyNote",
"position": [
544,
80
],
"parameters": {
"color": 7,
"height": 80,
"content": "步骤 3:团队审核和批准流程"
},
"typeVersion": 1
},
{
"id": "a108d24c-f51e-4c4c-9362-c7e910284f90",
"name": "便签4",
"type": "n8n-nodes-base.stickyNote",
"position": [
752,
464
],
"parameters": {
"color": 7,
"height": 80,
"content": "步骤 4:修订循环(最多 3 次迭代)"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "d3901d5c-3c3f-493a-8d2d-ee72fe9d9294",
"connections": {
"If": {
"main": [
[
{
"node": "Slack: Congrats on your approve Ad Copies",
"type": "main",
"index": 0
}
],
[
{
"node": "Slack: Receive feedback for revision",
"type": "main",
"index": 0
}
]
]
},
"If: Type of Brand": {
"main": [
[
{
"node": "For Fashion Brands",
"type": "main",
"index": 0
}
],
[
{
"node": "For Problem Solution Brands",
"type": "main",
"index": 0
}
]
]
},
"For Fashion Brands": {
"main": [
[
{
"node": "Slack: Send and Review Ad Copies",
"type": "main",
"index": 0
}
]
]
},
"On form submission": {
"main": [
[
{
"node": "If: Type of Brand",
"type": "main",
"index": 0
}
]
]
},
"OpenAI: Revise Ad Copies": {
"main": [
[
{
"node": "Slack: Send Revise Ad Copies",
"type": "main",
"index": 0
}
]
]
},
"For Problem Solution Brands": {
"main": [
[
{
"node": "Slack: Send and Review Ad Copies",
"type": "main",
"index": 0
}
]
]
},
"If: Continue Revise or Stop": {
"main": [
[
{
"node": "Slack: Maxed Out Revision Count",
"type": "main",
"index": 0
}
],
[
{
"node": "OpenAI: Revise Ad Copies",
"type": "main",
"index": 0
}
]
]
},
"Slack: Send Revise Ad Copies": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"If: Ad Copy is Approve or not": {
"main": [
[
{
"node": "Slack: Congrats on your approve Ad Copies",
"type": "main",
"index": 0
}
],
[
{
"node": "Slack: Receive feedback for revision",
"type": "main",
"index": 0
}
]
]
},
"Slack: Send and Review Ad Copies": {
"main": [
[
{
"node": "If: Ad Copy is Approve or not",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields: Revision Counter Max 3": {
"main": [
[
{
"node": "If: Continue Revise or Stop",
"type": "main",
"index": 0
}
]
]
},
"Slack: Receive feedback for revision": {
"main": [
[
{
"node": "Slack: Thank you for the feedback",
"type": "main",
"index": 0
},
{
"node": "Edit Fields: Revision Counter Max 3",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 内容创作, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
使用Slack和Gmail的安装预约审批工作流
使用Slack和Gmail表单自动化安装预约审批
If
Set
Gmail
+3
13 节点Chris Rudy
工单管理
会议纪要和行动项跟踪器
基于AI的会议纪要:使用GPT-4、任务分配和多渠道分发
If
Set
Code
+10
38 节点Jitesh Dugar
内容创作
自动化营销机构客户入职:从 Typeform 到 GDrive + AI 研究
自动化营销机构客户入职:从 Typeform 到 GDrive + OpenAI 研究
If
Gmail
Slack
+5
45 节点Chris Rudy
多模态 AI
使用 AI 撰写 WordPress 文章(从几个关键词开始)
基于GPT-4、DALL-E和Wikipedia的自动化博客文章生成器(用于WordPress)
If
Set
Code
+9
37 节点Punit
内容创作
使用 Eleven Labs 和 GPT-4 的自动化音频内容
使用Eleven Labs和GPT-4将博客文章转换为音频内容
If
Set
Gmail
+7
12 节点Marth
内容创作
口型同步视频生成
使用Infinitalk AI创建并分享口型同步虚拟形象视频,并上传至TikTok/YouTube
If
Set
Wait
+5
18 节点Davide
内容创作
工作流信息
难度等级
高级
节点数量20
分类2
节点类型6
作者
Chris Rudy
@chrisrudyDTC Marketing consultant with over 6 years of experience and over $25m in ad spend managed
外部链接
在 n8n.io 查看 →
分享此工作流