← RankBloomに戻る

Publish API

RankBloomは、接続したWebサイト向けにSEOブログ記事を作成します。Publish APIは、完成した記事をRankBloomから送り出し、WordPressサイト、CMS、自動化プラットフォーム、あるいは自作のコードなど、届けたい場所へ渡すための仕組みです。

公式WordPressプラグイン、ZapierおよびMake連携の裏側で動いているのも、同じAPIです。

ベースURL

https://app.getrankbloom.com/api/publish

認証

すべてのリクエストには 接続トークンが必要です。RankBloomの 接続で作成します。サイトとプラットフォームを選び、 接続を作成をクリックします。トークンは一度しか表示されず、ハッシュとしてのみ保存されるため、作成時に必ず控えておいてください。

トークンは1つのサイトに紐づきます。次のいずれかのヘッダーで送信してください:

Authorization: Bearer rb_live_xxxxxxxx
X-RankBloom-Token: rb_live_xxxxxxxx
X-API-KEY: rb_live_xxxxxxxx

3種類を受け付けているのは、共用サーバーやマネージドホストが Authorizationを削除することが多く、一部の自動化プラットフォームが既定で X-API-KEY ヘッダーを送信するためです。

トークンは絶対にクエリ文字列に入れないでください。 アクセスログや、経路上のすべてのプロキシに記録されてしまいます。APIはそこからトークンを読み取りません。

接続の失効は即座に反映されます。失効済みのトークンと未知のトークンは同じレスポンスを返すため、その差からは有効なトークンを探り当てられません。

エンドポイント

GET /v1/ping

トークンを検証し、何に紐づいているかを返します。接続テストとしてご利用ください。

curl https://app.getrankbloom.com/api/publish/v1/ping \
  -H "Authorization: Bearer rb_live_xxxxxxxx"
{
  "ok": true,
  "contract_version": 1,
  "label": "Example Site",
  "connection": { "id": "…", "name": "Make — Example Site", "platform": "make" },
  "site": { "id": "…", "name": "Example Site", "url": "https://example.com" }
}

label は、接続に付けた名前を、入れ子にせずそのまま返すフィールドです。自動化プラットフォームは、これを接続済みアカウントのラベルとして使います。

GET /v1/posts

接続中のサイトの最近の記事を、新しい順に返します。読み取り専用で状態を変更しないため、一定間隔でのポーリングにも安全に使えます。

パラメータ既定値備考
limitinteger25最大100
offsetinteger0スキップする記事の件数
sinceISO 8601この日時以降に作成された記事のみ
curl "https://app.getrankbloom.com/api/publish/v1/posts?limit=100&offset=0" \
  -H "Authorization: Bearer rb_live_xxxxxxxx"
{
  "ok": true,
  "contract_version": 1,
  "count": 46,
  "limit": 100,
  "offset": 0,
  "posts": [ … ]
}

ページング。 パラメータ offsetlimit ずつ増やすと、アーカイブをさかのぼれます。総件数は返しません。 limit より少ない件数のページが返ってきたら、そこが末尾です。結果は作成日時、次にidの順に並ぶため、2件の記事が同じタイムスタンプを持つ場合でもページングは安定します。

POST /v1/status

記事がどうなったかをRankBloomに伝えます。「引き渡した」を「公開済み」に変えるのがこのエンドポイントで、同じ記事が再び配信されるのを防ぎます。

curl -X POST https://app.getrankbloom.com/api/publish/v1/status \
  -H "Authorization: Bearer rb_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "post_id": "b86cbffe-…",
    "status": "delivered",
    "external_url": "https://example.com/my-post",
    "external_id": "123"
  }'
フィールド必須備考
post_idはいフィールド id の取得元は /v1/posts
statusはいdelivered, failed または skipped
external_urlいいえ公開先のURL
external_idいいえ連携先システム側のID
errorいいえ失敗した場合はその理由

ステータスを報告できるのは、そのトークンが紐づくサイトの記事だけです。

記事のペイロード

正規の形式は1つだけで、バージョン管理に使うフィールドは contract_version.

フィールド備考
idstring値は変わりません。冪等キーとして使えます
title, slug, excerptstringslug は重複を解消したあとの最終的な値です
content_html, content_mdstring本文。両方の形式で返します
meta_title, meta_descriptionstringSEOメタデータ
primary_keyword, keywords, category, tagsstring / array分類情報
canonical_urlstring設定されている場合の正規URL
schema_json_ldobjectパース済み。JSON文字列では返しません
featured_image_urlstringホスト済みの画像。そのまま使えます
audio_urlstringナレーションがある場合はその音声
audio_duration_seconds, audio_voicenumber / stringナレーションの詳細
statusstringpublished または draft
author, author_title, author_urlstring著者署名
created_at, published_atISO 8601タイムスタンプ

すべてのキーは常に存在します。 該当しない値は null が返り、キー自体が省略されることはありません。ナレーションのない記事は単に audio_url: nullとなります。これはエラーではなく通常の状態です。キーが欠けている前提ではなく、nullが返る前提で連携を実装してください。

この仕様は 追加のみです。既存フィールドの名称変更・型変更・削除は行いません。稼働中の連携がバージョン1を無期限に呼び続けるためです。互換性を壊す変更が必要になった場合は、このバージョンと並行して提供する新しいバージョンとして公開します。

エラー

エラー時は、対応するHTTPステータスと、人が読めるメッセージを含むJSONボディを返します。

{ "ok": false, "error": "Invalid or revoked connection token." }
ステータス意味
400必須フィールドが未指定、または形式が不正です
401トークンが未指定、不明、または失効しています
404その記事はこの接続に属していません

すぐ使える連携

コードを書く必要はありません。同じAPIを、次の形ですでにラップしてあります:

サポート

APIに関するご質問や、ドキュメントどおりに動作しない点があれば、お問い合わせ先は support@getrankbloom.com.