広告 アダアフィ アダアフィ日記

【アダアフィ日記 #09】TwitterAPIでbot投稿

5月 19, 2024

こんにちは、たろうです。

今日はTwitterAPIでbot投稿を再開したので、ちょっと技術的な話になるけど、忘備録を兼ねてPHPで実装した内容を書いておこうと思う。
ツイリアの契約も考えているけど、費用面の考慮と、プロキシ×自作bot投稿で凍結やリプバンがどれだけ発生するのかを検証したいので、まずは自分のVPSサーバーからbotで投稿を続けてみようと思う。

Xディベロッパー登録

まずはXのディベロッパー登録を行い、APIキーを取得する。

Taro

現在の無料プランで行えるのは、主に自分のアカウントの情報取得(フォロワー数など)と、投稿(ポスト)ぐらい。
投稿の取得は無料プランではできなくなっているので注意しよう。

無料プランに登録

APIキーはアカウントごとに発行する必要がある。
あらかじめ発行したいXのアカウントにログインしておこう。

①公式サイトへ移動

早速公式サイトに移動し、「Subscribe now」をクリック。

②無料プランの選択

一番下の「Sign up for Free Account」をクリック。

③利用ケースの申請

APIを利用するケースを記入し、各チェックを入れて「Submit」をクリック。
DeepL翻訳文字数チェックサイトを活用して、250文字以上で記入しよう。

Taro

この段階で特に審査が入るわけではなさそうなので、
APIの使用目的やXのルールに従う旨をシンプルに書いておけばOK。

このようにダッシュボード画面が表示されれば、ディベロッパー登録は完了。

APIキーの取得

続いてAPI使用時に使うAPIキーを取得していこう。

①ユーザー認証設定

まずはこのアカウントの認証設定を済ませよう。

Taro

この認証設定を済ませておかないと、ツイートのできないRead権限のみのAPIキーが出来上がってしまうんだ。

ダッシュボード中央の「PROJECT APP」にある歯車をクリック。

続いて「User authentication settings」の「Set up」をクリック。

ユーザー認証の設定画面が表示されるので、以下のように設定を行う。

  • App permissions
    Read and write」を選択。この設定のおかげでポストもできるAPIキーが作れる。
  • Type of App
    Web App, Automated App or Bot」を選択。
  • App info - Callback URI / Redirect URL
    特に使わないので「https://x.com/」でおk。
  • App info - Website URL
    こちらも同様に「https://x.com/」でおk。

入力が完了したら右下の「Save」をクリックし、確認画面で「Yes」をクリックすれば登録は完了。
その後表示されるClientIDとClient Secretは今回は使わないので、スルーしてOK。

②APIキーの取得

ユーザー認証の設定が完了したら、いよいよ有効なAPIキーを取得していこう。

アプリの設定画面から、上部中央タブの「Keys and tokens」をクリック。

続いて「Consumer Keys」の「API Key and Secret」にある「Regenerate」をクリックし、
確認画面が表示されたら「Yes, regenerate」をクリック。

すると「API Key」と「API Key Secret」が表示されるので、それぞれ「Copy」をクリックして保存しておこう。

③アクセストークンの取得

続いてアクセストークンを取得する。
このトークンがアカウントを指定するものになる。

キー設定画面で「Access Token and Secret」の「Generate」をクリック。

すぐに発行されるので、こちらもそれぞれコピーして控えておこう。

これで必要な認証情報の4つがすべてそろった。後程使うので、無くさないように保存しておこう。

  • API Key
  • API Key Secret
  • Access Token
  • Access Token Secret

PHPで投稿

早速PHPでXにポストしてみよう。
使用するライブラリは、TwitterOAuth

①ライブラリのインストール

公式のマニュアルにのっとり、composerで入れておこう。

composer require abraham/twitteroauth

②ライブラリのインポートとインスタンスの作成

composerでダウンロードしたライブラリをソースコード内で読み込み、クラスのインスタンスを作成する。
この時に先ほど用意した認証情報の4つをそれぞれ読み込ませよう。

require "vendor/autoload.php";

use Abraham\TwitterOAuth\TwitterOAuth;

// TwitterOAuthクラスのインスタンスを作成
$connect = new TwitterOAuth( $api_key, $api_key_secret, $access_token, $access_token_secret );
// Twitter API v2. を利用する
$connect->setApiVersion('2');
// プロキシの指定(プロキシを通してAPIを利用する場合のみ)
$connect->setProxy([
    'CURLOPT_PROXY' => 'プロキシのIPアドレス',
    'CURLOPT_PROXYUSERPWD' => 'プロキシのユーザー:パスワード',
    'CURLOPT_PROXYPORT' => プロキシのポート番号,
]);

③投稿する

あとは投稿するだけ。

$post_data = array(
	'text' => $body, #投稿したいツイート文
);

#返信したいときに該当のtweet_idを入れる。任意。
$post_data['reply'] = array(
	'in_reply_to_tweet_id' => $reply_tweet_id
);

#投稿
$result = $connect->post(
	'tweets',
	$post_data
); 

ちなみに無料プランでできることはかなり限られているが、該当アカウントのフォロワー数の取得とかはできた。

$result = $connect->get(
	'users/me', 
	array(
		'user.fields' => ['public_metrics'] // フォロワー数等
	)
);

#この$resultの中のpublic_metricsにフォロワー数等の情報が入っている

これで投稿処理を作ってcronでうまいこと自動投稿をすれば、ツイリアのように楽な運用が見えてくる。
あとは凍結との戦いだろう。手動運用やプロキシの活用をして、上手に付き合っていきたいところ。

  • この記事を書いた人

たろう

タイ在住のアフィリエイター
最新総フォロワー数:
𝕏:
総収益 0円 $5

現在アダアフィ挑戦中|英語・タイ語ガチ勢|現地民とお酒を飲むために語学勉強

-アダアフィ, アダアフィ日記