BlueskyにAPIから画像、リンク、ハッシュタグ付きでツイートする最小Pythonスクリプト。とても面倒
カテゴリー:#サイト運営関連(記事数:31)

2025.10.06

BlueskyにAPIから画像、リンク、ハッシュタグ付きでツイートする最小Pythonスクリプト。とても面倒

メモ
  • atprotoライブラリーを利用。さくらレンタルサーバーにはライブラリー入らなかったのでロリポップサーバーにエンドポイントを設置。
  • x.comのAPIと違い、画像、リンク、ハッシュタグそれぞれ別要素として渡す必要がある。
  • 画像は縦横サイズまで渡さないと無駄な余白がつく。
  • 下記では画像の縦横比を取得するためだけにPillowライブラリーを使用している。
うちのサイトの内容をBlueskyに配信開始しました↓
Blueskyは登場しては消えていく多くのSNSと違ってそれなりに利用者がいて最小限のコミュニティー&情報収集場所としての地位を確立出来ている感じだね。
スクリプト
from atproto import Client, client_utils, models
from PIL import Image

# ツイート内容、画像は事前にファイルとしてローカルに保存してある場合
posttext='ツイートのテキスト'
posttag='test'
postimage='embedphoto.jpg'
posturl='https://usepocket.com'

# Blueskyのアカウント
account = "fetuin.bsky.social"
pwd = "xxxxxxxxx"

# BlueskyのAPIにアクセス開始
client = Client(base_url='https://bsky.social')
client.login(account, pwd)

# 投稿内容を作成
text_builder = client_utils.TextBuilder()

# テキストをセット
text_builder.text(posttext)
# リンクをセット
text_builder.link('リンクだよ', postlink)
# ハッシュタグをセット
text_builder.tag("#"+posttag, posttag)

# 画像を読み込んでPillowを使い縦横の長さを取得
with Image.open(postimage) as im:
  width, height = im.size

#画像をセット
with open(postimage, "rb") as f:
  image = client.upload_blob(f.read())
images = [models.AppBskyEmbedImages.Image(alt="photo", image=image.blob,aspect_ratio={"width": width, "height":height})]
image_embed = models.AppBskyEmbedImages.Main(images=images)

# Blueskyに投稿
client.send_post(text_builder,embed=image_embed)


イーロンマスクが私物化してるし、収益化の目途がついたらx.comが不自由なSNSになっていくのは目に見えているのでBluskyをそれなりの規模に育てておくのが皆のためな気がする。

Category:#サイト運営関連



■ ■ ■ コメント ■ ■ ■

いいっすね!=14

名前 ↑B

コメント(※改行は省略されます)

※3回以上の連続書き込み不可
この記事のアクセス数:

本カテゴリーで直近コメントが書かれた記事


→カテゴリー:#サイト運営関連(記事数:31)
本カテゴリーの最近の記事(コメント数)