{"id":"93581191f2399a2f290f153429b6f472fc757c8272f5c1b07af690aa7a01f107","pubkey":"2b39b4ffe62933df970e19366c22c1e092f953f83fcfed754e0f04d5a3b459f9","created_at":1781353189,"kind":30817,"tags":[["d","nip-73"],["title","NIP-73: External Content IDs"],["summary","The i tags for identifiers that exist outside Nostr: URLs, ISBNs, podcast GUIDs, DOIs, hashtags and blockchain transactions."],["s","draft"],["t","nostr"],["t","nip"],["alt","A specification: NIP-73: External Content IDs"],["client","openspecs-import"],["published_at","1713533445"],["proxy","https://github.com/nostr-protocol/nips/blob/656cecc7c0a815b6a2b218d3b5d6f078b3f4dbab/73.md","web"],["x","23574c575c7aa97b7dca5612d2272e6bc590c5388d507c6ed59a81e0836fe401"]],"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| 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```yaml\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### 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```yaml\n[\n  [\"i\", \"bitcoin:tx:a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d\"],\n  [\"k\", \"bitcoin:tx\"]\n]\n```\n\nE.g. https://blockstream.info/address/1HQ3Go3ggs8pFnXuHVHRytPCq5fGG8Hbhx\n\n```yaml\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```yaml\n[\n  [\"i\", \"ethereum:1:address:0xd8da6bf26964af9d7eed9e03e53415d37aa96045\"],\n  [\"k\", \"ethereum:address\"]\n]\n```\n\nE.g. https://gnosisscan.io/tx/0x98f7812be496f97f80e2e98d66358d1fc733cf34176a8356d171ea7fbbe97ccd\n\n```yaml\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]`\n","sig":"851e157aa19dfb049b23caa886006ad072ffcb63c5806806c1af12b7172f9581f2f38ab60c17a0c2ec4a0393373c726b5b66c00a614c04f595e7d8a164fd8943"}