GPT-4o: Twilio 통합 및 자동 추적 기능
고급
이것은Content Creation, Multimodal AI분야의자동화 워크플로우로, 21개의 노드를 포함합니다.주로 If, Code, Wait, Merge, Slack 등의 노드를 사용하며. GPT-4o: Twilio 통합 및 자동 추적 기능
사전 요구사항
- •Slack Bot Token 또는 Webhook URL
- •Airtable API Key
- •대상 API의 인증 정보가 필요할 수 있음
- •OpenAI API Key
사용된 노드 (21)
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"meta": {
"instanceId": "d23ca638a83fba54c06ee57ee6430730afe25e4177b234d2a702bd83cbe8f349"
},
"nodes": [
{
"id": "5f0e216a-ea69-4674-af22-3fe170cbd766",
"name": "결과 병합",
"type": "n8n-nodes-base.merge",
"position": [
22416,
16208
],
"parameters": {},
"typeVersion": 3
},
{
"id": "b7116aa4-8d06-4ff4-8d74-da1b030a62f2",
"name": "결과 추적",
"type": "n8n-nodes-base.code",
"position": [
22640,
16208
],
"parameters": {
"jsCode": "// Track which channels were used\nconst items = $input.all();\n\n// Check if SMS was sent (will have twilio response)\nconst smsSent = items.some(item => item.json.sid || item.json.messageSid);\n\n// Check if Email was sent (will have email response)\nconst emailSent = items.some(item => item.json.accepted || item.json.messageId);\n\n// Get customer data from Prepare Messages node\nconst customerData = $('Prepare Messages2').first().json;\n\nreturn {\n json: {\n ...customerData,\n sms_sent: smsSent,\n email_sent: emailSent,\n messages_sent_at: new Date().toISOString()\n }\n};"
},
"typeVersion": 2
},
{
"id": "58a9ef5a-8fb0-4781-8eb0-b4dd3eeb6ad0",
"name": "메모9",
"type": "n8n-nodes-base.stickyNote",
"position": [
19280,
15872
],
"parameters": {
"width": 928,
"height": 1392,
"content": "## 📞 Missed Call Revenue Recovery Bot\n\n### 📋 Setup Instructions\n\n**Step 1: Configure Twilio**\n• Add Twilio credential (Account SID + Auth Token)\n• Replace `+15551234567` with your Twilio phone number (2 SMS nodes)\n• Webhook auto-configures when workflow activates\n\n**Step 2: Configure Integrations**\n🔹 **Slack Channel**\n • Channel → View details → Copy Channel ID\n • Replace `REPLACE_WITH_SLACK_SALES_CHANNEL_ID`\n\n🔹 **Airtable**\n • Base ID from URL → `appXXXXXXXXXXXXXX`\n • Table ID from URL → `tblYYYYYYYYYYYY`\n • Columns: Caller_Number, Customer_Name, Call_Time, Priority, SMS_Sent, Email_Sent, Booking_Link, Status, Urgency_Score, Follow_Up_Date\n\n🔹 **Business Details**\n • Booking URL: Replace `https://cal.com/your-business`\n • Email: Replace `your-business@example.com`\n • Follow-up SMS: Replace `+1-555-0100` and `Your Business Name`\n\n**Step 3: Optional CRM**\n• Replace `https://your-crm-api.com` with your CRM endpoints\n• Add HTTP Header Auth credential\n• Or disable \"Check Existing Contact\" + \"Check if Booked\" nodes\n\n**Step 4: Credentials**\n✓ Twilio API ✓ OpenAI (GPT-4o) ✓ Slack OAuth2\n✓ Airtable Token ✓ SMTP ✓ CRM API (optional)\n\n---\n\n### ⚙️ Workflow\n**Missed Call** → **Analyze Context** → **CRM Lookup** → **AI Response** → **SMS/Email** → **Merge Results** → **Track Sent** → **Log Airtable** → **Slack Notify** → **24h Wait** → **Check Booking** → **Follow-up SMS**\n\n• AI personalizes based on time/customer status\n• Tracks SMS/Email delivery automatically\n• 24h auto-follow-up if no booking detected"
},
"typeVersion": 1
},
{
"id": "f62d032e-17c4-498c-988a-434e2288a21c",
"name": "부재중 전화 감지2",
"type": "n8n-nodes-base.twilioTrigger",
"position": [
20352,
16208
],
"webhookId": "twilio-missed-call",
"parameters": {
"updates": [
"com.twilio.voice.insights.call-summary.complete"
]
},
"credentials": {
"twilioApi": {
"id": "vDXzBZzToDaIu6Nn",
"name": "Twilio account"
}
},
"typeVersion": 1
},
{
"id": "fe521a57-2f91-45f5-a09d-efd7fd3cae9f",
"name": "통화 내용 분석2",
"type": "n8n-nodes-base.code",
"position": [
20576,
16208
],
"parameters": {
"jsCode": "// Extract and analyze call data\nconst callData = $input.first().json;\n\n// Twilio Call Status values:\n// 'completed' = answered and ended normally\n// 'no-answer' = no answer or rejected\n// 'busy' = busy signal\n// 'canceled' = hung up while queued/ringing\n// 'failed' = invalid number or error\n\n// Check if call was answered (CallDuration > 0 means conversation happened)\nconst callDuration = parseInt(callData.CallDuration) || 0;\nconst callStatus = callData.CallStatus || '';\n\n// Skip answered calls (completed with duration > 0)\nconst wasAnswered = callStatus === 'completed' && callDuration > 0;\n\nif (wasAnswered) {\n return []; // Don't process answered calls\n}\n\n// Extract caller information (handle both camelCase and PascalCase)\nconst callerNumber = callData.From || callData.from || '';\nconst receiverNumber = callData.To || callData.to || '';\nconst timestamp = callData.Timestamp || callData.timestamp || new Date().toISOString();\nconst callTime = new Date(timestamp);\nconst currentHour = callTime.getHours();\n\n// Determine business context\nconst isBusinessHours = currentHour >= 9 && currentHour < 17;\nconst dayOfWeek = callTime.getDay();\nconst isWeekend = dayOfWeek === 0 || dayOfWeek === 6;\n\nreturn {\n json: {\n caller_number: callerNumber,\n receiver_number: receiverNumber,\n call_time: callTime.toISOString(),\n call_time_local: callTime.toLocaleString(),\n call_status: callStatus,\n call_duration: callDuration,\n is_business_hours: isBusinessHours,\n is_weekend: isWeekend,\n call_sid: callData.CallSid || callData.callSid || '',\n urgency_score: !isBusinessHours ? 8 : 5, // Higher urgency for after-hours calls\n context: {\n time_of_day: currentHour < 12 ? 'morning' : currentHour < 17 ? 'afternoon' : 'evening',\n day_type: isWeekend ? 'weekend' : 'weekday'\n }\n }\n};"
},
"typeVersion": 2
},
{
"id": "e7a1c806-c63b-45f8-8bf5-51ffc12486d0",
"name": "기존 연락처 확인2",
"type": "n8n-nodes-base.httpRequest",
"position": [
20800,
16208
],
"parameters": {
"url": "=https://your-crm-api.com/contacts/search?phone={{ $json.caller_number }}",
"options": {
"response": {
"response": {
"neverError": true
}
}
},
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth"
},
"typeVersion": 4.1
},
{
"id": "10faf764-b0e6-486b-92c7-8b08663af3ed",
"name": "고객 데이터 병합2",
"type": "n8n-nodes-base.code",
"position": [
21024,
16208
],
"parameters": {
"jsCode": "// Merge call data with CRM history\nconst callData = $('Analyze Call Context2').first().json;\nconst crmData = $input.first().json;\n\nconst hasHistory = crmData && crmData.contact;\nconst contact = crmData?.contact || {};\n\nreturn {\n json: {\n ...callData,\n \n // CRM Information\n is_existing_customer: hasHistory,\n customer_name: contact.name || 'Unknown',\n customer_email: contact.email || null,\n last_contact_date: contact.last_contact || null,\n customer_status: contact.status || 'new',\n previous_purchases: contact.purchase_count || 0,\n lifetime_value: contact.lifetime_value || 0,\n notes: contact.notes || '',\n \n // Prioritization\n priority_level: hasHistory && contact.lifetime_value > 1000 ? 'high' : hasHistory ? 'medium' : 'new',\n follow_up_urgency: hasHistory ? 'immediate' : 'standard'\n }\n};"
},
"typeVersion": 2
},
{
"id": "be1b553a-725b-4a80-b901-1d469794bdaa",
"name": "AI 응답 생성2",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
21280,
16208
],
"parameters": {
"text": "=Generate a personalized missed call response for the following situation:\n\nCustomer Information:\n- Name: {{ $json.customer_name }}\n- Status: {{ $json.is_existing_customer ? 'Existing Customer' : 'New Prospect' }}\n- Priority: {{ $json.priority_level }}\n- Previous Purchases: {{ $json.previous_purchases }}\n\nCall Context:\n- Time: {{ $json.context.time_of_day }} on a {{ $json.context.day_type }}\n- Business Hours: {{ $json.is_business_hours ? 'Yes' : 'No (After Hours)' }}\n- Phone: {{ $json.caller_number }}\n\nCreate TWO versions:\n\n1. SMS_MESSAGE (160 chars max): Friendly, apologetic, includes booking link placeholder\n2. EMAIL_MESSAGE (200 words): Professional, personalized, multiple contact options\n\nReturn JSON with:\n- sms: Brief apologetic message\n- email_subject: Personalized subject line\n- email_body: Professional email with [BOOKING_LINK] placeholder\n- tone: warm/professional/urgent\n- recommended_channel: sms/email/both\n\nTone should be:\n- Warm and apologetic\n- Acknowledge their attempt to reach us\n- Offer immediate booking option\n- Personalize based on customer status",
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.4
},
{
"id": "27649586-1171-4e61-8cf7-d1239ab8ce89",
"name": "OpenAI 채팅 모델8",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
21248,
16432
],
"parameters": {
"model": "gpt-4o",
"options": {
"maxTokens": 500,
"temperature": 0.7
}
},
"typeVersion": 1
},
{
"id": "d4e13bed-0f1b-41ea-a450-81b4e9ac5550",
"name": "구조화된 출력 파서8",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
21376,
16432
],
"parameters": {
"autoFix": true,
"schemaType": "manual",
"inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"sms\": {\n \"type\": \"string\",\n \"description\": \"SMS message (160 chars max)\"\n },\n \"email_subject\": {\n \"type\": \"string\",\n \"description\": \"Email subject line\"\n },\n \"email_body\": {\n \"type\": \"string\",\n \"description\": \"Email body with [BOOKING_LINK] placeholder\"\n },\n \"tone\": {\n \"type\": \"string\",\n \"enum\": [\"warm\", \"professional\", \"urgent\"],\n \"description\": \"Message tone\"\n },\n \"recommended_channel\": {\n \"type\": \"string\",\n \"enum\": [\"sms\", \"email\", \"both\"],\n \"description\": \"Recommended communication channel\"\n }\n },\n \"required\": [\"sms\", \"email_subject\", \"email_body\", \"tone\", \"recommended_channel\"]\n}"
},
"typeVersion": 1.3
},
{
"id": "e16ca74e-3796-4f9f-8279-5aab98395133",
"name": "메시지 준비2",
"type": "n8n-nodes-base.code",
"position": [
21744,
16208
],
"parameters": {
"jsCode": "// Parse AI response and prepare messages\nconst aiResponse = $input.first().json;\nconst customerData = $('Merge Customer Data2').first().json;\n\n// Generate booking link (Cal.com or Calendly)\nconst bookingUrl = 'https://cal.com/your-business'; // Replace with your booking link\nconst bookingLink = `${bookingUrl}?name=${encodeURIComponent(customerData.customer_name)}&phone=${encodeURIComponent(customerData.caller_number)}`;\n\n// Add booking link to messages\nconst smsWithLink = `${aiResponse.sms}\\n\\nBook instantly: ${bookingLink}`;\nconst emailWithLink = aiResponse.email_body.replace('[BOOKING_LINK]', bookingLink);\n\nreturn {\n json: {\n ...customerData,\n \n // AI-generated messages\n sms_message: smsWithLink,\n email_subject: aiResponse.email_subject,\n email_body: emailWithLink,\n message_tone: aiResponse.tone,\n recommended_channel: aiResponse.recommended_channel,\n \n // Booking information\n booking_link: bookingLink,\n \n // Metadata\n response_generated_at: new Date().toISOString()\n }\n};"
},
"typeVersion": 2
},
{
"id": "10884b30-701c-4c5f-8d92-abc00f9228a8",
"name": "SMS 전송 여부2",
"type": "n8n-nodes-base.if",
"position": [
21968,
16112
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "sms-channel",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.recommended_channel }}",
"rightValue": "sms"
},
{
"id": "both-channels",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.recommended_channel }}",
"rightValue": "both"
}
]
}
},
"typeVersion": 2
},
{
"id": "52dce42a-1e0b-4389-bd9a-422b3dc04cba",
"name": "SMS 전송2",
"type": "n8n-nodes-base.twilio",
"position": [
22192,
16112
],
"parameters": {
"to": "={{ $json.caller_number }}",
"from": "+15551234567",
"message": "={{ $json.sms_message }}",
"options": {}
},
"typeVersion": 1
},
{
"id": "5c68f5ef-2058-4d58-a257-b6779488f3cb",
"name": "이메일 전송 여부2",
"type": "n8n-nodes-base.if",
"position": [
21968,
16304
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "has-email",
"operator": {
"type": "string",
"operation": "notEmpty"
},
"leftValue": "={{ $json.customer_email }}",
"rightValue": ""
},
{
"id": "email-channel",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $json.recommended_channel }}",
"rightValue": "email"
}
]
}
},
"typeVersion": 2
},
{
"id": "a76db0f7-5e55-4be4-947f-dc9921779442",
"name": "이메일 전송2",
"type": "n8n-nodes-base.emailSend",
"position": [
22192,
16304
],
"webhookId": "b3c6d8bc-0f42-4cbe-a05c-1d026f0d1c63",
"parameters": {
"options": {},
"subject": "={{ $json.email_subject }}",
"toEmail": "={{ $json.customer_email }}",
"fromEmail": "your-business@example.com"
},
"credentials": {
"smtp": {
"id": "qmhzTud0RSbKigGt",
"name": "SMTP account"
}
},
"typeVersion": 2.1
},
{
"id": "1ca48805-f52b-4e18-93f1-c79290d328a3",
"name": "CRM에 기록2",
"type": "n8n-nodes-base.airtable",
"position": [
22864,
16208
],
"parameters": {
"base": {
"__rl": true,
"mode": "id",
"value": "REPLACE_WITH_AIRTABLE_BASE_ID"
},
"table": {
"__rl": true,
"mode": "id",
"value": "REPLACE_WITH_AIRTABLE_TABLE_ID"
},
"columns": {
"value": {
"Status": "Pending Response",
"Priority": "={{ $json.priority_level }}",
"SMS_Sent": "={{ $json.sms_sent ? 'Yes' : 'No' }}",
"Call_Time": "={{ $json.call_time }}",
"Email_Sent": "={{ $json.email_sent ? 'Yes' : 'No' }}",
"Booking_Link": "={{ $json.booking_link }}",
"Caller_Number": "={{ $json.caller_number }}",
"Customer_Name": "={{ $json.customer_name }}",
"Urgency_Score": "={{ $json.urgency_score }}",
"Follow_Up_Date": "={{ new Date(Date.now() + 86400000).toISOString() }}"
},
"mappingMode": "defineBelow"
},
"options": {},
"operation": "upsert"
},
"typeVersion": 2
},
{
"id": "da785def-5222-4e81-a0ed-8b9ef698732d",
"name": "영업팀에 알림3",
"type": "n8n-nodes-base.slack",
"position": [
23088,
16208
],
"webhookId": "3ad339ab-392a-44ad-b967-aa02e04de2af",
"parameters": {
"text": "=📞 *Missed Call Alert*\n\n*Customer:* {{ $json.customer_name }}{{ $json.is_existing_customer ? ' (Existing Customer 🌟)' : ' (New Prospect)' }}\n*Phone:* {{ $json.caller_number }}\n*Time:* {{ $json.call_time_local }}\n*Priority:* {{ $json.priority_level.toUpperCase() }}\n\n*Context:*\n• Call during: {{ $json.is_business_hours ? 'Business Hours' : 'After Hours ⚠️' }}\n• Customer Status: {{ $json.customer_status }}\n{{ $json.previous_purchases > 0 ? '• Previous Purchases: ' + $json.previous_purchases : '' }}\n{{ $json.lifetime_value > 0 ? '• Lifetime Value: $' + $json.lifetime_value : '' }}\n\n*Auto-Response Sent:*\n{{ $json.sms_sent ? '✅ SMS' : '❌ SMS' }} | {{ $json.email_sent ? '✅ Email' : '❌ Email' }}\n\n*Booking Link:* {{ $json.booking_link }}\n\n🎯 *Action Required:* {{ $json.follow_up_urgency === 'immediate' ? 'Call back ASAP!' : 'Follow up within 24 hours' }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "REPLACE_WITH_SLACK_SALES_CHANNEL_ID"
},
"otherOptions": {
"includeLinkToWorkflow": false
}
},
"typeVersion": 2.1
},
{
"id": "a162a326-8ad2-499a-b6a1-5d004683570f",
"name": "24시간 대기2",
"type": "n8n-nodes-base.wait",
"position": [
23312,
16208
],
"webhookId": "8c3d23ad-f82f-4e2f-b4af-fb1b19e5b790",
"parameters": {
"unit": "hours",
"amount": 24
},
"typeVersion": 1.1
},
{
"id": "ed555f98-119d-4d52-822f-88730c1324e8",
"name": "예약 여부 확인2",
"type": "n8n-nodes-base.httpRequest",
"position": [
23536,
16208
],
"parameters": {
"url": "=https://your-crm-api.com/contacts/{{ $json.caller_number }}/bookings",
"options": {
"response": {
"response": {
"neverError": true
}
}
},
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth"
},
"credentials": {
"httpHeaderAuth": {
"id": "exVxOWDpxBu7XVql",
"name": "nithichote.com header auth key"
}
},
"typeVersion": 4.1
},
{
"id": "0433e538-eef4-48d8-9511-668bfe41fc27",
"name": "응답 없음?2",
"type": "n8n-nodes-base.if",
"position": [
23760,
16208
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "no-booking",
"operator": {
"type": "number",
"operation": "equals"
},
"leftValue": "={{ $json.booking_count || 0 }}",
"rightValue": 0
}
]
}
},
"typeVersion": 2
},
{
"id": "5a1e4e37-abf8-4979-b90b-7ba2da1f05e7",
"name": "후속 SMS 전송2",
"type": "n8n-nodes-base.twilio",
"position": [
23984,
16208
],
"parameters": {
"to": "={{ $json.caller_number }}",
"from": "+15551234567",
"message": "=Hi {{ $json.customer_name }},\n\nWe tried reaching you yesterday. Still interested in scheduling?\n\nBook now: {{ $json.booking_link }}\n\nOr call us: +1-555-0100\n\nThanks!\nYour Business Name",
"options": {}
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"52dce42a-1e0b-4389-bd9a-422b3dc04cba": {
"main": [
[
{
"node": "5f0e216a-ea69-4674-af22-3fe170cbd766",
"type": "main",
"index": 0
}
]
]
},
"10884b30-701c-4c5f-8d92-abc00f9228a8": {
"main": [
[
{
"node": "52dce42a-1e0b-4389-bd9a-422b3dc04cba",
"type": "main",
"index": 0
}
]
]
},
"1ca48805-f52b-4e18-93f1-c79290d328a3": {
"main": [
[
{
"node": "da785def-5222-4e81-a0ed-8b9ef698732d",
"type": "main",
"index": 0
}
]
]
},
"a76db0f7-5e55-4be4-947f-dc9921779442": {
"main": [
[
{
"node": "5f0e216a-ea69-4674-af22-3fe170cbd766",
"type": "main",
"index": 1
}
]
]
},
"5c68f5ef-2058-4d58-a257-b6779488f3cb": {
"main": [
[
{
"node": "a76db0f7-5e55-4be4-947f-dc9921779442",
"type": "main",
"index": 0
}
]
]
},
"5f0e216a-ea69-4674-af22-3fe170cbd766": {
"main": [
[
{
"node": "b7116aa4-8d06-4ff4-8d74-da1b030a62f2",
"type": "main",
"index": 0
}
]
]
},
"0433e538-eef4-48d8-9511-668bfe41fc27": {
"main": [
[
{
"node": "5a1e4e37-abf8-4979-b90b-7ba2da1f05e7",
"type": "main",
"index": 0
}
]
]
},
"b7116aa4-8d06-4ff4-8d74-da1b030a62f2": {
"main": [
[
{
"node": "1ca48805-f52b-4e18-93f1-c79290d328a3",
"type": "main",
"index": 0
}
]
]
},
"a162a326-8ad2-499a-b6a1-5d004683570f": {
"main": [
[
{
"node": "ed555f98-119d-4d52-822f-88730c1324e8",
"type": "main",
"index": 0
}
]
]
},
"ed555f98-119d-4d52-822f-88730c1324e8": {
"main": [
[
{
"node": "0433e538-eef4-48d8-9511-668bfe41fc27",
"type": "main",
"index": 0
}
]
]
},
"e16ca74e-3796-4f9f-8279-5aab98395133": {
"main": [
[
{
"node": "10884b30-701c-4c5f-8d92-abc00f9228a8",
"type": "main",
"index": 0
},
{
"node": "5c68f5ef-2058-4d58-a257-b6779488f3cb",
"type": "main",
"index": 0
}
]
]
},
"da785def-5222-4e81-a0ed-8b9ef698732d": {
"main": [
[
{
"node": "a162a326-8ad2-499a-b6a1-5d004683570f",
"type": "main",
"index": 0
}
]
]
},
"27649586-1171-4e61-8cf7-d1239ab8ce89": {
"ai_languageModel": [
[
{
"node": "be1b553a-725b-4a80-b901-1d469794bdaa",
"type": "ai_languageModel",
"index": 0
},
{
"node": "d4e13bed-0f1b-41ea-a450-81b4e9ac5550",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"10faf764-b0e6-486b-92c7-8b08663af3ed": {
"main": [
[
{
"node": "be1b553a-725b-4a80-b901-1d469794bdaa",
"type": "main",
"index": 0
}
]
]
},
"fe521a57-2f91-45f5-a09d-efd7fd3cae9f": {
"main": [
[
{
"node": "e7a1c806-c63b-45f8-8bf5-51ffc12486d0",
"type": "main",
"index": 0
}
]
]
},
"be1b553a-725b-4a80-b901-1d469794bdaa": {
"main": [
[
{
"node": "e16ca74e-3796-4f9f-8279-5aab98395133",
"type": "main",
"index": 0
}
]
]
},
"f62d032e-17c4-498c-988a-434e2288a21c": {
"main": [
[
{
"node": "fe521a57-2f91-45f5-a09d-efd7fd3cae9f",
"type": "main",
"index": 0
}
]
]
},
"e7a1c806-c63b-45f8-8bf5-51ffc12486d0": {
"main": [
[
{
"node": "10faf764-b0e6-486b-92c7-8b08663af3ed",
"type": "main",
"index": 0
}
]
]
},
"d4e13bed-0f1b-41ea-a450-81b4e9ac5550": {
"ai_outputParser": [
[
{
"node": "be1b553a-725b-4a80-b901-1d469794bdaa",
"type": "ai_outputParser",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 콘텐츠 제작, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
WordPress 블로그 자동화 프로페셔널 에디션(심층 연구) v2.1 마켓
GPT-4o, Perplexity AI 및 다국어 지원을 사용한 SEO 최적화 블로그 생성 자동화
If
Set
Xml
+
If
Set
Xml
125 노드Daniel Ng
콘텐츠 제작
OpenAI와 Firecrawl로 제품 URL에서 AI 생성 Meta 광고 캠페인 생성
OpenAI와 Firecrawl을 통해 제품 URL로 AI 생성 Meta 광고 캠페인 생성
If
Set
Code
+
If
Set
Code
40 노드Adam Crafts
콘텐츠 제작
잠재 고객 자격 평가 및 라우팅 엔진
AI 기반 잠재 고객 자격 평가 및 라우팅: OpenAI, Slack 및 Airtable 활용
If
Set
Slack
+
If
Set
Slack
17 노드Xavier Tai
콘텐츠 제작
실시간 - Gemini 및 Creatomate를 사용한 바이럴 AI 동영상 제작 및 게시 자동화
Gemini와 Creatomate를 사용한 AI 비디오 제작 및 다중 플랫폼 게시 자동화
Set
Code
Wait
+
Set
Code
Wait
47 노드Intuz
콘텐츠 제작
OpenAI, RunwayML, ElevenLabs를 사용한 무면식 숏폼 비디오 자동화
OpenAI, RunwayML, ElevenLabs를 사용한 무면쇼트 비디오 자동화: 스크립트부터 소셜 미디어까지
Set
Code
Wait
+
Set
Code
Wait
56 노드LeeWei
콘텐츠 제작
Apollo 데이터 스크래핑 및 리치 프로세스 1 ✅
Apollo, AI 파싱 및 예정 이메일 후속 조치를 사용한 잠재 고객 자동 생성
If
Code
Wait
+
If
Code
Wait
39 노드Deniz
콘텐츠 제작
워크플로우 정보
난이도
고급
노드 수21
카테고리2
노드 유형14
저자
Greypillar
@greypillarWe design AI systems that fix hidden revenue leaks in service businesses. Every engagement starts with one guaranteed win in 30 days — no risk, just results.
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유