NIP-27
Text Note References
テキスト投稿内における参照
文書中に含まれる nprofileやneventなどの取り扱い方法
仕様の翻訳
この文書は.contentに含まれる他のイベントやプロフィールのインライン参照の取り扱い方法を標準化する。
これは .contentに人の読めるテキストを持つイベント(kind 1(テキスト投稿)や30023(長文投稿, NIP-23))が対象となる。 イベント生成時、クライアントはNIP-21コードを使用して.contentに含まれる他のプロフィールや他のイベントに対する参照を含めるようにすべきである。(例: nostr:nprofile1qqsw3dy8cpu...6x2argwghx6egsqstvg) それぞれの参照に対してNIP-10形式のタグ(["e", <hex-id>, <relay-url>, <marker>])を含めるかどうかは任意であるが、言及したプロフィールに通知することをユーザが望むか、ユーザの言及したイベントをリプライとして認識させることを望むときにはいつでも含めるべきである。 .content内にnostr:...形式の言及を含むイベントを受け取ったクライアントは、処理で必要なコンテキストの補強(context augmentation)を行うことができる(例えば、プロフィールへのリンクや言及されたイベントの内容のプレビュー)。そのような言及をリンクとして表示する場合、内部リンクやNIP-21形式のリンク、参照を扱えるWebクライアントへの直接リンクとなるだろう。
@を入力したときに検索・自動補完機能を行うクライアントで、ボブがテキスト投稿を書いていると想定する。
ボブが こんにちは @mat と入力すると、クライアントは写真と名前を表示すると共にmattn氏のプロフィールを自動補完するかどうかを尋ねることができる。 ボブがEnterキーを押すと、こんにちは @mattnと投稿内容が表示される。@mattnはメンションであることを示すためにハイライトされる。
内部的には こんにちは nostr:nprofile...のようなテキストになる(代わりに nostr:npub...URLであるかもしれない)
ボブがこのイベントを投稿してキャロルがそれを読むとき、クライアントは最初は.contentをそのまま表示しても良いが、その後でcontentを解析し、nostr:URLがある場合はデコードして公開鍵(リレーヒントも含むかもしれない)を抽出し、そして完全なURLを名前@mattnに置換し、そのプロフィールの内部ページビューへのリンクに置換する。
上記の例は非常に具体的だが、クライアントが同様に実装しなければならないというわけではない。自動補完に全く対応せず、代わりにユーザにNIP-19コードを本文にペーストしてもらい、投稿の前にnostr:を先頭に追加するクライアントもあるだろう。 イベントの参照に対する処理も同様である。ユーザがnote1やnevent1コードをペーストすると、クライアントがnostr:note1やnostr:nevent1に変換する。参照を含む投稿を表示するときは、クライアントはイベントをプレビューボックス等に表示しても良い。あるいは何もしなくても良い。
他の表示処理を使うこともできる。例えば、kind:1テキスト投稿だけを取り扱うように設計されているクライアントが例えばkind:30023やnostr:naddr1URL参照を.content内に見つけた時には、例えばそのようなイベントを取り扱うことのできるハードコードされたWebアプリへのリンクに変換することができる。
クライアントはユーザに言及したイベントやプロフィールについて、タグを含めるかどうかを選択させるかもしれない。もし誰かがmattnを本人に通知することなく言及し、しかし、投稿内にプロフィールへの補強可能・クリック可能な良いリンクを含めたい場合、ユーザはクライアントにその言及について["p", ...]タグを含めないことを指示できる。
同様に投稿を参照したいが、その投稿に対するリプライと一緒に表示してほしくない場合、.content内のnostr:nevent1URLに対応する["e", ...]タグを含めないことを選ぶことができる。クライアントは、このような高度な機能にユーザに公開するか、常に一定の処理を行うようにするかを選んでもよい。