{"id":"fc8daf9eb33e84ef6f4cb11aaa68948eb162268fd65b17fa9f794079e3cbd1c0","pubkey":"2c990f0c8ad2b51747fabd6f05d74b7a61cb6364bdf7b85ee71c3ac481a5a1a7","created_at":1771109435,"kind":30817,"tags":[["d","nip-73"],["title","NIP-73"],["i","https://github.com/nostr-protocol/nips/blob/master/73.md","fork"],["client","nostrhub.io"]],"content":"NIP-73\n======\n\nExternal Content IDs\n--------------------\n\n`draft` `optional`\n\nThere are certain established global content identifiers such as [Book ISBNs](https://en.wikipedia.org/wiki/ISBN), [Podcast GUIDs](https://podcastnamespace.org/tag/guid), and [Movie ISANs](https://en.wikipedia.org/wiki/International_Standard_Audiovisual_Number) that are useful to reference in nostr events so that clients can query all the events associated with these ids.\n\n\n`i` tags are used for referencing these external content ids, with `k` tags representing the external content id kind so that clients can query all the events for a specific kind.\n\n## Supported IDs\n\n| Type                   | `i` tag                                                    | `k` tag                  |\n| ---                    | ---                                                        | ---                      |\n| URLs                   | \"`<URL, normalized, no fragment>`\"                         | \"web\"                    |\n| Books                  | \"isbn:`<id, without hyphens>`\"                             | \"isbn\"                   |\n| Geohashes              | \"geo:`<geohash, lowercase>`\"                               | \"geo\"                    |\n| OSM Way                | \"osm:way:`<POI id>`\"                                       | \"osm\"                    |\n| OSM Node               | \"osm:node:`<Node id>`\"                                     | \"osm\"                    |\n| OSM Relation           | \"osm:relation:`<Relation id>`\"                             | \"osm\"                    |\n| Countries              | \"iso3166:`<code, uppercase>`\"                              | \"iso3166\"                |\n| Movies                 | \"isan:`<id, without version part>`\"                        | \"isan\"                   |\n| Papers                 | \"doi:`<id, lowercase>`\"                                    | \"doi\"                    |\n| Hashtags               | \"#`<topic, lowercase>`\"                                    | \"#\"                      |\n| Podcast Feeds          | \"podcast:guid:`<guid>`\"                                    | \"podcast:guid\"           |\n| Podcast Episodes       | \"podcast:item:guid:`<guid>`\"                               | \"podcast:item:guid\"      |\n| Podcast Publishers     | \"podcast:publisher:guid:`<guid>`\"                          | \"podcast:publisher:guid\" |\n| Blockchain Transaction | \"`<blockchain>`:[`<chainId>`:]tx:`<txid, hex, lowercase>`\" | \"`<blockchain>`:tx\"      |\n| Blockchain Address     | \"`<blockchain>`:[`<chainId>`:]address:`<address>`\"         | \"`<blockchain>`:address\" |\n\n---\n\n## Examples\n\n\n### Webpages\n\nFor the webpage \"https://myblog.example.com/post/2012-03-27/hello-world\" the \"i\" and \"k\" tags are:\n\n```jsonc\n[\n  [\"i\", \"https://myblog.example.com/post/2012-03-27/hello-world\"],\n  [\"k\", \"web\"]\n]\n```\n\n### Geohashes:\n\n- Geohash: `[\"i\", \"geo:ezs42e44yx96\"]` - https://www.movable-type.co.uk/scripts/geohash.html\n\nGeohashes are a geocoding system that encodes geographic locations into short strings of letters and digits. They MUST be lowercase.\n\n### OpenStreetMap Object References:\n\n- Node: `[\"i\", \"osm:node:240949599\"]` – https://www.openstreetmap.org/node/240949599  \n- Way: `[\"i\", \"osm:way:5013364\"]` – https://www.openstreetmap.org/way/5013364  \n- Relation: `[\"i\", \"osm:relation:62422\"]` – https://www.openstreetmap.org/relation/62422  \n\nOpenStreetMap object IDs are globally unique identifiers. They use the lowercase format `osm:<type>:<id>` where `<type>` is one of `node`, `way`, or `relation`, and `<id>` is a numeric identifier.\n\n### Countries:\n\nISO 3166 codes can reference countries (ISO 3166-1 alpha-2) or subdivisions like states/provinces (ISO 3166-2).\n\n- Country (Venezuela): `[\"i\", \"iso3166:VE\"]`\n- Subdivision (California, USA): `[\"i\", \"iso3166:US-CA\"]`\n\nISO 3166 codes MUST be uppercase. More info: https://en.wikipedia.org/wiki/ISO_3166\n\n### Books:\n\n- Book ISBN: `[\"i\", \"isbn:9780765382030\"]` - https://isbnsearch.org/isbn/9780765382030\n\nBook ISBNs MUST be referenced _**without hyphens**_ as many book search APIs return the ISBNs without hyphens. Removing hyphens from ISBNs is trivial, whereas adding the hyphens back in is non-trivial requiring a library.\n\n### Podcasts:\n\n- Podcast RSS Feed GUID: `[\"i\", \"podcast:guid:c90e609a-df1e-596a-bd5e-57bcc8aad6cc\"]` - https://podcastindex.org/podcast/c90e609a-df1e-596a-bd5e-57bcc8aad6cc\n- Podcast RSS Item GUID: `[\"i\", \"podcast:item:guid:d98d189b-dc7b-45b1-8720-d4b98690f31f\"]`\n- Podcast RSS Publisher GUID: `[\"i\", \"podcast:publisher:guid:18bcbf10-6701-4ffb-b255-bc057390d738\"]`\n\n### Movies:\n\n- Movie ISAN: `[\"i\", \"isan:0000-0000-401A-0000-7\"]` - https://web.isan.org/public/en/isan/0000-0000-401A-0000-7\n\nMovie 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\n\n### Blockchain\n\n`<blockchain>` can be any layer 1 chain (`bitcoin`, `ethereum`, `solana`, ...). If necessary (e.g. for ethereum), you can specify a `<chainId>`.\n\n#### Bitcoin\n\n```\nbitcoin:address:<bech32, lowercase | base58, case sensitive>\nbitcoin:tx:<txid, hex, lowercase>\n```\n\nE.g. https://blockstream.info/tx/a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d\n\n```jsonc\n[\n  [\"i\", \"bitcoin:tx:a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d\"],\n  [\"k\", \"bitcoin:tx\"]\n]\n```\n\nE.g. https://blockstream.info/address/1HQ3Go3ggs8pFnXuHVHRytPCq5fGG8Hbhx\n\n```jsonc\n[\n  [\"i\", \"bitcoin:address:1HQ3Go3ggs8pFnXuHVHRytPCq5fGG8Hbhx\"],\n  [\"k\", \"bitcoin:address\"]\n]\n```\n\n#### Ethereum (and other EVM chains)\n\n```\nethereum:<chainId, integer>:tx:<txHash, hex, lowercase>\nethereum:<chainId, integer>:address:<hex, lowercase>\n```\n\nE.g. https://etherscan.io/address/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\n\n```jsonc\n[\n  [\"i\", \"ethereum:1:address:0xd8da6bf26964af9d7eed9e03e53415d37aa96045\"],\n  [\"k\", \"ethereum:address\"]\n]\n```\n\nE.g. https://gnosisscan.io/tx/0x98f7812be496f97f80e2e98d66358d1fc733cf34176a8356d171ea7fbbe97ccd\n\n```jsonc\n[\n  [\"i\", \"ethereum:100:tx:0x98f7812be496f97f80e2e98d66358d1fc733cf34176a8356d171ea7fbbe97ccd\"],\n  [\"k\", \"ethereum:tx\"]\n]\n```\n\n\n\n---\n\n### Optional URL Hints\n\nEach `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:\n\n`[\"i\", \"podcast:item:guid:d98d189b-dc7b-45b1-8720-d4b98690f31f\", https://fountain.fm/episode/z1y9TMQRuqXl2awyrQxg]`\n\n`[\"i\", \"isan:0000-0000-401A-0000-7\", https://www.imdb.com/title/tt0120737]`","sig":"0c905ce19b0f32a0da094650d3bf43ea6c918eec57b4ce7583178c76f922753a24a7e3abb33ae384877ebb9cd6b5ed496c73a54fac715bcd2090e5cf02d327bd"}