{"id":"b1d3fbdd865408de0d60bf3913b775f93734125c8b4fb89cecfd12cab700b416","pubkey":"1bc70a0148b3f316da33fe3c89f23e3e71ac4ff998027ec712b905cd24f6a411","created_at":1763609047,"kind":30817,"tags":[["d","music-playlists"],["title","Music Playlists"],["client","nostrhub.io"]],"content":"# Music Playlists\n\nThis spec defines an addressable event kind for publishing music playlists on Nostr.\n\n## Event Kind\n\n- `34139`: Playlist (addressable)\n\n## Playlist Event\n\nA playlist is an addressable event containing an ordered list of music tracks.\n\n### Format\n\nThe `.content` field MAY contain a description of the playlist in plain text or Markdown.\n\n### Tags\n\n**Required:**\n- `d` - Unique identifier for this playlist\n- `title` - Playlist title\n- `alt` - Human-readable description (NIP-31)\n\n**Optional:**\n- `description` - Short description (can also use content field)\n- `image` - URL to playlist artwork\n- `a` - Track references in format `36787:<pubkey>:<d-tag>` (multiple, ordered)\n- `t` - Category tags for discovery\n- `public` - Set to `\"true\"` for public playlists (default)\n- `private` - Set to `\"true\"` for private playlists\n- `collaborative` - Set to `\"true\"` to allow others to add tracks\n\n### Example\n\n```json\n{\n  \"kind\": 34139,\n  \"content\": \"My favorite summer vibes from 2024\",\n  \"tags\": [\n    [\"d\", \"summer-vibes-2024\"],\n    [\"title\", \"Summer Vibes 2024\"],\n    [\"image\", \"https://cdn.blossom.example/img/playlist.jpg\"],\n    [\"description\", \"Chill electronic tracks for summer\"],\n    [\"a\", \"36787:abc123...:summer-nights-2024\"],\n    [\"a\", \"36787:def456...:sunset-dreams\"],\n    [\"a\", \"36787:abc123...:ocean-breeze\"],\n    [\"t\", \"playlist\"],\n    [\"t\", \"electronic\"],\n    [\"t\", \"summer\"],\n    [\"public\", \"true\"],\n    [\"alt\", \"Playlist: Summer Vibes 2024\"]\n  ]\n}\n```\n\n## Track References\n\nPlaylists reference music tracks using `a` tags in the format:\n```\n[\"a\", \"36787:<pubkey>:<d-tag>\"]\n```\n\nWhere:\n- `36787` is the Music Track event kind (see NIP-XX: Music Tracks)\n- `<pubkey>` is the track author's public key (hex)\n- `<d-tag>` is the track's unique identifier\n\n## Implementation Notes\n\n- Playlists are updatable (addressable events)\n- Playlist `a` tags reference tracks in display order\n- Clients SHOULD preserve track order when displaying playlists\n- Clients SHOULD handle missing/deleted tracks gracefully\n- When a referenced track is not found, clients MAY show a placeholder or skip it\n- Playlists support NIP-25 reactions and NIP-22 comments\n- Use `naddr` identifiers to link to playlists\n- Collaborative playlist mechanics are client-defined (e.g., NIP-04/17 track suggestions)\n- Artwork images SHOULD be hosted on Blossom servers for permanence","sig":"927d961cafecd3ddea05c4b5375f0576a87f28e6a053b367df1b01afdec33874ec0c5feff0f1223c33b79825879dfd7192703ea214f125a0c3e9b4fb87287a52"}