0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

X(旧Twitter) API入門 〜 自動投稿でラクしよう

Last updated at Posted at 2025-11-19

導入

個人開発でX APIを使ってみたので実装方法を共有します。

自分の使い方としては、cronなどのスケジューラーと合わせて新コンテンツの紹介を夜8時とかに自動投稿されるようにしています。

手動で最初はやっていたが面倒で続けられなかったので、X APIを利用するようにしてみました。

※本記事はX APIの使い方のみで。スケジューラーの紹介はしていないです

プラン

投稿メインなら無料プランでも十分使える。有料プランは高額

  • 無料プラン
    • 100読取/月
    • 500投稿/月

42338d1c-77db-4c09-aac0-4231fe9775cb.png

https://docs.x.com/x-api/introduction

x developer potalで登録

実際に利用する手順を説明していく。

以下URLにアクセス。basicとproの有料プランが大きく表示されるが、よく見ると下に「Sign up for Free Account」があるのでこちらから無料プランの登録ができる

https://developer.x.com/en/portal/petition/essential/basic-info

549ef814-6038-4c15-9f96-473c64fbd57c.png

「XのデータとAPIのすべてのユースケースを説明してください」というフォームを入力する

CleanShot_2025-11-19_at_11.31.082x.png

こちらは250文字以上で入力が必要。X APIの利用ケースを教えてchatGPTに英語で作成してもらうのがオススメ

送信したら登録完了。最初は審査があるのかと思ってたが、すぐにAPI利用できた。

簡単な動作確認 ~ユーザー情報の取得

Bearer Tokenの作成

Projects & Apps > サイドバー一番下のappを選択 > Keys and tokens > Bearer Token

CleanShot_2025-11-19_at_19.49.292x.png

任意のAPIクライアントツールでBearer Tokenを設定する
postmanの例ではAuthorizationタブで以下のようにBearer Tokenを設定する

CleanShot_2025-11-19_at_19.57.282x.png

クエリ

以下のクエリでパスに任意のユーザーidを指定することで、そのユーザー情報を取得できる

https://api.x.com/2/users/by/username/:user

CleanShot_2025-11-19_at_19.57.502x.png

投稿方法

投稿権限の付与

Projects & Apps > サイドバー一番下のappを選択 > Settings > User authentication settings

投稿ができるようにApp permissionsをRead and writeに変更して保存

CleanShot_2025-11-19_at_11.47.512x.png

キー作成

Access Token and SecretとOAuth 2.0 Client ID and Client Secretの4つ必要

Projects & Apps > サイドバー一番下のappを選択 > Settings > Keys and tokens

CleanShot_2025-11-19_at_19.49.292x 1.png

環境変数の場合.envファイルに以下のように用意しておく

TWITTER_API_KEY=
TWITTER_API_SECRET=
TWITTER_ACCESS_TOKEN=
TWITTER_ACCESS_TOKEN_SECRET=

コード記述

今回はTypeScriptでライブラリはnode-twitter-api-v2を使用
https://www.npmjs.com/package/twitter-api-v2

他言語のライブラリなどは以下参照
https://docs.x.com/x-api/tools-and-libraries/overview#javascript-node-js-/-typescript

以下の処理をスケジューラーと組み合わせることで定期的な自動投稿などが可能になります。

単純な投稿

import { TwitterApi } from 'twitter-api-v2'

// Twitter APIクライアントを作成
const client = new TwitterApi(
  {
    accessSecret: env.TWITTER_ACCESS_TOKEN_SECRET,
    accessToken: env.TWITTER_ACCESS_TOKEN,
    appKey: env.TWITTER_API_KEY,
    appSecret: env.TWITTER_API_SECRET,
  }
).readWrite

await client.v2.tweet({
  text: 'ツイート内容',
})

メディア添付

// 画像をアップロード
const mediaId = await client.v1.uploadMedia('./image.png')

// 画像を指定してツイートを投稿
const tweet = await client.v2.tweet({
  media: {
    media_ids: [mediaId]
  },
  text: 'ツイート内容',
})

リプライツイート

const tweet = await client.v2.tweet({
  text: 'ツイート内容',
})

 await client.v2.tweet({
    reply: {
      in_reply_to_tweet_id: tweet.data.id,
    },
    text: 'リプライツイート内容',
  })

その他ドキュメント参照

他にも色々できるのでドキュメント参照ください

v1:https://github.com/plhery/node-twitter-api-v2/blob/master/doc/v1.md

v2:https://github.com/plhery/node-twitter-api-v2/blob/master/doc/v2.md

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?