Processus d'intégration client GoHighLevel avec Google Drive, Gmail et Slack
Ceci est unContent Creation, Multimodal AIworkflow d'automatisation du domainecontenant 23 nœuds.Utilise principalement des nœuds comme If, Code, Gmail, Slack, Webhook. Automatisation de l'intégration client GoHighLevel avec Google Drive, Gmail, Calendar et Slack
- •Compte Google et informations d'identification Gmail API
- •Token Bot Slack ou URL Webhook
- •Point de terminaison HTTP Webhook (généré automatiquement par n8n)
- •Informations d'identification Google Drive API
Nœuds utilisés (23)
Catégorie
{
"id": "VaGKdfnWJI4gOfeu",
"meta": {
"instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
"templateCredsSetupCompleted": true
},
"name": "GoHighLevel Client Onboarding with Google Drive, Gmail & Slack",
"tags": [],
"nodes": [
{
"id": "0147f828-0a2e-4476-bff0-bde1962451d3",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"notes": "Workflow Overview",
"position": [
-1968,
-64
],
"parameters": {
"width": 420,
"height": 650,
"content": "## 🚀 GoHighLevel Automated Client Onboarding\n\n**What This Workflow Does:**\n- Automatically triggers when a deal is marked as \"Won\" in GoHighLevel\n- Creates organized client folders in Google Drive\n- Duplicates contract and kickoff deck templates\n- Sends welcome email to new clients\n- Creates onboarding tasks in GHL\n- Schedules kickoff call in Google Calendar\n- Notifies team via Slack\n\n**Business Value:**\n✅ Saves 30-45 minutes per client onboarding\n✅ Eliminates manual data entry errors\n✅ Ensures consistent client experience\n✅ Automatic document generation\n✅ Team stays informed instantly\n\n**Prerequisites:**\n- Active GoHighLevel account with API access\n- Google Workspace (Drive, Gmail, Calendar)\n- Slack workspace\n- Contract template in Google Drive\n- Kickoff deck template in Google Drive\n\n**Setup Time:** ~15 minutes\n"
},
"typeVersion": 1
},
{
"id": "699ae091-bf52-4dd9-aaef-93d944c436c0",
"name": "Note adhésive1",
"type": "n8n-nodes-base.stickyNote",
"notes": "Webhook Setup Instructions",
"position": [
-1456,
368
],
"parameters": {
"width": 300,
"height": 380,
"content": "## ⚙️ Step 1: Configure GHL Webhook\n\n**Action Required:**\n1. Go to GoHighLevel → Automation → Workflows\n2. Create new automation triggered by \"Opportunity Status Changed\"\n3. Add condition: Status = \"Won\"\n4. Add webhook action\n5. Copy the production URL from this webhook node\n6. Paste it in GHL webhook URL field\n7. Test the webhook from GHL\n\n**Webhook Path:** `/ghl-deal-won`\n\n**Expected Data:**\n- Opportunity ID, name, value\n- Contact name, email, phone\n- Company information\n- Pipeline details"
},
"typeVersion": 1
},
{
"id": "4a236b6d-0daf-4205-a3cc-ad3a47af43c9",
"name": "Note adhésive2",
"type": "n8n-nodes-base.stickyNote",
"notes": "GHL API Configuration",
"position": [
-1264,
-320
],
"parameters": {
"width": 300,
"height": 464,
"content": "## 🔐 Step 2: Connect GHL API\n\n**Action Required:**\n1. Get your GHL API credentials:\n - Login to GoHighLevel\n - Settings → API Access\n - Create new OAuth2 App or use API Key\n2. In this node, click \"Create New Credential\"\n3. Select \"HighLevel OAuth2 API\"\n4. Enter your credentials\n5. Authorize access\n\n**Filter:** Only fetches opportunities with status = \"Won\"\n\n**Note:** This node validates the webhook data before processing"
},
"typeVersion": 1
},
{
"id": "257c94f7-3f60-44a2-86f9-059bf4bc3be3",
"name": "Note adhésive3",
"type": "n8n-nodes-base.stickyNote",
"notes": "Validation Logic",
"position": [
-992,
368
],
"parameters": {
"width": 280,
"height": 408,
"content": "## ✅ Step 3: Data Validation\n\n**What This Does:**\n- Checks if required fields are present (ID, Name)\n- If valid → Continues to formatting\n- If invalid → Triggers error notification\n\n**Prevents:**\n- Processing incomplete data\n- Workflow failures from missing info\n- Bad data reaching Google Drive/Email\n\n**No configuration needed** - works automatically"
},
"typeVersion": 1
},
{
"id": "dcc10ae5-cd60-41a8-8d4d-c358503b547e",
"name": "Note adhésive4",
"type": "n8n-nodes-base.stickyNote",
"notes": "Data Formatting",
"position": [
-768,
-416
],
"parameters": {
"width": 260,
"height": 508,
"content": "## 📊 Step 4: Format Client Data\n\n**What This Does:**\n- Extracts client info from GHL opportunity\n- Standardizes naming conventions\n- Creates safe folder/file names\n- Formats dates consistently\n- Adds validation flags\n\n**Output Fields:**\n- Client name, email, phone\n- Deal value, ID, status\n- Folder naming: `ClientName_YYYY-MM-DD`\n- Document templates with client name\n\n**No configuration needed** - processes automatically"
},
"typeVersion": 1
},
{
"id": "ca90f717-217c-4a22-beb0-f24bc7c652a3",
"name": "Note adhésive5",
"type": "n8n-nodes-base.stickyNote",
"notes": "Google Drive Configuration",
"position": [
-464,
-560
],
"parameters": {
"width": 300,
"height": 540,
"content": "## 📁 Step 5: Google Drive Setup\n\n**Action Required:**\n1. **Create Credential:**\n - Click \"Create New Credential\"\n - Select \"Google Drive OAuth2\"\n - Authorize your Google account\n\n2. **Set Parent Folder:**\n - Replace the hardcoded folder ID with your folder\n - Use the folder dropdown to select\n\n3. **Prepare Templates:**\n - Create contract template in Drive\n - Create kickoff deck template\n - Note their file IDs (from URL)\n - Update the Copy Template nodes with these IDs\n\n**This Creates:** A new folder with client info document"
},
"typeVersion": 1
},
{
"id": "149c1e02-ec1b-4b6e-bd18-1227ed34694a",
"name": "Note adhésive6",
"type": "n8n-nodes-base.stickyNote",
"notes": "Template Setup",
"position": [
-224,
240
],
"parameters": {
"width": 320,
"height": 540,
"content": "## 📄 Step 6: Template Configuration\n\n**Action Required:**\n1. **Contract Template:**\n - Open the \"Copy Contract Template\" node\n - Click the file dropdown\n - Select your contract template\n - Or paste File ID manually\n\n2. **Kickoff Deck Template:**\n - Open the \"Copy Kickoff Deck Template\" node\n - Select your presentation template\n\n**Templates Will:**\n- Be copied to client folder\n- Auto-rename with client name\n- Preserve all formatting\n\n**Tip:** Use Google Docs/Slides with placeholder text like `{{CLIENT_NAME}}`"
},
"typeVersion": 1
},
{
"id": "9da21ac9-e091-4bba-b929-657598be858e",
"name": "Note adhésive7",
"type": "n8n-nodes-base.stickyNote",
"notes": "Slack Notifications",
"position": [
-80,
-656
],
"parameters": {
"width": 300,
"height": 636,
"content": "## 💬 Step 7: Slack Integration\n\n**Action Required:**\n1. **Connect Slack:**\n - Click \"Create New Credential\"\n - Select \"Slack API\"\n - Authorize workspace access\n\n2. **Select Channel:**\n - Open the channel dropdown\n - Choose your team notifications channel\n - Recommended: #client-onboarding or #sales\n\n3. **Customize Message:**\n - Edit the notification text as needed\n - Add/remove fields\n - Include relevant links\n\n**Notification Includes:**\n- Client details\n- Deal value\n- Link to Drive folder\n- Confirmation of completed steps"
},
"typeVersion": 1
},
{
"id": "7946e499-ceb4-47a2-ab39-3538274c706d",
"name": "Note adhésive8",
"type": "n8n-nodes-base.stickyNote",
"notes": "Calendar & Email Setup",
"position": [
400,
-432
],
"parameters": {
"width": 340,
"height": 592,
"content": "## 📅 Step 8: Calendar & Email Setup\n\n**Google Calendar:**\n1. Connect your Google Calendar credential\n2. Select the calendar for kickoff calls\n3. Customize event details/duration\n\n**Gmail Welcome Email:**\n1. Connect Gmail OAuth2 credential\n2. **IMPORTANT:** Change the hardcoded email to use:\n `={{ $('Format Client Data').item.json.clientEmail }}`\n3. Customize email template:\n - Replace `[Your Company]` with your company name\n - Update branding/colors\n - Modify welcome message\n - Update links\n\n**Email Includes:**\n- Welcome message\n- Next steps checklist\n- Calendar booking link\n- Drive folder access"
},
"typeVersion": 1
},
{
"id": "814625bd-70bb-4ca0-b811-f8b1bbbbe6f9",
"name": "Note adhésive9",
"type": "n8n-nodes-base.stickyNote",
"notes": "Task Creation Setup",
"position": [
288,
288
],
"parameters": {
"width": 300,
"height": 380,
"content": "## ✅ Step 9: GHL Task Creation\n\n**Action Required:**\n1. **Remove Hardcoded Contact ID:**\n - Replace `9MWQz6J9ZWfZyzWiHxkG` with:\n `={{ $('Format Client Data').item.json.contactId }}`\n\n2. **Customize Task:**\n - Set appropriate due date\n - Change `completed: true` to `false` if task should be open\n - Add assignee if needed\n\n3. **Task Details:**\n - Title uses client name automatically\n - Links back to opportunity\n - Appears in GHL dashboard\n\n**Purpose:** Creates follow-up task for account manager"
},
"typeVersion": 1
},
{
"id": "da68a8dd-9e43-41e2-ab8e-2e542204821a",
"name": "Note adhésive10",
"type": "n8n-nodes-base.stickyNote",
"notes": "Error Handling",
"position": [
-624,
464
],
"parameters": {
"width": 280,
"height": 464,
"content": "## 🚨 Error Handling\n\n**What This Does:**\n- Catches validation failures\n- Sends Slack alert if workflow fails\n- Includes error details for debugging\n\n**Configure:**\n1. Select your Slack alerts channel\n2. Customize error message format\n3. Add @mentions if needed\n\n**When Triggered:**\n- Missing required client data\n- Invalid opportunity format\n- Data validation fails\n\n**Tip:** Set up a dedicated #n8n-errors channel"
},
"typeVersion": 1
},
{
"id": "e9b7c39a-b985-4281-a203-a9d01ce2283b",
"name": "GHL Webhook - Affaire gagnée",
"type": "n8n-nodes-base.webhook",
"notes": "Webhook trigger for GHL when deal moves to Won or Completed. Configure in GHL: Automation > Workflows > Add Webhook",
"position": [
-1344,
208
],
"webhookId": "ghl-deal-webhook",
"parameters": {
"path": "ghl-deal-won",
"options": {},
"responseMode": "responseNode"
},
"typeVersion": 1
},
{
"id": "7ff6623b-85cc-40da-af0f-7040978f002b",
"name": "Copier le modèle de contrat",
"type": "n8n-nodes-base.googleDrive",
"notes": "Duplicates contract template into client folder",
"position": [
-192,
16
],
"parameters": {
"name": "={{ $('Format Client Data').item.json.contractName }}",
"fileId": {
"__rl": true,
"mode": "id",
"value": "YOUR_CONTRACT_TEMPLATE_FILE_ID_HERE"
},
"options": {},
"operation": "copy"
},
"typeVersion": 3
},
{
"id": "d042203f-4455-4247-825e-8a8d1410de3a",
"name": "Copier le modèle de présentation de lancement",
"type": "n8n-nodes-base.googleDrive",
"notes": "Duplicates kickoff deck template into client folder",
"position": [
32,
208
],
"parameters": {
"name": "={{ $('Format Client Data').item.json.contractName }}",
"fileId": {
"__rl": true,
"mode": "id",
"value": "YOUR_KICKOFF_DECK_TEMPLATE_FILE_ID_HERE"
},
"options": {},
"operation": "copy"
},
"typeVersion": 3
},
{
"id": "cf042878-b5e2-495d-9702-2b79807ff13b",
"name": "Envoyer le message de bienvenue Slack",
"type": "n8n-nodes-base.slack",
"notes": "Posts welcome message to team Slack channel",
"position": [
32,
16
],
"webhookId": "d01feec4-3082-42cf-8aa7-9958ce39c6fc",
"parameters": {
"text": "=🎉 *New Client Onboarded!*\n\n*Client:* {{ $('Format Client Data').item.json.clientName }} \n*ClientPhone:*{{ $('Format Client Data').item.json.clientPhone }}\n*Deal Value:* {{ $('Format Client Data').item.json.dealValue }} \n*Email:* {{ $('Format Client Data').item.json.clientEmail }}\n\n📁 *Client Folder:* https://drive.google.com/drive/folders/{{ $node['Create Client File'].json.id }}\n\n✅ Onboarding task created and welcome email sent!",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "YOUR_SLACK_CHANNEL_ID_HERE",
"cachedResultName": "Select your channel"
},
"otherOptions": {}
},
"typeVersion": 2.1
},
{
"id": "d539c146-6b10-4799-bc91-f41949bbee23",
"name": "Envoyer l'email de bienvenue",
"type": "n8n-nodes-base.gmail",
"notes": "Sends branded welcome email with onboarding details",
"position": [
480,
112
],
"webhookId": "e12acc81-eeb7-47be-8982-74823670d163",
"parameters": {
"sendTo": "={{ $('Format Client Data').item.json.clientEmail }}",
"message": "=<html>\n<body style=\"font-family: Arial, sans-serif; line-height: 1.6; color: #333;\">\n <div style=\"max-width: 600px; margin: 0 auto; padding: 20px;\">\n <h2 style=\"color: #2563eb;\">Welcome Aboard, {{ $('Format Client Data').item.json.clientName }}! 🎉</h2>\n \n <p>We're thrilled to have you as a client! Your success is our top priority, and we're committed to delivering exceptional results.</p>\n \n <h3 style=\"color: #2563eb;\">Next Steps:</h3>\n <ol>\n <li><strong>Review Your Welcome Kit:</strong> Attached is your comprehensive onboarding guide</li>\n <li><strong>Schedule Your Kickoff Call:</strong> <a href=\"{{ $json.htmlLink }}\">Click here to book your onboarding session</a></li>\n <li><strong>Access Your Documents:</strong> <a href=\"https://drive.google.com/drive/folders/{{ $node['Create Client File'].json.id }}\">View your client folder</a></li>\n </ol>\n \n <p>Your dedicated account manager will reach out within 24 hours to answer any questions.</p>\n \n <p style=\"margin-top: 30px;\">Looking forward to an amazing partnership!</p>\n \n <p style=\"font-weight: bold;\">The [Your Company Name] Team</p>\n </div>\n</body>\n</html>",
"options": {},
"subject": "=Welcome to [Your Company Name] - Let's Get Started! 🚀"
},
"typeVersion": 2.1
},
{
"id": "600f53fb-8dbb-4ec2-81ad-19cf394191f9",
"name": "Valider les données client",
"type": "n8n-nodes-base.if",
"notes": "Ensures required fields are present before processing",
"position": [
-864,
208
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.id }}",
"operation": "isNotEmpty"
},
{
"value1": "={{ $json.name }}",
"operation": "isNotEmpty"
}
]
}
},
"typeVersion": 1
},
{
"id": "2502a0c1-8d87-4296-8bea-ba63da35207f",
"name": "Formater les données client",
"type": "n8n-nodes-base.code",
"notes": "Standardizes data format for use across workflow",
"position": [
-640,
112
],
"parameters": {
"jsCode": "// Extract and format client data from GHL opportunity\nconst opportunity = $input.item.json;\nconst contact = opportunity.contact || {};\nconst relations = opportunity.relations || [];\n\n// Get primary contact relation data as fallback\nconst primaryRelation = relations.find(r => r.primary === true) || {};\n\n// Extract client information with fallbacks\nconst clientName = contact.name || primaryRelation.contactName || primaryRelation.fullName || 'Unknown Client';\nconst clientEmail = contact.email || primaryRelation.email || '';\nconst clientPhone = contact.phone || primaryRelation.phone || '';\nconst companyName = contact.companyName || primaryRelation.companyName || '';\n\n// Format date for folder name (YYYY-MM-DD)\nconst today = new Date().toISOString().split('T')[0];\n\n// Create safe folder name (remove special characters)\nconst safeFolderName = clientName.replace(/[^a-zA-Z0-9\\s-]/g, '').trim();\n\nreturn {\n // Core client info\n clientName: clientName,\n clientEmail: clientEmail,\n clientPhone: clientPhone,\n companyName: companyName,\n \n // Deal information\n dealId: opportunity.id || '',\n dealName: opportunity.name || clientName,\n dealValue: opportunity.monetaryValue || 0,\n dealStatus: opportunity.status || 'won',\n \n // Pipeline info\n pipelineId: opportunity.pipelineId || '',\n pipelineStageId: opportunity.pipelineStageId || '',\n \n // Contact & Location IDs\n contactId: opportunity.contactId || contact.id || '',\n locationId: opportunity.locationId || '',\n assignedTo: opportunity.assignedTo || '',\n \n // Folder naming for Google Drive\n folderName: `${safeFolderName}_${today}`,\n \n // Document naming templates\n contractName: `${safeFolderName} - Service Agreement`,\n kickoffDeckName: `${safeFolderName} - Onboarding Deck`,\n \n // Timestamps\n createdAt: opportunity.createdAt || '',\n updatedAt: opportunity.updatedAt || '',\n lastStageChangeAt: opportunity.lastStageChangeAt || '',\n timestamp: new Date().toISOString(),\n \n // Additional useful data\n tags: contact.tags || [],\n source: opportunity.source || 'manual',\n \n // Validation flags\n hasEmail: !!(clientEmail && clientEmail.length > 0),\n hasPhone: !!(clientPhone && clientPhone.length > 0),\n isValid: !!(clientName && clientName !== 'Unknown Client')\n};"
},
"typeVersion": 2
},
{
"id": "10fcd2a0-fe5c-4bc4-a6a0-605cb498675a",
"name": "Notification d'erreur",
"type": "n8n-nodes-base.slack",
"notes": "Sends alert if workflow fails",
"onError": "continueErrorOutput",
"position": [
-640,
304
],
"webhookId": "aa8fad44-5063-439a-81eb-277c2c522a7d",
"parameters": {
"text": "=⚠️ *Onboarding Workflow Error*\n\n*Error Node:* {{ $json.node }}\n*Error:* {{ $json.error }}\n\n*Action Required:* Manual intervention needed for this client onboarding.",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "YOUR_ERROR_CHANNEL_ID_HERE",
"cachedResultName": "Select error alerts channel"
},
"otherOptions": {}
},
"typeVersion": 2.1
},
{
"id": "fcc8a75a-86fb-40c5-8814-52819f9a715c",
"name": "Planifier l'appel de lancement",
"type": "n8n-nodes-base.googleCalendar",
"notes": "Creates calendar event for client kickoff meeting",
"position": [
256,
16
],
"parameters": {
"calendar": {
"__rl": true,
"mode": "list",
"value": "YOUR_CALENDAR_EMAIL_HERE",
"cachedResultName": "Select your calendar"
},
"additionalFields": {
"description": "={{ $json.message.blocks[0].elements[0].elements[2].text }}"
}
},
"typeVersion": 1.3
},
{
"id": "d92877d4-e694-4d7e-904b-0d025d2ecbf3",
"name": "Récupérer les affaires gagnées depuis GHL",
"type": "n8n-nodes-base.highLevel",
"notes": "Retrieves all opportunities marked as Won from GoHighLevel",
"position": [
-1088,
208
],
"parameters": {
"filters": {
"status": "won"
},
"resource": "opportunity",
"operation": "getAll",
"returnAll": true,
"requestOptions": {}
},
"typeVersion": 2,
"alwaysOutputData": true
},
{
"id": "a30a97a4-b427-4cb4-b9f1-a686f5b97338",
"name": "Créer le dossier client",
"type": "n8n-nodes-base.googleDrive",
"notes": "Creates client folder with format: ClientName_YYYY-MM-DD",
"position": [
-416,
112
],
"parameters": {
"name": "New File",
"content": "=CLIENT ONBOARDING INFORMATION\n\nClient Name: {{ $json.clientName }}\nCompany: {{ $json.companyName }}\nEmail: {{ $json.clientEmail }}\nPhone: {{ $json.clientPhone }}\n\nDEAL DETAILS\nDeal Name: {{ $json.dealName }}\nDeal Value: ${{ $json.dealValue }}\nDeal Status: {{ $json.dealStatus }}\nDeal ID: {{ $json.dealId }}\n\nCONTACT INFORMATION\nContact ID: {{ $json.contactId }}\nLocation ID: {{ $json.locationId }}\nAssigned To: {{ $json.assignedTo }}\n\nTIMESTAMPS\nCreated: {{ $json.createdAt }}\nLast Updated: {{ $json.updatedAt }}\nStage Changed: {{ $json.lastStageChangeAt }}\n\nTAGS\n{{ $json.tags.join(', ') }}\n\n---\nThis file was automatically generated on {{ $json.timestamp }}",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "YOUR_PARENT_FOLDER_ID_HERE",
"cachedResultName": "Select parent folder for client folders"
},
"operation": "createFromText"
},
"typeVersion": 3
},
{
"id": "1d0da858-081c-467f-9c44-8f560eb0a6c2",
"name": "Créer la tâche d'onboarding GHL",
"type": "n8n-nodes-base.highLevel",
"notes": "Creates follow-up task in GHL for account manager",
"position": [
256,
208
],
"parameters": {
"title": "=Onboard {{ $('Format Client Data').item.json.clientName }}",
"dueDate": "={{ $now.plus(7, 'days').toISO() }}",
"resource": "task",
"contactId": "={{ $('Format Client Data').item.json.contactId }}",
"requestOptions": {},
"additionalFields": {}
},
"typeVersion": 2
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "7382a7aa-a661-45b9-a09e-171d52e87296",
"connections": {
"2502a0c1-8d87-4296-8bea-ba63da35207f": {
"main": [
[
{
"node": "a30a97a4-b427-4cb4-b9f1-a686f5b97338",
"type": "main",
"index": 0
}
]
]
},
"cf042878-b5e2-495d-9702-2b79807ff13b": {
"main": [
[
{
"node": "fcc8a75a-86fb-40c5-8814-52819f9a715c",
"type": "main",
"index": 0
}
]
]
},
"a30a97a4-b427-4cb4-b9f1-a686f5b97338": {
"main": [
[
{
"node": "7ff6623b-85cc-40da-af0f-7040978f002b",
"type": "main",
"index": 0
},
{
"node": "d042203f-4455-4247-825e-8a8d1410de3a",
"type": "main",
"index": 0
}
]
]
},
"600f53fb-8dbb-4ec2-81ad-19cf394191f9": {
"main": [
[
{
"node": "2502a0c1-8d87-4296-8bea-ba63da35207f",
"type": "main",
"index": 0
}
],
[
{
"node": "10fcd2a0-fe5c-4bc4-a6a0-605cb498675a",
"type": "main",
"index": 0
}
]
]
},
"fcc8a75a-86fb-40c5-8814-52819f9a715c": {
"main": [
[
{
"node": "d539c146-6b10-4799-bc91-f41949bbee23",
"type": "main",
"index": 0
}
]
]
},
"7ff6623b-85cc-40da-af0f-7040978f002b": {
"main": [
[
{
"node": "cf042878-b5e2-495d-9702-2b79807ff13b",
"type": "main",
"index": 0
}
]
]
},
"e9b7c39a-b985-4281-a203-a9d01ce2283b": {
"main": [
[
{
"node": "d92877d4-e694-4d7e-904b-0d025d2ecbf3",
"type": "main",
"index": 0
}
]
]
},
"d92877d4-e694-4d7e-904b-0d025d2ecbf3": {
"main": [
[
{
"node": "600f53fb-8dbb-4ec2-81ad-19cf394191f9",
"type": "main",
"index": 0
}
]
]
},
"d042203f-4455-4247-825e-8a8d1410de3a": {
"main": [
[
{
"node": "1d0da858-081c-467f-9c44-8f560eb0a6c2",
"type": "main",
"index": 0
}
]
]
},
"1d0da858-081c-467f-9c44-8f560eb0a6c2": {
"main": [
[
{
"node": "d539c146-6b10-4799-bc91-f41949bbee23",
"type": "main",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - Création de contenu, IA Multimodale
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Rahul Joshi
@rahul08Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.
Partager ce workflow