의결 절차를 포함한 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 Ad Copy Generator with Approval Workflow",
"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": "If: 브랜드 유형",
"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": "If: 광고 카피 승인 여부",
"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": "If",
"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": "If: 수정 계속 또는 중단",
"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 Ad Copy Generator with Approval Workflow\n\nThis workflow automates ad copy creation using AI, with built-in team review via Slack.\n\n## Who's it for\nMarketing teams, copywriters, and agencies who need to quickly generate and iterate on ad copies for Meta and TikTok campaigns. Perfect for brands that want AI-powered copy generation with human review and approval built into the workflow.\n\n## What it does\n- Collects brand and product information through a form\n- Uses AI to generate tailored ad copies based on brand type (Fashion or Problem-Solution)\n- Sends copies to Slack for team review and approval\n- Handles revision requests with feedback incorporation\n- Limits revisions to 3 rounds to maintain efficiency\n\n## How to set up\n1. Configure your OpenAI credentials in the OpenAI nodes\n2. Select your preferred GPT model in each OpenAI node\n3. Set up Slack integration and select your review channel in all Slack nodes\n4. Test the form to ensure file uploads work properly\n5. Run a test with sample data before going live\n\n## Requirements\n- OpenAI API access (GPT-3.5 or GPT-4)\n- Slack workspace with appropriate channel permissions\n- Self-hosted n8n instance (for file upload functionality)\n\n## How to customize\n- Adjust the AI prompts in OpenAI nodes to match your brand voice\n- Modify the revision limit in the \"Edit Fields: Revision Counter Max 3\" node\n- Add additional brand types in the form dropdown\n- Customize Slack messages to match your team's communication style"
},
"typeVersion": 1
},
{
"id": "f0d82f05-10e6-4b24-9e8c-a461d052120d",
"name": "스티커 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-544,
336
],
"parameters": {
"color": 7,
"height": 80,
"content": "Step 1: Collect brand information and requirements"
},
"typeVersion": 1
},
{
"id": "0f97bc32-395d-4f68-9f25-0795e30cbddf",
"name": "스티커 노트2",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
-96
],
"parameters": {
"color": 7,
"height": 80,
"content": "Step 2: Generate initial ad copies based on brand type"
},
"typeVersion": 1
},
{
"id": "91b9902d-41b8-4594-81d9-d7b0f690546c",
"name": "스티커 노트3",
"type": "n8n-nodes-base.stickyNote",
"position": [
544,
80
],
"parameters": {
"color": 7,
"height": 80,
"content": "Step 3: Team review and approval process"
},
"typeVersion": 1
},
{
"id": "a108d24c-f51e-4c4c-9362-c7e910284f90",
"name": "스티커 노트4",
"type": "n8n-nodes-base.stickyNote",
"position": [
752,
464
],
"parameters": {
"color": 7,
"height": 80,
"content": "Step 4: Revision loop (max 3 iterations)"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "d3901d5c-3c3f-493a-8d2d-ee72fe9d9294",
"connections": {
"d2c1f8f5-3208-4da2-9e9d-7a672ab832ec": {
"main": [
[
{
"node": "613fa585-dc2f-4a7b-b86c-1b21f4181eaa",
"type": "main",
"index": 0
}
],
[
{
"node": "706f4e3f-d0c6-423c-9f55-31fc07ffc31a",
"type": "main",
"index": 0
}
]
]
},
"b45a3f11-9078-4eb9-b9bf-b4ffcdde47bd": {
"main": [
[
{
"node": "1e70ec29-68b3-441b-9e18-3c8cf6d3e999",
"type": "main",
"index": 0
}
],
[
{
"node": "f36aa2d0-cdd9-4604-b6b0-3cc98426cfc7",
"type": "main",
"index": 0
}
]
]
},
"1e70ec29-68b3-441b-9e18-3c8cf6d3e999": {
"main": [
[
{
"node": "26d3885d-2b2a-4334-9387-7bf0c1de492b",
"type": "main",
"index": 0
}
]
]
},
"d0f1d89d-c6cc-4a39-b6f7-35d6f90373a0": {
"main": [
[
{
"node": "b45a3f11-9078-4eb9-b9bf-b4ffcdde47bd",
"type": "main",
"index": 0
}
]
]
},
"b2b9acb7-e8de-4d86-9bf7-465ec2f405f2": {
"main": [
[
{
"node": "2d998128-7307-47e1-b595-370097ac0565",
"type": "main",
"index": 0
}
]
]
},
"f36aa2d0-cdd9-4604-b6b0-3cc98426cfc7": {
"main": [
[
{
"node": "26d3885d-2b2a-4334-9387-7bf0c1de492b",
"type": "main",
"index": 0
}
]
]
},
"e7694ae4-8525-4158-8793-a57192db5682": {
"main": [
[
{
"node": "1105ab26-1006-4dba-a9d3-d8112cca9246",
"type": "main",
"index": 0
}
],
[
{
"node": "b2b9acb7-e8de-4d86-9bf7-465ec2f405f2",
"type": "main",
"index": 0
}
]
]
},
"2d998128-7307-47e1-b595-370097ac0565": {
"main": [
[
{
"node": "d2c1f8f5-3208-4da2-9e9d-7a672ab832ec",
"type": "main",
"index": 0
}
]
]
},
"06120531-7647-49d8-9312-42c4e95dadba": {
"main": [
[
{
"node": "613fa585-dc2f-4a7b-b86c-1b21f4181eaa",
"type": "main",
"index": 0
}
],
[
{
"node": "706f4e3f-d0c6-423c-9f55-31fc07ffc31a",
"type": "main",
"index": 0
}
]
]
},
"26d3885d-2b2a-4334-9387-7bf0c1de492b": {
"main": [
[
{
"node": "06120531-7647-49d8-9312-42c4e95dadba",
"type": "main",
"index": 0
}
]
]
},
"227e34be-3865-4451-9385-015c0bd7d589": {
"main": [
[
{
"node": "e7694ae4-8525-4158-8793-a57192db5682",
"type": "main",
"index": 0
}
]
]
},
"706f4e3f-d0c6-423c-9f55-31fc07ffc31a": {
"main": [
[
{
"node": "55fc1aa6-56a3-44c2-8c78-96783dd38938",
"type": "main",
"index": 0
},
{
"node": "227e34be-3865-4451-9385-015c0bd7d589",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 콘텐츠 제작, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Slack과 Gmail을 사용한 설치 예약 승인 워크플로
Slack 및 Gmail 양식을 활용한 설치 예약 승인 자동화
If
Set
Gmail
+
If
Set
Gmail
13 노드Chris Rudy
티켓 관리
회의록 및 액션 아이템 트래커
AI 기반 회의록: GPT-4, 작업 할당 및 다중 채널 배포 활용
If
Set
Code
+
If
Set
Code
38 노드Jitesh Dugar
콘텐츠 제작
자동화된 마케팅 에이전시 고객 온보딩: Typeform에서 GDrive + AI 연구까지
자동화된 마케팅 에이전시 고객 온보딩: Typeform에서 GDrive + OpenAI 연구까지
If
Gmail
Slack
+
If
Gmail
Slack
45 노드Chris Rudy
멀티모달 AI
AI를 사용한 WordPress 글 작성 (몇 가지 키워드로 시작)
GPT-4, DALL-E 및 Wikipedia 기반 자동화된 블로그 글 생성기 (WordPress용)
If
Set
Code
+
If
Set
Code
37 노드Punit
콘텐츠 제작
Eleven Labs와 GPT-4를 사용한 자동화된 오디오 콘텐츠
Eleven Labs 및 GPT-4를 사용하여 블로그 기사를 오디오 콘텐츠로 변환
If
Set
Gmail
+
If
Set
Gmail
12 노드Marth
콘텐츠 제작
입술 동기화 비디오 생성
Infinitalk AI를 사용하여 입술 동기화 virtually image 비디오를 생성하고 TikTok/YouTube에 업로드
If
Set
Wait
+
If
Set
Wait
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에서 보기 →
이 워크플로우 공유