【#Python】Twitter(X)BOTのWEBアプリを介さずに自動ポストをしてもらう方法。

ソフトウェア パソコン

こんすが、夏加よすがです。

未だに意地でもTwitter(X)って表記を譲らないよすがさんです。

わたしの中では一生「Twitter」であることは消えないのですが、世間ではなんだか「X」という名称に毒されてる人がいるので、そういう人へのわずかばかりの配慮として「Twitter(X)」なんです。

TwitterはTwitterだろうがよ、Xとかいうあだ名は一生認めません(過激派)。

今回はTwitter(X)のBOTをほぼ自分のパソコン内で完結して作成する方法を備忘録しておきます。

 

この記事では主に「Vtuberが定期的に宣伝用ポストをすること」を目的に解説していきます。

なので、ハッシュタグの選出や投稿内容、想定する使用用途は大体Vtuberさん向けだと思って下さい。

ただし、この記事に記載するコード自体はVtuberに限らず利用できるものですので、解説を元に自力でカスタマイズして使用して頂くといいかと思います。

この方法でできること

ハッシュタグや投稿禁止文言、URL記載に関する制限なしに他社BOTアプリを使うことなくTwitter(X)の定期投稿BOTが作れます。

一部BOTアプリでは有料会員にならないと投稿内容に制限がかけられる場合がありますが、URLの使用や使用禁止文言に引っかからずに投稿可能です。

「下1桁が1の日にはこの内容のポストを行う」といった設定も可能です。

「実行日の日時を取得してポストに組み込む」も可能です。

「画像を添付する」「3種類の画像からランダム選択」も可能です。

カスタマイズの自由度が高く、Pythonが分かるのであればこの記事に記載している以外にも自由なパターンで投稿が出来ると思います。

前準備

必要なものは以下の通りです。

  • Pythonのインストール
  • Twitter(X)APIキー等の取得
  • テキスト編集ソフト(わたしは「Sublime Text」を使います)
  • タスクスケジューラ(Windows標準搭載)

これらに関しては当記事では解説省略します。

Pythonのインストールで一個だけ注意するのは、インストール時の設定で「Add python.exe to PATH」にチェックを入れることを忘れないということ。

Twitter(X)APIキー等に関しては、以下の情報をメモ帳などにコピペして保存しておいて下さい。

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

ちなみにこのAPIキー等の情報、外部に漏れてしまうと見知らぬ第三者に悪用されて勝手にポストされることなどありますので、絶対に人には見せないように。

最終的にはPythonでこのAPIキー等を使用して自動で投稿をしてもらうわけですが、もし他の誰かにサンプルとして.pyファイルを譲渡することがあれば自分のAPIキーを消すのを忘れずに。

 

あとは、分かりやすいところにTwitterBOT用のフォルダでも作っておいて下さい。

わたしはCドライブ直下に「_AutoDailyCommand」ってフォルダを作って、APIキーのメモもコードも投稿用画像も全部そこに格納していきます。

以降の説明でもこのフォルダ(「BOT用フォルダ」と呼称します)に格納しているのを前提にした説明をするので、フォルダの場所や名前を違うものにする場合は適宜ご自身で対応して下さい。

 

今回はWindows基準で説明するので、BOTの自動定期投稿にはタスクスケジューラを使用します。

MacやLinuxの場合はまた異なるシステムを使う必要があるので、そちらに関しては各自調べて下さい。

LinuxであればCronが類似機能になるのかな?

使用するコード解説

一定のポストを定期的に行う場合

まずは「毎回同じ内容をポストする」というコードから。

BOT用フォルダ内に任意の名前で.py形式のファイルを作成して下さい。

このファイルはダブルクリックするとPythonで実行してしまうので、右クリックからSublime Textを指定して開きます。

Sublime Textで開いたら以下のコードをコピペして下さい。

BOT_001.py (python)
import tweepy

