2
1

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)上には、某格闘ゲームの技名や、某テレビ番組の名前をランダムに並び替えて投稿するbotがありますよね。
今回の記事では、Serverless Frameworkを使って簡単にX botを作成します!

準備

nodeのインストール

$ brew install node

Serverless Frameworkのインストール

$ npm i serverless -g

awscliのインストール

$ brew install awscli

次にIAMを作成して、発行したアクセスキーとシークレットアクセスキーをAWS CLIに設定します。(IAMの作成方法については今回は省略します。)

$ aws configure
AWS Access Key ID [None]: アクセスキーを入力
AWS Secret Access Key [None]: シークレットアクセスキーを入力
Default region name [None]: 
Default output format [None]: 

次に、プロジェクトを作成しましょう!

プロジェクト作成

slsコマンドを入力すると、プロジェクトを作成できます。
入力を求められたら以下を参考に適当に進めてください!

$ sls
✔ Select A Template: · AWS / Node.js / HTTP API
✔ Name Your Project: · xbot
✔ Create Or Select An Existing App: · Create A New App
✔ Name Your New App: · xbot

プロジェクトが作成されたら、ディレクトリを移動します。

$ cd xbot

以上で準備は完了です!

実装

handler.jsファイルを以下の内容に書き換えます。
今回は「Switch2当選しますように!」と複数回呟くコードにしています。(現在の筆者の心の叫び)
この部分は好きに書き換えてください。

handler.js
const { TwitterApi } = require('twitter-api-v2');

// ツイート内容を生成
const makeTweet = () => {
  const times = Math.floor(Math.random() * 5) + 1;
  return Array(times).fill('Switch2当選しますように!').join(' ');
};

// ツイート処理
module.exports.hello = async () => {
  const twitter = new TwitterApi({
    appKey: process.env.X_API_KEY,
    appSecret: process.env.X_API_KEY_SECRET,
    accessToken: process.env.X_ACCESS_TOKEN,
    accessSecret: process.env.X_ACCESS_TOKEN_SECRET,
  });
  
  const result = await twitter.v2.tweet(makeTweet());
  
  return { 
    statusCode: 200, 
    body: JSON.stringify({ message: 'succeed!' }) 
  };
};

環境変数の設定

プロジェクト直下にenv.ymlファイルを作成し、以下の情報を記述します。
これらの値は、Xの開発者ポータルから発行してください!
※発行した後、ツイートできるように開発者ポータルで権限を修正する必要があるので注意してください。

env.yml
X_ACCESS_TOKEN: xxx
X_ACCESS_TOKEN_SECRET: xxx
X_API_KEY: xxx
X_API_KEY_SECRET: xxx

設定ファイルの編集

serverless.ymlproviderに以下の行を追加します。

serverless.yml
provider:
  name: aws
  runtime: nodejs20.x
  environment: ${file(./env.yml)} # 追加

必要なパッケージのインストール

$ npm install twitter-api-v2

いざ、AWSへデプロイ

以下コマンドを実行すると、AWS Lambdaにアップロードされます。

$ sls deploy

デプロイが完了すると、エンドポイントURLが表示されます。
そのURLにアクセスするとLambda関数が実行され、ツイートが投稿されます!
レスポンスとして{"message":"succeed!"}と返ってきたら成功です!🎉
自分のXアカウントを確認して、投稿されているか確認しましょう!

スクリーンショット 2025-06-18 23.18.18.png

できてそうですね!
このままだと毎回URLにアクセスする必要がありますが、EventBridgeを使って定期実行するように設定することもできます。設定方法は今回は省略しますが、比較的簡単にできるので、ぜひ試してみてください。

デプロイしたLambda関数の削除方法

以下コマンドを実行することで、今回デプロイしたリソースを削除できます。

$ sls remove

まとめ

今回はServerless Frameworkを使って、簡単にX botを作成しました。Amazon Bedrockなどと連携してAIに内容を考えさせて投稿するbotなども作ることができるので、ぜひ色々な応用を効かせて楽しんでみてください!

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?