diff --git a/71.md b/71.md index 4f07d488..98f797bf 100644 --- a/71.md +++ b/71.md @@ -20,6 +20,20 @@ Nothing except cavaliership and common sense prevents a _short_ video from being The format uses a _regular event_ kind `21` for _normal_ videos and `22` for _short_ videos. +## Addressable Video Events + +For content that may need updates after publication (such as correcting metadata, descriptions, or handling URL migrations), addressable versions are available: + +- Kind `34235` for _addressable normal videos_ +- Kind `34236` for _addressable short videos_ + +These addressable events follow the same format as their regular counterparts but include a `d` tag as a unique identifier and can be updated while maintaining the same addressable reference. This is particularly useful for: + +- Metadata corrections (descriptions, titles, tags) without republishing +- Preservation of imported content IDs from legacy platforms +- URL migration when hosting changes +- Platform migration tracking + The `.content` of these events is a summary or description on the video content. The primary source of video information is the `imeta` tags which is defined in [NIP-92](92.md) @@ -71,6 +85,9 @@ The `image` tag contains a preview image (at the same resolution). Multiple `ima Additionally `service nip96` may be included to allow clients to search the authors NIP-96 server list to find the file using the hash. +### Required tags for addressable events: +* `d` - Unique identifier for this video (user-chosen string, required for kinds 34235, 34236) + ### Other tags: * `title` (required) title of the video * `published_at`, for the timestamp in unix seconds (stringified) of the first time the video was published @@ -83,6 +100,9 @@ Additionally `service nip96` may be included to allow clients to search the auth * `p` (optional, repeated) 32-bytes hex pubkey of a participant in the video, optional recommended relay URL * `r` (optional, repeated) references / links to web pages +### Optional tags for imported content: +* `origin` - Track original platform and ID: `["origin", "", "", "", ""]` + ```jsonc { "id": "<32-bytes lowercase hex-encoded SHA-256 of the the serialized event data>", @@ -127,3 +147,56 @@ Additionally `service nip96` may be included to allow clients to search the auth ] } ``` + +## Addressable Event Example + +```jsonc +{ + "id": <32-bytes lowercase hex-encoded SHA-256 of the the serialized event data>, + "pubkey": <32-bytes lowercase hex-encoded public key of the event creator>, + "created_at": , + "kind": 34235 | 34236, + "content": "", + "tags": [ + ["d", ""], + ["title", ""], + ["published_at", "<unix timestamp>"], + ["alt", "<description for accessibility>"], + + // video data + ["imeta", + "url https://example.com/media.mp4", + "m video/mp4", + "dim 480x480", + "blurhash eVF$^OI:${M{%LRjWBoLoLaeR*", + "image https://example.com/thumb.jpg", + "x 3093509d1e0bc604ff60cb9286f4cd7c781553bc8991937befaacfdc28ec5cdc" + ], + + ["duration", <duration in seconds>], + ["content-warning", "<reason>"], + + // origin tracking for imported content + ["origin", "<platform>", "<external-id>", "<original-url>", "<optional-metadata>"], + + // participants + ["p", "<32-bytes hex of a pubkey>", "<optional recommended relay URL>"], + + // hashtags + ["t", "<tag>"], + ["t", "<tag>"], + + // reference links + ["r", "<url>"] + ] +} +``` + +## Referencing Addressable Events + +To reference an addressable video: + +``` +["a", "34235:<pubkey>:<d-tag-value>", "<relay-url>"] // for normal videos +["a", "34236:<pubkey>:<d-tag-value>", "<relay-url>"] // for short videos +``` diff --git a/README.md b/README.md index f5194ded..98ca0168 100644 --- a/README.md +++ b/README.md @@ -263,6 +263,8 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos | `31989` | Handler recommendation | [89](89.md) | | `31990` | Handler information | [89](89.md) | | `32267` | Software Application | | +| `34235` | Addressable Video Event | [71](71.md) | +| `34236` | Addressable Short Video Event | [71](71.md) | | `34550` | Community Definition | [72](72.md) | | `38172` | Cashu Mint Announcement | [87](87.md) | | `38173` | Fedimint Announcement | [87](87.md) |