# Twitter Deverloper Portalで取得したAPIキー等をコーテーション('')の間にそれぞれ入れる
API_KEY = 'xxxxxxxxxxxxxxxx'
API_KEY_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
BEARER_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
ACCESS_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
ACCSESS_TOKEN_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

client = tweepy.Client(bearer_token = BEARER_TOKEN, consumer_key = API_KEY, consumer_secret = API_KEY_SECRET, access_token = ACCESS_TOKEN, access_token_secret = ACCSESS_TOKEN_SECRET)

#ポストする文字列をダブルコーテーション("")の間に書く
client.create_tweet(text="""おはようございます!
改行は普通のテキストと同じように使えます!
好きな文字列にしてね!""")

 

APIキー等は先程取得したものに差し替えて下さい。

ポストする文字列も任意のものに変更して構いません。

改行は普通のポストと同じように入れてもらえればちゃんと反映されるはずです。

改行が反映される理由

よく見てもらえればダブルコーテーション(“”)が三重になっているのが分かると思うのですが、三重にすることによって特に記号など必要なく改行が反映される仕組みとなっております。
この後実際に提示しますが、ダブルコーテーションを一重に減らし、改行コード(\n)を使用して改行する方法もあります。
使いやすい方を使って頂ければ大丈夫です。

出来上がったら上書き保存して、実際に実行してみましょう。

.pyファイルをPythonで開くのがデフォルト設定してあれば、ダブルクリックで即時実行できるはずです。

これで正しくポスト出来ていればPythonファイルの設定はOKですが、もし出来ていない場合はAPIキーが間違っていないかなど確認して下さい。

確認用に投稿されたポストは、後でまた確認作業を行うために削除しておきます。

 

問題なければ次はタスクスケジューラに登録して定期的に実行してもらう仕組みを作ります。

スタートメニューの「Windows 管理ツール」というフォルダの中に「タスクスケジューラ」というソフトがあるのでそれを開きます。

すると左上の方に「タスクスケジューラライブラリ」というフォルダみたいなものがあるので、それを右クリックして「新しいフォルダー」を作成。

名前はTwitterの自動投稿用BOTであることが分かるようなものにしておけばいいと思います。

これは後々になっても管理しやすいように目立つところにフォルダを作りたいだけなので、管理できるならフォルダを作らなくても構いません。

フォルダを作った人は、今作ったフォルダを開いてそこに「基本タスクの作成」をします。

  1. 基本タスクの作成
    名前:任意の名前。投稿内容が分かるようにしておけば後々管理しやすい。
    説明:記入不要。必要なら記入してもいい。
  2. トリガー
    いつタスクを開始しますか?:毎日
    ※任意で毎週・毎月など設定できるがひとまず今回は「毎日」に設定した場合とする。
    開始:日付はそのままでOK
    時間は自分が毎日投稿して欲しい時間を指定する(今回は07:00:00で設定)。
    間隔:毎日投稿なら「1日」でOK
  3. 操作
    タスクでどの操作を実行しますか?:プログラムの開始
    プログラム:pythonw.exeを選択
    ※インストール場所によるので自分で探してね。
    引数の追加:C:\_AutoDailyCommand\BOT_001.py
    ※自分のBOT_001.pyがある場所を指定してね。
  4. 完了

これで「今日から毎日7時にBOT_001.pyが実行される」ので、BOT_001.pyで設定した文面が投稿されます。

タスクスケジューラに正しく設定出来たか確認のため、登録したタスクを右クリックして「実行する」を押してみてポストが即時投稿されたか確認して下さい。

ひとつ前のステップでお試しで出力したポストと重複してなければちゃんと投稿されるはずです。

もし上手く投稿されてない場合は、プログラムと引数の指定が正しいかどうか確認して下さい。

pythonw.exeを指定する理由

