A different AI attempt at the same #vibecode as the other post
Below is the **updated NIP-XX draft** that adds:
1. **Rich audio tagging** – distinguish *music vs podcast*, genres, moods, etc.
2. **Album grouping** – the same `npub` can organize tracks into albums (or podcast series).
Everything **still uses only Kind 1063 + Kind 1** → **zero relay changes**, 100 % compatible today.
---
# NIP-XX – Audio-Only Posts with Tags & Albums
**(Kind 1063 + Kind 1 – Fully Relay-Compatible)**
## Abstract
A lightweight, relay-compatible way to publish **audio-only** content (`.wav`, `.mp3`, `.m4a`, `.mp4` audio) with:
- **Semantic tags** (`music`, `podcast`, `genre:rock`, `mood:chill`, etc.)
- **Album / series grouping** per `npub`
- Optional track number, album art, release year
Uses **existing NIP-94 Kind 1063** for file metadata and **Kind 1** for the user post.
---
## Motivation
- Native support for **music**, **podcasts**, **audiobooks**, **field recordings**, etc.
- Let clients filter/feed by type or genre
- Group tracks into **albums** or **podcast series** without new kinds
- **No relay updates required**
---
## Specification
### 1. Kind 1063 – **Audio File Metadata** (Extended)
| Tag | Required | Description |
|-----|----------|-------------|
| `url` | **yes** | Direct HTTPS URL to the audio file |
| `m` | **yes** | MIME: `audio/wav`, `audio/mpeg`, `audio/mp4`, etc. |
| `size`| no | File size in bytes |
| `t` | **yes** | **Audio type tag** – one of: `music`, `podcast`, `audiobook`, `soundscape`, `spokenword` |
| `g` | no | **Genre tags** – repeatable: `g,rock`, `g,hiphop`, `g,ambient`, `g,comedy`, `g,truecrime` |
| `album` | no | **Album / series name** (e.g., `"Summer Vibes 2025"`, `"TechBit Podcast"`) |
| `track`| no | Track number: `1`, `2`, `1/12`, etc. |
| `year`| no | Release year: `2025` |
| `artist`| no | Display name of creator (fallback: `npub` nickname) |
| `i` | no | Thumbnail / album art URL (recommended 1:1 or 3:2) |
| `duration` | no | Duration in seconds (e.g., `212`) |
> **All new tags are standard NIP-01 `name,value` tags** → relays store them blindly.
#### Example: Music Track in Album
```json
{
"kind": 1063,
"tags": [
["url", "https://cdn.example.com/tracks/sunset-drive.mp3"],
["m", "audio/mpeg"],
["size", "5231098"],
["t", "music"],
["g", "synthwave"],
["g", "electronic"],
["album", "Neon Nights"],
["track", "3"],
["year", "2025"],
["artist", "DJ Nova"],
["i", "https://cdn.example.com/art/neon-nights.jpg"],
["duration", "198"]
],
"content": "",
"created_at": 1731714000,
"pubkey": "npub1beatbox...",
"id": "a1b2c3d4...",
"sig": "..."
}
```
#### Example: Podcast Episode
```json
{
"kind": 1063,
"tags": [
["url", "https://pod.example.com/ep42.m4a"],
["m", "audio/mp4"],
["t", "podcast"],
["g", "technology"],
["g", "startup"],
["album", "Founder Files"],
["track", "42"],
["year", "2025"],
["duration", "3421"],
["i", "https://pod.example.com/art/founder-files.jpg"]
],
"content": "",
"created_at": 1731714100,
"pubkey": "npub1podcast...",
"id": "e5f6g7h8...",
"sig": "..."
}
```
---
### 2. Kind 1 – **User Post** (Unchanged, just references)
| Tag | Required | Description |
|-----|----------|-------------|
| `e` | **yes** | ID of the Kind 1063 event (marker `"audio"` recommended) |
```json
{
"kind": 1,
"content": "New synthwave banger from *Neon Nights* – Track 3: Sunset Drive",
"tags": [
["e", "a1b2c3d4...", "", "audio"]
],
"created_at": 1731714010,
"pubkey": "npub1beatbox...",
"id": "x9y8z7w6...",
"sig": "..."
}
```
---
## Album Grouping Logic (Client-Side)
Clients **group audio events** from the **same `pubkey`** by:
```text
Key = pubkey + album tag value
```
### Steps:
1. Fetch all **Kind 1063** events from a given `npub`.
2. Group by:
- `album` tag (if present) → one album
- If missing → treat as **singles** (group under `"Singles"` or `npub` name)
3. Within each album:
- Sort by `track` (numeric or `n/total`)
- Fallback: `created_at`
4. Show album view with cover (`i` tag), tracklist, play-all button.
---
## Client Rendering Rules (Updated)
1. **Detect** Kind 1 with `e` → Kind 1063
2. Read all tags from Kind 1063:
- Render `<audio>` with `url` + `m`
- Show **type badge**: `🎵 Music`, `🎙️ Podcast`, etc.
- Show **genres** as chips: `#synthwave #electronic`
- If `album` exists → show **"From: Neon Nights • Track 3"**
3. In **profile/feed view**:
- Group same-album tracks
- Show album card with art (`i`), title, year, track count
---
## Supported Tags Summary
| Tag | Example | Meaning |
|-----|--------|--------|
| `t` | `music` | Primary type |
| `g` | `rock`, `jazz`, `comedy` | Repeatable genres/moods |
| `album` | `Neon Nights` | Group key |
| `track` | `5`, `2/10` | Ordering |
| `year` | `2025` | Filter by year |
| `artist` | `DJ Nova` | Display name |
| `duration` | `198` | Show `3:18` |
---
## Full Example: Album "Neon Nights" (3 tracks)
```json
// Track 1
{
"kind": 1063,
"tags": [
["url", "https://cdn/.../track1.mp3"], ["m", "audio/mpeg"],
["t", "music"], ["g", "synthwave"], ["album", "Neon Nights"],
["track", "1"], ["year", "2025"], ["i", "https://cdn/.../cover.jpg"]
],
"id": "track1_id..."
}
// Track 2 → same album, track "2"
// Track 3 → posted with Kind 1
{
"kind": 1,
"content": "Dropping Track 3 tonight!",
"tags": [["e", "track3_1063_id", "", "audio"]],
"id": "post_id..."
}
```
Client shows:
```
Neon Nights (2025) • DJ Nova
[Album Art]
1. Opening Credits 3:42
2. Midnight Cruise 4:11
3. Sunset Drive 3:18 ← now playing
```
---
## Ready-to-Submit NIP Text
```markdown
# NIP-XX – Audio-Only Posts with Tags & Albums (Kind 1063 + Kind 1)
## Abstract
Extends NIP-94 Kind 1063 to support rich audio tagging and album grouping using only existing event kinds.
## Specification
### Kind 1063 Tags
- `t` (required): `music` | `podcast` | `audiobook` | `soundscape` | `spokenword`
- `g` (repeatable): genre/mood tags
- `album`: album or series name
- `track`: track number (e.g., `3`, `1/12`)
- `year`, `artist`, `duration`, `i` (art): optional
### Kind 1
- Must contain `e` tag pointing to Kind 1063 with marker `"audio"` (recommended)
### Client Behavior
- Group Kind 1063 events by `pubkey + album`
- Sort by `track` or `created_at`
- Render `<audio>` with metadata badges
## Compatibility
- Uses **only Kind 1 and Kind 1063**
- **No relay changes required**
- Works on **all existing relays today**
```
---
## TL;DR – What Changed
| Feature | How |
|-------|-----|
| **Tag audio type** | `t,music` or `t,podcast` |
| **Add genres** | `g,rock`, `g,ambient` (repeatable) |
| **Group into albums** | `album,"Neon Nights"` + same `npub` |
| **Track order** | `track,3` |
| **Still 100% relay-safe** | Only uses existing kinds & standard tags |
---
**Publish this NIP, and clients can start supporting *tagged, album-organized audio* on Nostr — today.**
No relay updates. No new kinds. Just smarter metadata.
Josephus
Josephus@NostrAddress.com
npub1te6e...eqew
American Nationalist, rational empiricist, closed borders conservative. Beatboxer, amateur philosopher, aspiring novelist, and outdoor worker.
Anyone want to help me proofread the first thing I’ve ever vibe coded?
#vibecoding #nostr #bitcoin
NIP-XX – Audio-Only Posts with Tags & Albums (Kind 1063 + Kind 1)
Abstract
Extends NIP-94 Kind 1063 to support rich audio tagging and album grouping using only existing event kinds. This version introduces standardized formatting for track duration, genre, mood, and date to improve clarity and consistency across clients and relays.
Specification
1. Kind 1063 – Audio File Metadata (Extended)
Tag Required Description
url ✅ Yes Direct HTTPS URL to the audio file
f ✅ Yes File format: audio/wav, audio/mpeg, audio/mp4, etc.
size ❌ No File size in bytes
t ✅ Yes Audio type tag – one of: music, podcast, audiobook, soundscape, spokenword
g ❌ No Genre tag – one of: rock, hiphop, ambient, comedy, truecrime, etc.
m ❌ No Mood tag – one of: chill, energetic, lo-fi, mysterious, upbeat, etc.
album ❌ No Album / series name (e.g., "Summer Vibes 2025", "TechBit Podcast")
track ❌ No Track number: 1, 2, 1/12, etc.
year ❌ No Release year: 2025
artist ❌ No Display name of creator (fallback: npubnickname)
i ❌ No Thumbnail / album art URL (recommended 1:1 or 3:2)
duration ❌ No Duration in seconds (e.g., 198)
All new tags are standard NIP-01 name,value tags → relays store them blindly.
Example: Music Track in Album
{
"kind": 1063,
"tags": [
["url", "https://cdn.example.com/tracks/sunset-drive.mp3"],
["f", "audio/mpeg"],
["size", "5231098"],
["t", "music"],
["g", "synthwave"],
["m", "chill"],
["album", "Neon Nights"],
["track", "3"],
["year", "2025"],
["artist", "DJ Nova"],
["i", "https://cdn.example.com/art/neon-nights.jpg"],
["duration", "198"]
],
"content": "",
"created_at": 1731714000,
"pubkey": "npub1beatbox...",
"id": "a1b2c3d4...",
"sig": ". .."
}
Example: Podcast Episode
{
"kind": 1063,
"tags": [
["url", "https://pod.example.com/ep42.m4a"],
["f", "audio/mp4"],
["t", "podcast"],
["g", "technology"],
["g", "startup"],
["album", "Founder Files"],
["track", "42"],
["year", "2025"],
["duration", "3421"],
["i", "https://pod.example.com/art/founder-files.jpg"]
],
"content": "",
"created_at": 1731714100,
"pubkey": "npub1podcast...",
"id": "e5f6g7h8...",
"sig": ". .."
}
2. Kind 1 – User Post (Unchanged, just references)
Client Rendering Rules (Updated)
* Detect Kind 1 with e → Kind 1063
* Read all tags from Kind 1063:
* Render audio with url + f
* Show type badge: 🎵 Music, 🎙️ Podcast, etc.
* Show genres as chips: #rock, #hiphop
* Show moods as chips: #chill, #energetic
* If album exists → show "From: Neon Nights • Track 3"
Album Grouping Logic (Client-Side)
Clients group audio events from the same pubkey by:
* Key = pubkey + album tag value
* Steps:
* Fetch all Kind 1063 events from a given npub.
* Group by:
* album tag (if present) → one album
* If missing → treat as singles (group under "Singles" or npub name)
* Within each album:
* Sort by track (numeric or n/total)
* Fallback: created_at
* Show album view with cover (i tag), tracklist, play-all button.
Standardized Formatting Rules
Ready-to-Submit NIP Text
NIP-XX – Audio-Only Posts with Tags & Albums (Kind 1063 + Kind 1)
Abstract Extends NIP-94 Kind 1063 to support rich audio tagging and album grouping using only existing event kinds. This version introduces standardized formatting for track duration, genre, mood, and date to improve clarity and consistency across clients and relays.
Specification
Kind 1063 Tags
* url: Direct HTTPS URL to the audio file
* f: File format: audio/wav, audio/mpeg, audio/mp4, etc.
* size: File size in bytes
* t: Audio type tag – one of: music, podcast, audiobook, soundscape, spokenword
* g: Genre tag – one of: rock, hiphop, ambient, comedy, truecrime, etc.
* m: Mood tag – one of: chill, energetic, lo-fi, mysterious, upbeat, etc.
* album: Album / series name
* track: Track number: 1, 2, 1/12, etc.
* year, artist, duration, i(art): optional
Kind 1
* Must contain e tag pointing to Kind 1063 with marker "audio"(recommended)
Client Behavior
* Group Kind 1063 events by pubkey + album
* Sort by track or created_at
* Render audio with metadata badges
Compatibility
* Uses only Kind 1 and Kind 1063
* No relay changes required
* Works on all existing relays today
Standardized Formatting Rules
* Track Duration: hh:mm:ss (e.g., 3:18 for 198 seconds)
* Genre Tag: g,rock, g,ambient, etc.
* Mood Tag: m,chill, m,energetic, etc.
* Date Format: dd-mmm-yyyy (e.g., 03-Apr-2025)
TL;DR – What Changed
✅ Final Thoughts
This version of NIP-XX resolves the ambiguity with the m tag by using f for file format and m for mood. It maintains full compatibility with existing Nostr infrastructure and is ready for adoption by clients and relays.
Things have been busy lately and I haven't had much time to maintain presence outside of just posting short beatboxing videos. It seems nostr is doing okay without me.
The character sheets for the next season of #thestorygame


