ClimbAI
連携

Webhook(Zapier、Make、n8n、カスタム)

完成したすべての記事を署名付き JSON Webhook として受け取れます。正確なペイロード、ヘッダー、署名検証、Zapier の手順を説明します。

更新日 2026-09-13

ネイティブ連携がないサイトでも、Climb AI は完成した各記事を、署名付きの HTTPS POST 1 回でお客様が管理する URL に配信します。HTML、Markdown、プレーンなフィールドとして送信されるため、Zapier の zap、Make のシナリオ、n8n のワークフロー、独自のルートがそれぞれ必要なものを受け取れます。

  1. 1
    エンドポイントを作成する
    Zapier の「Catch Hook」トリガー、Make/n8n の Webhook トリガー、またはご自身のサイト上のルートです。公開 HTTPS のみに対応し、Climb AI は http:// および内部/プライベートホストを拒否します。
  2. 2
    Climb AI に追加する
    サイト設定で Webhook を選択し、URL を貼り付けます。シークレットを空欄にすると自動生成されます(一度だけ表示され、whsec_ で始まります)。ご自身のものを貼り付けてもかまいません。
  3. 3
    ping で検証する
    Climb AI は署名付きの ping イベントを送信し、接続を保存する前に 2xx レスポンスを要求します。

送信される内容

ヘッダー
Content-Typeapplication/json
X-ClimbAI-Eventarticle.published(検証テストの場合は ping
X-ClimbAI-Delivery記事ごとの安定した ID — art_<articleId> — により、再試行を重複排除できます
X-ClimbAI-Signaturet=<unix timestamp>,v1=<HMAC-SHA256 hex digest>
{
  "id": "art_66f1c2...",
  "event": "article.published",
  "createdAt": "2026-09-13T10:15:00.000Z",
  "data": {
    "id": "66f1c2...",
    "title": "How to Choose a Climbing Harness",
    "slug": "how-to-choose-a-climbing-harness",
    "html": "<h1>...</h1><p>...</p>",
    "markdown": "# How to Choose a Climbing Harness\n\n...",
    "excerpt": "A quick guide to fit, weight and gear loops.",
    "seo": { "metaTitle": "...", "metaDescription": "...", "focusKeyword": "climbing harness" },
    "featuredImageUrl": "https://.../featured.webp",
    "ogImageUrl": "https://.../og.webp",
    "scheduledFor": null,
    "website": { "id": "...", "url": "https://example.com", "name": "Example Co" }
  }
}
article.published の本体
function verify(secret, rawBody, header) {
  const { t, v1 } = Object.fromEntries(header.split(',').map(kv => kv.split('=')));
  if (Math.abs(Date.now() / 1000 - t) > 300) return false; // 5-min tolerance
  const expected = require('crypto').createHmac('sha256', secret).update(`${t}.${rawBody}`).digest('hex');
  const a = Buffer.from(expected, 'hex'), b = Buffer.from(v1, 'hex');
  return a.length === b.length && require('crypto').timingSafeEqual(a, b);
}
Node.js での検証(Stripe と同じ方式)
JSON パースによって再シリアライズされる前の、生のリクエストボディに対して検証してください。再文字列化すると空白が変わり、署名チェックが失敗します。

返すべき内容

15 秒以内に 2xx ステータスを返してください。公開 URL がわかっている場合は、任意で { "url": "https://yoursite.com/the-post" } と返信できます。Climb AI はそれを記事の公開 URL として記録します。その他の 2xx ボディでも問題ありませんが、その場合は URL を認識できません。

リダイレクトは失敗として扱われ(追跡しません)、配信に失敗すると 5 秒から始まる指数バックオフで最大 3 回再試行します。すべての試行が失敗すると、記事は「公開に失敗」とマークされ、理由が UI に表示されます。

Zapier Catch Hook の手順

  1. 1
    Zap を作成する
    トリガーとして Webhooks by Zapier を選択し、イベントは Catch Hook を選びます。
  2. 2
    URL をコピーする
    Zapier が生成した Webhook URL を、Climb AI の Webhook 連携設定に貼り付けます。
  3. 3
    テストして構築する
    Climb AI からテスト送信を実行します。Zapier が JSON をサンプルデータとして取得するので、data.htmldata.markdown、または SEO フィールドを使って Zap の残りの部分にマッピングできます。

よくある質問

Webhook で接続したサイトの記事に限り、予定された公開日に実行されます。ネイティブ連携が公開するのと同じタイミングです。

関連
  • 記事のエクスポート(HTML、Markdown、JSON) エディターから直接、任意の記事をHTML、Markdown、JSONとしてダウンロードできます。JSONはWebhookが受け取るオブジェクトと同じものです。
  • サイトを接続する 各オンボーディング ステップで求められる内容、自動入力される項目、公開プラットフォームを選ぶ場所を説明します。
  • 通知 どのイベントがアプリ内またはメールで通知されるか、そして各カテゴリをオンまたはオフにする方法を説明します。
ご自身のサイトで試してみませんか?

5日間の無料トライアル。6日目まで請求はなく、その後は30日間の返金保証が付きます。

5日間無料トライアル · 30日間返金保証 · 価格は永久固定

まだお困りですか? hello@climbai.io

$0.00で今すぐ試す