Pythonを指定する時、必ず「pythonw.exe」という「w」が付いた方のプログラムを使用しましょう。
「pythonw.exe」と「python.exe」の違いは、プログラムの実行の際にウィンドウを表示するかどうか(こっそり実行するか)です。
「pythonw.exe」による実行は表面上はこっそり裏で実行して完了するのに対し、「python.exe」による実行ではほんの一瞬ではありますがコマンドプロンプト(黒い画面)が出てきて完了すると勝手に閉じるという挙動になります。
この一瞬黒い画面が表示されることにより、直前に触っていたウィンドウ(ゲームだとかブラウザだとか)が非アクティブになってしまうため、例えばアクションゲームをしてる最中にプログラム実行してしまうとゲーム操作が一時中断されるという事故が起きてしまいます。
そのため特段の理由がない限り「pythonw.exe」で実行するようにしましょう。

ここまでで一旦、一定のポストを定期的に行う設定は完了です。

日の下1桁が特定の数字の場合に投稿内容を変える場合

次は応用編①です。

プログラム実行の際に次の挙動を加えていきます。

  1. 実行時点の「日」の情報を取得する
  2. 実行時点の「日」の下1桁が1・3・5の場合はそれぞれ指定の投稿内容をポストする
  3. それ以外の日は投稿しない

このコードではタスクスケジューラによってBOT_001.pyを毎日実行するものの、実行日の下1桁が指定の数字の日じゃない場合はポストしないという挙動にします。

もちろん、それ以外の日は「それ以外の日専用のポスト」を行うことも可能ですが、一旦ポストしないケースで説明します。

実行日の下1桁が1の場合とは、1日・11日・21日・31日が当てはまります。

それでは以下のコードを使用して下さい。

BOT_001py (python)
import tweepy
from datetime import datetime

# Twitter Deverloper Portalで取得したAPIキーをコーテション('')の間にそれぞれ入れる
API_KEY = 'xxxxxxxxxxxxxxxx'
API_KEY_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
BEARER_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
ACCESS_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
ACCSESS_TOKEN_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

client = tweepy.Client(bearer_token = BEARER_TOKEN, consumer_key = API_KEY, consumer_secret = API_KEY_SECRET, access_token = ACCESS_TOKEN, access_token_secret = ACCESS_TOKEN_SECRET)

# 現在の日付を取得
today = datetime.now()
day = today.day
month = today.month

# ツイート内容を日にちに応じて変化させる
if day % 10 == 1:
    tweet_text = f"おはようございます!\n今日は1日です!\n#{month}月のVTuberフォロー祭り #おはようVtuber #Vtuberさんと繋がりたい\nhttps://youtube.com/@NatsukaYosuga"
elif day % 10 == 3:
    tweet_text = "おはようございます!\n今日は3日です!\n#おはようVtuber #RTしたVtuber全員フォローする\nhttps://youtube.com/@NatsukaYosuga"
elif day % 10 == 5:
    tweet_text = "おはようございます!\今日は5日です!\n#おはようVtuber #新人Vtuberさんと繋がりたい\nhttps://youtube.com/@NatsukaYosuga"
else:
    tweet_text = None

# ポストする
client.create_tweet(text=tweet_text)

 

さっきと同じくAPIキーなどは自分のものに差し替えて下さい。

先程との大きな相違点は、さっきは「ポストするコマンド実行のところで直接投稿内容を指定していた」のに対して、「事前に条件によって投稿パターンを設定した後でポストするコマンド実行している」という点です。

このコードでは一つの投稿パターンにつき1行で記述するパターンで、もし改行を入れたい場合は改行箇所に「\n」を入れることで改行可能となっております。

わたしは1行でまとめた方がすっきりして見えるし、大雑把に文字数が多すぎないかが分かりやすいと思ってるのでこっちを推奨します。

「tweet_text = None」はそのまま「投稿内容なし」の意味で、こうすると

「elif day % 10 == 5:」は「下1桁が5の場合」という意味のコードです。

もしこれ以外の日、例えば下1桁が「7日」の場合にも投稿パターンを用意したい場合は、

BOT_001py (python)
elif day % 10 == 7:
    tweet_text = "おはようございます!\今日は7日です!\n#おはようVtuber #新人Vtuberさんと繋がりたい\nhttps://youtube.com/@NatsukaYosuga"

 

