{
  "$type": "com.whtwnd.blog.entry",
  "theme": "github-light",
  "title": "ATProto Dashboard(使い方)",
  "content": "ATProto Dashboardを作りました。\n\nhttps://atpdashboard.usounds.work/\n\n<h1>出来ること</h1>\nATProtoではこのWhiteWindの様に独自にCollection(lexicon)を作ることが出来ますが、どの様なCollectionがあるかを知る手段がありませんでした。Bluesky社が管理するlexiconについてはイベントを見ているサイトがいくつかありますが、独自のCollectionについては手段が少なさそうだったので新たに作りました。<br />\n2025年1月17日から収集を開始したので、それ以前のイベントは取得していません。\n\n<h2>Dashboard</h2>\n3rd party Collectionの統計が参照できます。\n\n<h2>Browser</h2>\n3rd party Collectionをツリー構造で参照できます。\n\n<h1>Dashboardの使い方</h1>\n\nhttps://atpdashboard.usounds.work/\n\n<h2>設定</h2>\n<h3>Exclude collections with transaction key</h2>\nCollectionにトランザクションID(TID)を埋め込むCollectionを集計対象外にします。開発者が検知しているCollectionを意図的に除外しており、検知しているもの以外に発生した場合は都度対応が必要です。\n\n<h2>ヘッドライン</h2>\n上の方に数字が並んでいます。\n<h3>Total Collections</h2>\nこれまでに収集したCollectionの種類の件数を表示します。72時間以内に新たに作成されたコレクションがあれば、その数字を別に表示します。\n<h3>Total Sub Name Spaces</h2>\n例えば、私のサービスであればuk.skublur.postとuk.skublur.preferenceの2つのCollectionがあります。<br />\n「uk.skyblur」までが同じなら同じサービスとみなした件数です。当然、io.githubやapp.netlifyなどの汎用サービスのNSIDについては誤検知しますので、実際のサービス名より少し少なくなると思います。\n<h3>Total Users</h2>\n独自Collectionのレコードを作成したDIDをカウントします。そのサービスの作者ではなく、利用者をカウントします。作者を調べる手段は今のところありません。\n<h3>Cursor Delay in Minutes</h3>\nCollectionに全く関係ありません。この仕組みはバックエンドでJetstreamを使っていますので、Jetstreamの受信に遅延が発生すると、遅れている分数が表示されます。<br />\nもし、1日ぐらい遅延している様でしたら、お手数ですが作者までご連絡ください。<br />\n<h4>隠し機能</h4>\n数字のところをタップすると、ダッシュボードの内容を最新化します。\n\n<h2>グラフ</h2>\n24時間単位でのデータを集計して表示します。24時間はリアルタイムで計算しているため、アクセス都度微妙に形が変わります。\n<h3>Daily Collections</h2>\nイベントが発生したCollectionについて、動きがあったCollectionと新しいCollectionを表示します<br />\n<h3>Daily Users</h2>\nイベントを発生させたユーザーについて、動きがあったユーザーと新しいユーザーを表示します<br />\n\n<h2>Collection</h2>\nCollectionを一覧表示します。\n\n<h3>COLLECTION</h3>\n受信したコレクション名です。72時間以内に作成されたコレクションには緑色のバッチがつきます。コレクション名をタップすると、lexicon解決を使ってlexiconの定義を参照出来ます。\n<h3>EVENTS</h3>\nCollectionのCreateイベントが発生した件数を表示します\n<h3>FIRST INDEXED</h3>\n2025年1月17日以降、そのコレクションにおいて一番初めにレコードが作成された時間を表示します\n<h3>LAST INDEXED</h3>\nそのコレクションにおいて最新のレコードが作成された時間を表示します\n<h3>並び替え</h3>\nヘッダ部分(COLLECTION、EVENTSなど)をタップすると、その列で並び替えします<br />\nFIRST INDEXEDで降順ソートすると、新しいサービスを見つけやすくなるかもしれません。ただし、この仕組みの情報は1月17日から収集していますので、それ以前にレコードがあっても初めてと誤検知します。<br />\n<h3>Search</h3>\n文字を入力すると、該当するCollectionのみ一覧表示する様になります。\n\n<h1>Browserの使い方</h1>\n\nhttps://atpdashboard.usounds.work/collection/browser\n\n上の方は検索条件を設定できます。Searchをタップしないと、検索結果には反映されません(チェックボックスを除く)\n<h2>Search Collections</h2>\nCollectionの名前で検索できます。\n<h2>First Indexed</h2>\nそのCollectionを最初に検知した日付について、From-Toで検索できます。片方のみの指定も可能です。タイムゾーンの処理が雑なので、誤差が1日程度発生します。\n<h2>Last Indexed</h2>\nそのCollectionを最後に検知した日付について、From-Toで検索できます。片方のみの指定も可能です。タイムゾーンの処理が雑なので、誤差が1日程度発生します。\n<h2>Has lexicon</h2>\nいわゆるLexicon解決が「できるかもしれない」Collectionのみに絞ります。この時点では、DNSレコードのチェックを行なっておらず、かつ、PDSからデータが消えている場合はご検知してバッチが着きます。\n<h2>Exclude invalid TLDs</h2>\nNSIDのLv1がIANAのTLD Listに含まれていないCollectionを検索対象から除外します\n\n<h2>ツリーについて</h2>\n<h3>フォルダ作成ルール</h3>\n下記のルールでフォルダを形成します。\n<li>NSIDのLv2は必ずフォルダを作る</li>\n<li>NSIDのLv3は以降は、小要素が2つ以上ある場合は孫要素のフォルダを作る</li>\n例えば\n<li>community.lexicon.calendar.event</li>\n<li>community.lexicon.calendar.getActorEvents</li>\n<li>community.lexicon.calendar.rsvp.local</li>\nの場合は、community.lexicon.calendarのフォルダに\n<li>community.lexicon.calendar.event</li>\n<li>community.lexicon.calendar.getActorEvents</li>\n<li>community.lexicon.calendar.rsvp</li>\nの3つが並び、community.lexicon.calendar.rsvpは小要素があるのでフォルダになります。フォルダを開くと、ommunity.lexicon.calendar.rsvp.localの1件のみが表示されます。<br />\n逆に\n<li>community.lexicon.calendar.rsvp.local</li>\nしかない場合は、community.lexiconのフォルダのみ作成し、その中にcommunity.lexicon.calendar.rsvp.localのみが表示されます。\n<h3>青いバッチ</h3>\nLexicon解決が「できるかもしれない」Collectionには、青いバッチがつきます。DNSレコードのチェック結果は反映されませんので、タップしてLexicon解決をお試しいただくと解決に失敗する場合があります。\n\n<h2>今後</h2>\nAPIは勝手に使っていただいて大丈夫ですが、仕様が変わることが想定されますのでご注意ください。<br >\n昔の名残でカスタムフィードジェネレーターのデータは溜まっているので、別のダッシュボードで公開予定です。",
  "createdAt": "2025-08-03T07:14:52.988Z",
  "visibility": "public"
}