AI アクティビティとバジェットオーケストレーション套件

上級

これはProject Management, Multimodal AI分野の自動化ワークフローで、20個のノードを含みます。主にCode, Merge, Slack, Webhook, EmailSendなどのノードを使用。 イベント企画と予算最適化の自動化を実現:Claude AI、Google Sheets

前提条件
  • Slack Bot Token または Webhook URL
  • HTTP Webhookエンドポイント(n8nが自動生成)
  • Google Sheets API認証情報
  • Anthropic API Key
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "id": "KjnG4Wn0rWx8YM2N",
  "meta": {
    "instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
    "templateCredsSetupCompleted": true
  },
  "name": "AI Event & Budget Orchestration Suite",
  "tags": [],
  "nodes": [
    {
      "id": "a3da1a86-2036-4134-a947-6adc55068f04",
      "name": "オーケストレーショントリガー",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -560,
        584
      ],
      "webhookId": "event-orchestrate-webhook",
      "parameters": {
        "path": "event-orchestrate",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2
    },
    {
      "id": "65fa224a-7f5a-49d2-9ec6-5dd24dd86f50",
      "name": "クライアントブリーフを読込",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -336,
        296
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "ClientBriefs"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.spreadsheetId || '1234567890abcdefghijklmnop' }}"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "ScSS2KxGQULuPtdy",
          "name": "Google Sheets- test"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "3844dc0e-e84f-45ed-aa29-eb09ab4d7bcd",
      "name": "予算見積を読込",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -336,
        488
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "BudgetEstimates"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.spreadsheetId || '1234567890abcdefghijklmnop' }}"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "ScSS2KxGQULuPtdy",
          "name": "Google Sheets- test"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "6545f261-99a3-4ca1-90d8-f5d514dcd68d",
      "name": "実績コストを読込",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -336,
        680
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "ActualCosts"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.spreadsheetId || '1234567890abcdefghijklmnop' }}"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "ScSS2KxGQULuPtdy",
          "name": "Google Sheets- test"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "8c47bb9f-4969-4627-8888-bf64df202de8",
      "name": "ベンダーデータベースを読込",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -336,
        872
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "VendorDatabase"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.vendorSpreadsheetId || $json.spreadsheetId }}"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "ScSS2KxGQULuPtdy",
          "name": "Google Sheets- test"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "23f81562-d7e7-45c7-8c52-d42750b1b68f",
      "name": "全データ統合",
      "type": "n8n-nodes-base.merge",
      "position": [
        -112,
        584
      ],
      "parameters": {
        "mode": "mergeByPosition"
      },
      "typeVersion": 3
    },
    {
      "id": "c3ea1e44-1472-43e2-ac30-da2b19f17a6b",
      "name": "データ融合エンジン",
      "type": "n8n-nodes-base.code",
      "position": [
        112,
        584
      ],
      "parameters": {
        "jsCode": "const all = $input.all();\nconst brief = all.find(i => i.json.clientName)?.json || {};\nconst budgets = all.filter(i => i.json.budgetAmount !== undefined).map(i => i.json);\nconst actuals = all.filter(i => i.json.actualCost !== undefined).map(i => i.json);\nconst vendors = all.filter(i => i.json.vendorName).map(i => i.json);\n\n// Metadata\nconst meta = {\n  eventId: brief.eventId || `EVT-${Date.now()}`,\n  clientName: brief.clientName || 'Client',\n  eventType: brief.eventType || 'Conference',\n  attendees: parseInt(brief.attendees) || 150,\n  targetBudget: parseFloat(brief.budget) || 75000,\n  eventDate: brief.eventDate || 'TBD',\n  plannerEmail: brief.plannerEmail || 'planner@company.com',\n  spreadsheetId: brief.spreadsheetId || '1234567890abcdefghijklmnop',\n  teamChannel: brief.teamChannel || '#event-orchestration',\n  priority: brief.priority || 'Medium'\n};\n\n// Budget aggregation\nlet totalBudgeted = 0, totalEstimated = 0, totalActual = 0;\nconst categories = {};\n\nbudgets.forEach(b => {\n  const cat = b.category || 'Other';\n  const budgeted = parseFloat(b.budgetAmount || 0);\n  const estimated = parseFloat(b.estimatedCost || 0);\n  totalBudgeted += budgeted;\n  totalEstimated += estimated;\n  if (!categories[cat]) categories[cat] = { budgeted: 0, estimated: 0, actual: 0, items: [] };\n  categories[cat].budgeted += budgeted;\n  categories[cat].estimated += estimated;\n  categories[cat].items.push(b);\n});\n\nactuals.forEach(a => {\n  const cat = a.category || 'Other';\n  const actual = parseFloat(a.actualCost || 0);\n  totalActual += actual;\n  if  if (categories[cat]) categories[cat].actual += actual;\n});\n\nconst variance = totalBudgeted - totalEstimated;\nconst variancePct = totalBudgeted > 0 ? ((variance / totalBudgeted) * 100).toFixed(2) : 0;\n\nreturn {\n  json: {\n    ...meta,\n    budgets, actuals, vendors,\n    totalBudgeted: totalBudgeted.toFixed(2),\n    totalEstimated: totalEstimated.toFixed(2),\n    totalActual: totalActual.toFixed(2),\n    variance: variance.toFixed(2),\n    variancePct,\n    overBudget: variance < 0,\n    categories: Object.values(categories),\n    validation: { errors: [], warnings: [] },\n    timestamp: new Date().toISOString()\n  }\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "033b6830-f7af-4a48-be42-02d4f568d5ab",
      "name": "Claude AIコア",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        408,
        808
      ],
      "parameters": {
        "model": "claude-3-5-sonnet-20241022",
        "options": {
          "temperature": 0.3
        }
      },
      "credentials": {
        "anthropicApi": {
          "id": "fK55jZdb6CaYNukq",
          "name": "Anthropic account - test"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "874f36ce-4862-4f15-988c-a5eb08d21594",
      "name": "AIオーケストレーションエンジン",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        336,
        584
      ],
      "parameters": {
        "options": {
          "systemMessage": "=You are an elite event orchestration strategist. Generate a complete event plan + budget optimization in JSON.\n\n**Client:** {{ $json.clientName }}\n**Event:** {{ $json.eventType }} | {{ $json.attendees }} guests | {{ $json.eventDate }}\n**Budget:** ${{ $json.totalBudgeted }} (Target: ${{ $json.targetBudget }}) | Variance: ${{ $json.variance }} ({{ $json.variancePct }}%)\n\n**Current Spend:** Estimated ${{ $json.totalEstimated }} | Actual ${{ $json.totalActual }}\n\n**Categories:** {{ $json.categories.map(c => `${c.category}: $${c.budgeted} → $${c.estimated}`).join(', ') }}\n\n**Vendors Available:** {{ $json.vendors.map(v => v.vendorName).join(', ') }}\n\n**Deliver JSON with:**\n- planSummary\n- optimizedTimeline (phases with dates)\n- optimizedBudgetBreakdown (category, current, recommended, savings)\n- taskList (task, owner, due, priority)\n- vendorRecommendations\n- riskAnalysis (risk, probability, impact, mitigation)\n- totalSavings, finalCost, roiImprovement\n- autoApproval: true/false"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "5a91a3b7-02ac-49cf-9536-37dc72355e20",
      "name": "解析・最終化",
      "type": "n8n-nodes-base.code",
      "position": [
        688,
        584
      ],
      "parameters": {
        "jsCode": "const ai = $input.first().json.response || $input.first().json.text;\nconst base = $('Data Fusion Engine').first().json;\nlet plan; try { plan = JSON.parse(ai.match(/\\{[\\s\\S]*\\}/)[0]); } catch { plan = { planSummary: 'AI parse failed' }; }\n\nconst savings = (plan.optimizedBudgetBreakdown || []).reduce((s, c) => s + (c.savings || 0), 0);\nconst final = base.totalEstimated - savings;\nconst roi = ((savings / base.totalEstimated) * 100).toFixed(1);\nconst riskScore = (plan.riskAnalysis || []).reduce((s, r) => s + (r.probability === 'High' ? 3 : r.probability === 'Medium' ? 2 : 1) * (r.impact === 'High' ? 3 : 2 : 1), 0);\nconst riskLevel = riskScore > 12 ? 'High' : riskScore > 6 ? 'Medium' : 'Low';\nconst autoApprove = plan.autoApproval !== false && riskLevel !== 'High' && savings > 0;\n\nreturn { json: { ...base, ...plan, totalSavings: savings.toFixed(2), finalCost: final.toFixed(2), roiImprovement: roi, riskScore, riskLevel, autoApprove, orchestratedAt: new Date().toISOString() } };"
      },
      "typeVersion": 2
    },
    {
      "id": "83fbc169-9531-4ba2-9abd-8bfb8367b9b2",
      "name": "オーケストレーション計画を保存",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        912,
        392
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "OrchestratedPlans"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.spreadsheetId }}"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "ScSS2KxGQULuPtdy",
          "name": "Google Sheets- test"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "3c2551b2-68ca-44c4-b60b-0c33b11c4f75",
      "name": "チーム同期",
      "type": "n8n-nodes-base.slack",
      "position": [
        912,
        584
      ],
      "webhookId": "3e1216b9-e7dc-4123-87b9-6d5c20e2171d",
      "parameters": {
        "text": "=*{{ $json.eventId }}: {{ $json.clientName }} - {{ $json.eventType }}*\n\n*Status:* {{ $json.autoApprove ? 'AUTO-APPROVED' : 'REVIEW NEEDED' }}\n*Savings:* ${{ $json.totalSavings }} ({{ $json.roiImprovement }}% ROI)\n*Risk:* {{ $json.riskLevel }}\n\n{{ $json.autoApprove ? 'Proceeding to execution' : 'Team review required' }}\n\n[View Full Plan](https://docs.google.com/spreadsheets/d/{{ $json.spreadsheetId }})",
        "select": "channel",
        "channelId": "={{ $json.teamChannel }}",
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "id": "MQ0fgwuS8AzfwFvy",
          "name": "Slack account - test "
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "0cb88543-7089-43e2-87d5-090da88bf447",
      "name": "エグゼクティブレポート",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        912,
        776
      ],
      "webhookId": "49513419-b372-4ecc-88c0-c5c2612e429e",
      "parameters": {
        "options": {},
        "subject": "={{ $json.autoApprove ? 'Approved' : 'Review' }}: {{ $json.eventId }} Plan & Budget",
        "toEmail": "={{ $json.plannerEmail }}",
        "fromEmail": "ai-orchestrator@company.com"
      },
      "credentials": {
        "smtp": {
          "id": "G1kyF8cSWTZ4vouN",
          "name": "SMTP -test"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "90e4cb72-7890-4f58-ab49-51702e273cc1",
      "name": "付箋",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -592,
        352
      ],
      "parameters": {
        "width": 160,
        "height": 480,
        "content": "Webhook (POST /event-orchestrate) or Daily @ 7 AM schedule"
      },
      "typeVersion": 1
    },
    {
      "id": "f176b3a1-86c7-4d52-b928-3d64a7d7095d",
      "name": "付箋1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        80,
        368
      ],
      "parameters": {
        "width": 160,
        "height": 480,
        "content": "Aggregates totals, calculates variance, validates data"
      },
      "typeVersion": 1
    },
    {
      "id": "795cbb12-04b2-4540-a0b0-af0876ae2383",
      "name": "付箋2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        320,
        368
      ],
      "parameters": {
        "width": 256,
        "height": 480,
        "content": "Sends structured prompt to Claude AI"
      },
      "typeVersion": 1
    },
    {
      "id": "523ede3a-588a-45f2-bff7-05fc4dd0e8d0",
      "name": "付箋3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -144,
        384
      ],
      "parameters": {
        "width": 160,
        "height": 480,
        "content": "Merges all sources into unified dataset"
      },
      "typeVersion": 1
    },
    {
      "id": "71f0b271-cb1e-4ead-92b9-76f86fffb7c2",
      "name": "付箋4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -368,
        -48
      ],
      "parameters": {
        "width": 160,
        "height": 1104,
        "content": "Pulls event metadata from ClientBriefs sheet\n\nFetches budgetAmount, estimatedCost, vendor\n\nLoads real-time spend from ActualCosts\n\nRetrieves pricing, ratings, and reliability"
      },
      "typeVersion": 1
    },
    {
      "id": "abad8a6f-7029-4d85-8015-e4f332dc61ac",
      "name": "付箋5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        656,
        368
      ],
      "parameters": {
        "width": 160,
        "height": 480,
        "content": "Extracts JSON, computes savings, ROI, risk, sets auto-approve"
      },
      "typeVersion": 1
    },
    {
      "id": "d016d1ad-268d-4c5e-94c0-cba1694e883b",
      "name": "付箋6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        880,
        80
      ],
      "parameters": {
        "width": 160,
        "height": 848,
        "content": "Writes full plan + KPIs to OrchestratedPlans\n\nPosts rich Slack message with status & link\n\nSends interactive HTML email to planner"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "0ab79068-95e9-4212-ba5c-bd692eaf49dc",
  "connections": {
    "23f81562-d7e7-45c7-8c52-d42750b1b68f": {
      "main": [
        [
          {
            "node": "c3ea1e44-1472-43e2-ac30-da2b19f17a6b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "033b6830-f7af-4a48-be42-02d4f568d5ab": {
      "ai_languageModel": [
        [
          {
            "node": "874f36ce-4862-4f15-988c-a5eb08d21594",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "5a91a3b7-02ac-49cf-9536-37dc72355e20": {
      "main": [
        [
          {
            "node": "83fbc169-9531-4ba2-9abd-8bfb8367b9b2",
            "type": "main",
            "index": 0
          },
          {
            "node": "3c2551b2-68ca-44c4-b60b-0c33b11c4f75",
            "type": "main",
            "index": 0
          },
          {
            "node": "0cb88543-7089-43e2-87d5-090da88bf447",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6545f261-99a3-4ca1-90d8-f5d514dcd68d": {
      "main": [
        [
          {
            "node": "23f81562-d7e7-45c7-8c52-d42750b1b68f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "65fa224a-7f5a-49d2-9ec6-5dd24dd86f50": {
      "main": [
        [
          {
            "node": "23f81562-d7e7-45c7-8c52-d42750b1b68f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c3ea1e44-1472-43e2-ac30-da2b19f17a6b": {
      "main": [
        [
          {
            "node": "874f36ce-4862-4f15-988c-a5eb08d21594",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a3da1a86-2036-4134-a947-6adc55068f04": {
      "main": [
        [
          {
            "node": "65fa224a-7f5a-49d2-9ec6-5dd24dd86f50",
            "type": "main",
            "index": 0
          },
          {
            "node": "3844dc0e-e84f-45ed-aa29-eb09ab4d7bcd",
            "type": "main",
            "index": 0
          },
          {
            "node": "6545f261-99a3-4ca1-90d8-f5d514dcd68d",
            "type": "main",
            "index": 0
          },
          {
            "node": "8c47bb9f-4969-4627-8888-bf64df202de8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8c47bb9f-4969-4627-8888-bf64df202de8": {
      "main": [
        [
          {
            "node": "23f81562-d7e7-45c7-8c52-d42750b1b68f",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "3844dc0e-e84f-45ed-aa29-eb09ab4d7bcd": {
      "main": [
        [
          {
            "node": "23f81562-d7e7-45c7-8c52-d42750b1b68f",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "874f36ce-4862-4f15-988c-a5eb08d21594": {
      "main": [
        [
          {
            "node": "5a91a3b7-02ac-49cf-9536-37dc72355e20",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

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

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

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

上級 - プロジェクト管理, マルチモーダルAI

有料ですか?

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

関連ワークフロー

イベントマーケティングコンテンツ自動ジェネレーター
GPT-4、Google Sheets、Slackを使用したイベントマーケティングコンテンツ生成
Set
Code
Merge
+
Set
Code
Merge
24 ノードOneclick AI Squad
コンテンツ作成
財務・会計向けAI駆動型請求書リマインダーと支払い追跡ツール
財務・会計業務向けに設計されたAIベースの請求書リマインダーと支払い追跡ツール
If
Set
Code
+
If
Set
Code
35 ノードOneclick AI Squad
請求書処理
スマートなアクティビティフォローとソーシャルアシスタント
マルチチャネルアプローチ(GPT-4、LinkedIn、HubSpot)によるイベントフォローアップの自動化
Code
Filter
Hubspot
+
Code
Filter
Hubspot
25 ノードOneclick AI Squad
リードナーチャリング
AIを活用したリード生成による不動産権益メールと電話販売
Llama AI、VAPIコール、Gmailマーケティングで不動産マーケティングを自動化する
Code
Wait
Gmail
+
Code
Wait
Gmail
23 ノードOneclick AI Squad
リードナーチャリング
AI症状チェックと医師推薦
Ollama AIとWhatsAppで医療症状分析と医師の推奨
If
Code
Webhook
+
If
Code
Webhook
15 ノードOneclick AI Squad
サポートチャットボット
OpenAI、RunwayML、ElevenLabsを使って無顔の短い動画を自動化
OpenAI、RunwayML、ElevenLabs を使ってアニメ顔の短い動画を自動化:スクリプトからソーシャルメディアへ
Set
Code
Wait
+
Set
Code
Wait
56 ノードLeeWei
コンテンツ作成
ワークフロー情報
難易度
上級
ノード数20
カテゴリー2
ノードタイプ9
難易度説明

上級者向け、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