X(旧Twitter)と連携し、コンテンツ投稿時にXへ自動投稿する
KurocoではX(旧Twitter)と連携することで、コンテンツ投稿後にXへ自動投稿したり、APIを実行しXに投稿する等、X自動投稿機能が実装できます。
本チュートリアルでは、KurocoとXの連携方法と、コンテンツ投稿時にXへ自動投稿する方法を記載します。
X側の仕様変更により、本チュートリアルの手順や画面が実際と異なる場合があります。最新情報はX Developer Platformでご確認ください。
X APIは従量課金制(pay-per-use)です。ポスト作成は1件あたり$0.015(リンクを含む場合は$0.20)が課金されます。詳細はX Developer Consoleで確認できます。
Kurocoが使用するX API v2のエンドポイント(POST /2/tweets)を利用するには、Pay-per-useプランが必要です。Freeプランではポストの投稿ができません。
Xの設定
1. Xアカウントを作成する
KurocoとXを連携する場合、Xアカウントを取得していることが前提となります。まだアカウントを持っていない場合はX sign upよりアカウント作成をお願いします。
Xへの登録方法は、Xヘルプセンターをご確認ください。
2. X Developer Consoleでアプリを作成する
X Developer Consoleにアクセスし、Xアカウントでサインインします。 初回ログイン時、Developer AgreementおよびPolicyの同意や、利用目的などの基本情報の入力を施された場合は対応します。

Developer Consoleのダッシュボードから、Pay-per-useプランのアプリを作成します。「アプリ in Pay per use」を選択し、[New App](または[Create App])をクリックします。

「アプリ in Free」では、Kurocoが使用するX API v2のポスト投稿エンドポイント(POST /2/tweets)にアクセスできません。
環境は「Development」「Staging」「Production」から選択できます。本番運用では「Production」を選択してください。

[新しいクライアントアプリケーションを作成]をクリックしてアプリを作成します。
3. 認証情報を保存する
アプリが作成されると、以下の3つの認証情報が生成されます。
| 認証情報 | 説明 | Kurocoでの使用 |
|---|---|---|
| コンシューマーキー(Consumer Key) | アプリの識別に使用します。 | 使用する |
| Secret Key(Consumer Secret) | アプリの識別に使用します。 | 使用する |
| ベアラートークン(Bearer Token) | アプリ単位の認証(公開データの読み取り)に使用します。 | 使用しない |
コンシューマーキーとSecret Keyをコピーし、安全な場所に保存してください。
認証情報は一度しか表示されません。紛失した場合は再生成が必要ですが、再生成すると以前の認証情報は無効になります。

4. アプリの権限を設定する
Kurocoからポストを投稿するには、アプリの権限を「Read and write」に設定する必要があります。
Developer Consoleでアプリの設定画面を開き、Settingsを開きます。

「アプリの権限」で「読み取りと書き取り」を選択します。

| 権限レベル | 説明 |
|---|---|
| 読む | ポスト、ユーザー、公開データの閲覧のみ。投稿はできません。 |
| 読み取りと書き取り | Read onlyの権限に加えて、ポストの投稿・削除、フォロー/フォロー解除、いいね、リポストが可能です。 |
| 読み書きおよびダイレクトメッセージ | Read and writeの権限に加えて、ダイレクトメッセージの送受信が可能です。 |
コールバックURI (リダイレクトURL)とウェブサイトURLを設定し、[Save]をクリックします。
| 項目 | 記載例 | 説明 |
|---|---|---|
| コールバックURI / リダイレクトURL | https://example.com/twitter-to-kuroco | OAuth認可後のコールバックURLを記入します。 |
| ウェブサイトURL | https://example.com | サイトURLを記入します。 |

権限を変更した場合、既存のAccess Tokenは新しい権限に対応しません。Kurocoとの連携後に権限を変更する場合は、アクセストークンとアクセストークンシークレットを再生成し、Kurocoに再設定する必要があります。
5. Access Token and Secretを生成する
Developer Consoleでアプリの設定画面から[Keys and tokens]を開きます。 同じ[Keys and tokens]画面で、「アクセストークン」の[再生成]をクリックします。

アクセストークンとアクセストークンシークレットが生成されます。内容をコピーし、安全な場所に保存します。

Access Tokenはアプリの所有者のXアカウントに紐づきます。投稿はこのアカウントから行われます。
以上でX側の設定は完了です。
Kurocoの設定
Kuroco管理画面より、[外部システム連携] -> [Twitter]をクリックします。

コピーした認証情報を記入し、[更新する]をクリックします。
X Developer Consoleの表記とKuroco管理画面の項目は以下のように対応しています。
| Kuroco管理画面の項目 | X Developer Consoleの表記 | 説明 |
|---|---|---|
| 有効にする | — | チェックを入れます。 |
| API Key | コンシューマーキー | X Developer Consoleの「Consumer Key」を記入します。 |
| API Key Secret | コンシューマーキーシークレット | X Developer Consoleの「Consumer Secret」を記入します。 |
| Access Token | アクセストークン | X Developer Consoleの「Access Token」を記入します。 |
| Access Token Secret | アクセストークンシークレット | X Developer Consoleの「Access Token Secret」を記入します。 |

Twitter Keyが登録されました。

利用方法
カスタム処理を使って自動投稿する
コンテンツの追加・更新をトリガーにXへ自動投稿するには、カスタム処理を使用します。
Kuroco管理画面より、[オペレーション] -> [カスタム処理]をクリックします。

カスタム処理一覧画面より[追加]をクリックします。

カスタム処理を下記設定にて作成します。
| 項目 | 記載例 |
|---|---|
| タイトル | X自動投稿 |
| 識別子 | kuroco_to_twitter |
| トリガー | トリガー:コンテンツの追加後 対象:コンテンツの追加後に投稿をしたいコンテンツ定義を選択 |
| 処理 | 下記ソースコードの内容を記載します。 |
{assign var=url value="`$smarty.const.ROOT_URL`/article/`$topicsData.slug`"}
{twitter_post_message var=res text="記事の更新をしました!`$url`"}
入力後、[追加する]をクリックしカスタム処理を保存します。
カスタム処理で使用するSmartyプラグイン{twitter_post_message}の詳細は、Smartyプラグインリファレンスをご確認ください。
設定後、対象コンテンツ定義にコンテンツを投稿すると、カスタム処理で設定した内容がXにポストされます。
X APIの従量課金により、テスト投稿にも料金が発生します。リンクを含むポストは1件あたり$0.20が課金されるため、テスト時はご注意ください。
メール送信でXに投稿する提供版: β / RC版
X連携が有効な状態で、カスタム処理のメール送信先に @tweets.twitter.r-cms.jp 宛のアドレスを指定すると、メール本文の内容がXへのポストとして投稿されます。
既存のLINE(@text.line.r-cms.jp)やChatworkへのメール送信と同じ仕組みです。
宛先フォーマット
<twitter_id>@tweets.twitter.r-cms.jp
<twitter_id> の部分には任意の識別子を指定します。投稿はサイトに設定されたX連携の認証情報(API Key / Access Token)を使用して行われます。
設定例
カスタム処理のメール送信アクションで、宛先に @tweets.twitter.r-cms.jp を指定します。メール本文がそのままXへのポストとして投稿されます。
| 項目 | 設定値 |
|---|---|
| 宛先 | <twitter_id>@tweets.twitter.r-cms.jp |
| 本文 | Xに投稿したいテキスト |
関連ドキュメント
サポート
お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。