古い記事
ランダムジャンプ
新しい記事
私が運営しているKindleセール情報まとめサイト「キンセリ」の SNS アカウントについてのお知らせです。

これまでは X (Twitter) でキンセリ公式アカウント @kinselist を運用していきましたが、それに加え、Bluesky でも運用開始しました。アカウントはこちらです。


ブルースカイユーザで Kindle セール情報を欲している方はぜひフォローしてくださいませ。

3/19 の夜から投稿プログラムを動かしていますが、バグはありつつもなんとか行けそうな感じになりました。

Bluesky に投稿する AT Protocol 関連のプログラムは python で書きました。といっても、Bluesky の公式サイトのサンプルプログラムにちょこっと追加したくらいです。

一応コードを載せておきます:
from atproto import Client, models
import sys

# 投稿するデータを読み込む(TSV 1行)
file_name = sys.argv[1]
with open(file_name) as f:
    s = f.read()

(header, title, description, uri, img_fn) = s.split('\t')

# 投稿の準備
client = Client(base_url='https://bsky.social')
client.login(login='kinseli.bsky.social', password='[アプリパスワード]')

# リンクカードで使う画像をアップ
img_path = '/home/USER/bluesky/img/' + img_fn
with open(img_path, 'rb') as f:
  img_data = f.read()

thumb = client.upload_blob(img_data)

# リンクカード
embed_external = models.AppBskyEmbedExternal.Main(
    external = models.AppBskyEmbedExternal.External(
        title = title,
        description = description,
        uri = uri,
        thumb = thumb.blob,
    )
)

# 投稿する
client.send_post(header, embed = embed_external)
(「アプリパスワード」はこちらで取得できます。)

なお、投稿する情報の準備(セールタイトル、URL、リンクカード用にアップする画像など)や重複回避など行うプログラムは Perl と shell で書いています。X (Twitter) で使っているものを流用しているので。投稿時間や投稿間隔などは crontab で調整しています。