見出し画像

gpt-4o-miniとtwikitならX自動投稿BOTを月額0.6円で簡単に作れる

皆様ハロー、暑さ以外は好調が続いているスマイルです('ω')ノ

Xのアカウントを自動で運用しようと試行錯誤している方々へ、一つのアンサーとなりそうな仕組みを思い付きました。

"openaiAPI+XAPIでAIが作ったテキストを自動投稿"という仕組みは誰でも思い付きそうですが、これだとランニングコストが嵩むし仕様が複雑で気軽に構築できるもんじゃなかったんすよ。

ところが!

つい最近、openaiが"gpt-4o-mini"という頭が良くてクソ安い神モデルをリリースし、さらにXAPIに変わるtwikitという無料pythonライブラリを使う事で、ランニングコストを極限まで抑えたX自動投稿botを構築できるようになっちゃったんですね~。

という事で、今回は夏休みの自由研究に低コストで継続運用できるX自動投稿bot作ってみました。

記事が面白かったらフォロー&♥よろしくお願いしますm(_ _)m


仕上がりはこんな感じ

丁度1年くらい前にAI筋肉イケメン画像を投稿するアカウントがあったんで、"星座別の今日の運勢"を自動でポストするアカウントに転生させてみました。

筋肉イケメン占い師、ここに爆誕!

1ヶ月毎日ポストしても0.6円!?

gpt-4o-miniを日本語で利用すると実際どれくらい課金されるか、テストで600文字程度のテキスト生成を20回くらい連打してみました。

結果はこちら。

安い!っていうか表示が$0.01から動かないっ!

openaiAPIのコスト表示は最小単位が$0.01からなので、コストが安過ぎて厳密にいくら消費されているのか把握できませんっ!

何とかコストを計算してみます。

◆ 600文字×20件=12,000文字
◆ $0.01×160円=1.6円
◆ 1.6円/12,000文字=0.00014円/文字

と言う事で、全角1文字あたり0.00014円らしいので140文字のポストを1件投稿すると、0.0196円。これを1ヶ月31日間投稿したとして、0.0196円×31日=0.6076円。

つまり、"gpt-4o-miniで毎日140文字のポストを自動投稿しても0.6円しか請求されない"。

本当か?計算間違ってる?

SNS界隈がbotで溢れかえりそうなんですけど。別にいいけど笑

テキスト生成のコストが想定より安上がりだったし、さすがに140文字で魅力的な占いを伝えるのは難しいので、長文が投稿できるXプレミアムの一番安いプランに加入してみる。

占いポストは1投稿あたり600文字程度でそれなりの見栄えになったので、600文字×31投稿=18,600文字×0.00014円=2.604円。2,604円じゃないよ、約3円。

という事で、今回のプロジェクトのランニングコストは368円+2.6円=370.6円/月という結果になりました。

ごちゃごちゃしたのでまとめると、

600文字のポストを毎日自動投稿するアカウントは370.6円/月で運用できる

一方で、

140文字のポストを毎日自動投稿するアカウントは0.6円/月で運用できる

です。今回のプロジェクトは前者です。

botの仕組み

今回は工程を5つに分けて実装してみました、こんな感じ。

◆ 文章生成:gpt-4o-mini
◆ 投稿機能:twikit
◆ ログイン情報管理:Secret Manager
◆ デプロイ:cloud functions
◆ 定期実行:Cloud Scheduler

デプロイ先と定期実行に関しては、外部にアクセス出来てスケジューラが備わっているサーバーならどこでもいいです。

僕はなるべくgoogle内のサービスに一元化したいので、cloud functionsとCloud Schedulerを選びました。

レンサバとかは厳しいかもしれないです、外部アクセスに制限があるサービスが多いんで、試してみないと分からないって感じですね。

それぞれの工程でやっている事を見ていきましょう。

文章生成(gpt-4o-mini)

chatGPTをAPI経由で使うにはopenaiAPIのassistantsAPIを使います。assistantsAPIでは使用するモデルを選択できるので、gpt-4o-miniを選択すると高性能なモデルが鬼安で使えちゃう。

assistantsAPIのInstructionsでモデルの人格をプロンプトで設定できるので、出力したいコンテンツに合わせて設定する。今回は星座占い師として振舞ってもらいました。

このassistantsAPIをcloud functionsから呼び出す事で星座占いのテキストを生成させてます。

投稿機能(twikit)

assistantsAPIで生成した占い結果を指定したXアカウントへポストします。

公式のXAPIが使いにくいので今回は無料のpythonライブラリである"twikit"を採用しています、公式に比べれば比較的使いやすい。

twikitの解説は以前記事にまとめたので必要な方は読んで下さい。

◆ twikit使用のリスク

記事にも書いてますが、twikitは内部的にスクレイピングの仕組みを採用しているそうで利用にはリスクがあります。なので当システムの使用は自己責任でお願いします

万が一、Xのアカウントがバンされても僕は一切の責任を負いかねますのでご了承下さいm(_ _)m

ログイン情報管理(Secret Manager)

twikitでは投稿するXのアカウントにログインする際、ログイン情報をcookieに保存する事で次回のログインステップを省略する事が可能です。

