NIP-18
Repost
リポスト(Twitterにおけるリツイート等に相当)を実現するための仕様 開発者向け
/icons/hr.icon
翻訳
リポスト(Reposts)
リポストとは、読む価値があるkind 1テキスト投稿をフォロワーに知らせるのに使う kind 6のイベント。 リポストイベントのcontentはリポスト対象の投稿をJSON文字列化したものとする。これは(リポスト対象の投稿を)素早く参照できるようにするためである。空にしてもよい(MAY)が、推奨されない。
6/17付でこの文が変更された。以前は空にするのが基本、元の投稿を含めるのはオプション扱いだったが、逆転した形。
リポストイベントには、リポスト対象の投稿のidを値に持つ eタグを含めなければならない(MUST)。このタグの3番目の要素に、対象の投稿を取得可能なリレーURLを含めなければならない(MUST)。
(訳註) 実態としてはリレーURLを含めるクライアントは限られている。
リポストイベントに、リポスト対象の投稿のpubkeyを値に持つpタグを含めるべきである(SHOULD)。
引用リポスト(Quote Reposts)
引用リポストは引用リポストされるテキスト投稿のqタグを埋め込んだkind 1イベントである。qタグは引用リポストがスレッドで取得されず、リプライ一覧に含まれないことを保証する。また、投稿へのすべての引用を取得し、数えることが容易となる。
汎用リポスト(Generic Reposts)
kind 6によるリポストはkind 1のコンテンツのために取ってあるため、kind 16を「汎用リポスト」として用いる。
これにはkind 1以外のあらゆるイベントを含めることができる。
kind 16によるリポストは、リポストするイベントのイベントの種類 (kind)の番号を文字列化したものを値とするkタグを含むべきである(SHOULD)。 /icons/hr.icon
リポストの廃止と復活
引用リポストのqタグの目的について
qタグは、返信スレッドと引用リポストを別々に取得するために2024年2月に導入されました。
古い引用リポストの仕様との互換性について
NIP-18の古い仕様の翻訳は以下の通り:
引用リポストはeタグが埋め込まれたkind 1のイベントで表す (NIP-08およびNIP-27を参照)。引用リポストはeタグを含むので、リポスト対象の投稿へのリプライと一緒に表示される可能性がある。 現在の仕様ではqタグを使うことになっています。
実装時は互換性に関して、いくつかの選択肢があります。
投稿時
(1) qタグのみを含める(新仕様のみに対応)
(2) qタグとeタグの両方含める(互換性を考慮する)
(3) eタグのみを含める(旧仕様のみに対応)
返信(スレッド)と引用リポストを別々に取得したいという目的を考えると、投稿時は(1)のqタグのみを用いることが望ましいと考えられます。qタグのみを含める場合、古い仕様にのみ対応するクライアントからは見られなくなってしまいますが、対応するクライアントが増えていくにつれて問題にならなくなるでしょう。
取得時
(1) qタグのみを取得する(新仕様のみに対応)
(2) eタグとqタグを取得する(互換性を考慮する)
(3) eタグのみを取得する(旧仕様のみに対応)
返信(スレッド)と引用リポストを別々に取得したいという目的を考えるなら、引用リポストのみを取得したい場合にはqタグだけを取得することになるでしょう。
ただし、古い投稿の場合には旧仕様の引用リポスト(eタグ)が使われています。eタグで検索するかどうかをユーザに選ばせることができます。
クライアントごとの引用リポストの実装
2024-09-29に確認した情報です。
Iris: 旧 eタグ (["e", "<ID>", "<URL>", "mention"])
Damus: 引用時はタグを含めない模様
nostter: 新 ["q", "<ID>"]
lumilumi: 新 ["q", "<ID>", "<URL>", "<pubkey>"]
Rabbit: 新 qタグ (["e", "<ID>"])