Agentic AI(エージェント化AI)は、現在のソフトウェア開発で最もホットな話題です。毎週、LangChain、CrewAI、AutoGen、LlamaIndex Workflows など、マルチエージェントシステムを手頃にする新しいフレームワークが登場します。しかし、すでに自動化にn8nを使用しているなら、新たな依存関係、Python環境、インフラ変更なしで、今日でも驚くほど有用なマルチエージェントパイプラインを構築できます。
この記事は、3つの専門AIエージェントを起動し、うち2つを並行実行し、それらの出力を構造化されたリサーチレポートへ統合する競争情報パイプラインを解説します。全体はWebhookから開始され、結果はGoogle Sheetsに記録されます。
セクション1: アーキテクチャ
全体のワークフローを一目で示します:
Webhook Trigger
└── Validate Request (Code node)
├── Agent 1: Market Analyst ──────────┐
│ ├── Merge Node (waitForAll)
└── Agent 2: Competitor Analyst ───────┘
└── Code Node: Merge Results
└── Agent 3: Strategy Synthesizer
└── Respond to Webhook
└── Google Sheets Log
重要な設計決定は、Agent 1とAgent 2が並行して実行することです。彼らは同じ入力—企業名と市場コンテキスト—を受け取りますが、それぞれ異なるシステムプロンプトを持ち、異なる分析の断片を生成します。Agent 3は、上流の2エージェントが両方完了した後にのみ実行され、両方の出力を受け取ってエグゼクティブな統合を作成します。
これは、LangChainやタスクキューで実装する「ファンアウト/ファンイン」パターンに密接に対応します。ただし、n8nのビジュアルキャンバスはデータフローを明示的かつデバッグ可能にし、オーケストレーションコードを記述することを不要にします。
セクション2: 三つのエージェント
Agent 1 — 市場アナリスト
システムプロンプト:
You are a senior market research analyst. Given a company name and industry context,
produce a structured market analysis covering:
1. Market overview and definition
2. Total addressable market (TAM) with size and growth rate
3. Key macro trends (3-5 bullet points)
4. Primary customer segments with pain points
5. Regulatory or technology tailwinds/headwinds
Be specific. Use numbers where available. Flag assumptions clearly.
Output valid JSON matching the schema provided.
Output schema:
{
"market_overview": "string",
"tam_estimate": "string",
"growth_rate": "string",
"key_trends": ["string"],
"customer_segments": [{ "name": "string", "pain_points": ["string"] }]
}
このエージェントは広さに優れています。市場が混雑しているのかグリーンフィールドなのかを見定めます。市場は成長しているのか縮小しているのか?下流のエージェントと最終の統合者がこの所見を参照します。
Agent 2 — 競合分析師
システムプロンプト:
You are a competitive intelligence specialist. Given a target company and market,
produce a structured competitor analysis covering:
1. Top 3-5 direct competitors with brief profiles
2. Competitive positioning matrix (price vs. feature depth)
3. Identified gaps in current market offerings
4. Specific strategies for winning against each competitor
Focus on actionable intelligence, not generic descriptions.
Output valid JSON matching the schema provided.
Output schema:
{
"competitors": [{ "name": "string", "strengths": ["string"],"weaknesses": ["string"] }],
"positioning_matrix": "string",
"market_gaps": ["string"],
"win_strategies": [{ "competitor": "string", "tactics": ["string"] }]
}
この処理をMarket Analystと並行して実行すると、総待機時間はおおよそ半分に短縮されます。DeepSeek V3では、各エージェントの呼び出しは約4〜8秒かかります。逐次実行ではこれらの遅延が積み重なりますが、並行実行では遅い方の時間で抑えられます。
Agent 3 — 戦略統合者
システムプロンプト:
You are a strategy consultant preparing an executive briefing. You will receive:
- A market analysis (from Market Analyst)
- A competitor analysis (from Competitor Analyst)
Synthesize these into a concise strategic report with:
1. Executive summary (3 sentences max)
2. Top 3 strategic recommendations with rationale
3. Quick wins achievable in 30 days
4. KPIs to track success over 90 days
Cross-reference findings from both inputs. Surface non-obvious connections.
Output valid JSON matching the schema provided.
Agent 3は、マルチエージェント設計の真価が発揮される場です。単一のエージェントが市場コンテキストと競合の詳細の両方を同時に推論すると、幻覚が増えるおそれがあります。2つの専門エージェントに下地を任せることで、統合者は生のプロンプトではなく、すでに構造化・検証済みのJSONを用いて作業します。
セクション3: 並行実行のコツ
これは、多くのn8nチュートリアルが見落としがちな重要な洞察です。
ワークフローの実行を2つの分岐に分けると(1つのノードの出力を2つの下流ノードに接続することで)、n8nは自動的に両方の分岐が完了するのを待ってから進行するわけではありません。各分岐を起動してそのまま進みます。2つのエージェント出力を単一の下流ノードに素直に接続すると、分岐ごとにその下流ノードが別々に実行されます。
解決策はMergeノードで、以下のように設定します:
{
"parameters": {
"mode": "waitForAll",
"outputType": "all"
},
"type": "n8n-nodes-base.merge",
"typeVersion": 3
}
With mode: "waitForAll", the Merge node holds execution until all input branches have produced at least one item. With outputType: "all", it passes through every item from every branch as a combined array into the next node.
Mergeノードの後には、小さなCodeノードがデータを再構成します:
// Merge node outputs items from both branches in the items array
const marketAnalysis = items.find(i => i.json.agent === 'market_analyst')?.json;
const competitorAnalysis = items.find(i => i.json.agent === 'competitor_analyst')?.json;
return [{
json: {
market: marketAnalysis,
competitors: competitorAnalysis,
query: items[0].json.query,
timestamp: new Date().toISOString()
}
}];
これにより、Agent 3には生の配列ではなく、クリーンで統合された入力オブジェクトが渡されます。エージェントは1つの構造化されたペイロードを見て、キーで両方の分析を参照できます。
実務的な注意点: 各エージェントの出力にはその識別子を付けておきます(agent: 'market_analyst' のように)AIエージェントノードの出力マッピングで。これにより、下流のCodeノードの find() の検索が、どの分岐が先に完了したかに関係なく信頼できます。
セクション4: コスト分析
バックエンドモデルとして DeepSeek V3 を用いた場合、このパイプラインを1クエリ実行するコストは以下のとおりです。
| 要素 | 概算トークン | コスト |
|---|---|---|
| Agent 1 — 市場アナリスト | 約800 入力 / 約600 出力 | $0.0009 |
| Agent 2 — 競合分析師 | 約800 入力 / 約700 出力 | $0.0010 |
| Agent 3 — 戦略統合者 | 約1,800 入力 / 約900 出力 | $0.0011 |
| Total per query | 約5,600 トークン | $0.003 |
1件のレポートあたり約$0.003なので、$1で333件のリサーチクエリを実行できます。
これを以下と比較すると:
- 研究アナリストを雇う: $50-100/時、1件あたり2-4時間 = 1件あたり$100-400
- 専用競合情報プラットフォーム(Crayon、Klue、Kompyte): 月額$500-2,000
- Perplexity Pro などのAIリサーチツール: 月額$20 だが、ワークフロー統合なし、構造化出力なし、Google Sheets 記録なし
n8n パイプラインは、Notionデータベース、Slackダイジェスト、メールレポート、CRMアップデートなどへ直接流れる構造化JSONを生成します。この統合レイヤこそが実際の生産性の向上の源泉であり、単なるAI出力だけに留まりません。
週あたり10〜20社の競合情報を扱うチームの場合、このパイプラインは手動アナリスト作業の相当部分を置換し、コストはほぼゼロに近づきます。
セクション5: 統合して活用する
このワークフローには、注目すべきいくつかのエッジケースがあります:
- Validate Request ノード: 受信したWebhookペイロードに空でない
queryフィールドとcompanyフィールドがあることを検証します。検証に失敗すると、トークンを無駄にしないよう400とエラーメッセージを返します。 - Google Sheets ロギング: 最終応答が送信された後、別の分岐がクエリ、タイムスタンプ、および出力の要約を記録します。これにより、応答をブロックせずに、すべてのリサーチ実行の履歴が作成されます。
- エラーハンドリング: 各AIエージェントノードにはタイムアウトやAPIエラーを捕捉して、未加工の例外ではなく構造化されたエラーペイロードを返すフォールバック分岐があります。Mergeノードは部分的な失敗を優雅に処理します。Codeノードがネストされたフィールドにアクセスする前にundefinedをチェックします。
全体のワークフローは12ノードです。JSONからのインポート時間は30秒未満です。新しいリサーチエージェント—例えば特許アナリストや価格設定アナリスト—を追加するには、既存のエージェントノードを複製し、システムプロンプトを更新し、Mergeノードへ別の入力コネクタを追加するだけです。
セクション6: ワークフローの取得
このワークフローは、研究パイプライン、リードエンリッチメント、コンテンツ生成、Slack/メールダイジェストを網羅する私の16テンプレートAI自動化パックの一部であり、バックエンドには DeepSeek か OpenAI を使った n8n 上で構築されています。
インポート可能なJSONファイルは[GUMROAD_LINK] で入手できます。
AI自動化、MCPサーバ、Claude Code統合を専門とするフルスタック開発者です。私は手動のリサーチやコンテンツ作業を、構造化され監査可能なAIパイプラインに置換える生産性の高いワークフローを構築します。