Reactions, Reposts and Social Primitives on Nostr
Reactions, Reposts & Social
Social primitives on Nostr.
Reactions (Kind 7)
{
"kind": 7,
"content": "👍",
"tags": [
["e", "<event-id>"],
["p", "<author-pubkey>"],
["k", "1"]
]
}
contentis the reaction: emoji,+, or-etag: the event being reacted toptag: the author of the reacted-to eventktag: kind of the reacted-to event
Clients aggregate and display the most popular reactions.
Reposts (Kind 6 & 16)
Kind 6 — Simple Repost
{
"kind": 6,
"content": "{\"<pubkey>\":\"\"}",
"tags": [
["e", "<event-id>"],
["p", "<author-pubkey>"]
]
}
Share someone else’s event. content is a JSON object mapping the author’s pubkey to an empty string.
Kind 16 — Generic Repost
{
"kind": 16,
"content": "",
"tags": [
["e", "<event-id>"],
["p", "<author-pubkey>"],
["k", "1"]
]
}
Extended repost with kind distinction. The k tag identifies the original event’s kind.
Quote Repost
A kind 1 note with an embedded nostr:nevent1... reference in the content. The client renders the original event alongside your commentary.
Follows (Kind 3)
Contact list. Tags establish the social graph:
{
"kind": 3,
"tags": [
["p", "<pubkey>", "<relay-url>", "<petname>"]
]
}
Petnames are local labels, visible only to clients that display them.
Community Moderation
Mute Lists (Kind 10000)
{
"kind": 10000,
"tags": [
["p", "<pubkey>"], // mute this person
["e", "<event-id>"], // mute this event
["t", "politics"] // mute this hashtag
]
}
Reports (Kind 1984)
{
"kind": 1984,
"content": "Spam account",
"tags": [
["p", "<reported-pubkey>"],
["e", "<reported-event-id>"],
["report", "spam"]
]
}
Report types: nudity, malware, profanity, illegal, spam, impersonation, other.
Trending / Sorting
Nostr has no algorithm. Discovery happens through:
- Your follows’ posts: chronological
- Your follows’ reactions: what they engage with
- Zap totals: sort by most-zapped (NIP-57)
- Relay search: NIP-50 full-text search
- Community curation: kind 30004 lists
Write a comment