n8nでAIリードスコアリングを構築するには?
現在のリードスコアリングが固定的なポイント制や高価なエンタープライズ向けツールに頼っているなら、知っておく価値のある中間の選択肢があります。n8nを使えば、リードのトリガー、AIモデル、CRMへの書き戻しを1つの自動化ワークフローにつなげられます。ユーザー数課金もブラックボックス化したロジックもありません。このガイドでは、トリガーノードから最終的にスコアがCRMに反映されるまで、そのワークフローをどのように構築するかを具体的に解説します。
寄稿者
SaaS Hackers
簡単な答え:n8nでAIリードスコアリングのワークフローを構築するには、トリガー(フォーム、Webhook、CRMイベント)を、各リードを自社の基準に照らして評価するAIノードにつなぎ、スコアとその根拠をCRMに自動で書き戻します。ワークフロー全体は人の手を介さずに動作し、セットアップは1時間もかかりません。
リードスコアリングの仕組みの多くは、固定のポイント値で文脈を無視する硬直的なものか、ユーザー数ごとに課金されるエンタープライズ向けAIツールのように高価なものです。n8nはその中間に位置します。セルフホストも可能な自動化プラットフォームで、トリガー、AIモデル、CRMへの書き戻しを1つのワークフローにまとめて構築できます。
このガイドでは、トリガーの選択からAIへのプロンプト作成、HubSpotやSalesforceなどお使いのCRMへのスコア反映まで、そのワークフローの作り方を順を追って解説します。
n8nのAIリードスコアリングとは?
n8nのAIリードスコアリングとは、n8nワークフロー内で大規模言語モデル(LLM)ノードを使い、受け取ったリードデータを評価して、自社が定義した基準に基づきスコアを付ける手法です。「従業員数が100人超なら10点」といったルールベースのスコアリングとは異なり、AIはリードの文脈全体を読み取り、優秀なSDRのように適合度を判断します。
このワークフローは3つの主要な要素で構成されます。
- トリガー:新しいリードが届いたときに起動するもの
- AIスコアリングノード:リードデータを読み取り、スコアと根拠を返すLLM
- 書き戻し:リードレコードにスコアを反映するCRMノード
始める前に必要なもの
構築を始める前に、次のものが揃っていることを確認してください。
- n8nのインスタンス(クラウド版またはセルフホスト版、バージョン1.0以上)
- LLMのAPIキー(OpenAI、Google Gemini、Anthropic Claudeのいずれも利用可能)
- APIアクセスが可能なCRM(HubSpot、Salesforce、Pipedriveなど)
- 定義済みのリードソース(Typeform、JotForm、Webhook、CRMトリガー)
- 文書化したスコアリング基準(ICPの条件を平易な言葉で記したもの)
スコアリング基準は、多くの人が飛ばしてしまう部分です。n8nを開く前に作成してください。業種、企業規模、役職、予算の目安、ユースケースへの適合度、除外すべき要因など、自社にとって重要なシグナルを網羅しておく必要があります。
ステップ1:トリガーノードを設定する
トリガーとは、ワークフローを開始するきっかけのことです。リードが最初に現れる場所に合ったものを選んでください。
オプションA:Webhookトリガー
リードソースがPOSTリクエストを送信できる場合に使います(ほとんどのフォームツールが対応しています)。n8nでの手順は次のとおりです。
- 最初のノードとしてWebhookノードを追加する
- メソッドをPOSTに設定する
- WebhookのURLをコピーし、フォームツールの送信先エンドポイントに貼り付ける
- ダミーのリードを送信し、データがn8nに届くことを確認する
オプションB:フォームツールのトリガー(TypeformまたはJotForm)
- TypeformノードまたはJotFormノードを追加する
- アカウントで認証する
- 監視したいフォームを選択する
- トリガーを「On Form Submission」に設定する
オプションC:CRMトリガー(HubSpotの新規リード)
- HubSpotトリガーノードを追加する
- 「Contact Created」または「Deal Created」で起動するように設定する
- 認証してテストする
どのトリガーを使う場合でも、AIノードが必要とする項目(会社名、役職、企業規模、業種、「主な課題は何ですか?」のような自由記述欄など)が出力に含まれていることを確認してください。
ステップ2:リードデータを補完する(任意ですが推奨)
フォームから得られる生データは情報が少ないことがよくあります。フォームで取得するのが名前、メールアドレス、会社名だけだと、AIが判断に使える材料は限られます。
トリガーとAIノードの間に、データ補完のステップを追加します。
- ClearbitノードまたはApollo.ioノード:メールのドメインから、企業規模、業種、技術スタック、資金調達データを取得します
- PhantombusterやClayなどのツールによるLinkedInの検索(HTTP Requestノード経由で接続)
- 自社のデータソースがある場合は、そこへのHTTP Requestノード
補完した項目を1つのオブジェクトにまとめ、AIノードがすべての情報を整理された1つの入力として受け取れるようにします。
ステップ3:AIスコアリングノードを構築する
ここでスコアリングを行います。n8nはAIノードを通じて、OpenAI、Anthropic、Google Geminiなどのさまざまな LLMにネイティブ対応しています。
ノードの設定
- AI Agentノード、または基本的なOpenAI/Anthropicのメッセージノードを追加する
- APIの認証情報を接続する
- モデルを選ぶ(GPT-4o、Claude 3.5 Sonnet、Gemini 1.5 Proはいずれも構造化出力を適切に扱えます)
システムプロンプトを書く
システムプロンプトでは、AIの役割とスコアリングのロジックを定義します。以下は、そのまま調整して使えるテンプレートです。
You are a lead qualification expert for [Company Name].
Your job is to score inbound leads on a scale of 1 to 10 based on how well they match our ideal customer profile (ICP).
ICP criteria:
- Ideal industry: [e.g. B2B SaaS, professional services]
- Ideal company size: [e.g. 50-500 employees]
- Ideal job title: [e.g. Head of Sales, VP Revenue, Founder]
- Budget signal: [e.g. mentions budget, has funding, revenue above $1M]
- Use case fit: [e.g. looking to automate outbound, replace manual processes]
Disqualifiers (score 1-2 regardless of other signals):
- [e.g. student, freelancer with no team, competitor]
Scoring guide:
- 9-10: Strong ICP match, clear budget signal, decision-maker
- 7-8: Good ICP match, some gaps, worth a follow-up
- 5-6: Partial fit, nurture rather than immediate outreach
- 3-4: Weak fit, low priority
- 1-2: Disqualified
Return your response as valid JSON only, in this format:
{
"score": [number 1-10],
"tier": "[Hot / Warm / Cold / Disqualified]",
"reasoning": "[2-3 sentence explanation of the score]",
"recommended_action": "[e.g. Assign to AE immediately / Add to nurture sequence / Disqualify]"
}ユーザーメッセージを書く
ユーザーメッセージ欄では、n8nの式を使ってリードデータを参照します。
Score this lead:
Name: {{ $json.name }}
Email: {{ $json.email }}
Company: {{ $json.company }}
Job Title: {{ $json.job_title }}
Company Size: {{ $json.company_size }}
Industry: {{ $json.industry }}
Message / Use Case: {{ $json.message }}JSONレスポンスを解析する
AIノードの後にCodeノードを追加し、JSON文字列を扱いやすい項目に解析します。
const aiResponse = $input.first().json.message.content;
const parsed = JSON.parse(aiResponse);
return [{
json: {
lead_score: parsed.score,
lead_tier: parsed.tier,
score_reasoning: parsed.reasoning,
recommended_action: parsed.recommended_action
}
}];AIがときどき不正な形式のJSONを返す場合は、解析処理をtry/catchで囲み、失敗したものをSlackのアラートや手動レビューのキューに振り分けてください。
ステップ4:スコアに応じてリードを振り分ける
CRMに書き戻す前に振り分けのステップを追加し、ランクごとに異なるアクションを実行させます。
- Codeノードの後にIFノードまたはSwitchノードを追加する
- 次を基準に条件を設定する
lead_tier:Hot(スコア8〜10):CRMを即時更新し、AEにSlackで通知するWarm(スコア5〜7):CRMを更新し、メールシーケンスに登録するCold(スコア3〜4):CRMを更新し、優先度の低いナーチャリング用タグを付けるDisqualified(スコア1〜2):CRMを更新し、失注としてマークする
この振り分けにより、営業チームは時間をかける価値のあるリードだけを確認できます。
ステップ5:スコアをCRMに書き戻す
このステップがあってこそ、ワークフローは実際に役立ちます。n8nの中にあるだけのスコアには価値がありません。チームが作業するCRMに反映させる必要があります。
HubSpotへの書き戻し
- HubSpotノードを追加する
- 操作をUpdate Contactに設定する
- トリガーデータのメールアドレスでコンタクトを紐付ける
- カスタムプロパティの項目を追加する
ai_lead_score→{{ $json.lead_score }}ai_lead_tier→{{ $json.lead_tier }}ai_score_reasoning→{{ $json.score_reasoning }}ai_recommended_action→{{ $json.recommended_action }}
これらのカスタムプロパティは、事前にHubSpotで作成しておく必要があります。CRMの更新やライフサイクルの自動化を的確に実装するために外部の支援が必要な場合は、専門のB2B SaaSマーケティングオペレーションエージェンシーを検討してみるとよいでしょう。
Salesforceへの書き戻し
- Salesforceノードを追加する
- 操作をUpdate LeadまたはUpdate Contactに設定する
- 同じ項目を、Leadオブジェクトのカスタム項目に対応付ける
- リードのメールアドレスまたはSalesforce IDを検索キーとして使う
Pipedriveへの書き戻し
- Pipedriveノードを追加する
- 操作をUpdate PersonまたはUpdate Dealに設定する
- スコアの項目を、Pipedriveで作成したカスタム項目に対応付ける
ステップ6:チームに通知する
CRMにスコアがあるのは良いことです。ホットリードについては、適切なAEへのSlackメッセージがあればさらに効果的です。
Hotブランチで、HubSpotへの書き戻しの後に次を行います。
- Slackノードを追加する
- チャンネルを営業チームのチャンネル、または担当者へのダイレクトメッセージに設定する
- 次のようなメッセージテンプレートを使う
🔥 New Hot Lead (Score: {{ $json.lead_score }}/10)
Name: {{ $('Trigger').item.json.name }}
Company: {{ $('Trigger').item.json.company }}
Title: {{ $('Trigger').item.json.job_title }}
AI Reasoning: {{ $json.score_reasoning }}
Recommended Action: {{ $json.recommended_action }}
View in HubSpot: [link]本番稼働前にワークフローをテストする方法
実際のリードの例でテストせずに、ワークフローを有効化しないでください。
- n8nのManual Triggerを使い、固定のテストデータでワークフローを実行する
- 少なくとも5件のリードプロファイルでテストする。明確なHotが1件、明確なDisqualifiedが1件、判断が難しいケースが3件
- AIの出力が毎回有効なJSONになっているか確認する(そうでなければプロンプトを厳密にする)
- 各テスト用コンタクトで、CRMの項目が正しく更新されることを確認する
- Slack通知がHotリードにのみ送信されることを確認する
5件すべてに合格したらワークフローを有効化し、最初の20件の実際のリードを手動で確認して、スコアリングがチームの判断と一致していることを確かめてください。
よくある問題と解決方法
AIがJSONではなくテキストを返す:システムプロンプトの末尾に「Return valid JSON only, no markdown, no explanation outside the JSON object」を追加してください。
スコアにばらつきがある:基準が曖昧すぎる可能性があります。システムプロンプトに明確な例を追加してください。「スコア9とは、予算が明示されている従業員200人のSaaS企業のHead of Salesを指す」といった形です。
CRMの更新に失敗する:ワークフローの実行前に、CRMにカスタムプロパティが存在することを確認してください。対象の項目が存在しない場合、n8nはエラーを返します。
補完データが取得できない:IFノードを使ったフォールバック用のブランチを作り、補完でデータが返されたかどうかを確認します。返されなかった場合は、生のフォームデータをAIに渡し、プロンプトに補完データが利用できなかった旨を添えてください。
よくある質問
n8nのAIリードスコアリングとは?
n8nのAIリードスコアリングとは、受け取ったリードデータをLLMノードに渡し、ICPの基準に照らしてリードを評価させ、数値のスコアとその根拠を返すワークフローです。スコアはその後、手動での確認作業なしにCRMへ自動で書き戻されます。
n8nでのリードスコアリングに最適なAIモデルは?
GPT-4o、Claude 3.5 Sonnet、Gemini 1.5 Proはいずれも、リードスコアリング向けに信頼性の高い構造化JSON出力を生成できます。厳密なJSON形式の指示に従う一貫性が最も高いのはGPT-4oです。Claude 3.5 Sonnetは、より細やかな推論を書く傾向があります。このユースケースでは、どちらを選んでも問題なく使えます。
CRMなしでn8nのAIリードスコアリングを使えますか?
はい、使えます。CRMがない場合は、代わりにGoogle Sheetにスコアを書き込めます。ワークフローの最後にGoogle Sheetsノードを追加し、リードデータとスコアのフィールドを新しい行として追記します。本格的なCRMを導入するまでの、手軽な代替手段として機能します。
AIが同じリードを2回スコアリングしないようにするには?
AIノードの前に重複チェックを追加します。HubSpotまたはAirtableの検索を使い、そのメールアドレスのコンタクトにすでにスコアがあるかを確認します。スコアがある場合は、IFノードでAIの処理をスキップし、ワークフローを終了させます。
このワークフローは大量のリードにも対応できますか?
n8nは同時実行を処理できるため、ワークフローはリード数に応じてスケールします。制限要因となるのは、LLM APIのレート制限です。1日あたり500件を超えるリードを扱う場合は、Waitノードを追加するか、n8nのキューモードを使用して、レート制限に達するのを避けてください。この設定に関連して、技術監査やワークフローのサポートに使うツールを比較したい場合は、Screamingfrog、SEMRush、AHREFSの比較の比較解説もご覧ください。
寄稿者
SaaS Hackers


