NIP-XX
Documentation and Wikis with Spaces and Format Declaration#
draft optional
Summary#
This NIP introduces a system for collaborative documentation and wikis on Nostr. It improves upon earlier efforts by adding namespace-like Spaces, explicit content format declaration, and clearer separation of article types, including redirects and merge requests.
Motivation#
Previous approaches to wiki-style collaborative content on Nostr had two key limitations:
- Format instability – No declared format per event led to breaking changes (e.g. a shift from Markdown to Asciidoc).
- Lack of namespace separation – All articles existed in a global space, causing confusion and collision between unrelated projects.
This NIP addresses both by introducing:
- Spaces – individually defined wikis or documentation sets.
- Explicit per-article format declaration.
- Dedicated event kinds for articles, redirects, merge requests, and space metadata.
Specification#
kind: 31055 – Space Definition
Defines a project namespace for articles.
Tags:
["name", "<space title>"]["slug", "<short identifier>"]["description", "<optional description>"]["language", "<ISO language code>"]["license", "<license text or SPDX ID>"]
Content: (optional) full description or README for the space.
kind: 31056 – Article
An article in a specific format belonging to a defined space.
Tags:
["space", "<slug>"]["title", "<article title>"]["format", "markdown" | "asciidoc" | "wikitext" | "html"]["format-version", "<format version>"](optional)["prev", "<event-id>"](optional)["summary", "<short change summary>"](optional)
Content: full body of the article in the declared format.
kind: 31057 – Redirect
Redirects from one article title to another within the same space.
Tags:
["space", "<slug>"]["from", "<old title>"]["to", "<new title>"]
Content: empty.
kind: 31058 – Merge Request
Proposes a revision to an article without directly altering the original.
Tags:
["space", "<slug>"]["title", "<article title>"]["base", "<event-id>"]["format", "<format>"]["comment", "<short summary>"](optional)
Content: proposed article content.
Format Guidelines#
Currently allowed formats:
markdownasciidocwikitexthtml
Clients MUST ignore formats they do not support. Clients MAY apply stricter formatting rules.
Client Behavior#
Clients:
- MUST render only supported formats.
- MUST treat
spaceas a case-sensitive namespace. - SHOULD allow filtering, browsing and searching within Spaces.
- SHOULD support revision tracking via
prev. - MAY support diff/merge tooling for
kind: 31058.
Examples#
Space Definition
{
"kind": 31055,
"tags": [
["name", "Bitcoin Docs"],
["slug", "btc-docs"],
["description", "Developer documentation for Bitcoin tools"],
["language", "en"],
["license", "MIT"]
],
"content": "Welcome to the Bitcoin Docs Space."
}
Markdown Article
{
"kind": 31056,
"tags": [
["space", "btc-docs"],
["title", "Installation Guide"],
["format", "markdown"]
],
"content": "# Installation\n\nFollow these steps to install the software..."
}
Asciidoc Article
{
"kind": 31056,
"tags": [
["space", "btc-docs"],
["title", "RPC Reference"],
["format", "asciidoc"]
],
"content": "= RPC Reference\n\nThis section describes JSON-RPC calls."
}
Wikitext Article
{
"kind": 31056,
"tags": [
["space", "btc-docs"],
["title", "Block Structure"],
["format", "wikitext"]
],
"content": "== Block Structure ==\n\nThe structure of a Bitcoin block is..."
}
Redirect
{
"kind": 31057,
"tags": [
["space", "btc-docs"],
["from", "Getting Started"],
["to", "Installation Guide"]
],
"content": ""
}
Merge Request
{
"kind": 31058,
"tags": [
["space", "btc-docs"],
["title", "Installation Guide"],
["base", "d72fa1..."],
["format", "markdown"],
["comment", "Added step for testnet"]
],
"content": "# Installation\n\nNow includes setup instructions for testnet users."
}
Acknowledgements#
This proposal builds on earlier ideas for decentralized wikis and documentation within Nostr, while solving common issues related to format instability and lack of project separation.


Comments
No comments yet. Start the conversation.