Compare commits

...

10 Commits

Author SHA1 Message Date
Vitor Pamplona c1ee26826d
Merge 773984d7a8 into 074b8eeb01 2025-07-23 09:52:44 +00:00
Vitor Pamplona 773984d7a8
Clarifies that replies should use NIP-22 2024-11-27 11:44:26 -05:00
Vitor Pamplona 04fec8c96d
Update 63.md
Co-authored-by: Asai Toshiya <to.asai.60@gmail.com>
2024-11-26 23:23:30 -05:00
Vitor Pamplona 7c6aff49f4 Fixing missing migration from e to a tags on the reading state. 2024-11-26 18:51:30 -05:00
Vitor Pamplona eea63b11c1 Removes trademark issues and makes all content modifiable to make it easier to integrate multiple worlds 2024-11-25 17:37:33 -05:00
Vitor Pamplona e87baf2651 Adds reading state 2024-11-25 16:34:15 -05:00
Vitor Pamplona d7be8afa24 Improves text, removes reference loop 2024-11-25 15:57:56 -05:00
Vitor Pamplona 83df1e6b40 Fixes nip number 2024-11-23 19:28:52 -05:00
Vitor Pamplona 4a020dc25a separating root from other nodes. 2024-11-23 19:25:36 -05:00
Vitor Pamplona 3819694bbf Build your own posts. 2024-11-23 17:55:35 -05:00
1 changed files with 95 additions and 0 deletions

95
63.md Normal file
View File

@ -0,0 +1,95 @@
NIP-63
======
Interactive Stories
-------------------
`draft` `optional`
This NIP introduces `kind:30296` and `kind:30297` as living notes designed to create interactive stories. These notes include `option` tags for navigating to subsequent notes, allowing readers to continue exploring the story. `Kind:30296` serves as starting events for the reader, while `kind:30297` represents individual scenes within the narrative.
The modularity of this approach allows Scenes from multiple authors to be combined into bigger stories.
### Prologue (kind:30296)
Prologue events are entry points in the story.
They SHOULD contain `title`, `summary` and `image` to help clients render a preview of the story.
`option` tags include a description for the action button, an address and the relay to find the next scene.
```jsonc
{
"kind": 30296,
"content": "<the beginning of the story>",
"tags": [
["d", "<unique identifier>"],
["title", "<short title for the prologue>"],
["summary", "<summary for preview>"],
["image", "<image url for preview>"],
["option", "<description>", "<kind:pubkey:d-tag>", "<relay_hint>"],
["option", "<description>", "<kind:pubkey:d-tag>", "<relay_hint>"],
// ...
]
}
```
### Scene (kind:30297)
Scenes describe a given point in a story with potential options and SHOULD include an optional `title` tag.
```jsonc
{
"kind": 30297,
"content": "<description of the scene>",
"tags": [
["d", "<unique identifier>"],
["title", "<short title for this scene>"],
["option", "<description>", "<kind:pubkey:d-tag>", "<relay_hint>"],
["option", "<description>", "<kind:pubkey:d-tag>", "<relay_hint>"],
// ...
]
}
```
The story concludes when no `option` tags are present.
The `.content` field does not accept markdown.
## Reading State
Kind `30298` stores the latest state of the story.
The `d` tag of the replaceable event MUST match the root event's id.
The `a` tag points to the latest scene the user has read.
```jsonc
{
"kind": 30298,
"tags": [
// d-tag defines the starting point so that if the user sees an interative post again, the client can find it.
["d", "<kind:pubkey:d-tag>"],
// cached to simplify preview purposes
["title", "<root_event_title>"],
["summary", "<root_event_summary>"],
["image", "<image url for preview>"],
// root with relay hint
["A", "<kind:pubkey:d-tag>", "<relay_hint>"],
// current scene with relay hint
["a", "<kind:pubkey:d-tag>", "<relay_hint>"],
// reading status
["status", "<new|reading|done>"]
]
}
```
## Replies
Replies to all kinds here should use [NIP-22](22.md).