NIP-101eは、フィットネストラッキングアプリケーションがNostr上でトレーニングセッションを公開、共有、発見できるようにするワークアウトイベント形式を定義します。この仕様では、セッションのメトリクス(距離、時間、標高、心拍数、カロリー、サイクリングのケイデンス、送信元アプリ)を構造化タグで運ぶkind 1301イベントを使用し、クライアントがワークアウトを適切な単位でメトリクスを表示する構造化カードとしてレンダリングできるようにします。

仕組み

NIP-101eのワークアウトは、送信元アプリが取得した各メトリクスに対する構造化タグを持つkind 1301イベントです。一般的なタグには以下があります。

  • ワークアウトの種目(ラン、バイク、スイム、リフトなど)を示すtype
  • 値と単位を持つdistance
  • 秒単位のduration
  • 値と単位を持つelevation_gain
  • startendのタイムスタンプ
  • heart_rate(平均値と最大値)
  • エネルギー消費量を示すcalories
  • 公開するアプリケーションを示すsource
  • ハッシュタグによる発見のためのtトピックタグ

contentフィールドには、ユーザが記述した任意のノートが入ります(ユーザがStravaアップロードに添えるキャプションに相当します)。kind 1301を認識するクライアントは構造化メトリクスをワークアウトカードとしてレンダリングし、認識しないクライアントはcontentフィールドを通常のノートとして表示するフォールバックを取ります。

発見とフィードの仕様

NIP-101eイベントは通常のフィードイベントであるため、ユーザが投稿したワークアウトは他の投稿と同じようにフォロワーのタイムラインに表示されます。専用のワークアウトビューを持つクライアントは、作者やハッシュタグのフィルタでkind 1301を購読し、トレーニングログの画面、リーダーボード、コミュニティチャレンジのフィードを構築できます。作者のpubkeyがワークアウトの正規の身元であるため、他のユーザのワークアウトを読み取るサードパーティアプリケーションは、他のNostrフィードと同じ信頼前提を継承します。

実装

  • Amethyst v1.12.0 は、ヒーローメトリクス、統計グリッド、サイクリング固有の速度表示、送信元バッジを備えたkind 1301ワークアウトのレンダリングを搭載しました(PR #3184PR #3226でリファクタリング)

Primary sources:

Mentioned in: