連携
Webhook(Zapier、Make、n8n、カスタム)
完成したすべての記事を署名付き JSON Webhook として受け取れます。正確なペイロード、ヘッダー、署名検証、Zapier の手順を説明します。
更新日 2026-09-13
ネイティブ連携がないサイトでも、Climb AI は完成した各記事を、署名付きの HTTPS POST 1 回でお客様が管理する URL に配信します。HTML、Markdown、プレーンなフィールドとして送信されるため、Zapier の zap、Make のシナリオ、n8n のワークフロー、独自のルートがそれぞれ必要なものを受け取れます。
- 1エンドポイントを作成するZapier の「Catch Hook」トリガー、Make/n8n の Webhook トリガー、またはご自身のサイト上のルートです。公開 HTTPS のみに対応し、Climb AI は
http://および内部/プライベートホストを拒否します。 - 2Climb AI に追加するサイト設定で Webhook を選択し、URL を貼り付けます。シークレットを空欄にすると自動生成されます(一度だけ表示され、
whsec_で始まります)。ご自身のものを貼り付けてもかまいません。 - 3ping で検証するClimb AI は署名付きの
pingイベントを送信し、接続を保存する前に 2xx レスポンスを要求します。
送信される内容
| ヘッダー | 値 |
|---|---|
| Content-Type | application/json |
| X-ClimbAI-Event | article.published(検証テストの場合は ping) |
| X-ClimbAI-Delivery | 記事ごとの安定した ID — art_<articleId> — により、再試行を重複排除できます |
| X-ClimbAI-Signature | t=<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" }
}
}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);
}JSON パースによって再シリアライズされる前の、生のリクエストボディに対して検証してください。再文字列化すると空白が変わり、署名チェックが失敗します。
返すべき内容
15 秒以内に 2xx ステータスを返してください。公開 URL がわかっている場合は、任意で { "url": "https://yoursite.com/the-post" } と返信できます。Climb AI はそれを記事の公開 URL として記録します。その他の 2xx ボディでも問題ありませんが、その場合は URL を認識できません。
リダイレクトは失敗として扱われ(追跡しません)、配信に失敗すると 5 秒から始まる指数バックオフで最大 3 回再試行します。すべての試行が失敗すると、記事は「公開に失敗」とマークされ、理由が UI に表示されます。
Zapier Catch Hook の手順
- 1Zap を作成するトリガーとして Webhooks by Zapier を選択し、イベントは Catch Hook を選びます。
- 2URL をコピーするZapier が生成した Webhook URL を、Climb AI の Webhook 連携設定に貼り付けます。
- 3テストして構築するClimb AI からテスト送信を実行します。Zapier が JSON をサンプルデータとして取得するので、
data.html、data.markdown、または SEO フィールドを使って Zap の残りの部分にマッピングできます。
よくある質問
Webhook で接続したサイトの記事に限り、予定された公開日に実行されます。ネイティブ連携が公開するのと同じタイミングです。
関連
- 記事のエクスポート(HTML、Markdown、JSON) — エディターから直接、任意の記事をHTML、Markdown、JSONとしてダウンロードできます。JSONはWebhookが受け取るオブジェクトと同じものです。
- サイトを接続する — 各オンボーディング ステップで求められる内容、自動入力される項目、公開プラットフォームを選ぶ場所を説明します。
- 通知 — どのイベントがアプリ内またはメールで通知されるか、そして各カテゴリをオンまたはオフにする方法を説明します。
ご自身のサイトで試してみませんか?
5日間の無料トライアル。6日目まで請求はなく、その後は30日間の返金保証が付きます。
5日間無料トライアル · 30日間返金保証 · 価格は永久固定
まだお困りですか? hello@climbai.io