NIP-27
テキスト投稿内における参照
文書中に含まれる 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:naddr1
URL参照を .content
内に見つけた時には、例えばそのようなイベントを取り扱うことのできるハードコードされたWebアプリへのリンクに変換することができる。
クライアントはユーザに言及したイベントやプロフィールについて、タグを含めるかどうかを選択させるかもしれない。もし誰かが mattn
を本人に通知することなく言及し、しかし、投稿内にプロフィールへの補強可能・クリック可能な良いリンクを含めたい場合、ユーザはクライアントにその言及について ["p", ...]
タグを含めないことを指示できる。
同様に投稿を参照したいが、その投稿に対するリプライと一緒に表示してほしくない場合、 .content
内の nostr:nevent1
URLに対応する ["e", ...]
タグを含めないことを選ぶことができる。クライアントは、このような高度な機能にユーザに公開するか、常に一定の処理を行うようにするかを選んでもよい。