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
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下の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 トリガー",
      "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": "メッセージ送信",
      "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": "ユーザー向け患者リスト取得",
      "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": "患者追加",
      "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": "ユーザー予約取得",
      "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": "予約追加",
      "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": "全予約取得",
      "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": "予約再スケジュール",
      "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": "予約キャンセル",
      "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": "設定",
      "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": "セットアップ手順",
      "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": "予約シート取得1",
      "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": "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": "予約リマインダー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": "キャンセルメッセージ送信(現金)",
      "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": "キャンセルメッセージ送信(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 シートトリガー1",
      "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": "返金ステータス更新1",
      "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 返金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": "ステータス「キャンセル済み」確認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": "支払額確認1",
      "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 トリガー1",
      "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": "支払い確認送信1",
      "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": "支払いセッション取得1",
      "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": "支払済みマーク1",
      "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": "新規予約検索1",
      "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": "支払いリンク送信1",
      "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": "予約支払い方法確認1",
      "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": "Stripe 支払いリンク生成1",
      "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": "8f2af0c9-5b67-4d92-8cbf-cc234b64ed4b",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "8f2af0c9-5b67-4d92-8cbf-cc234b64ed4b": {
      "main": [
        [
          {
            "node": "958b5f9a-87fa-456c-a0b0-10f04950e27a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f8f6163b-e00e-448d-876a-6e6617551606": {
      "ai_tool": [
        [
          {
            "node": "8f2af0c9-5b67-4d92-8cbf-cc234b64ed4b",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "bd1defd2-b07e-4127-a704-cf91e7316441": {
      "ai_tool": [
        [
          {
            "node": "8f2af0c9-5b67-4d92-8cbf-cc234b64ed4b",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "df042b49-9570-440d-b066-f932238ae0ce": {
      "ai_tool": [
        [
          {
            "node": "a6ae6d6a-0237-4257-8cfc-01780aa15a52",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "95cc9fe1-0599-47f5-b069-7e33e2aaf575": {
      "ai_memory": [
        [
          {
            "node": "8f2af0c9-5b67-4d92-8cbf-cc234b64ed4b",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "8da9ce69-2b4f-4415-98de-c30b810dfda0": {
      "ai_tool": [
        [
          {
            "node": "8f2af0c9-5b67-4d92-8cbf-cc234b64ed4b",
            "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": "8f2af0c9-5b67-4d92-8cbf-cc234b64ed4b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4d72c54d-078c-4187-bec2-16de2b0a82de": {
      "main": [
        [
          {
            "node": "a6ae6d6a-0237-4257-8cfc-01780aa15a52",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "214abc48-d327-47ad-9d6a-df25af9c2622": {
      "ai_tool": [
        [
          {
            "node": "8f2af0c9-5b67-4d92-8cbf-cc234b64ed4b",
            "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": "8f2af0c9-5b67-4d92-8cbf-cc234b64ed4b",
            "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": "8f2af0c9-5b67-4d92-8cbf-cc234b64ed4b",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "b058e4d9-12a5-42cb-8889-838386e3e7ad": {
      "ai_tool": [
        [
          {
            "node": "a6ae6d6a-0237-4257-8cfc-01780aa15a52",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "88a8d79b-8e8e-4481-af76-14fef00360b1": {
      "main": [
        [
          {
            "node": "9262e2f1-e96e-40aa-9598-af7049600500",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "895a58ff-a97e-48c2-8c94-4beb1ed6dd71": {
      "ai_tool": [
        [
          {
            "node": "8f2af0c9-5b67-4d92-8cbf-cc234b64ed4b",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "3fd7ed31-f2e7-47dd-96d7-d26f902c21fa": {
      "ai_languageModel": [
        [
          {
            "node": "8f2af0c9-5b67-4d92-8cbf-cc234b64ed4b",
            "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": "8f2af0c9-5b67-4d92-8cbf-cc234b64ed4b",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "e45f1771-70f9-4fee-9557-75fe44540233": {
      "ai_languageModel": [
        [
          {
            "node": "a6ae6d6a-0237-4257-8cfc-01780aa15a52",
            "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": "a6ae6d6a-0237-4257-8cfc-01780aa15a52",
            "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
コンテンツ作成
再生リスト詳細設定ボットコピー
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 動画に基づく自律ブログ公開
YouTube 動画から ChatGPT、Sheets、Apify、Pexels、WordPress を使用してブログの自主公開
If
Set
Code
+
If
Set
Code
80 ノードOriol Seguí
コンテンツ作成
マージ
Suno API、Claude、Telegramボットを使って完全な20曲YouTubeプレイリストを作成
If
Set
Code
+
If
Set
Code
150 ノードJoseph
コンテンツ作成
ワークフロー情報
難易度
上級
ノード数43
カテゴリー2
ノードタイプ15
難易度説明

上級者向け、16ノード以上の複雑なワークフロー

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34