Make.com連携ガイド
結論:Make.com(メイク・ドットコム)のビジュアルなフローエディタで、「Custom webhook」トリガーを使います。Surmado(スルマド)の webhook_url をそこに向け、event = report.completed と report.product で絞り込み、Google Sheets / Slack / Airtable / Notionへ振り分けます。さらに詳しいデータが必要な場合は、Bearer認証で GET https://api.surmado.com/v1/reports/{{1.report.id}} を呼び出すHTTPモジュールを追加します。
読了時間:14分
前提条件
- Make.comのアカウント(少量の利用ならFreeプランで足ります。定期的に使うならCoreの$9/monthです)
- Surmado APIキー(
sur_live_...)。app.surmado.com → Settings → API Keys で作成します - 送信先のアプリ(Google Sheets、Slack、Airtable、Notionなど)
Makeのプラン要件
Freeプラン:
- 月1,000オペレーション
- シナリオは2件まで
- クライアント1〜5社の少量の利用には十分です
Coreプラン($9/month):
- 月10,000オペレーション
- シナリオは無制限
- 定期的な利用におすすめです
Proプラン($16/month):
- 10,000オペレーション + より大きいデータ上限
- カスタム変数、優先実行
- クライアントが10社以上あるエージェンシー向けです
連携の基本パターン
- トリガー:「Webhooks → Custom webhook」。Makeが専用のURLを発行します。
- Surmadoの設定:レポートを作成するときに
webhook_urlを指定して、完了通知をそのURLにPOSTするようにします。 - Filter:
eventとreport.productで絞り込みます。 - 解析:ネストされたペイロードを、Makeのドット表記(
1.report.summary.presence_score)で読み取ります。 - (任意)REST APIでさらに詳しいデータを取得するHTTPモジュール。
- 実行:送信先のアプリに書き込みます。
ペイロードの例
{
"event": "report.completed",
"timestamp": "2026-04-15T12:00:00+00:00",
"report": {
"id": "rpt_abc123xyz",
"token": "SIG-2026-04-A1B2C",
"product": "signal",
"status": "completed",
"tier": "basic",
"data_url": "https://api.surmado.com/v1/reports/rpt_abc123xyz",
"pdf_url": "https://api.surmado.com/v1/reports/view/VIEW_TOKEN",
"summary": {
"business_name": "Acme Coffee Roasters",
"presence_score": 34.2,
"authority_score": 42.7,
"competitive_rank": 4,
"top_competitor": "Blue Bottle"
}
}
}
Strategyレポート(
"product": "solutions")にはsummaryオブジェクトがありません。あるのはreport.tokenとreport.pdf_urlだけです。
ワークフロー1:AI VisibilityをGoogle Sheetsへ
シナリオのモジュール
モジュール1:Webhooks: Custom webhook
- 新しいwebhookを追加します。Makeが
https://hook.eu2.make.com/abc123def456のようなURLを生成します。 - Determine data structure をクリックし、Surmadoのサンプルレポートを実行して(下のcurlの例を参照)、Makeにペイロードの形を取得させます。
サンプルは次のように作成します。
curl -X POST https://api.surmado.com/v1/reports/signal \
-H "Authorization: Bearer sur_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"brand_slug": "acme_corp",
"url": "https://acme.com",
"email": "founder@acme.com",
"industry": "B2B SaaS",
"location": "United States",
"persona": "Small business owners",
"pain_points": "Losing track of customer conversations",
"brand_details": "Simple CRM with email integration",
"direct_competitors": "HubSpot, Pipedrive",
"webhook_url": "https://hook.eu2.make.com/abc123def456"
}'
モジュール2:Tools: Filter
条件:1.event Equal to report.completed AND 1.report.product Equal to signal。
モジュール3:Google Sheets: Add a Row
列をマッピングします。
- Date:
{{1.timestamp}} - Token:
{{1.report.token}} - Business:
{{1.report.summary.business_name}} - Presence Score:
{{1.report.summary.presence_score}} - Authority Score:
{{1.report.summary.authority_score}} - Competitive Rank:
{{1.report.summary.competitive_rank}} - Top Competitor:
{{1.report.summary.top_competitor}}
1回の実行で使うオペレーション:3。
ワークフロー2:Site Auditと条件付きアラート
Site Auditをすべて1つのシナリオでGoogle Sheetsに書き込み、performance_score < 70 のときだけSlackに通知します。
モジュール1:Custom webhook(ワークフロー1のものを再利用するか、新しく作成します)。
モジュール2:Filter:1.event = report.completed AND 1.report.product = scan。
モジュール3:Google Sheets: Add a Row。Site Auditのサマリーのフィールド(seo_score、performance_score、accessibility_score、total_pages、critical_issues_count)を入れます。
モジュール4:Router:2つの経路に分けます。
- 経路A(常に実行):そのまま完了まで進みます。
- 経路B:Filter
1.report.summary.performance_score < 70→ Slack: Create a message。
Slackのメッセージのテンプレート:
:warning: Performance regression on *{{1.report.summary.business_name}}*
Performance: {{1.report.summary.performance_score}} (below 70 threshold)
SEO: {{1.report.summary.seo_score}}
Accessibility: {{1.report.summary.accessibility_score}}
Critical issues: {{1.report.summary.critical_issues_count}}
View report: {{1.report.pdf_url}}
1回の実行で使うオペレーション:通る経路によって4〜5。
ワークフロー3:Strategyの要約メール
Strategyのレポートにはサマリーがありません。流れは次のとおりです。
- Custom webhookトリガー。
- Filter:
1.event = report.completedAND1.report.product = solutions。 - Gmail / Email: PDFリンクを添えてメールを送ります。
メールの本文:
<p>Strategy report <code>{{1.report.token}}</code> has been delivered.</p>
<p><a href="{{1.report.pdf_url}}">View the full report (PDF)</a></p>
オペレーション:2。
さらに詳しいデータの取得
webhookのサマリーでほとんどの用途はまかなえます。プラットフォーム別の内訳(たとえばChatGPTとClaudeのPresence)や、Site Auditのページごとの問題が必要な場合は、フィルターのあとにHTTPモジュールを追加します。
モジュール:HTTP: Make a request
- URL:
https://api.surmado.com/v1/reports/{{1.report.id}} - Method: GET
- Headers:
- Name:
Authorization - Value:
Bearer sur_live_YOUR_API_KEY
- Name:
- Parse response: Yes
これで、下流のモジュールから {{2.public_intelligence.data.platform_variance.chatgpt.presence_score}} や {{2.public_intelligence.data.audit_data.enrichment.content_gaps.executive_summary}} を参照できます。
セキュリティ:APIキーは、直接貼り付けずに、MakeのConnectionまたはCustom Variableに保存してください。
応用パターン
プロダクトごとのRouter
webhookのあとにRouterを置き、1.report.product で振り分けます。
- 分岐1:
signal→ AI Visibilityのワークフロー - 分岐2:
scan→ Site Auditのワークフロー - 分岐3:
solutions→ Strategyの要約配信
1つのwebhook URLで、すべての種類のレポートを処理できます。
複数クライアント向けのエージェンシーの設定
1.report.summary.business_name をクライアントの識別子にしてData storeを参照し、クライアントごとにシートのタブやNotionのページへ振り分けます。各クライアントは、最初に1回だけ POST /v1/brands/ensure でSurmadoのブランドとして作成し、以降のレポートでは brand_slug を再利用します。
トークンの形式
Intelligence Tokenの接頭辞:
- AI Visibility:
SIG-YYYY-MM-XXXXX(正規表現:SIG-\d{4}-\d{2}-[A-Z0-9]{5}) - Site Audit:
SCN-YYYY-MM-XXXXX(正規表現:SCN-\d{4}-\d{2}-[A-Z0-9]{5}) - Strategy:
SOL-YYYY-MM-XXXXX(正規表現:SOL-\d{4}-\d{2}-[A-Z0-9]{5})
トークンに有効期限はありません。REST APIの署名付きダウンロードURLは約15分間有効です。webhookに入っているマジックリンクの pdf_url は、約30日間有効です。
トラブルシューティング
webhookトリガーが動作しない:レポート作成の呼び出しで webhook_url を設定したか確認してください。また、webhook.site をテスト用のURLに使うと、Surmadoがペイロードを送っているか確認できます。
下流のモジュールでフィールドが undefined になる:レポートにそのフィールドの値が入っていないか(たとえば、競合が特定されていないブランドでは top_competitor がnullです)、サマリーを持たないStrategyのレポートを見ている可能性があります。1.report.product でプロダクトを確認してください。
HTTPモジュールが401を返す:APIキーがないか、形式が正しくありません。ヘッダーは Authorization: Bearer sur_live_...(Bearer を含む)にする必要があります。
オペレーションの使用量が想定より多い:RouterとFilterは、それぞれ1回の実行につき1オペレーションとして数えられます。できるだけまとめてください。マッピングした値を使う1つのGoogle Sheetsモジュールのほうが、複数のモジュールを使うより安く済みます。
関連:API連携ガイド | 構造化データとIntelligence Token | Zapier連携 | n8n連携 | Notion連携