ATProto Dashboard(使い方)

@usounds.work

ATProto Dashboardを作りました。

https://atpdashboard.usounds.work/

出来ること

ATProtoではこのWhiteWindの様に独自にCollection(lexicon)を作ることが出来ますが、どの様なCollectionがあるかを知る手段がありませんでした。Bluesky社が管理するlexiconについてはイベントを見ているサイトがいくつかありますが、独自のCollectionについては手段が少なさそうだったので新たに作りました。
2025年1月17日から収集を開始したので、それ以前のイベントは取得していません。

Dashboard

3rd party Collectionの統計が参照できます。

Browser

3rd party Collectionをツリー構造で参照できます。

Dashboardの使い方

https://atpdashboard.usounds.work/

設定

Exclude collections with transaction key

CollectionにトランザクションID(TID)を埋め込むCollectionを集計対象外にします。開発者が検知しているCollectionを意図的に除外しており、検知しているもの以外に発生した場合は都度対応が必要です。

ヘッドライン

上の方に数字が並んでいます。

Total Collections

これまでに収集したCollectionの種類の件数を表示します。72時間以内に新たに作成されたコレクションがあれば、その数字を別に表示します。

Total Sub Name Spaces

例えば、私のサービスであればuk.skublur.postとuk.skublur.preferenceの2つのCollectionがあります。
「uk.skyblur」までが同じなら同じサービスとみなした件数です。当然、io.githubやapp.netlifyなどの汎用サービスのNSIDについては誤検知しますので、実際のサービス名より少し少なくなると思います。

Total Users

独自Collectionのレコードを作成したDIDをカウントします。そのサービスの作者ではなく、利用者をカウントします。作者を調べる手段は今のところありません。

Cursor Delay in Minutes

Collectionに全く関係ありません。この仕組みはバックエンドでJetstreamを使っていますので、Jetstreamの受信に遅延が発生すると、遅れている分数が表示されます。
もし、1日ぐらい遅延している様でしたら、お手数ですが作者までご連絡ください。

隠し機能

数字のところをタップすると、ダッシュボードの内容を最新化します。

グラフ

24時間単位でのデータを集計して表示します。24時間はリアルタイムで計算しているため、アクセス都度微妙に形が変わります。

Daily Collections

イベントが発生したCollectionについて、動きがあったCollectionと新しいCollectionを表示します

Daily Users

イベントを発生させたユーザーについて、動きがあったユーザーと新しいユーザーを表示します

Collection

Collectionを一覧表示します。

COLLECTION

受信したコレクション名です。72時間以内に作成されたコレクションには緑色のバッチがつきます。コレクション名をタップすると、lexicon解決を使ってlexiconの定義を参照出来ます。

EVENTS

CollectionのCreateイベントが発生した件数を表示します

FIRST INDEXED

2025年1月17日以降、そのコレクションにおいて一番初めにレコードが作成された時間を表示します

LAST INDEXED

そのコレクションにおいて最新のレコードが作成された時間を表示します

並び替え

ヘッダ部分(COLLECTION、EVENTSなど)をタップすると、その列で並び替えします
FIRST INDEXEDで降順ソートすると、新しいサービスを見つけやすくなるかもしれません。ただし、この仕組みの情報は1月17日から収集していますので、それ以前にレコードがあっても初めてと誤検知します。

Search

文字を入力すると、該当するCollectionのみ一覧表示する様になります。

Browserの使い方

https://atpdashboard.usounds.work/collection/browser

上の方は検索条件を設定できます。Searchをタップしないと、検索結果には反映されません(チェックボックスを除く)

Search Collections

Collectionの名前で検索できます。

First Indexed

そのCollectionを最初に検知した日付について、From-Toで検索できます。片方のみの指定も可能です。タイムゾーンの処理が雑なので、誤差が1日程度発生します。

Last Indexed

そのCollectionを最後に検知した日付について、From-Toで検索できます。片方のみの指定も可能です。タイムゾーンの処理が雑なので、誤差が1日程度発生します。

Has lexicon

いわゆるLexicon解決が「できるかもしれない」Collectionのみに絞ります。この時点では、DNSレコードのチェックを行なっておらず、かつ、PDSからデータが消えている場合はご検知してバッチが着きます。

Exclude invalid TLDs

NSIDのLv1がIANAのTLD Listに含まれていないCollectionを検索対象から除外します

ツリーについて

フォルダ作成ルール

下記のルールでフォルダを形成します。
  • NSIDのLv2は必ずフォルダを作る
  • NSIDのLv3は以降は、小要素が2つ以上ある場合は孫要素のフォルダを作る
  • 例えば
  • community.lexicon.calendar.event
  • community.lexicon.calendar.getActorEvents
  • community.lexicon.calendar.rsvp.local
  • の場合は、community.lexicon.calendarのフォルダに
  • community.lexicon.calendar.event
  • community.lexicon.calendar.getActorEvents
  • community.lexicon.calendar.rsvp
  • の3つが並び、community.lexicon.calendar.rsvpは小要素があるのでフォルダになります。フォルダを開くと、ommunity.lexicon.calendar.rsvp.localの1件のみが表示されます。
    逆に
  • community.lexicon.calendar.rsvp.local
  • しかない場合は、community.lexiconのフォルダのみ作成し、その中にcommunity.lexicon.calendar.rsvp.localのみが表示されます。

    青いバッチ

    Lexicon解決が「できるかもしれない」Collectionには、青いバッチがつきます。DNSレコードのチェック結果は反映されませんので、タップしてLexicon解決をお試しいただくと解決に失敗する場合があります。

    今後

    APIは勝手に使っていただいて大丈夫ですが、仕様が変わることが想定されますのでご注意ください。
    昔の名残でカスタムフィードジェネレーターのデータは溜まっているので、別のダッシュボードで公開予定です。
    usounds.work
    ゆー

    @usounds.work

    #FF14 (Yu Sounds@Masamune) #F1jp #高校野球 #ぼざろ

    ヒカセンですが、ヒカセンっぽい投稿はほぼありません。

    Developer of
    - Skyblur
    - FF14ヒカセンラベリング
    - ATP Dashboard
    https://linkat.blue/usounds.work

    Post reaction in Bluesky

    *To be shown as a reaction, include article link in the post or add link card

    Reactions from everyone (0)