AI駆動型スピーカーおよびセッション推薦エンジン

上級

これはMiscellaneous, AI Chatbot分野の自動化ワークフローで、20個のノードを含みます。主にIf, Code, Webhook, GoogleSheets, Agentなどのノードを使用。 Claude AIとGoogle Sheetsを使用したイベントスピーカーメモ生成

前提条件
  • HTTP Webhookエンドポイント(n8nが自動生成)
  • Google Sheets API認証情報
  • Anthropic API Key
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "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": "付箋 - 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": "音声リクエストの解析",
      "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": "スピーカーデータの取得",
      "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": "付箋 - 取得",
      "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": "聴衆データの取得",
      "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": "全データの集約",
      "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": "付箋 - 処理",
      "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": "付箋 - AI分析",
      "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": "音声応答用のフォーマット",
      "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": "付箋 - フォーマット",
      "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": "Google スプレッドシートに保存",
      "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": "付箋 - 保存",
      "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": "音声エージェント応答の送信",
      "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": "付箋 - 応答",
      "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": "エラーチェック",
      "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": "エラー応答のフォーマット",
      "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": "エラー応答の送信",
      "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": "AIエージェント",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -880,
        288
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 2.2
    },
    {
      "id": "14e6e626-d90b-4ab6-b487-ee4c6d9d50e2",
      "name": "Anthropic チャットモデル",
      "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
          }
        ]
      ]
    }
  }
}
よくある質問

このワークフローの使い方は?

上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。

このワークフローはどんな場面に適していますか?

上級 - その他, AIチャットボット

有料ですか?

このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。

関連ワークフロー

ワークフロー情報
難易度
上級
ノード数20
カテゴリー2
ノードタイプ8
難易度説明

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

作成者
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.

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34