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?

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つでも投稿に失敗するとその後が実行されない可能性があるので、最後まで確実に実行させるにはエラー処理が必要。)

3SNS 一括投稿
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)
Mastodon, Bluesky 画像投稿
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 を使ったソースコードを返してきて、問題なさそうな感じ。なかなかやりおる。

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?