このようなコードを5日の投稿内容の次の行に差し込んで下さい。

 

ちなみに下1桁が「1日」の場合の投稿では「#{month}月のVTuberフォロー祭り」というタグを挿入しています。

これは実行日の「月」の部分を自動で取得して差し替えてくれるもので、例えば2月1日に実行された場合は「#2月のVTuberフォロー祭り」というタグになるわけです。

ただしこの場合は11日にも21日にも投稿されてしまうので、そこはご留意下さい。

「毎月1日のみ投稿内容A」で「それ以外の下1桁1日の場合は投稿内容B」という方法はこの次に紹介します。

このように投稿内容の中に「月日」といった情報を仕込む場合に注意しなければならないのが、「tweet_text」のダブルコーテーション(“”)の直前に「f」の一文字を入れなければならないことです。

この「f」という文字を入れることによって、文字列の中に直接変数や式を埋め込むことが出来るというもので、「f」を入れ忘れると「{month}」が数字に置き換わりません。

逆にこういう変数を差し込まないのであれば「f」は削除しておいて大丈夫です。

 

タスクスケジューラには先程「毎日7時投稿」で設定してあるので、毎日7時に実行する度に日付けを参照して投稿内容を自動で変更してくれます。

特定の日にちだけ投稿内容を変える場合

さて、さっきのコードだと下1桁が1日の場合には「#{month}月のVTuberフォロー祭り」というタグ付ツイートをするのですが、これだと11日にも21日にも31日にもこのタグが使われてしまいます。

正直なところ「#{month}月のVTuberフォロー祭り」は月初めの1日だけでいいですよね。

これに関する対応はめちゃくちゃ簡単なのでさっくり書いていきます。

BOT_001py (python)
import tweepy
from datetime import datetime

# Twitter Deverloper Portalで取得したAPIキーをコーテション('')の間にそれぞれ入れる
API_KEY = 'xxxxxxxxxxxxxxxx'
API_KEY_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
BEARER_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
ACCESS_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
ACCSESS_TOKEN_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

client = tweepy.Client(bearer_token = BEARER_TOKEN, consumer_key = API_KEY, consumer_secret = API_KEY_SECRET, access_token = ACCESS_TOKEN, access_token_secret = ACCESS_TOKEN_SECRET)

# 現在の日付を取得
today = datetime.now()
day = today.day
month = today.month

# ツイート内容を日にちに応じて変化させる
if day == 1:
    tweet_text = f"おはようございます!\n新しい月が始まりました!\n#{month}月のVTuberフォロー祭り #おはようVtuber #Vtuberさんと繋がりたい\nhttps://youtube.com/@NatsukaYosuga"
elif day % 10 == 1:
    tweet_text = f"おはようございます!\n今日は1日です!\n#おはようVtuber #Vtuberさんと繋がりたい\nhttps://youtube.com/@NatsukaYosuga"
elif day % 10 == 3:
    tweet_text = "おはようございます!\n今日は3日です!\n#おはようVtuber #RTしたVtuber全員フォローする\nhttps://youtube.com/@NatsukaYosuga"
elif day % 10 == 5:
    tweet_text = "おはようございます!\今日は5日です!\n#おはようVtuber #新人Vtuberさんと繋がりたい\nhttps://youtube.com/@NatsukaYosuga"
else:
    tweet_text = None

# ポストする
client.create_tweet(text=tweet_text)

 

こちらに関しては非常なシンプルな仕組みで、ただ「day == 1:」つまり「日にちが1日である」ってだけの記述です。

月1回、5日だけ特定の投稿がしたいなら「day == 5:」を加えれば可能です。

これにより、月1回この日だけはこの投稿を行うといったことができるため、「#{month}月のVTuberフォロー祭り」のようなタグが使いやすくなりますね。

注意点としては、「特定の日にち指定」の記述は「下1桁の指定」よりもに記述するということ。

