Moteur de recommandation de conférenciers et de sessions piloté par l'IA

Avancé

Ceci est unMiscellaneous, AI Chatbotworkflow d'automatisation du domainecontenant 20 nœuds.Utilise principalement des nœuds comme If, Code, Webhook, GoogleSheets, Agent. Générer des recommandations de conférenciers pour des événements avec Claude AI et Google Sheets

Prérequis
  • Point de terminaison HTTP Webhook (généré automatiquement par n8n)
  • Informations d'identification Google Sheets API
  • Clé API Anthropic
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "id": "do05AK6BdVAE5AWC",
  "meta": {
    "instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
    "templateCredsSetupCompleted": true
  },
  "name": "AI-Driven Speaker & Session Recommendation Engine",
  "tags": [],
  "nodes": [
    {
      "id": "82c1fcd7-57b9-4a6d-b298-82efa2d9327c",
      "name": "Webhook Trigger",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -1792,
        288
      ],
      "webhookId": "speaker-recommendation-webhook",
      "parameters": {
        "path": "speaker-recommendations",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2
    },
    {
      "id": "f86fd196-b2fe-4970-bf5c-2e3f23a7fdf0",
      "name": "Note - Webhook",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1856,
        -128
      ],
      "parameters": {
        "color": 4,
        "width": 208,
        "height": 728,
        "content": "## Webhook Trigger\n\nReceives requests from voice agents or external systems with event requirements and audience preferences.\n\nExpected payload:\n{\n  \"eventType\": \"string\",\n  \"eventGoals\": \"string\",\n  \"audienceSize\": number,\n  \"preferredTopics\": []\n}"
      },
      "typeVersion": 1
    },
    {
      "id": "59e086b3-19bd-4e54-858a-9346171072c6",
      "name": "Analyser la Demande Vocale",
      "type": "n8n-nodes-base.code",
      "position": [
        -1552,
        288
      ],
      "parameters": {
        "jsCode": "// Extract and validate webhook payload\nconst payload = $input.first().json.body || $input.first().json;\n\n// Default values if not provided\nconst requestData = {\n  eventType: payload.eventType || \"Technology Conference\",\n  eventGoals: payload.eventGoals || \"Engaging and innovative sessions\",\n  audienceSize: payload.audienceSize || 500,\n  preferredTopics: payload.preferredTopics || [\"AI\", \"Cloud Computing\", \"Innovation\"],\n  sessionCount: payload.sessionCount || 5,\n  requestId: payload.requestId || Date.now().toString(),\n  timestamp: new Date().toISOString(),\n  source: payload.source || \"voice-agent\"\n};\n\nreturn { json: requestData };"
      },
      "typeVersion": 2
    },
    {
      "id": "a49e4d7f-dc5a-45d9-beac-693466ceae3c",
      "name": "Récupérer les Données des Conférenciers",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1328,
        144
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultName": "Speakers"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_SPREADSHEET_ID",
          "cachedResultName": "Event Data"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "ScSS2KxGQULuPtdy",
          "name": "Google Sheets- test"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "5758dbac-06ec-4694-abbe-81797aaad24f",
      "name": "Note - Récupération",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1584,
        0
      ],
      "parameters": {
        "color": 3,
        "width": 176,
        "height": 592,
        "content": "## Fetch Speaker Database\n\nRetrieve speaker profiles, expertise areas, past sessions, ratings, and availability from Google Sheets."
      },
      "typeVersion": 1
    },
    {
      "id": "9abf905a-74ac-473f-80ee-35c13ba36291",
      "name": "Récupérer les Données de l'Audience",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1328,
        432
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=1",
          "cachedResultName": "Audience Interests"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_SPREADSHEET_ID",
          "cachedResultName": "Event Data"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "ScSS2KxGQULuPtdy",
          "name": "Google Sheets- test"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "ecf1cd22-a0b7-432a-9fe1-32a7cefb9da5",
      "name": "Agréger Toutes les Données",
      "type": "n8n-nodes-base.code",
      "position": [
        -1104,
        288
      ],
      "parameters": {
        "jsCode": "// Get data from all previous nodes\nconst requestData = $input.all()[0].json;\nconst speakers = $input.all()[1].json;\nconst audienceData = $input.all()[2].json;\n\n// Combine and structure data for AI analysis\nconst combinedData = {\n  request: requestData,\n  speakers: Array.isArray(speakers) ? speakers : [speakers],\n  audienceInterests: Array.isArray(audienceData) ? audienceData : [audienceData],\n  eventDetails: {\n    type: requestData.eventType,\n    goals: requestData.eventGoals,\n    audienceSize: requestData.audienceSize,\n    preferredTopics: requestData.preferredTopics,\n    sessionCount: requestData.sessionCount\n  },\n  metadata: {\n    requestId: requestData.requestId,\n    timestamp: requestData.timestamp,\n    source: requestData.source\n  }\n};\n\nreturn { json: combinedData };"
      },
      "typeVersion": 2
    },
    {
      "id": "53436f73-bf40-4cc8-9bab-dfbfb412ad50",
      "name": "Note - Traitement",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1376,
        0
      ],
      "parameters": {
        "color": 5,
        "width": 384,
        "height": 592,
        "content": "## Calculate & Analyze\n\nCombine voice request data with speaker profiles and audience insights for comprehensive matching."
      },
      "typeVersion": 1
    },
    {
      "id": "bdf79855-c196-4638-afd4-3a0b81190c80",
      "name": "Note - Analyse IA",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -928,
        96
      ],
      "parameters": {
        "color": 6,
        "width": 320,
        "height": 480,
        "content": "## AI Optimization Engine\n\nClaude analyzes speaker-audience fit, diversity, and engagement potential to recommend optimal session lineup."
      },
      "typeVersion": 1
    },
    {
      "id": "53634ee8-bd33-460a-bb51-48807b2f78bb",
      "name": "Formater pour la Réponse Vocale",
      "type": "n8n-nodes-base.code",
      "position": [
        -528,
        288
      ],
      "parameters": {
        "jsCode": "// Parse AI response and format recommendations\nconst aiResponse = $json.text || $json.message || JSON.stringify($json);\nconst requestMetadata = $input.first().json.metadata || {};\n\nlet recommendations;\ntry {\n  // Extract JSON from the response\n  const jsonMatch = aiResponse.match(/\\{[\\s\\S]*\\}/);\n  if (jsonMatch) {\n    recommendations = JSON.parse(jsonMatch[0]);\n  } else {\n    // Try parsing the entire response\n    recommendations = typeof aiResponse === 'string' ? JSON.parse(aiResponse) : aiResponse;\n  }\n} catch (error) {\n  recommendations = {\n    error: \"Error parsing recommendations: \" + error.message,\n    rawResponse: aiResponse.substring(0, 500)\n  };\n}\n\n// Format for output and voice agent response\nconst formattedOutput = {\n  status: \"success\",\n  requestId: requestMetadata.requestId || \"unknown\",\n  timestamp: new Date().toISOString(),\n  source: requestMetadata.source || \"unknown\",\n  totalRecommendations: recommendations.recommendations?.length || 0,\n  recommendations: recommendations.recommendations || [],\n  alternativeSpeakers: recommendations.alternativeSpeakers || [],\n  eventOptimization: recommendations.eventOptimizationSuggestions || \"\",\n  diversityScore: recommendations.diversityScore || 0,\n  topicCoverage: recommendations.topicCoverage || [],\n  summary: recommendations.summary || \"Recommendations generated successfully\",\n  voiceResponse: generateVoiceResponse(recommendations)\n};\n\nfunction generateVoiceResponse(data) {\n  if (!data.recommendations || data.recommendations.length === 0) {\n    return \"I apologize, but I couldn't generate speaker recommendations at this time. Please try again.\";\n  }\n  \n  const topSpeaker = data.recommendations[0];\n  const speakerCount = data.recommendations.length;\n  \n  return `I've analyzed your event requirements and found ${speakerCount} excellent speaker matches. ` +\n         `My top recommendation is ${topSpeaker.speakerName} for a ${topSpeaker.sessionFormat} on ${topSpeaker.sessionTopic}. ` +\n         `This speaker has a match score of ${topSpeaker.matchScore}% and would be perfect because ${topSpeaker.reasoning.substring(0, 150)}. ` +\n         `Would you like to hear more details about this speaker or the other ${speakerCount - 1} recommendations?`;\n}\n\nreturn { json: formattedOutput };"
      },
      "typeVersion": 2
    },
    {
      "id": "89f49fa5-6b35-498e-ada4-7ebe54ca4312",
      "name": "Note - Formatage",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -576,
        -16
      ],
      "parameters": {
        "color": 3,
        "width": 192,
        "height": 592,
        "content": "## Format Recommendations\n\nStructure AI output for both voice agent responses and system storage with match scores and reasoning."
      },
      "typeVersion": 1
    },
    {
      "id": "2be490a9-eec1-4b73-aa09-628417ac893c",
      "name": "Sauvegarder dans Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -304,
        288
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=2",
          "cachedResultName": "Recommendations"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_SPREADSHEET_ID",
          "cachedResultName": "Event Data"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "ScSS2KxGQULuPtdy",
          "name": "Google Sheets- test"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "d95839b4-b4ad-4ecb-a3f1-30653e826eec",
      "name": "Note - Sauvegarde",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -96,
        256
      ],
      "parameters": {
        "color": 2,
        "width": 352,
        "height": 400,
        "content": "## Update Tracking Sheet\n\nSave recommendation history and analytics to Google Sheets for tracking and reporting."
      },
      "typeVersion": 1
    },
    {
      "id": "ddfdb838-d4a2-4f7a-b301-a6fdabf04f5d",
      "name": "Envoyer la Réponse de l'Agent Vocal",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        -304,
        96
      ],
      "parameters": {
        "options": {
          "responseCode": 200,
          "responseHeaders": {
            "entries": [
              {
                "name": "Content-Type",
                "value": "application/json"
              }
            ]
          }
        },
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json, null, 2) }}"
      },
      "typeVersion": 1
    },
    {
      "id": "b9a4fd45-b837-4ce5-8113-be8ab9b497b1",
      "name": "Note - Réponse",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -336,
        -160
      ],
      "parameters": {
        "width": 176,
        "height": 784,
        "content": "## Voice Agent Response\n\nReturn formatted recommendations to the voice agent with natural language summary and structured data."
      },
      "typeVersion": 1
    },
    {
      "id": "c35f3ea0-1a0f-4d9b-8765-2ee34f88b4a4",
      "name": "Vérifier les Erreurs",
      "type": "n8n-nodes-base.if",
      "position": [
        -304,
        480
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "combineOperation": "any"
          },
          "conditions": [
            {
              "id": "error-check",
              "operator": {
                "type": "string",
                "operation": "notEmpty"
              },
              "leftValue": "={{ $json.error }}",
              "rightValue": ""
            },
            {
              "id": "empty-check",
              "operator": {
                "type": "number",
                "operation": "equals"
              },
              "leftValue": "={{ $json.recommendations?.length || 0 }}",
              "rightValue": 0
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "7dd590b4-8091-4029-9153-14c17a0da604",
      "name": "Formater la Réponse d'Erreur",
      "type": "n8n-nodes-base.code",
      "position": [
        -80,
        480
      ],
      "parameters": {
        "jsCode": "// Generate error response for voice agent\nconst errorData = $input.first().json;\n\nconst errorResponse = {\n  status: \"error\",\n  requestId: errorData.requestId || \"unknown\",\n  timestamp: new Date().toISOString(),\n  error: errorData.error || \"Unable to generate recommendations\",\n  voiceResponse: \"I apologize, but I encountered an issue while generating speaker recommendations. This could be due to insufficient data or a temporary system issue. Please try again or provide more specific event details.\",\n  recommendations: [],\n  totalRecommendations: 0\n};\n\nreturn { json: errorResponse };"
      },
      "typeVersion": 2
    },
    {
      "id": "8bf40bc3-6934-4e00-a3be-3c4d58e823e5",
      "name": "Envoyer la Réponse d'Erreur",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        144,
        480
      ],
      "parameters": {
        "options": {
          "responseCode": 500,
          "responseHeaders": {
            "entries": [
              {
                "name": "Content-Type",
                "value": "application/json"
              }
            ]
          }
        },
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json, null, 2) }}"
      },
      "typeVersion": 1
    },
    {
      "id": "3fb741b2-6c6f-4d5e-aa3d-a5857dea1c4d",
      "name": "Agent IA",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -880,
        288
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 2.2
    },
    {
      "id": "14e6e626-d90b-4ab6-b487-ee4c6d9d50e2",
      "name": "Anthropic Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        -1024,
        496
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "claude-sonnet-4-20250514",
          "cachedResultName": "Claude 4 Sonnet"
        },
        "options": {}
      },
      "credentials": {
        "anthropicApi": {
          "id": "fK55jZdb6CaYNukq",
          "name": "Anthropic account - test"
        }
      },
      "typeVersion": 1.3
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "28462451-7f45-407e-a072-dc9ae8d4ac56",
  "connections": {
    "3fb741b2-6c6f-4d5e-aa3d-a5857dea1c4d": {
      "main": [
        [
          {
            "node": "53634ee8-bd33-460a-bb51-48807b2f78bb",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "82c1fcd7-57b9-4a6d-b298-82efa2d9327c": {
      "main": [
        [
          {
            "node": "59e086b3-19bd-4e54-858a-9346171072c6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c35f3ea0-1a0f-4d9b-8765-2ee34f88b4a4": {
      "main": [
        [
          {
            "node": "7dd590b4-8091-4029-9153-14c17a0da604",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ecf1cd22-a0b7-432a-9fe1-32a7cefb9da5": {
      "main": [
        [
          {
            "node": "3fb741b2-6c6f-4d5e-aa3d-a5857dea1c4d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9abf905a-74ac-473f-80ee-35c13ba36291": {
      "main": [
        [
          {
            "node": "ecf1cd22-a0b7-432a-9fe1-32a7cefb9da5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a49e4d7f-dc5a-45d9-beac-693466ceae3c": {
      "main": [
        [
          {
            "node": "ecf1cd22-a0b7-432a-9fe1-32a7cefb9da5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "59e086b3-19bd-4e54-858a-9346171072c6": {
      "main": [
        [
          {
            "node": "a49e4d7f-dc5a-45d9-beac-693466ceae3c",
            "type": "main",
            "index": 0
          },
          {
            "node": "9abf905a-74ac-473f-80ee-35c13ba36291",
            "type": "main",
            "index": 0
          },
          {
            "node": "ecf1cd22-a0b7-432a-9fe1-32a7cefb9da5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "14e6e626-d90b-4ab6-b487-ee4c6d9d50e2": {
      "ai_languageModel": [
        [
          {
            "node": "3fb741b2-6c6f-4d5e-aa3d-a5857dea1c4d",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "7dd590b4-8091-4029-9153-14c17a0da604": {
      "main": [
        [
          {
            "node": "8bf40bc3-6934-4e00-a3be-3c4d58e823e5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "53634ee8-bd33-460a-bb51-48807b2f78bb": {
      "main": [
        [
          {
            "node": "ddfdb838-d4a2-4f7a-b301-a6fdabf04f5d",
            "type": "main",
            "index": 0
          },
          {
            "node": "2be490a9-eec1-4b73-aa09-628417ac893c",
            "type": "main",
            "index": 0
          },
          {
            "node": "c35f3ea0-1a0f-4d9b-8765-2ee34f88b4a4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

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é - Divers, Chatbot IA

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

Détecteur de réservations frauduleuses : identification de transactions de voyage suspects avec l'IA
Détecteur de réservations frauduleuses : identification des transactions de voyage suspectes avec Google Gemini
If
Set
Code
+
If
Set
Code
20 NœudsOneclick AI Squad
Opérations de sécurité
Bot de réponses aux questions fréquentes pour les compagnies aériennes
Utiliser GPT-4 et la classification des problèmes pour automatiser le support client des compagnies aériennes
If
Code
Merge
+
If
Code
Merge
27 NœudsOneclick AI Squad
Chatbot de support
Automatisation du marketing et des réservations de restaurant avec Excel et l'assistant vocal VAPI
Automatisation du marketing et des réservations pour les restaurants avec Excel, l'assistant vocal VAPI et le calendrier
Set
Code
Webhook
+
Set
Code
Webhook
11 NœudsOneclick AI Squad
Nurturing de leads
Comparaison automatisée des prix des vols
Comparer les prix des vols sur plusieurs plateformes de réservation et générer un rapport par e-mail
If
Ssh
Code
+
If
Ssh
Code
19 NœudsOneclick AI Squad
Divers
Planificateur dynamique de sièges et de disposition de lieu
Créer une planification de sièges et de lieu dynamique avec Google Sheets
Code
Webhook
Google Sheets
+
Code
Webhook
Google Sheets
18 NœudsOneclick AI Squad
Divers
Système de traitement de commandes alimentaires piloté par l'IA, intégrant Facebook Messenger, Google Sheets et Google Calendar
Système de traitement de commandes alimentaires piloté par l'IA, intégrant Facebook Messenger, Google Sheets et Google Calendar
If
Code
Webhook
+
If
Code
Webhook
26 NœudsHans Wilhelm Radam
Nurturing de leads
Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds20
Catégorie2
Types de nœuds8
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Auteur
Oneclick AI Squad

Oneclick AI Squad

@oneclick-ai

The AI Squad Initiative is a pioneering effort to build, automate and scale AI-powered workflows using n8n.io. Our mission is to help individuals and businesses integrate AI agents seamlessly into their daily operations from automating tasks and enhancing productivity to creating innovative, intelligent solutions. We design modular, reusable AI workflow templates that empower creators, developers and teams to supercharge their automation with minimal effort and maximum impact.

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34