WhiteWind
Visit Post

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

anon June 5, 2026
Source

ブルスこんにちは〜👋

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

えっ?ない?


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

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

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

サービスのOGP画像

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

お詫び

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

どんなサービス?

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

画面スクリーンショット

使い方

  1. 画面上部からアイコンに使用する画像をアップロードします。
  2. アイコンに使う範囲を選択して保存します。
  3. アップロードした画像はアバター画像に表示されます。
  4. 自動変更対象にするアイコンをアバター画像から選択し、ローテーションリストに追加します。
  5. ローテションリストに入っているアイコンが変更間隔の時間ごとにモード設定に従って自動で更新されます。

できること

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

更新間隔設定

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

ローテーション設定

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

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

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

注意事項

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

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

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

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

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


技術的な話

Lexicons

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

Lexicon 概要説明 フィールド
app.chavatar.avatar アップロードしたアバターを管理するレコード avatar -- Blob参照
createdAt -- 登録日時
app.chavatar.settings 自動更新するための設定や並び順を保持するレコード avatars -- 入れ替え対象のアバターの配列
enabled -- 自動アバター入れ替えの有効可否設定
interval -- 自動入れ替えの間隔(1h,3h,6h,12h,1d,1w,1moなど)
mode -- ランダム(random)か並べた順序通り(sequetial)か
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
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によって他のクライアントからも制御できます。

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

Discussion in the ATmosphere

Loading comments...