diff --git a/24.md b/24.md index 3adec243..ef4196bd 100644 --- a/24.md +++ b/24.md @@ -40,4 +40,5 @@ tags These tags may be present in multiple event kinds. Whenever a different meaning is not specified by some more specific NIP, they have the following meanings: - `r`: a web URL the event is referring to in some way + - `i`: an external id the event is referring to in some way - see [NIP-73](73.md) - `title`: name of [NIP-51](51.md) sets, [NIP-52](52.md) calendar event, [NIP-53](53.md) live event or [NIP-99](99.md) listing diff --git a/73.md b/73.md new file mode 100644 index 00000000..12228d36 --- /dev/null +++ b/73.md @@ -0,0 +1,48 @@ +NIP-73 +====== + +External Content IDs +------------------------- + +`draft` `optional` + +There are certain established global content identifiers that would be useful to reference in nostr events so that clients can query all events assosiated with these ids. + +- Book [ISBNs](https://en.wikipedia.org/wiki/ISBN) +- Podcast [GUIDs](https://podcastnamespace.org/tag/guid) +- Movie [ISANs](https://en.wikipedia.org/wiki/International_Standard_Audiovisual_Number) + +Since the `i` tag is already used for similar references in kind-0 metadata events it makes sense to use it for these content ids as well. + + +## Supported IDs + +### Books: + +- Book ISBN: `["i", "isbn:9780765382030"]` - https://isbnsearch.org/isbn/9780765382030 + +Book ISBNs MUST be referenced _**without hyphens**_ as many book search APIs return the ISBNs without hyphens. Removing hypens from ISBNs is trivial, whereas adding the hyphens back in is non-trivial requiring a library. + +### Podcasts: + +- Podcast RSS Feed GUID: `["i", "podcast:guid:c90e609a-df1e-596a-bd5e-57bcc8aad6cc"]` - https://podcastindex.org/podcast/c90e609a-df1e-596a-bd5e-57bcc8aad6cc +- Podcast RSS Item GUID: `["i", "podcast:item:guid:d98d189b-dc7b-45b1-8720-d4b98690f31f"]` +- Podcast RSS Publisher GUID: `["i", "podcast:publisher:guid:18bcbf10-6701-4ffb-b255-bc057390d738"]` + +### Movies: + +- Movie ISAN: `["i", "isan:0000-0000-401A-0000-7"]` - https://web.isan.org/public/en/isan/0000-0000-401A-0000-7 + +Movie ISANs SHOULD be referenced _**without the version part**_ as the versions / edits of movies are not relevant. More info on ISAN parts here - https://support.isan.org/hc/en-us/articles/360002783131-Records-relations-and-hierarchies-in-the-ISAN-Registry + +--- + +### Optional URL Hints + +Each `i` tag MAY have a url hint as the second argument to redirect people to a website if the client isn't opinionated about how to interpret the id: + +`["i", "podcast:item:guid:d98d189b-dc7b-45b1-8720-d4b98690f31f", https://fountain.fm/episode/z1y9TMQRuqXl2awyrQxg]` + +`["i", "isan:0000-0000-401A-0000-7", https://www.imdb.com/title/tt0120737]` + + diff --git a/README.md b/README.md index 550888a8..6c83ba88 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos - [NIP-70: Protected Events](70.md) - [NIP-71: Video Events](71.md) - [NIP-72: Moderated Communities](72.md) +- [NIP-73: External Content IDs](73.md) - [NIP-75: Zap Goals](75.md) - [NIP-78: Application-specific data](78.md) - [NIP-84: Highlights](84.md) @@ -238,7 +239,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos | `-` | -- | -- | [70](70.md) | | `g` | geohash | -- | [52](52.md) | | `h` | group id | -- | [29](29.md) | -| `i` | identity | proof | [39](39.md) | +| `i` | external identity | proof, url hint | [39](39.md), [73](73.md) | | `k` | kind number (string) | -- | [18](18.md), [25](25.md), [72](72.md) | | `l` | label, label namespace | -- | [32](32.md) | | `L` | label namespace | -- | [32](32.md) |