ログイン情報をcookieに保存しないとどうなるかっちゅーと、自動ポストするたびにXの通知がこんな事になります。

嫌でしょ?別デバイスからのログイン扱いになっちゃうらしい。

これを回避するためには下記のようなログイン情報をcookieに保存して、次回ログイン時に使い回す事が必要になります。

{
"att": "**********",
"auth_token": "**********",
"ct0": "**********",
"guest_id": "**********",
"guest_id_ads": "**********",
"guest_id_marketing": "**********",
"kdt": "**********",
"personalization_id": "**********",
"twid": "**********"
}

cloud functionsにはデータを保存する機能がないので、今回はSecret Managerというサービスにcookie情報を保存して、ログインの際に読み書きするようにしました。

Secret Managerの無料枠はこちら。

◆ 各シークレットごとに過去6verまで
◆ APIコール:10,000回/月まで

なので、今回の構築ではcookieの保存は最初に1回、ポストは毎日1回だけなので31コール/月となり無料枠内に収まります。

複数アカウントでゴリゴリの自動連投運用を目指している方は、月間のトータルAPIコールが10,000回を超えちゃうと課金されますのでご注意下さい。

デプロイ(cloud functions)

assistantsAPIとtwikitを実行するpythonスクリプトをデプロイします。

無料で使えてしっかりしているクラウドサーバーならどこでもいいですが、僕は使い慣れているcloud functionsにしました。

cloud functionsの無料枠についてはこちら。

◆ リクエスト数: 200万リクエスト/月
◆ 実行時間: 40万GB秒/月
◆ データ転送: 5GB/月

この範囲に収まれば無料で使わせてくれる神サービス、今回の構築ではいずれの項目も無料枠内に収まるように作りました。

ローカルでpython動かすのは簡単だけど、外部サーバーにデプロイとかやり出すと途端に複雑になる不思議。

下の方で、初めての方でもX自動ポストシステムを構築出来るように丁寧な作業マニュアルを公開してますんで、良かったらチャレンジしてみて下さい。

定期実行(Cloud Scheduler)

デプロイしたスクリプトを定期実行するための機能がこちら、期待値青天井のグレートな機能

Cloud Schedulerの無料枠はこちら。

◆ ジョブ3つまで無料

今回は定期実行用のトリガー1個だけ使うので当然無料、ありがてぇ~!

自動投稿botの作成手順

それでは激安!X自動投稿BOTの作り方を解説します。

まず事前に必要な物はこちら。

  • X投稿用アカウント

  • googleアカウント

  • openaiのアカウント

この3つは準備完了という前提で解説するので取得しておいて下さい。

openaiAPIキーの取得

まずはopenaiAPIを利用するためのAPIキーを作りましょう、作業は「playground > API Keys」でやります。

このAPIキーは後で使うのでメモっておきます。

assistntsAPIの作成

お次はassistantsAPIを作ります。

今回はサンプルとして名前に、

X自動投稿用:イケメン筋肉占い師

プロンプトは、

# あなたはイケメンで凄腕の男性星座占い師です、幅広く多様なアドバイスを得意としています
# 占いの内容は具体的で、1日の中で期待できる事、注意する事を明確に示してくれます
# 今日の運勢を占って下さい
# 星座の中で今日運勢の良いトップ3をピックアップし、3位から順に解説して下さい
# 占いは朝の7:00に投稿するので朝の挨拶を分かりやすい口語で書いて下さい
# 絵文字は禁止です
# 占いの出力は下記のテンプレに沿って下さい
--------
冒頭のあいさつ

### 第3位: 〇〇座(〇月〇日〜〇月〇日)
恋愛運:白黒星5段階評価
金運:白黒星5段階評価
仕事運:白黒星5段階評価
健康運:白黒星5段階評価
ここに運勢を反映した幅広い占いアドバイス

### 第2位: 〇〇座(〇月〇日〜〇月〇日)
恋愛運:白黒星5段階評価
金運:白黒星5段階評価
仕事運:白黒星5段階評価
健康運:白黒星5段階評価
ここに運勢を反映した幅広い占いアドバイス

### 第1位: 〇〇座(〇月〇日〜〇月〇日)
恋愛運:白黒星5段階評価
金運:白黒星5段階評価
仕事運:白黒星5段階評価
健康運:白黒星5段階評価
ここに運勢を反映した幅広い占いアドバイス

一日が始まる応援
--------

このように設定してみました。

今作ったassistantsをプログラム側から呼び出す際に、assistantsAPIのIDが必要になるのでこれもメモっておきます。

GCPでプロジェクト作成

"x_auto_post"としてGCPに新しくプロジェクトを作ります。

プロジェクト番号は後で使うのでメモっておく。

Secret Managerの設定

twikitのログイン情報cookieの保存先を作ります。

まずAPIを有効化します。

シークレットを作成します。

ここから先は

5,197字 / 21画像
この記事のみ ¥ 990

よろしければサポートお願いします、頂いたサポートは活動費として使用させて頂きより有意義な記事を書けるように頑張ります!