No accounts. No fiat. No bullshit. Stream and support indie artists with Bitcoin Lightning. π΅β‘
Public Key
npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc Profile Code
nprofile1qqsr3cre7ucfftug3dm2swwwt9epl7glh6k6um57uk2hczyu9kvqjxcpr9mhxue69uhhyetvv9uju6twv35k2umpw3ejucm0d5q3vamnwvaz7tmjv4kxz7fwwpexjmtpdshxuet5yrylxw
Show more details
Published at
2026-07-11T22:13:56Z Event JSON
{
"id": "1120cac26f05ef89188b3c78dfd5d48e8076ea0918146cf0aa677d0ca189fde6" ,
"pubkey": "38e079f73094af888b76a839ce59721ff91fbeadae6e9ee5957c089c2d98091b" ,
"created_at": 1783808036 ,
"kind": 0 ,
"tags": [],
"content": "{\"name\":\"IndieSats\",\"display_name\":\"IndieSats\",\"about\":\"No accounts. No fiat. No bullshit. Stream and support indie artists with Bitcoin Lightning. π΅β‘\",\"picture\":\"https://indiesats.com/logo-2048.png\",\"website\":\"https://indiesats.com\",\"lud16\":\"[email protected] \",\"banner\":\"https://indiesats.com/assets/banner.svg\"}" ,
"sig": "3c47674bbb4f3d47e7f8730bc018193d519e429de6b23f47495630a4239b308a9c767451dc0a281c14e6b41c94707a488918e7efd9f307d5d9921c793e7e292e"
}
Last Notes npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats IndieSats: The Platform That Doesn't Own Your Music A Nostr-first architecture means you publish once, own forever, and never ask permission. Most music platforms trap your data. They store your tracks in their database, serve your RSS from their servers, and if they decide to change your profile or take down your music, you have no recourse. Your creative work becomes a row in their Postgres that they control. IndieSats does the opposite. You Publish to Nostr. We Render It. When you publish a track through IndieSats, here's what actually happens: 1. You build a Nostr event (kind 36787 β Amethyst music track format) 2. You sign it with your key β either your browser extension or your nsec 3. It broadcasts to relays β Primal, nos.lol, and ours 4. That's it. Your music now lives on the open relay network, signed and immutable IndieSats doesn't store your tracks in a database. We don't host your audio. We don't generate your RSS from our API. We query the Nostr network, cache it briefly, and render it. We are a renderer, not a host. What This Means for You as an Artist Your Profile Is Yours Your artist profile is your Nostr kind 0 event. Want to change your lightning address? Update your Nostr profile. The change reflects instantly across every IndieSats RSS feed, every podcast app, every relay β no ticket to support, no 24-hour wait. Your Music Can't Be Delisted Because every track event is signed with your key and lives on 10+ independent relays, no single platform can remove your music. If IndieSats goes offline, your events are still on Primal, nos.lol, and every other relay. Any app can query them. Any developer can build a new renderer. Your RSS Feed Is Portable Traditional platforms generate RSS from their database. Their product, their control. IndieSats generates RSS fresh on every request from your live Nostr events. The feed is a view on data you already own. Take your npub to any Nostr-aware tool and the same data is there. You Prove Authorship Every track is cryptographically signed. That signature verifies you created it. No platform badge needed β mathematics does the attestation. One Feed, Everything Whether you publish one single or fifty albums, you get one RSS feed URL: https://indiesats.com/api/feed?npub=YOUR_NPUB Podcast apps, Fountain, Castamatic β they all subscribe to the same feed. New tracks appear automatically. No re-submission. No platform gatekeeping. The Architecture in One Sentence IndieSats renders music that artists own, rather than hosting music that platforms control. Why This Matters Platforms with a central database store your profile, tracks, and RSS as rows in their infrastructure. They can modify your metadata, change your splits, or delist your work because they hold the keys to the storage. Wavlake, for example, runs on Postgres β your tracks live in their database and their RSS is generated from their API. IndieSats has no database for music metadata. The "database" is the Nostr relay network. We read from it. You write to it. That's the whole relationship. For the Technical Minds - No custody: We don't hold your sats, your keys, or your data - No keysend forwarding liability: You receive directly to your lnaddress - Deterministic GUIDs: SHA1-based, stable across republishes and re-renders - Kind 36787 + Podcast Index spec: Standard events, standard RSS, maximum compatibility - Client-side wallets: NWC, LNC, WebLN β your credentials never touch our server The Bottom Line Publish via IndieSats and you're not "uploading to a platform." You're writing to an open, global, censorship-resistant publishing layer that happens to have a really nice music renderer attached. Your music outlives us. That's the point. Try it: https://indiesats.com/publish.html #music #nostr #indiesats #bitcoin #lightning #openmusic #value4value npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats # IndieSats: The Platform That Doesn't Own Your Music **A Nostr-first architecture means you publish once, own forever, and never ask permission.** Most music platforms trap your data. They store your tracks in *their* database, serve your RSS from *their* servers, and if they decide to change your profile or take down your music, you have no recourse. Your creative work becomes a row in their Postgres that they control. IndieSats does the opposite. ## You Publish to Nostr. We Render It. When you publish a track through IndieSats, here's what actually happens: 1. **You build a Nostr event** (kind 1063 β music track metadata) 2. **You sign it with your key** β either your browser extension or your nsec 3. **It broadcasts to relays** β Primal, nos.lol, snort.social, and ours 4. **That's it.** Your music now lives on the open relay network, signed and immutable IndieSats doesn't store your tracks in a database. We don't host your audio. We don't generate your RSS from our API. We query the Nostr network, cache it briefly, and render it. We are a **renderer**, not a **host**. ## What This Means for You as an Artist ### Your Profile Is Yours Your artist profile is your Nostr kind 0 event. Want to change your lightning address? Update your Nostr profile. The change reflects instantly across every IndieSats RSS feed, every podcast app, every relay β no ticket to support, no 24-hour wait. ### Your Music Can't Be Delisted Because every track event is signed with your key and lives on 10+ independent relays, no single platform can remove your music. If IndieSats goes offline, your events are still on Primal, nos.lol, and every other relay. Any app can query them. Any developer can build a new renderer. ### Your RSS Feed Is Portable Traditional platforms generate RSS from their database. Their product, their control. IndieSats generates RSS fresh on every request from your live Nostr events. The feed is a *view* on data you already own. Take your npub to any Nostr-aware tool and the same data is there. ### You Prove Authorship Every track is cryptographically signed. That signature verifies you created it. No platform badge needed β mathematics does the attestation. ### One Feed, Everything Whether you publish one single or fifty albums, you get one RSS feed URL: `https://indiesats.com/api/feed?npub=<your_npub>` Podcast apps, Fountain, Castamatic β they all subscribe to the same feed. New tracks appear automatically. No re-submission. No platform gatekeeping. ## The Architecture in One Sentence > IndieSats renders music that artists own, rather than hosting music that platforms control. ## Why This Matters Platforms with a **central database** store your profile, tracks, and RSS as rows in *their* infrastructure. They can modify your metadata, change your splits, or delist your work because they hold the keys to the storage. Wavlake, for example, runs on Postgres β your tracks live in their database and their RSS is generated from their API. IndieSats has no database for music metadata. The "database" is the Nostr relay network. We read from it. You write to it. That's the whole relationship. ## For the Technical Minds - **No custody:** We don't hold your sats, your keys, or your data - **No keysend forwarding liability:** You receive directly to your lnaddress - **Deterministic GUIDs:** SHA1-based, stable across republishes and re-renders - **NIP-94 + Podcast Index spec:** Standard events, standard RSS, maximum compatibility - **Client-side wallets:** NWC, LNC, WebLN β your credentials never touch our server ## The Bottom Line Publish via IndieSats and you're not "uploading to a platform." You're writing to an open, global, censorship-resistant publishing layer that happens to have a really nice music renderer attached. Your music outlives us. That's the point. --- **Try it:** https://indiesats.com/publish.html #music #nostr #indiesats #bitcoin #lightning #openmusic #value4value npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats π΅ IndieSats now publishes tracks in Nostr native music format (kind 36787). What this means: β’ Tracks appear directly in Amethyst's music feed π§ β’ Works alongside the existing RSS feed β podcast apps unaffected β’ Same Lightning splits, same GUIDs, same everything Spite Fug is live on @amethyst now. Check them out: https://indiesats.com/artist.html?npub=npub13jml82yy69370amnfl0tfsreyg5hjqwxsmnttxv7g27usl8w5h5qnvtmat #music #nostr #amethyst #indiesats #bitcoin #lightning npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats # IndieSats Pivot: From Platform to Infrastructure We've made a fundamental change to how IndieSats works. **Before:** IndieSats acted as a publisher. We held keys, managed a whitelist, and published music on behalf of artists. We took a mandatory 2% cut. The platform was the middleman. **Now:** IndieSats is pure infrastructure. A relay. A player. A discovery layer. **What changed:** β’ Publishing through IndieSats is gone. Using your own Nostr profile was always an option β now it's the only one. β’ The relay whitelist is gone. Open relay β anyone can publish. β’ No mandatory fees. IndieSats gets an optional split only if the artist opts in. β’ Artists receive full event IDs and the complete relay list on every publish. β’ Artists can delete their own music anytime with a kind 5 event β no gatekeeper. **What this means:** Your music, your keys, your control. IndieSats doesn't hold your content hostage. We don't hold your keys. We don't decide what stays or goes. We're building the rails, not running the train. This aligns with the v4v ethos: value flows directly from listener to artist. The platform should be invisible. If you've published through IndieSats before, your tracks are still live, your RSS feeds still work, and your artist pages still exist. The only thing that changed is who's in control. You are. β https://indiesats.com npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats Check out "Spite Fug EP" by Spite Fug on indiesats.com π΅β‘ 4 tracks β’ Punk Spite Fug is the musical equivalent to a licorice sorbet with flaky sea salt, absinthe and mermaid tears. Gothic new wavy boxed wine punk, filled to the brim with stylistic references to bands like Wipers, Alien Sex Fiend and Bauhaus. Feast your 21. century dulled senses with this punk rock gem/sorbet, made by two of the Oslo undergrounds most notoriously difficult creative hoodlums. Tracklist: 1. Architect of Mourning 2. Build a Bear 3. Casino Cumrag 4. Enter Scagman #nevent1qβ¦lzwx #nevent1qβ¦x5wx #nevent1qβ¦zssn #nevent1qβ¦8dqs npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats Check out "Spite Fug EP" by Spite Fug on indiesats.com π΅β‘ 4 tracks β’ Punk Spite Fug is the musical equivalent to a licorice sorbet with flaky sea salt, absinthe and mermaid tears. Gothic new wavy boxed wine punk, filled to the brim with stylistic references to bands like Wipers, Alien Sex Fiend and Bauhaus. Feast your 21. century dulled senses with this punk rock gem/sorbet, made by two of the Oslo undergrounds most notoriously difficult creative hoodlums. Tracklist: 1. Architect of Mourning 2. Build a Bear 3. Casino Cumrag 4. Enter Scagman #nevent1qβ¦fa04 #nevent1qβ¦wx46 #nevent1qβ¦zd3n #nevent1qβ¦uqmm npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats Check out "Spite Fug EP" by Spite Fug on indiesats.com π΅β‘ 4 tracks β’ Punk Spite Fug is the musical equivilant to a liquorice sorbet with flaky seasalt, absinthe and mermaidtears. Gothic new wavy boxed wine punk, filled to the brim with stylistic references to bands like Wipers, Alien Sex Fiend and Bauhaus. Feast your 21. century dulled senses with this punk rock gem/sorbet, made by two of the Oslo undergrounds most notoriously difficult creative hoodlums. Tracklist: 1. Architect of Mourning 2. Build a Bear 3. Casino Cumrag 4. Enter Scagman #nevent1qβ¦3hxg #nevent1qβ¦tamj #nevent1qβ¦44j9 #nevent1qβ¦ux6z npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats Title by Band Description π΅ Listen on Indiesats: https://indiesats.com/artist.html?npub=npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc&play=https%3A%2F%2Ffiles.indiesats.com%2Fjonathan%2Fsample1.mp3 πΌ Artist profile: https://indiesats.com/artist.html?npub=npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc #nevent1qβ¦47gl npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats IndieSats is now on Zapstore! β‘ The open app store for Android β no Google, no gatekeepers. Get automatic updates, discover through your social graph, and verify every release cryptographically. Search "IndieSats" in the Zapstore app or grab the APK: https://indiesats.com/IndieSats-release.apk #bitcoin #lightning #nostr #indiemusic #zapstore npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats π΅ IndieSats v1.0.0 is LIVE π΅ Discover indie music. Support artists directly with Bitcoin Lightning. β¨ What's new: β Background audio playback β Lockscreen media controls β LNC + NWC wallet support β Zap artists instantly β No accounts, no fiat, no bullshit Download: https://indiesats.com/IndieSats-release.apk Built for the freedom-loving music fan. One love. π¦ npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats IndieSats: Two Paths to Publish π΅ Publish with IndieSats (2% fee) β’ No Nostr profile needed β’ Just a lightning address β’ We sign & publish for you β’ Your music appears in our RSS feed β’ Tradeoff: Convenience for fee β‘ Use Your Nostr Profile (0% fee) β’ Full self-sovereignty β’ Your relays, your identity β’ Direct fan relationships β’ No platform cut β’ Tradeoff: Learning curve Both paths put your music on Nostr. One is the easy on-ramp. One is the open road. Choose your adventure. πΈβ‘ https://indiesats.com npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats New: NIP-73 RSS feed tags on every IndieSats publish (kind 1063). Your Nostr ID = your feed. IndieSats publish = your IndieSats feed. Either way, clients can subscribe directly from Nostr. Music distribution that bridges both worlds. πΈβ‘ npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats Testing NIP-73 post from IndieSats npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats New: NIP-73 RSS feed tags on every IndieSats publish (kind 1063). Your Nostr ID = your feed. IndieSats publish = your IndieSats feed. Either way, clients can subscribe directly from Nostr. Music distribution that bridges both worlds. πΈβ‘ npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats New: NIP-73 RSS feed tags on every IndieSats publish (kind 1063). Your Nostr ID = your feed. IndieSats publish = your IndieSats feed. Either way, clients can subscribe directly from Nostr. Music distribution that bridges both worlds. πΈβ‘ npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats New: NIP-73 RSS feed tags on every IndieSats publish (kind 1063). Your Nostr ID = your feed. IndieSats publish = your IndieSats feed. Either way, clients can subscribe directly from Nostr. Music distribution that bridges both worlds. πΈβ‘ npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats Title by Artist Name Description π΅ Listen on Indiesats: https://indiesats.com/artist.html?npub=npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc&play=https%3A%2F%2Fdl.dropboxusercontent.com%2Fscl%2Ffi%2Fkelcjfsjhfzoz1gztvc3f%2FIndiesats_test.m4a%3Fdl%3D1 πΌ Artist profile: https://indiesats.com/artist.html?npub=npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc #nevent1qβ¦jpzn npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats Test Title by Test Artist Name Test Description π΅ Listen on Indiesats: https://indiesats.com/artist.html?npub=npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc&play=https%3A%2F%2Fwww.dropbox.com%2Fscl%2Ffi%2Fkelcjfsjhfzoz1gztvc3f%2FIndiesats_test.m4a%3Fdl%3D1 πΌ Artist profile: https://indiesats.com/artist.html?npub=npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc #nevent1qβ¦0xfc npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats Test Track by Test Artist Name Test Description π΅ Listen on Indiesats: https://indiesats.com/artist.html?npub=npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc&play=https%3A%2F%2Fwww.dropbox.com%2Fscl%2Ffi%2Fkelcjfsjhfzoz1gztvc3f%2FIndiesats_test.m4a%3Fdl%3D1 πΌ Artist profile: https://indiesats.com/artist.html?npub=npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc #nevent1qβ¦4p7r npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats π΅ IndieSats: One Feed, Two Protocols How we bridge RSS and Nostr: The Problem RSS has no album tag. Podcast Index doesn't understand "this group of tracks is an album." So historically, platforms generated separate RSS feeds per track or album. Result? Listeners subscribed to multiple feeds, apps couldn't group discographies, and artists managed URL chaos. Our Solution: Deterministic GUIDs + Single Feed One RSS feed per artist. All tracks β singles AND albums β flow through the same URL: https://indiesats.com/api/feed?npub=your_npub Album name prefixes track titles for visual grouping: β’ "Summer 2026 - Song A" β’ "Winter Vibes - Song B" SHA1-Based GUIDs Every track gets a deterministic GUID derived from the artist's npub + Nostr event ID: SHA1("indiesats:" + npub + ":" + eventId) Why this matters: β’ Same GUID across RSS, Nostr, and keysend forwarding β’ No database needed β recomputable from relay events β’ Stable for podcast apps even if you re-publish Lightning Address Agnostic The feed URL contains only your npub β no hardcoded lightning address. Change your lnaddress? Same feed URL. Podcast apps resolve it fresh each time. No re-submitting to Podcast Index. No broken feeds. How Nostr Bridges The Gap β’ Discovery: Podcast apps (RSS) vs Nostr clients β’ Payment: Value blocks/keysend/lnaddress (RSS) vs same payment methods via IndieSats UI (Nostr) β’ Album grouping: Title prefix (RSS) vs c tags (Nostr) β’ GUID source: SHA1(npub:eventId) β same for both The Magic One publish β Nostr event β RSS feed β Podcast Index. Artists get both worlds with one workflow. Add your feed to Podcast Index once. Change lightning addresses freely. Done forever. πΈβ‘ npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats π΅ IndieSats: One Feed, Two Protocols How we bridge RSS and Nostr: The Problem RSS has no album tag. Podcast Index doesn't understand "this group of tracks is an album." So historically, platforms generated separate RSS feeds per track or album. Result? Listeners subscribed to multiple feeds, apps couldn't group discographies, and artists managed URL chaos. Our Solution: Deterministic GUIDs + Single Feed One RSS feed per artist. All tracks β singles AND albums β flow through the same URL: https://indiesats.com/api/feed?npub=your_npub Album name prefixes track titles for visual grouping: β’ "Summer 2026 - Song A" β’ "Winter Vibes - Song B" SHA1-Based GUIDs Every track gets a deterministic GUID derived from the artist's npub + Nostr event ID: SHA1("indiesats:" + npub + ":" + eventId) Why this matters: β’ Same GUID across RSS, Nostr, and keysend forwarding β’ No database needed β recomputable from on-chain events β’ Stable for podcast apps even if you re-publish Lightning Address Agnostic The feed URL contains only your npub β no hardcoded lightning address. Change your lnaddress? Same feed URL. Podcast apps resolve it fresh each time. No re-submitting to Podcast Index. No broken feeds. How Nostr Bridges The Gap β’ Discovery: Podcast apps (RSS) vs Nostr clients β’ Payment: Value blocks/keysend/lnaddress (RSS) vs same payment methods via IndieSats UI (Nostr) β’ Album grouping: Title prefix (RSS) vs c tags (Nostr) β’ GUID source: SHA1(npub:eventId) β same for both The Magic One publish β Nostr event β RSS feed β Podcast Index. Artists get both worlds with one workflow. Add your feed to Podcast Index once. Change lightning addresses freely. Done forever. πΈβ‘ npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats Q: If I change my lightning address, will my IndieSats RSS feed break? A: No β because your feed identity is npub-based, not lightning-address-based. Here is how IndieSats generates your GUIDs: Album feed URL: /api/feed?npub=<npub>&album=<name> β Does NOT depend on your lightning address Album GUID: SHA1("indiesats:album:" + npub + ":" + albumName) β Does NOT depend on your lightning address Publisher GUID: SHA1("indiesats:publisher:" + npub) β Does NOT depend on your lightning address Track GUID: SHA1("indiesats:" + npub + ":" + eventId) β Does NOT depend on your lightning address Your npub (public key) is your identity on Nostr. It never changes. Your album name is set at publish time and must stay the same when adding more tracks to that album. Neither depends on your lightning address. Change your lnaddress β your feed updates the <podcast:value> payment block inside the XML β podcast apps see the new address on next refresh. What stays the same: β’ Feed URL β’ GUID (Podcast Index identity) β’ All subscriber links No re-submission of your RSS feed to podcastindex.org/add needed. Your lightning address is just payment metadata. #music #nostr #podcastindex #indiesats #lightning npub18rs8naesjjhc3zmk4quuuktjrlu3l04d4ehfaev40syfctvcpydsnd97wc IndieSats # IndieSats: Bridging Nostr and RSS with Deterministic GUIDs We built IndieSats to address a problem that's emerging right now: artists are publishing music twice β once to Nostr, once to RSS β and fans have to follow them in two places. Worse, payment metadata doesn't travel between the two worlds. Here's how we connect them without building a centralized database. --- ## The Problem Nostr is great for real-time discovery. RSS is great for permanence and podcast app compatibility. But they're disconnected: - A Nostr `kind:1063` audio event has no RSS feed URL - An RSS `<item>` has no Nostr event ID - Payment splits in Nostr tags don't map to Podcast Index `<podcast:value>` blocks Artists have to maintain two identities. Fans have to follow twice. Payment routing is broken. --- ## Our Approach: Deterministic GUIDs Instead of a database linking Nostr events to RSS items, we use a hash of the event itself. ``` GUID = SHA1("indiesats:" + npub + ":" + eventId) ``` This gives every track a 40-character hex identifier (the full SHA1 hash) that is: - **Deterministic** β Same input always produces same GUID - **Portable** β Works in Nostr events, RSS feeds, and keysend TLVs - **Self-verifying** β Anyone can recalculate it from the Nostr event - **Standard** β Uses full SHA1 output, no arbitrary truncation to remember --- ## How It Works ### Publishing a Track 1. Artist publishes `kind:1063` to Nostr with: - `client: indiesats` - `title`, `audioUrl`, `coverUrl`, `duration` - `value` recipients (payment splits) - Optional `album` tag 2. IndieSats generates the GUID from the event 3. RSS feed includes: ```xml <podcast:value type="lightning" method="keysend"> <podcast:valueRecipient name="Artist Name" type="lnaddress" address="[email protected] " split="100"/> </podcast:value> ``` The GUID is used directly as the `<podcast:guid>` value. ### Receiving Payments - **Nostr path**: Zap the event directly - **RSS path**: Podcast app sees `<podcast:value>` and pays the lnaddress - **Keysend path**: Optional TLV `697070` carries the GUID for forwarding --- ## The TLV Extension (Experimental) For artists without lnaddresses who want keysend payments forwarded, we use a custom TLV: | Field | Value | Purpose | |-------|-------|---------| | `customKey` | `697070` | "IS" in ASCII (IndieSats routing hint) | | `customValue` | Track GUID (40 chars) | Identifies which track/artist to forward to | This lets a node operator receive keysend payments and forward them to the artist's lnaddress without maintaining a mapping database. --- ## Why This Matters **No central database**: The artist's catalog exists entirely on Nostr. IndieSats just renders it. **No custody**: We never hold sats. Payments go directly to artists or their designated splits. **Protocol-native**: We follow Podcast Index specs, Nostr NIPs, and Lightning standards β no proprietary formats. **Reproducible**: Anyone can query Nostr for `kind:1063` events with `client:indiesats` and rebuild the same catalog. --- ## Current Implementation - **RSS feeds**: `indiesats.com/api/feed?npub=<npub>` - **Relay**: `wss://relay.indiesats.com` (whitelist publish, public read) - **GUID formula**: SHA1-based as described above - **Client**: Static site, no accounts, no server-side state --- ## This Is Just How We Do It We're not claiming this is "the standard" or that others should adopt it. It solves our problem β bridging Nostr and RSS without building a platform that holds user funds or data. If the approach resonates, use it. Modify it. Ignore it. The code isn't open source (it's just a website), but the logic is transparent. The GUID formula is simple enough to reimplement in any language. The Nostr events are public. The RSS feeds are standards-compliant. Build your own thing. This is ours. --- *Published from indiesats.com*