#homemade herb-rind cheese laminated in #homegrown green onion leaves


Pretty proud of this one. Happy #crosspostday everyone View quoted note →
@primal I’ve tried “updating” the wallet at least 10 times now. What’s going on?


A bit more of a singing piece for #crosspostday , as opposed to the beat heavy stuff I usually do. There's a reason for the "serenade" part of the name. View quoted note →
#crosspostday
hope you guys like some of these. I dropped a bunch. View quoted note →
I agree with you. But I know most people don’t know or blatantly refuse to acknowledge the racial connection. Nothing you said was wrong. My comment was merely for clarity.
Most people try to rebut your original post with some “Rajesh who just showed up is just as American as you are” bullshit which is exactly how we got here.
Rajesh is NOT and CANNOT be as American as me. Maybe his grandkids at the soonest, and only if they do specific things to become as American.
A home grown white communist is ALSO less American than me. But he is still MORE American than Rajesh, as he was at least raised in the American culture that he rejects.
These claims are not contradictory, as much as people try to paint them to be.
View quoted note →
Literally true, but he could just bring that whole thing down by leaking the full files anyway. He has the access. The rest is just posturing.
View quoted note →
China owns a pork producer responsible for 25% of our pork supply.
If you want to posture about fighting China and want our economy to grow at the same time, you need to dissolve that company, divest China from all other major buys, take the short term hit, and THEN grow.
The health insurance industry is a massive financial drain for no benefit, but has become malignant enough to create dependency. No politician has the guts or the foresight to take the short term hits to fix problems preventing long term growth.
This is because the asset class wants constant gains to gamble, flip, and play other shenanigans with… the value of which ultimately is either functionally syphoned from the middle class or transferred to the young in the form of inflation.
Trump already said he can’t bring down housing prices because of boomer investment portfolios.
Trump IS the fucking problem. He will not improve the economy anymore. The only thing he WAS doing to help was remove illegals, and now he’s been cowed from that too.
View quoted note →
Whites and East Asians have the highest average IQs on earth. The USA was a 85%+ white country up until the 90s.
They will blame ANYTHING but demographics.
My daughter needed language help because a processing problem. “Peekaboo” turned into “kickaploo”. The local public school offered 20 min a day group sessions 2x a week. We gave it a shot. She made no progress and they kept gaslighting us and changing her academic plan to lower the bars that they weren’t reaching.
Then we saw the class photo and it became obvious why:
SHE WAS THE ONLY WHITE IN HER CLASS.
In group sessions, the teacher was teaching to the lowest common denominator. Juan and Pablo don’t know English, so that’s what she focused on.
They hid the speech therapist from us too… we found out why in the photo too: Ms Perez.
We had basically sent my daughter to a different country because 3 white admins at the front desk had had us convinced it was an American school.
Between this kind of crap failing our kids, DEI for teachers (NY state just got rid of literacy tests for being “racists” from teachers licensing tests), and average IQ difference between our former and current demographic groups is the only explanation needed for the fall in student achievement.
But it’s always laptops, videogames, music…
ANYTHING but the sacred cow of demographics.
View quoted note →

If they aren’t going to prosecute the fraud that was ALREADY FOUND in Minnesota, then why would I believe that anything will be different in California no matter WHAT they find.
View quoted note →