Gemini AI, WhatsApp, Stripe, Google Sheets를 기반으로 한 의사 예약 관리 시스템
고급
이것은Content Creation, Multimodal AI분야의자동화 워크플로우로, 43개의 노드를 포함합니다.주로 If, WhatsApp, HttpRequest, DateTimeTool, GoogleSheets 등의 노드를 사용하며. Gemini AI, WhatsApp, Stripe, Google Sheets를 기반으로 한 의사 예약 관리 시스템
사전 요구사항
- •대상 API의 인증 정보가 필요할 수 있음
- •Google Sheets API 인증 정보
- •Stripe API Key
- •Google Gemini API Key
사용된 노드 (43)
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"meta": {
"instanceId": "ae91f3a2c3e99a5233d018ffb5752bb637665a438dc075df08fe407535a29d75",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "8b252a0c-1ae3-4c3b-88b9-c9404c4800ac",
"name": "메모",
"type": "n8n-nodes-base.stickyNote",
"position": [
-944,
704
],
"parameters": {
"color": 3,
"width": 416,
"height": 272,
"content": "## Cancel Booking Workflow.\n- **Trigger:** User / Doctor cancels the appointment from Google Sheet.\n- **If 1:** Detects the cancellation event in the sheet.\n- **If 2:** Sends a WhatsApp message to the user informing them about the cancellation.\n- **If 2:** Verifies if payment was completed via Stripe.\n- **Stripe (if paid):** Initiates a refund using Stripe API & Updates the Refund Status in sheet.\n\n#"
},
"typeVersion": 1
},
{
"id": "17530300-ece2-4b1a-9d88-3c3efbe72bca",
"name": "메모1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-944,
32
],
"parameters": {
"color": 4,
"width": 416,
"height": 192,
"content": "## Appointment Reminder Workflow\n- **Trigger:** Scheduled trigger fires daily at 8:00 AM.\n- **AI Agent Action 1:** Retrieves today's appointments.\n- **AI Agent Action 2:** Generates personalized reminder messages.\n- **AI Agent Action 3:** Sends the reminder to each user via WhatsApp.\n\n#"
},
"typeVersion": 1
},
{
"id": "276adff9-24f2-4655-913f-bfeb2ce8742f",
"name": "메모2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-944,
1168
],
"parameters": {
"width": 416,
"height": 304,
"content": "## Payment Verification Workflow\n- **Trigger:** Stripe webhook triggers on successful payment.\n- **Step 1:** Call Stripe API to retrieve payment metadata.\n- **Step 2:** Update the corresponding appointment row in Google Sheet:\n - Set `status` to `Confirmed`\n - Set `payment_status` to `Paid`\n - Save `Stripe Payment Intent` for future refund reference\n- **Step 3:** Send payment confirmation message to the user via WhatsApp.\n"
},
"typeVersion": 1
},
{
"id": "3fd7ed31-f2e7-47dd-96d7-d26f902c21fa",
"name": "Google Gemini 채팅 모델",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
-640,
2624
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "ee6c1218-d26b-4bec-8ae8-8dd2fbb2433c",
"name": "WhatsApp Trigger",
"type": "n8n-nodes-base.whatsAppTrigger",
"position": [
-864,
2272
],
"webhookId": "738b9902-7ae4-46df-bc73-6684d7d67bdf",
"parameters": {
"options": {},
"updates": [
"messages"
]
},
"typeVersion": 1
},
{
"id": "95cc9fe1-0599-47f5-b069-7e33e2aaf575",
"name": "심플 메모리",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
-640,
2800
],
"parameters": {
"sessionKey": "={{ $('WhatsApp Trigger').item.json.contacts[0].wa_id }}",
"sessionIdType": "customKey",
"contextWindowLength": 6
},
"typeVersion": 1.3
},
{
"id": "bd1defd2-b07e-4127-a704-cf91e7316441",
"name": "날짜 및 시간",
"type": "n8n-nodes-base.dateTimeTool",
"position": [
-640,
2976
],
"parameters": {
"options": {
"timezone": "Asia/Kolkata"
}
},
"typeVersion": 2
},
{
"id": "958b5f9a-87fa-456c-a0b0-10f04950e27a",
"name": "Send message",
"type": "n8n-nodes-base.whatsApp",
"position": [
448,
2272
],
"webhookId": "779c6e67-50cc-4757-9a96-14ab5cc1521f",
"parameters": {
"textBody": "={{ $json.output }}",
"operation": "send",
"additionalFields": {},
"recipientPhoneNumber": "={{ $('WhatsApp Trigger').item.json.contacts[0].wa_id }}"
},
"typeVersion": 1
},
{
"id": "9f3e4761-a07d-4cf0-9816-723506851185",
"name": "Get Patient List For User",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
-448,
2832
],
"parameters": {
"sheetName": {
"__rl": true,
"mode": "list",
"value": ""
},
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"typeVersion": 4.7
},
{
"id": "f8f6163b-e00e-448d-876a-6e6617551606",
"name": "Add Patient",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
-448,
2640
],
"parameters": {
"columns": {
"value": {
"age": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('age', ``, 'string') }}",
"name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('name', ``, 'string') }}",
"gender": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('gender', ``, 'string') }}",
"patient_id": "={{ $now.toMillis() }}",
"whatsapp_number": "={{ $('WhatsApp Trigger').item.json.contacts[0].wa_id }}"
},
"schema": [
{
"id": "patient_id",
"type": "string",
"display": true,
"required": false,
"displayName": "patient_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "whatsapp_number",
"type": "string",
"display": true,
"required": false,
"displayName": "whatsapp_number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "name",
"type": "string",
"display": true,
"required": false,
"displayName": "name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "age",
"type": "string",
"display": true,
"required": false,
"displayName": "age",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "gender",
"type": "string",
"display": true,
"required": false,
"displayName": "gender",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"typeVersion": 4.7
},
{
"id": "adfbc305-959c-4874-bf41-e6e4367900f3",
"name": "Get User Appointments",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
-272,
2832
],
"parameters": {
"options": {},
"filtersUI": {
"values": [
{
"lookupValue": "={{ $('WhatsApp Trigger').item.json.messages[0].from }}",
"lookupColumn": "whatsapp_number"
}
]
},
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"typeVersion": 4.7
},
{
"id": "8da9ce69-2b4f-4415-98de-c30b810dfda0",
"name": "Add Appointment",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
-272,
2640
],
"parameters": {
"columns": {
"value": {
"date": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('date', ``, 'string') }}",
"time": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('time', ``, 'string') }}",
"status": "Confirmed",
"patient_id": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('patient_id', ``, 'string') }}",
"appointment_id": "={{ $now.toMillis() }}",
"payment_method": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('payment_method', ``, 'string') }}",
"payment_status": "Pending",
"whatsapp_number": "={{ $('WhatsApp Trigger').item.json.contacts[0].wa_id }}"
},
"schema": [
{
"id": "appointment_id",
"type": "string",
"display": true,
"required": false,
"displayName": "appointment_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "patient_id",
"type": "string",
"display": true,
"required": false,
"displayName": "patient_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "whatsapp_number",
"type": "string",
"display": true,
"required": false,
"displayName": "whatsapp_number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "date",
"type": "string",
"display": true,
"required": false,
"displayName": "date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "time",
"type": "string",
"display": true,
"required": false,
"displayName": "time",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "payment_method",
"type": "string",
"display": true,
"required": false,
"displayName": "payment_method",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "payment_status",
"type": "string",
"display": true,
"required": false,
"displayName": "payment_status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "status",
"type": "string",
"display": true,
"required": false,
"displayName": "status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "stripe_payment_intent",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "stripe_payment_intent",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"typeVersion": 4.7
},
{
"id": "54ab2767-ca1b-4a34-98bb-3704e9ac7e6b",
"name": "Get All Appointments",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
-80,
2832
],
"parameters": {
"sheetName": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "",
"cachedResultName": ""
},
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"typeVersion": 4.7
},
{
"id": "8f2af0c9-5b67-4d92-8cbf-cc234b64ed4b",
"name": "AI 에이전트",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-336,
2272
],
"parameters": {
"text": "={{ $json.messages[0].text.body }}",
"options": {
"systemMessage": "You are an AI Assistant for a Doctor Clinic.\nYour role is to handle doctor’s appointment bookings via WhatsApp.\nYou must always keep track of the user’s progress with simple memory, and store/retrieve data in Google Sheets.\nPayments are handled via Stripe or Cash on Clinic.\nAlways be polite, WhatsApp-friendly, and guide users step by step.\n\nCore Workflow:\n\nGreeting & Main Menu\n\nWhen a user sends any message for the first time, greet them:\n\"Hello, Welcome to Doctor Clinic!\nPlease choose an option:\n\n1. New Booking\n2. My Upcoming Bookings\n3. Reschedule Booking\n4. Cancel Booking\"\n\nWait for the user’s choice.\n\nNew Booking Flow\n(a) Patient Lookup\n\nget user registered patients\n\nIf patients exist with , show patient list and ask which one to use.\n\nIf no patient exists for given WhatsApp number or user selects \"Add New Patient\":\n\nAsk for Name, Age, Gender.\n\nSave to Patients sheet.\n\nagain fetch the latest patient list for user \n\nShow updated patient list with patient_id ( must be displayed to user ), name, age and gender then ask which one to use ( user can reply with number option also ). \n\n(b) Date Selection\n\nGet the today's date and time from system\n\nGenerate 7 days (today + 6 days).\n\nExclude fully booked days.\n\nAsk user to choose a date.\n\n(c) Time Slot Selection\n\nFor chosen date, use working hours from Config sheet.\n\nDivide into slots of 60 minutes.\n\nExclude already booked slots for chosen date Using All Appointments sheet.\n\nExclude not_available slot using give date and time from config sheet in format YYYY-MM-DD HH:MM to HH:MM means on this date on given time range doctor will not be available.\n\nif todays date is chosen, Get the current time from system & show only the slots after the current system time ( ex. if current time is 12:05 then give option from 13:00).\n\nShow available slots and ask user to pick one.\n\n(d) Payment Options\n\nAfter time is selected, ask:\n\"How would you like to pay?\n\n1. Online (Stripe)\n2. Cash at Clinic\"\n\n(e) Confirmation Message\n\nAfter taking all the data add the appointment in appointment sheet if user selects online (stripe) then save payment_method \"Stripe\"\n\nand send confirm message with:\n\"Appointment booked!\nPatient: {name}\nDate: {date}\nTime: {time}\nPayment Method: {method}\nPayment Status: Not paid\nStatus: Confirmed\"\n\nMy Upcoming Bookings Flow\n\nGet the current date and time from system\n\nLook up all future user appointments.\nGet all user patients.\n\nshow them as a list with user name , booking date , booking time\n\nReschedule Flow\n\nLook up all future confirmed appointments for the user.\nGet all user patients.\n\nShow them as a list with appointment id, user name, appointment date & time.\n\nAsk which one to reschedule.\n\nGet the today's date and time from system\n\nGenerate 7 days (today + 6 days).\n\nExclude fully booked days.\n\nAsk user to choose a date.\n\nFor chosen date, use working hours from Config sheet.\n\nDivide into slots of 60 minutes.\n\nExclude already booked slots for chosen date Using All Appointments sheet.\n\nExclude not_available slot using give date and time from config sheet in format YYYY-MM-DD HH:MM to HH:MM means on this date on given time range doctor will not be available.\n\nif todays date is chosen, Get the current time from system & show only the slots after the current system time ( ex. if current time is 12:05 then give option from 13:00).\n\nShow available slots and ask user to pick one.\nafter the current system time ( if current time is 12:05 then give option from 13:00).\n\nShow available slots and ask user to pick one.\n\nafter picking one update the old appointment details with selected date and time \n\nand give a message to user that appointment has been reschedule and give details for new rescheduled appointment with patient details.\n\nCancel Flow\n\nGet the today's date and time from system\n\nLook up all future user appointments.\n\nShow them as a list with appointment id, appointment date & time .\n\nAsk which one to cancel.\n\nthen Cancel the selected appointment Appointment sheet.\n\nSend confirmation:\n\"Your appointment on {date} at {time} has been cancelled.\"\n\nGoogle Sheets Structure:\nPatients: patient_id, whatsapp_number, name, age, gender\nAppointments: appointment_id, patient_id, whatsapp_number, date, time, payment_method, payment_status, status, stripe_payment_intent\nConfig Sheet: key, value ( working_hours=10:00-18:00)\n\nMemory Rules:\n\nAlways remember where the user left off (menu, patient selection, date, time, payment).\n\nIf the user sends something invalid, say:\n\"Sorry, I didn’t understand that. Please reply with one of the given options.\"\n\nIf the user returns later, continue from the last remembered step.\n\nStyle Guide:\n\nsingle patient can register multiple patients and book as many appointments.\n\nKeep messages short, clear, and WhatsApp-friendly.\n\nUse numbers for options ( like reply with 1, 2, 3 ).\n\nAlways confirm before finalizing."
},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "895a58ff-a97e-48c2-8c94-4beb1ed6dd71",
"name": "Reschedule Appointment",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
-80,
2640
],
"parameters": {
"columns": {
"value": {
"date": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('date', ``, 'string') }}",
"time": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('time', ``, 'string') }}",
"appointment_id": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('appointment_id__using_to_match_', ``, 'string') }}"
},
"schema": [
{
"id": "appointment_id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "appointment_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "patient_id",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "patient_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "whatsapp_number",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "whatsapp_number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "date",
"type": "string",
"display": true,
"required": false,
"displayName": "date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "time",
"type": "string",
"display": true,
"required": false,
"displayName": "time",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "payment_method",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "payment_method",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "payment_status",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "payment_status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "status",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "stripe_payment_intent",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "stripe_payment_intent",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"appointment_id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"typeVersion": 4.7
},
{
"id": "214abc48-d327-47ad-9d6a-df25af9c2622",
"name": "Cancel Appointment",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
112,
2640
],
"parameters": {
"columns": {
"value": {
"status": "Cancelled",
"appointment_id": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('appointment_id__using_to_match_', ``, 'string') }}"
},
"schema": [
{
"id": "appointment_id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "appointment_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "patient_id",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "patient_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "whatsapp_number",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "whatsapp_number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "date",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "time",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "time",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "payment_method",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "payment_method",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "payment_status",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "payment_status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "status",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "stripe_payment_intent",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "stripe_payment_intent",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"appointment_id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"typeVersion": 4.7
},
{
"id": "934a9b4a-2760-416e-94fa-0200c208ec1d",
"name": "Config",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
112,
2832
],
"parameters": {
"sheetName": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "",
"cachedResultName": ""
},
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"typeVersion": 4.7
},
{
"id": "8533db59-6499-432b-ab50-f93a3007106d",
"name": "메모4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-928,
1632
],
"parameters": {
"color": 5,
"width": 416,
"height": 224,
"content": "## Payment Link Generation\n- **Trigger:** New Appointment Added in Sheet\n- **Step 1:** Checks if payment method is Stripe.\n- **Step 2:** Creating Stripe Session Checkout Payment Link With metadata:\n - appointmentId\n - user whatsapp number \n- **Step 3:** Send payment Link to the user via WhatsApp.\n"
},
"typeVersion": 1
},
{
"id": "43afc9b9-06f9-4794-a5d2-9b4e3407c7ad",
"name": "메모5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1376,
2096
],
"parameters": {
"color": 5,
"width": 444,
"height": 1016,
"content": "## 🚀 Try It Out: AI-Powered WhatsApp Booking Assistant\n\nManage your **appointments** with ease — book, reschedule, cancel, and even **collect payments online** — all through WhatsApp!\n\n### ✅ What This Does:\nLaunch a smart AI assistant that handles:\n- 🗓 **Appointment bookings** \n- 🔁 **Rescheduling** \n- ❌ **Cancellations** \n- 💳 **Online payments via Stripe**\n\nAll actions are handled directly through **WhatsApp** for a smooth and intuitive user experience.\n\n---\n\n### 🛠 How to Get Started\n\n1. **Connect Your Credentials:**\n - WhatsApp API \n - Google Gemini API \n - Google Sheet \n - Stripe Secret Key \n\n2. **Activate the Workflow**\n\n3. **Message your WhatsApp bot** with any of the following to get started:\n - `\"Hi\"` \n - `\"Create New Booking\"` \n\n---\n\n### 💬 Need Help?\n\nLearn how to create this appointment booking workflow from scratch.\nFollow this video : [YouTube](https://youtube.com)\n\n**Happy building!** \n— [GreatStack](https://greatstack.dev)\n"
},
"typeVersion": 1
},
{
"id": "5ebc144a-5b57-47ce-8a16-942dcb18d8f8",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "메모16",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
-496,
2592
],
"parameters": {
"color": 7,
"width": 756,
"height": 484,
"content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nThis nodes allows your agent create and get data from Google Sheets\n"
},
"typeVersion": 1
},
{
"id": "a204fc5a-6c63-4dea-94c4-59211a241ed4",
"cid": "Ikx1Y2FzIFBleXJpbiI",
"name": "메모13",
"type": "n8n-nodes-base.stickyNote",
"notes": "© 2025 Lucas Peyrin",
"creator": "Lucas Peyrin",
"position": [
-416,
2080
],
"parameters": {
"color": 7,
"width": 396,
"height": 380,
"content": "Appointment Booking AI Assistant:\n1. Create Booking\n2. View Upcoming Appointment \n3. Rescheduling\n4. Cancellation\n\nEdit the **System Message** to adjust your agent’s thinking, behavior, and replies.\n\n\n\n\n\n\n\n\n\n\n"
},
"typeVersion": 1
},
{
"id": "d672a03d-ea19-4cd7-9f2a-6be41f2d072e",
"name": "설정up Instructions",
"type": "n8n-nodes-base.stickyNote",
"position": [
-176,
-288
],
"parameters": {
"color": 7,
"width": 420,
"height": 524,
"content": "⚙️ **Setup Instructions**:\n\n1. Edit the **Get Appointment Sheet** node → Replace `YOUR_SPREADSHEET_ID_HERE` and `YOUR_SHEET_TAB_ID_HERE` with your Google Sheet details.\n2. Edit the **Send WhatsApp Message** node → Replace `YOUR_PHONE_NUMBER_HERE` with a test phone number.\n3. In n8n Credentials Manager:\n - Add your Google Sheets credentials\n - Add your WhatsApp Business Cloud credentials\n4. Activate the workflow. At 8 AM daily, reminders will be sent automatically.\n"
},
"typeVersion": 1
},
{
"id": "4d72c54d-078c-4187-bec2-16de2b0a82de",
"name": "일정 트리거1",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-432,
64
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 8
}
]
}
},
"typeVersion": 1.2
},
{
"id": "e45f1771-70f9-4fee-9557-75fe44540233",
"name": "Google Gemini 채팅 모델3",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
-240,
288
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "b058e4d9-12a5-42cb-8889-838386e3e7ad",
"name": "Get Appointment sheet1",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
-96,
288
],
"parameters": {
"options": {},
"sheetName": "YOUR_SHEET_TAB_ID_HERE",
"documentId": "YOUR_SPREADSHEET_ID_HERE"
},
"typeVersion": 4.7
},
{
"id": "df042b49-9570-440d-b066-f932238ae0ce",
"name": "날짜 및 시간2",
"type": "n8n-nodes-base.dateTimeTool",
"position": [
32,
288
],
"parameters": {
"options": {
"timezone": "Asia/Kolkata"
}
},
"typeVersion": 2
},
{
"id": "b4c59b68-7a89-4b8f-8069-ad6b01efcbc6",
"name": "Send message in WhatsApp Business Cloud",
"type": "n8n-nodes-base.whatsAppTool",
"position": [
176,
288
],
"webhookId": "859580aa-af6e-45fe-9eb1-51226927e690",
"parameters": {
"textBody": "Hello {{ $json['Name'] }}, this is a reminder for your appointment scheduled today at {{ $json['Time'] }}.",
"operation": "send",
"additionalFields": {},
"recipientPhoneNumber": "YOUR_PHONE_NUMBER_HERE"
},
"typeVersion": 1
},
{
"id": "a6ae6d6a-0237-4257-8cfc-01780aa15a52",
"name": "Appointment Reminder AI 에이전트1",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-96,
64
],
"parameters": {
"text": "={{ $json['Readable date'] }}",
"options": {
"systemMessage": "You are an AI assistant responsible for sending WhatsApp reminders for scheduled appointments. Follow the steps below:\n\n1. Fetch appointments from the Google Sheet configured by the user.\n2. Get current date using the Date & Time node.\n3. Filter appointments where appointment date matches today and status is Pending or Confirmed.\n4. Send WhatsApp Reminder including recipient name, date, and time.\n\nExample:\nHello [Name], this is a reminder for your appointment scheduled today at [Time]."
},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "954a6a94-c847-4dfd-87d9-d05783bca0c9",
"name": "Send Cancellation Message (CASH)",
"type": "n8n-nodes-base.whatsApp",
"position": [
208,
848
],
"webhookId": "8093a666-5c89-4efd-8aee-7ce62869ae11",
"parameters": {
"textBody": "=Your Appointment {{ $('Google Sheets Trigger1').item.json.appointment_id }} is cancelled",
"operation": "send",
"phoneNumberId": "YOUR_WHATSAPP_PHONE_NUMBER_ID",
"additionalFields": {},
"recipientPhoneNumber": "={{ $('Google Sheets Trigger1').item.json.whatsapp_number.toString() }}"
},
"typeVersion": 1
},
{
"id": "9802e834-e47a-4f18-8ebb-aac088ec986a",
"name": "Send Cancellation Message (STRIPE)",
"type": "n8n-nodes-base.whatsApp",
"position": [
432,
752
],
"webhookId": "b6d93991-c1e6-47e0-9edf-12579ce326dc",
"parameters": {
"textBody": "=Your Appointment {{ $('Google Sheets Trigger1').item.json.appointment_id }} is cancelled and the refund has been initiated",
"operation": "send",
"phoneNumberId": "YOUR_WHATSAPP_PHONE_NUMBER_ID",
"additionalFields": {},
"recipientPhoneNumber": "={{ $('Google Sheets Trigger1').item.json.whatsapp_number.toString() }}"
},
"typeVersion": 1
},
{
"id": "88a8d79b-8e8e-4481-af76-14fef00360b1",
"name": "Google 스프레드시트 Trigger1",
"type": "n8n-nodes-base.googleSheetsTrigger",
"position": [
-464,
752
],
"parameters": {
"event": "rowUpdate",
"options": {
"columnsToWatch": [
"status"
]
},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"sheetName": "YOUR_SHEET_TAB_ID_HERE",
"documentId": "YOUR_SPREADSHEET_ID_HERE"
},
"typeVersion": 1
},
{
"id": "7e4772c8-9bb6-4e46-af9b-fa134294aef1",
"name": "Update Refund Status1",
"type": "n8n-nodes-base.googleSheets",
"position": [
432,
560
],
"parameters": {
"columns": {
"value": {
"appointment_id": "={{ $('Google Sheets Trigger1').item.json.appointment_id }}",
"payment_status": "Refunded"
},
"mappingMode": "defineBelow",
"matchingColumns": [
"appointment_id"
]
},
"options": {},
"operation": "update",
"sheetName": "YOUR_SHEET_TAB_ID_HERE",
"documentId": "YOUR_SPREADSHEET_ID_HERE"
},
"credentials": {},
"typeVersion": 4.7
},
{
"id": "94dd3375-6ece-4178-a8f5-62fdb25f7528",
"name": "Stripe Refund API1",
"type": "n8n-nodes-base.httpRequest",
"position": [
208,
656
],
"parameters": {
"url": "https://api.stripe.com/v1/refunds",
"method": "POST",
"options": {},
"sendBody": true,
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "payment_intent",
"value": "={{ $('Google Sheets Trigger1').item.json.stripe_payment_intent }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_STRIPE_SECRET_KEY"
},
{
"name": "Content-Type",
"value": "application/x-www-form-urlencoded"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "9262e2f1-e96e-40aa-9598-af7049600500",
"name": "Check status \"Cancelled\"1",
"type": "n8n-nodes-base.if",
"position": [
-240,
752
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "8b4c82d3-1d5d-43f3-9049-c2eb77d3c89d",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status.toLowerCase() }}",
"rightValue": "cancelled"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "22e0ad06-9f6a-478b-9c61-3065f26b231a",
"name": "Check Is Amount Paid1",
"type": "n8n-nodes-base.if",
"position": [
-16,
752
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "3ca4b95f-158a-4800-8ca3-84b4ac99e9be",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $('Google Sheets Trigger1').item.json.stripe_payment_intent }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "bee37dc6-f91f-4b57-8012-f5ef4612ca54",
"name": "Stripe Trigger1",
"type": "n8n-nodes-base.stripeTrigger",
"position": [
-448,
1248
],
"webhookId": "YOUR_WEBHOOK_ID_HERE",
"parameters": {
"events": [
"payment_intent.succeeded"
]
},
"credentials": {},
"typeVersion": 1
},
{
"id": "cd3c9bb2-b134-45fc-a38a-378fb1a0510f",
"name": "Send Payment Confirmation1",
"type": "n8n-nodes-base.whatsApp",
"position": [
0,
1344
],
"webhookId": "YOUR_WEBHOOK_ID_HERE",
"parameters": {
"textBody": "=Your payment has been received for Appointment ID: [{{ $json.data[0].metadata.appointmentId }}]. \n\nThank you for booking your appointment with us! ",
"operation": "send",
"phoneNumberId": "YOUR_WHATSAPP_PHONE_NUMBER_ID",
"additionalFields": {},
"recipientPhoneNumber": "={{ $json.data[0].metadata.whatsappNo }}"
},
"typeVersion": 1
},
{
"id": "0010d0b6-b809-48bd-88c0-3d56dc302970",
"name": "Retrieve Payment Session1",
"type": "n8n-nodes-base.httpRequest",
"position": [
-224,
1248
],
"parameters": {
"url": "https://api.stripe.com/v1/checkout/sessions",
"options": {},
"sendBody": true,
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "payment_intent",
"value": "={{ $json.data.object.id }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_STRIPE_SECRET_KEY"
},
{
"name": "Content-Type",
"value": "application/x-www-form-urlencoded"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "677d9121-b6fb-47f9-a062-b3602ac26c5c",
"name": "Mark Payment Paid1",
"type": "n8n-nodes-base.googleSheets",
"position": [
0,
1152
],
"parameters": {
"columns": {
"value": {
"status": "Confirmed",
"appointment_id": "={{ $json.data[0].metadata.appointmentId }}",
"payment_status": "Paid",
"stripe_payment_intent": "={{ $json.data[0].payment_intent }}"
},
"schema": [
{
"id": "appointment_id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "appointment_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "patient_id",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "patient_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "whatsapp_number",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "whatsapp_number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "date",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "time",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "time",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "payment_method",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "payment_method",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "payment_status",
"type": "string",
"display": true,
"required": false,
"displayName": "payment_status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "status",
"type": "string",
"display": true,
"required": false,
"displayName": "status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "stripe_payment_intent",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "stripe_payment_intent",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"appointment_id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": "YOUR_SHEET_TAB_ID_HERE",
"documentId": "YOUR_SPREADSHEET_ID_HERE"
},
"credentials": {},
"typeVersion": 4.7
},
{
"id": "7e5acf7a-ee8b-479a-a90e-3deba22a1e74",
"name": "Look For New Appointment1",
"type": "n8n-nodes-base.googleSheetsTrigger",
"position": [
-432,
1696
],
"parameters": {
"event": "rowAdded",
"options": {
"dateTimeRenderOption": "FORMATTED_STRING"
},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"sheetName": "YOUR_SHEET_TAB_ID_HERE",
"documentId": "YOUR_SPREADSHEET_ID_HERE"
},
"typeVersion": 1
},
{
"id": "3bc10bf6-fe54-4988-ae40-42ab565fd5c4",
"name": "Send Payment Link1",
"type": "n8n-nodes-base.whatsApp",
"position": [
240,
1696
],
"webhookId": "YOUR_WEBHOOK_ID_HERE",
"parameters": {
"textBody": "=This is the link to pay for your appointment Id {{ $json.metadata.appointmentId }}\n\n{{ $json.url }}",
"operation": "send",
"phoneNumberId": "YOUR_WHATSAPP_PHONE_NUMBER_ID",
"additionalFields": {},
"recipientPhoneNumber": "={{ $json.metadata.whatsappNo }}"
},
"typeVersion": 1
},
{
"id": "acdea2c0-a22a-4fab-a841-9434855c6649",
"name": "Check Appointment Payment Mode1",
"type": "n8n-nodes-base.if",
"position": [
-208,
1696
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "db474e67-49c7-4af8-be5c-ebc9131d3618",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $json.payment_method }}",
"rightValue": "stripe"
},
{
"id": "dc3106e3-8c0a-4878-9dbb-9bb40c6bda26",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $json.payment_method }}",
"rightValue": "=Stripe"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "e2f7870c-3123-469d-93ad-029f4fbe4c4b",
"name": "Generate Stripe Payment Link1",
"type": "n8n-nodes-base.httpRequest",
"position": [
16,
1696
],
"parameters": {
"url": "https://api.stripe.com/v1/checkout/sessions",
"method": "POST",
"options": {},
"sendBody": true,
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "metadata[appointmentId]",
"value": "={{ $('Look For New Appointment1').item.json.appointment_id }}"
},
{
"name": "line_items[0][quantity]",
"value": "1"
},
{
"name": "line_items[0][price_data][product_data][name]",
"value": "Appointment Booking"
},
{
"name": "line_items[0][price_data][unit_amount]",
"value": "5000"
},
{
"name": "line_items[0][price_data][currency]",
"value": "usd"
},
{
"name": "mode",
"value": "payment"
},
{
"name": "success_url",
"value": "https://wa.me/YOUR_NUMBER_HERE"
},
{
"name": "cancel_url",
"value": "https://wa.me/YOUR_NUMBER_HERE"
},
{
"name": "metadata[whatsappNo]",
"value": "={{ $('Look For New Appointment1').item.json.whatsapp_number }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/x-www-form-urlencoded"
},
{
"name": "Authorization",
"value": "Bearer YOUR_STRIPE_SECRET_KEY"
}
]
}
},
"typeVersion": 4.2
}
],
"pinData": {},
"connections": {
"934a9b4a-2760-416e-94fa-0200c208ec1d": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "958b5f9a-87fa-456c-a0b0-10f04950e27a",
"type": "main",
"index": 0
}
]
]
},
"f8f6163b-e00e-448d-876a-6e6617551606": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Date & Time": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Date & Time2": {
"ai_tool": [
[
{
"node": "Appointment Reminder AI Agent1",
"type": "ai_tool",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"8da9ce69-2b4f-4415-98de-c30b810dfda0": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"bee37dc6-f91f-4b57-8012-f5ef4612ca54": {
"main": [
[
{
"node": "0010d0b6-b809-48bd-88c0-3d56dc302970",
"type": "main",
"index": 0
}
]
]
},
"ee6c1218-d26b-4bec-8ae8-8dd2fbb2433c": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger1": {
"main": [
[
{
"node": "Appointment Reminder AI Agent1",
"type": "main",
"index": 0
}
]
]
},
"214abc48-d327-47ad-9d6a-df25af9c2622": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"94dd3375-6ece-4178-a8f5-62fdb25f7528": {
"main": [
[
{
"node": "9802e834-e47a-4f18-8ebb-aac088ec986a",
"type": "main",
"index": 0
},
{
"node": "7e4772c8-9bb6-4e46-af9b-fa134294aef1",
"type": "main",
"index": 0
}
]
]
},
"54ab2767-ca1b-4a34-98bb-3704e9ac7e6b": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"22e0ad06-9f6a-478b-9c61-3065f26b231a": {
"main": [
[
{
"node": "94dd3375-6ece-4178-a8f5-62fdb25f7528",
"type": "main",
"index": 0
}
],
[
{
"node": "954a6a94-c847-4dfd-87d9-d05783bca0c9",
"type": "main",
"index": 0
}
]
]
},
"adfbc305-959c-4874-bf41-e6e4367900f3": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"b058e4d9-12a5-42cb-8889-838386e3e7ad": {
"ai_tool": [
[
{
"node": "Appointment Reminder AI Agent1",
"type": "ai_tool",
"index": 0
}
]
]
},
"Google Sheets Trigger1": {
"main": [
[
{
"node": "9262e2f1-e96e-40aa-9598-af7049600500",
"type": "main",
"index": 0
}
]
]
},
"895a58ff-a97e-48c2-8c94-4beb1ed6dd71": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"9262e2f1-e96e-40aa-9598-af7049600500": {
"main": [
[
{
"node": "22e0ad06-9f6a-478b-9c61-3065f26b231a",
"type": "main",
"index": 0
}
]
]
},
"9f3e4761-a07d-4cf0-9816-723506851185": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Google Gemini Chat Model3": {
"ai_languageModel": [
[
{
"node": "Appointment Reminder AI Agent1",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"7e5acf7a-ee8b-479a-a90e-3deba22a1e74": {
"main": [
[
{
"node": "acdea2c0-a22a-4fab-a841-9434855c6649",
"type": "main",
"index": 0
}
]
]
},
"0010d0b6-b809-48bd-88c0-3d56dc302970": {
"main": [
[
{
"node": "677d9121-b6fb-47f9-a062-b3602ac26c5c",
"type": "main",
"index": 0
},
{
"node": "cd3c9bb2-b134-45fc-a38a-378fb1a0510f",
"type": "main",
"index": 0
}
]
]
},
"e2f7870c-3123-469d-93ad-029f4fbe4c4b": {
"main": [
[
{
"node": "3bc10bf6-fe54-4988-ae40-42ab565fd5c4",
"type": "main",
"index": 0
}
]
]
},
"acdea2c0-a22a-4fab-a841-9434855c6649": {
"main": [
[
{
"node": "e2f7870c-3123-469d-93ad-029f4fbe4c4b",
"type": "main",
"index": 0
}
]
]
},
"b4c59b68-7a89-4b8f-8069-ad6b01efcbc6": {
"ai_tool": [
[
{
"node": "Appointment Reminder AI Agent1",
"type": "ai_tool",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 콘텐츠 제작, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
AI를 사용하여 독특한 MCQ 투표 생성并发송 Telegram
Gemini AI와 Google Sheets를 사용하여 독특한 다중 선택형 투표를 생성하고 Telegram에 게시합니다.
If
Aggregate
Http Request
+
If
Aggregate
Http Request
15 노드Pawan
콘텐츠 제작
1. 플레이리스트 상세 설정 로봇 복사본
Suno, GPT-4, Runway, Creatomate로 AI 생성 YouTube 음악 플레이리스트 생성
If
Set
Code
+
If
Set
Code
203 노드Joseph
콘텐츠 제작
Gemini AI와 Elementor를 사용하여 여러 고객에게 SEO 블로그 기사 생성 및 계획
Gemini AI와 Elementor를 사용하여 여러 고객의 SEO 블로그 기사를 생성하고 계획합니다.
If
N8n
Set
+
If
N8n
Set
39 노드Zain Khan
콘텐츠 제작
AI, JotForm, WhatsApp 및 캘린더 기반 자동화된 로펌 리드 관리 및 스케줄링
AI, JotForm, WhatsApp, 캘린더 기반 자동 로펌 리드 관리 및 스케줄링
If
Whats App
Google Sheets
+
If
Whats App
Google Sheets
16 노드iamvaar
콘텐츠 제작
YouTube 비디오 기반 자율 블로그 게시
ChatGPT, Sheets, Apify, Pexels, WordPress를 사용하여 YouTube 비디오를 자동으로 블로그에 게시합니다.
If
Set
Code
+
If
Set
Code
80 노드Oriol Seguí
콘텐츠 제작
합성
Suno API, Claude, Telegram 로봇을 통해 완전한 20곡 YouTube 플레이리스트 생성
If
Set
Code
+
If
Set
Code
150 노드Joseph
콘텐츠 제작