3つの SNS でも一括投稿できる。そう、 Python ならね
現在は行っていないが、かつて X, Mastodon, Bluesky の各 SNS に同一内容をポストするということをやっていた。 Python には各 SNS 投稿用のモジュールが用意されており、それぞれを呼び出すことでスクリプト一つで全部の SNS に投稿する環境が構築できる。
X
まず API を取得。
tweepy を使うと簡単に投稿できます。
画像の投稿には一工夫必要かも(試してみていない)。
Mastodon
まず、マストドン側の設定から、開発メニュー→新規アプリと開いて、クライアントキー・クライアントシークレット・アクセストークンの3つを取得。
Python 側では、 Mastodon.py をインストールし、以下のサイトの説明のように各項目を設定して実行。
画像投稿は media_post
で画像ファイルを指定した後、 status_post
で投稿する。
Bluesky
アプリパスワードを作った後、 atproto を用いて投稿する。
画像投稿のやり方はいくつかあるが、以下の記事の3に書かれている send_image
のやり方が一番容易か。
あとは連続で実行するだけ
エラー処理を考える必要がなければ、何かの変数(message あたり)に投稿したい内容を入れ、上記3つを続けて実行していくだけでよい。こんな雑なやり方でも投稿はできてしまう。 Python 様々である。
(どれか1つでも投稿に失敗するとその後が実行されない可能性があるので、最後まで確実に実行させるにはエラー処理が必要。)
message = '((投稿したい内容))'
## ツイート
import tweepy
# API情報を記入
BEARER_TOKEN = '((Bearer Token))'
API_KEY = '((API Key))'
API_SECRET = '((API Secret))'
ACCESS_TOKEN = '((Access Token))'
ACCESS_TOKEN_SECRET = '((Access Token Secret))'
# クライアント関数を作成
def ClientInfo():
client = tweepy.Client(bearer_token = BEARER_TOKEN,
consumer_key = API_KEY,
consumer_secret = API_SECRET,
access_token = ACCESS_TOKEN,
access_token_secret = ACCESS_TOKEN_SECRET,
)
return client
# ツイート関数
def CreateTweet(message):
tweet = ClientInfo().create_tweet(text=message)
return tweet
CreateTweet(message)
## トゥート
from mastodon import Mastodon
# API情報
api = Mastodon(
api_base_url = '((使用するインスタンスのURL))',
client_id = '((クライアントキー))',
client_secret = '((クライアントシークレット))',
access_token = '((アクセストークン))'
)
api.toot(message)
## Bluesky
from atproto import Client
api = Client()
api.login('((ユーザー名))', '((アプリパスワード))')
api.send_post(message)
filename_img = '((画像ファイル名))'
title = '((投稿本文))'
## トゥート
from mastodon import Mastodon
api = Mastodon(
api_base_url = '((使用するインスタンスのURL))',
client_id = '((クライアントキー))',
client_secret = '((クライアントシークレット))',
access_token = '((アクセストークン))'
)
media = api.media_post(filename_img)
api.status_post(status=title, media_ids=media)
## Bluesky
from atproto import Client
api = Client()
api.login('((ユーザー名))', '((アプリパスワード))')
with open(filename_img, 'rb') as f:
img_data = f.read()
api.send_image(text=title, image=img_data, image_alt='')
余談
非課金ユーザーにも X の生成 AI、 Grok が開放されたようなので、試しに「pythonでフォロワー数を取得する方法を教えて下さい」と尋ねてみた。
API キーの取得方法がざっくりだが、上記の Tweepy を使ったソースコードを返してきて、問題なさそうな感じ。なかなかやりおる。