例えば「下1桁が1日の場合」の記述をした後に「日にちが31日の場合」の記述をした場合、さきに「下1桁が1日の場合」の条件に引っかかって実行されてしまうので「日にちが31日の場合」の投稿は行われません。

こういうIF文での指定は優先度は上の行から順に当てはまったものを実行されるので、記述の順番は間違えないように。

プラスして画像を添付する場合

では、次は画像を添付してみましょう。

添付したい画像はあらかじめBOT用フォルダ直下に格納しておきます。

例として一旦画像ファイル名は「image1.png」から始まるナンバリングで管理し、パターン毎に別画像を使用するものとします。

BOT_001.py (python)
import tweepy
from datetime import datetime

# Twitter Deverloper Portalで取得したAPIキーをコーテション('')の間にそれぞれ入れる
API_KEY = 'xxxxxxxxxxxxxxxx'
API_KEY_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
BEARER_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
ACCESS_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
ACCESS_TOKEN_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

client = tweepy.Client(bearer_token=BEARER_TOKEN, consumer_key=API_KEY, consumer_secret=API_KEY_SECRET, access_token=ACCESS_TOKEN, access_token_secret=ACCESS_TOKEN_SECRET)
auth = tweepy.OAuth1UserHandler(API_KEY, API_KEY_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth)

# 現在の日付を取得
today = datetime.now()
day = today.day
month = today.month

# ツイート内容を日にちに応じて変化させる
if day == 1:
    tweet_text = f"おはようございます!\n新しい月が始まりました!\n#{month}月のVTuberフォロー祭り #おはようVtuber #Vtuberさんと繋がりたい\nhttps://youtube.com/@NatsukaYosuga"
    image_path = "image1.png"
elif day % 10 == 1:
    tweet_text = "おはようございます!\n今日は1日です!\n#おはようVtuber #Vtuberさんと繋がりたい\nhttps://youtube.com/@NatsukaYosuga"
    image_path = "image2.png"
elif day % 10 == 3:
    tweet_text = "おはようございます!\n今日は3日です!\n#おはようVtuber #RTしたVtuber全員フォローする\nhttps://youtube.com/@NatsukaYosuga"
    image_path = "image3.png"
elif day % 10 == 5:
    tweet_text = "おはようございます!\n今日は5日です!\n#おはようVtuber #新人Vtuberさんと繋がりたい\nhttps://youtube.com/@NatsukaYosuga"
    image_path = "image4.png"
else:
    tweet_text = None
    image_path = None

# ポストする(ツイート本文と画像がある場合のみ)
if tweet_text and image_path:
    media = api.media_upload(filename=image_path)
    client.create_tweet(text=tweet_text, media_ids=[media.media_id])

これでそれぞれのパターンで指定の画像が添付されるようになるはずです。

例えば「#おはようVtuber」での投稿の際はあらかじめ用意したおはV画像を添付し、日替わりにすることでBOTだけどワンパターン感がちょっと減るでしょう。

添付する画像をランダム選択する場合

ここで画像指定の方法にさらにひと手間加えることで、ワンパターン化を軽減させます。

BOT_001.py (python)
import tweepy
from datetime import datetime
import random

# Twitter Deverloper Portalで取得したAPIキーをコーテション('')の間にそれぞれ入れる
API_KEY = 'xxxxxxxxxxxxxxxx'
API_KEY_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
BEARER_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
ACCESS_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
ACCESS_TOKEN_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

client = tweepy.Client(bearer_token=BEARER_TOKEN, consumer_key=API_KEY, consumer_secret=API_KEY_SECRET, access_token=ACCESS_TOKEN, access_token_secret=ACCESS_TOKEN_SECRET)
auth = tweepy.OAuth1UserHandler(API_KEY, API_KEY_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth)

# 現在の日付を取得
today = datetime.now()
day = today.day
month = today.month

# ツイート内容を日にちに応じて変化させる
if day == 1:
    tweet_text = f"おはようございます!\n新しい月が始まりました!\n#{month}月のVTuberフォロー祭り #おはようVtuber #Vtuberさんと繋がりたい\nhttps://youtube.com/@NatsukaYosuga"
    image_path = random.choice(["image1_A.png", "image1_B.png", "image1_C.png"])
