Blueskyで時限式にアイコン変更をする

By anon (@anon5r.com)
Published:

ブルスこんにちは〜👋

自分のアカウントのアイコンを時限式に変更したいことってありますよね?

えっ?ない?


それじゃ寂しいじゃない。せっかく見にきてくれたし、ちょっと聞いていって下さい。

サービスとして作ってみたよ

Chavatar というサービスを作ってみました。

サービスのOGP画像

Change Avatar[^1] でChavatar[^2]、発音的に「茶畑」になるので茶葉っぽくしてます

お詫び

準備確認不足により記事公開からこの時点までアイコン画像のアップロードに失敗しておりました。現在復旧しています。 (2026/4/5 15:30追記)

どんなサービス?

アカウントのアイコンを定時で入れ替えます。画像も設定もあなたのPDSのアカウントのリポジトリ内(Blueskyの投稿データと同じ扱い)で管理されます。このサービスには保管されません。

画面スクリーンショット

使い方

できること

時限式で自動変更する候補のアイコン画像の管理と、並び順やローテーションの設定を管理できます。

更新間隔設定

変更間隔は最短1時間から1週間単位まで設定できます。

ローテーション設定

モード設定ではローテーションリストの順番通りか、リスト内からランダム選択を設定できます。

そのほか、時間を待たずに即時実行(おためし実行)、リスト内のアイコンに強制適用するなどもあります。

現在設定されているアイコン設定も分かるようになっていますし、自動更新されないように設定でオフにすることもできます。[^3]

注意事項

(2026/4/5 13:50追記)

アイコンの変更は、Bluesky上では「プロフィール項目の変更」とみなされます。 一部のラベラー(Account Activity Labeler など)では、プロフィールが短期間に頻繁に更新されているアカウントに対して、一定時間ラベルを貼る運用をしているものもあります。(スパムアカウントががプロフィールを頻繁に更新して人々を欺いている可能性があるため)

※ラベラーの運用を否定するものではありません。

Account Activity Labelerのラベラーの設定項目

ラベラーのラベルの解釈は利用者ごとに異なりますが、場合によってはアカウントや投稿が非表示になってしまう恐れがあることにご注意ください。


技術的な話

Lexicons

このサービスを作るにあたり、4つのLexiconコレクションを使用します。

|Lexicon|概要説明|フィールド| |---------|-----------|------------| |app.chavatar.avatar|アップロードしたアバターを管理するレコード|avatar -- Blob参照<br>createdAt -- 登録日時| |app.chavatar.settings|自動更新するための設定や並び順を保持するレコード|avatars -- 入れ替え対象のアバターの配列<br>enabled -- 自動アバター入れ替えの有効可否設定<br>interval -- 自動入れ替えの間隔(1h,3h,6h,12h,1d,1w,1moなど)<br>mode -- ランダム(random)か並べた順序通り(sequetial)か<br>executor -- ローテーション実行プロバイダのURL。OAuthメタデータのclient_idを指定。ユーザーが複数の実行プロバイダで指定してても重複実行しないようにするための値。| |app.chavatar.settings.executor|実行者レコード|execClientId -- アバターローテーションを実行するプロバイダのOAuth Client ID。自分のClient ID(URI)と一致しなかったら実行しないように制御する予備的な情報| |app.chavatar.state|現在の状態を管理するレコード|cursor -- app.chavatar.avatar#avatarのTID<br>lastUpdated -- レコードの更新日時|

アバターのみを管理する既存Lexiconを見つけられなかったため独自にしてしまっています。

OAuth Permission Sets

OAuthでは用途によって3種類のPermission setを作成しています。

| Permission set|用途| |-----|-----| |app.chavatar.authManageAvatar|上記Lexiconすべての読み書き| |app.chavatar.authExecuteRotation|アバターの定時ローテーションプロバイダ(実行環境)用。settingsの読込とstateの読み書き| |app.chavatar.authViewAvatar|avatarに登録されているアバターデータと一覧の読込のみ|

それぞれのPermissionによって他のクライアントからも制御できます。

[^1]: Blueskyではアカウントアイコンのことをアバターと呼びます。 [^2]: Linux系OSだとcd (Change Directory)、chown (CHange OWNer)、 chmod (CHange MODe)、chsh (CHange SHell) などのコマンドもあるのでそれらにも由来。 [^3]: 自動更新停止とは別で、Chavatarの利用を中止する(サービスの切断)こともできます。サービスの切断は、このサービスでの更新をやめて、同じ仕組み(Lexicon)を使って自前で作ることもできます。