はじめに
KG-7thの槙島です。
Typescript(javascriptでもほぼ同じ)のnode.jsを使って
X(旧Twitter)の自動投稿アプリを作成する方法について、記事に起こしてみます。
XのAPIはお金がかかるイメージをお持ちの方もいるかもしれませんが、
投稿するだけなら無料でできます。
悪質なBot目的でなければ積極的に活用してよいと思います
事前準備
XのAPIを利用するためには、Twitter Developer Portalでアプリを作成し、APIキーを取得する必要があります。
以下のページにアクセス>右上の「開発者ポータル」のリンクを開いて投稿したいアカウントでログインして
必要事項を入力すればOKです。
https://developer.x.com/ja
トークンを作成する
読み取りと書き込みを選択する
他の必要事項は使わないので適当に。。
Client IDとClient Secretが生成されるのでコピーして保管する(使い道は正直知らない・・)
Access Token と Access Token Secretを生成する
(初めて生成するときはGenerate表記になっている)
実装編
前提
今回はtwitter-api-v2ライブラリを使用します
https://www.npmjs.com/package/twitter-api-v2
バージョンは1.22.0を使いました。
もしうまくいかなければ、バージョンを上記に合わせてみてください。
それでもうまくいかない場合はTwitterの仕様変更ですね。。。
なお、npm initでプロジェクト作成するとかの手順は省略してます。コードだけ載せます。
認証情報を設定したインスタンスの作成
環境変数じゃなくて直接文字列を入れても動きます。
// Twitter APIキーインスタンスを生成
const twitterInstance = new TwitterApi({
// APUキーを環境変数から取得
appKey: process.env.APP_KEY!,
// APIシークレットを環境変数から取得
appSecret: process.env.APP_SECRET!,
// access tokenを環境変数から取得
accessToken: process.env.ACCESS_TOKEN!,
// access token secretを環境変数から取得
accessSecret: process.env.ACCESS_TOKEN_SECRET!,
});
// 権限はread/writeを指定
const client = twitterInstance.readWrite;
ツイートの投稿
await client.v2.tweet("テストの投稿です!!");
画像付きツイートの投稿
// 画像をアップロードしてメディアIDを取得
const imageId = await this.client.v1.uploadMedia("<画像のファイルパスを指定>");
// ツイートを行う
await client.v2.tweet("画像付きツイートです!!", { media: { media_ids: [imageId] } });
上記を使ったプロジェクトは以下で公開してます。
以上!
参考になったらうれしいです。
節度を守ってBot運用していきましょう