Skip to Content
DevelopersClips (kind 34235 / 34236)

Clips (kind 34235 / 34236)

Clips are video content published to Nostr. NIP-71 defines four video kinds across two axes — normal vs short, and legacy vs addressable:

KindFormatType
21Normal (horizontal) videoLegacy (identified by event ID, immutable)
22Short (vertical/portrait) videoLegacy (identified by event ID, immutable)
34235Normal (horizontal) videoAddressable (d tag, replaceable/updatable)
34236Short (vertical/portrait) videoAddressable (d tag, replaceable/updatable)

Shosho supports all four and deduplicates across them. Prefer kind 34235 (normal) or 34236 (short) when publishing — addressable kinds let you update metadata after publication.

First upload the video file. See Media uploads. The upload response provides the hosted URL and the values to put into the imeta tag.

The clip’s description goes in .content (the event’s content field), not in a separate summary tag — NIP-71 doesn’t define summary for video events.

Publish a clip event (e.g. kind 34236)

nak event -k 34236 \ --content "A great clip from my stream — full description here." \ -t d=my-clip-2024 \ -t title="Amazing Moment" \ -t alt="Short video clip" \ -t duration=30 \ -t published_at=$(date +%s) \ -t 'imeta=dim 1080x1920;url https://media.nostr.build/av/abc123.mp4;m video/mp4;x <sha256>;image https://media.nostr.build/av/abc123_thumb.jpg;blurhash eQGV%25L...;service nip96' \ -t t=shosho \ --sec <nsec1...> \ wss://relay.damus.io wss://relay.primal.net

Tag structure

NIP-71 defines imeta as the primary source of video information. Most other tags are optional.

TagValueRequired
dUnique identifierYes (kinds 34235/34236)
titleClip titleYes
imetaVideo data — url, m (MIME), dim, x (sha256), image, fallback, service, bitrate, duration, blurhash. May be repeated for variants.Yes
published_atFirst-publish unix timestamp (recommended)No
altAlt text for accessibilityNo
durationTop-level duration in seconds (also recommended inside imeta)No
text-trackCaptions/subtitles WebVTT — [<encoded kind 6000 event>, <relay>]No
content-warningReason for NSFW contentNo
segmentChapter: [<start HH:MM:SS.sss>, <end>, <title>, <thumb-url>]No
tHashtagsNo
pParticipant in the video: [<pubkey>, <relay>]No
rReferences / links to web pages (per NIP-71 — not a media-fallback URL; use fallback inside imeta for that)No
originImported-content tracking: [<platform>, <external-id>, <original-url>]No

Use kind 34236 for vertical/portrait content (stories, reels, shorts) and 34235 for normal/horizontal. NIP-71 notes the distinction is a stylistic hint to clients, not a hard size rule.

Viewing on Shosho

Build the clip’s naddr:

nak encode naddr -k <clip_kind> -d <d-tag> -a <author_hex_pubkey>

View at https://shosho.live/clips/<naddr>.

Comments and reactions

Send a comment (kind 1111)

nak event -k 1111 \ --content "Great clip!" \ -t a='34235:<clip_author_hex_pubkey>:<d-tag>;wss://relay.damus.io;root' \ --sec <nsec1...> \ wss://relay.damus.io wss://relay.primal.net

React (kind 7)

nak event -k 7 \ --content "+" \ -t a='34235:<clip_author_hex_pubkey>:<d-tag>;wss://relay.damus.io;root' \ --sec <nsec1...> \ wss://relay.damus.io wss://relay.primal.net

Read comments

nak req -k 1111 -k 7 -k 9735 \ -t a='34235:<clip_author_hex_pubkey>:<d-tag>' \ -l 100 \ wss://relay.damus.io wss://nos.lol
Last updated on