elif day % 10 == 1:
    tweet_text = "おはようございます!\n今日は1日です!\n#おはようVtuber #Vtuberさんと繋がりたい\nhttps://youtube.com/@NatsukaYosuga"
    image_path = random.choice(["image2_A.png", "image2_B.png", "image2_C.png"])
elif day % 10 == 3:
    tweet_text = "おはようございます!\n今日は3日です!\n#おはようVtuber #RTしたVtuber全員フォローする\nhttps://youtube.com/@NatsukaYosuga"
    image_path = random.choice(["image3_A.png", "image3_B.png", "image3_C.png"])
elif day % 10 == 5:
    tweet_text = "おはようございます!\n今日は5日です!\n#おはようVtuber #新人Vtuberさんと繋がりたい\nhttps://youtube.com/@NatsukaYosuga"
    image_path = random.choice(["image4_A.png", "image4_B.png", "image4_C.png"])
else:
    tweet_text = None
    image_path = None

# ポストする(ツイート本文と画像がある場合のみ)
if tweet_text and image_path:
    media = api.media_upload(filename=image_path)
    client.create_tweet(text=tweet_text, media_ids=[media.media_id])

これは見て分かるかと思うのですが、投稿する画像を設定した3つの中から1つランダム選択して投稿するというコードです。

コードの頭の方に「import random」を加えるのをお忘れずに。

これによりパターンごとに投稿する画像がランダム化されるので、「下1桁が2日」の時に毎回同じイラストしか投稿されない、ということが防げます。

応用で作れそうなパターン提案

ここまでで「実行日の日にち」に重きをおいた投稿パターンを作ってきましたが、もちろん指定できるのは日にちだけはありません。

この他に多分作れるんじゃないかな(絶対作れるとは言ってない)という投稿パターンは以下のような場合です。

  • 曜日によって指定する(月曜はこれ、火曜ならこれ等)
  • 時間帯によって指定する(別ファイルで作ってタスクスケジューラに別途登録)
  • 月+日や日+曜日などの掛け合わせで指定する(2月かつ15日、13日かつ金曜日等)
  • 祝日で指定する(jpholidayというPythonライブラリを使う)
  • 季節指定する(あらかじめ月によって春夏秋冬を割り当てる)
  • 天気で指定する(OpenWeatherMapや気象庁APIを使用する)
  • ポストの文章自体をランダム化する(同じ下1桁が1日の場合でも文章Aと文章Bのどちらかをランダム選択する)
  • 画像ではなく動画を添付する(単純にimage_pathを書き換えるだけでは作れないはずなので注意)

また、Pythonだけでは構築できるかわかりませんが(というか確実に他サービスとの連携は必要)、ChatGPTみたいなOpenAIと組み合わせて投稿内容にもっと大きく幅を持たせることもできるとは思います。

例えば季節と天気と曜日を取得して「春で週末のお花見時なのに雨で残念だね」のような感じで。

OpenAIを使うならトレンド情報を取得して、そのトレンドの単語に関連した文章を作って投稿とかもできそうですね。

BOT運用の注意点

これでBOT運用ができるようになったわけですが、この自動定期投稿BOTを運用するにあたっていくつか注意しておくべきだろうという点を挙げておきます。

BOT運用は自己責任

まず、BOT運用によって起きたいかなる事故や損害に関してわたしは一切責任を持てません。

例えばAPIキーをうっかり漏出してしまいました、誰かに悪意をもって公序良俗に反する投稿をされました、となってもわたしにはどうしてあげることも出来ません。

APIキー等の情報はPythonファイルに普通に書いてあるので、うっかりインターネットの海に放出してしまった場合、急いで再ジェネレートして変更して下さい。

シャドウバンされる可能性がある

BOTによる定期的かつ一定の投稿が続くと、もしかしたらシャドウバンと言ってフォロワーのTLに出てこなくなったり、検索に引っかからなくなる現象が起きる可能性があります。

まあ普通に手動で運営してても起きる時は起きるし明確な原因はわからないので、BOT運用しなかったからと言って必ずしもシャドウバンされないってわけじゃないですが、定期投稿の内容がワンパターンかつ頻度が高いなど条件が揃うとシャドウバンされる可能性はゼロではありません。

わたしは今のところシャドウバンされたことはありませんが、以下の場合は注意して下さい。

  • 手動ポストよりBOT定期ポストの方が頻度が高い
  • BOTの投稿頻度が過度に高い
  • BOT投稿しかしていない

これに関しても自己責任でお願いします。

BOTを敬遠・忌避する人もいる

フォロワーの中には、BOTによる中身のない投稿を忌避する人もいます。

特にリスナーさんとかは推しのアカウントを通知ONにしていて、通知が来て「おっ!」と思って開いたらBOTでがっかり……というケースも考えられます。

1回2回なら「ああ、なんだ」で済みますが、それが2回に1回とか3回に1回とか頻度高いとうんざりしてきますよね。

なので、なるべく手動による中身の人がいるポストを多めにしてBOTの頻度を相対的に減らすか、そもそもBOT専用アカウントを用意した方がいい気がします。

わたしはVtuberメインアカウントと別に宣伝専用アカウント(ほぼBOT運用)を持っているので、おはVおやVと言った本来手動ですべきポストは宣伝専用アカウントでのみ行っています。

メインアカウントでは手動ポストメインで、BOTによる投稿は1日1回まで、くらいの気持ちですね。

ただし、例えば月初めに「定期的な配信ルールの周知」「定期イベントの実施告知」を目的とするような場合はメインアカウントで投稿していいと思います。

BOT実行にはパソコンが起動中である必要がある

タスクスケジューラを使っている時点で察していると思いますが、この方法だとパソコンが起動している間しか稼働しません。

なので、この手法で安定して自動投稿できるのは以下のような場合です。

  • パソコンがほぼ24時間付けっぱなしの人
  • サブPC・サーバー用PCなど普段使い以外のPCがある人
  • 在宅フルリモートで日中も夜間も何かしらパソコンを使う人

もしこれらに当てはまらないパターンは、オンライン上でPythonを実行できるようなシステムを使うといいかもしれませんね。

GitHub Actionsとかが使いやすそうな気がします。

わたしは在宅勢かつパソコン24時間稼働な人なので、この手法でも特に困っていないです。

 


これで自動定期投稿に関する説明は終わりです。

自動化する方法を提示しておきながらこんなこと言うのもアレですが、毎日の挨拶投稿は基本的に手動でやった方がいいとは思います……。

毎朝「今日は推しはなんて言ってるかな」ってわくわくして待ってる人もいるかもしれまんしね。

なので、今回は例としておはようVtuber投稿で作りましたが、どちらかと言うと「こんなVtuberです!チャンネル登録よろしくね!」みたいなフォロワーへの定期的な自己紹介とかに使った方がいいんじゃないかなって思います。

月1回、新規リスナー向けの周知したい内容の投稿だとか、大事なことだけにした方がBOT運用する意味があると思います。

まあ例えば「#〇月のVtuberフォロー祭り」のような定期的に開催されるし宣伝のために投稿しなきゃと思ってるんだけど、毎月1日になると忘れてて波に乗れずにいるんだよね~と言う場合は、あらかじめ毎月のフォロー祭り画像を作っておいて勝手に投稿させるのはアリだと思いますよ。

あと毎週月・木に定期配信がほぼ確実にある!みたいな人は配信開始30分前に「そろそろ配信の時間になりますよ!」みたいな時報として使うのも一応アリかな?

節度を持ってBOT運用して頂ければ幸いです。

ここまで読んでくれたら「いいね」やSNS共有してね!


   

コメント

コメントはありません

※投稿日より30日間のみコメント可能

error: Content is protected !!