Avatar
Ðaniel ₩onder
9a1adc34815ab99a0b55046b012d2f43345f6c71cb126d7c591775bf9a9d705b
Marketing Technologist & Business Consultant. Helping businesses grow with data, marketing, WordPress, and Web3.

"You can watch one more ok?"

Extended Christmas special starts...

🙈

Self-Sovereign Marketing:

Presented without comment.

https://www.selfsovereignmarketing.com

IPFS feels more powerful than Blossom for persistence as it’s a location-independent identifier that can be hosted and served by any node or gateway.

Blossom depends on both the file hash and your Nostr signed mirrors for discovery. If you can’t update your event, the reference dies.

It seems like IPFS would make sense as a Blossom mirror, but even though both are derived from content hashes, the current addressing architecture of both seems to prevent a universal identity.

Replying to Avatar miljan

I remember the first gathering of Nostr devs two years ago in Costa Rica. We were all psyched because Nostr appeared to solve the problem of self-sovereign online identity and decentralized publishing. The protocol seemed well-suited for textual content, but it wasn't really designed to handle binary files, like images or video.

## The Problem

When I publish a note that contains an image link, the note itself is resilient thanks to Nostr, but if the hosting service disappears or takes my image down, my note will be broken forever. We need a way to publish binary data without relying on a single hosting provider.

We were discussing how there really was no reliable solution to this problem even outside of Nostr. Peer-to-peer attempts like IPFS simply didn't work; they were hopelessly slow and unreliable in practice. Torrents worked for popular files like movies, but couldn't be relied on for general file hosting.

## Awesome Blossom

A year later, I attended the Sovereign Engineering demo day in Madeira, organized by Pablo and Gigi. Many projects were presented over a three hour demo session that day, but one really stood out for me.

Introduced by hzrd149 and Stu Bowman, Blossom blew my mind because it showed how we can solve complex problems easily by simply relying on the fact that Nostr exists. Having an open user directory, with the corresponding social graph and web of trust is an incredible building block.

Since we can easily look up any user on Nostr and read their profile metadata, we can just get them to simply *tell us* where their files are stored. This, combined with hash-based addressing (borrowed from IPFS), is all we need to solve our problem.

## How Blossom Works

The Blossom protocol (Blobs Stored Simply on Mediaservers) is formally defined in a series of [BUDs](https://github.com/hzrd149/blossom) (Blossom Upgrade Documents). Yes, Blossom is the most well-branded protocol in the history of protocols. Feel free to refer to the spec for details, but I will provide a high level explanation here.

The main idea behind Blossom can be summarized in three points:

1. Users specify which media server(s) they use via their public Blossom settings published on Nostr;

2. All files are uniquely addressable via hashes;

3. If an app fails to load a file from the original URL, it simply goes to get it from the server(s) specified in the user's Blossom settings.

Just like Nostr itself, the Blossom protocol is dead-simple and it works!

Let's use this image as an example:

![]()If you look at the URL for this image, you will notice that it looks like this:

```

blossom.primal.net/c1aa63f983a44185d039092912bfb7f33adcf63ed3cae371ebe6905da5f688d0.jpg

```

All Blossom URLs follow this format:

```

[server]/[file-hash].[extension]

```

The file hash is important because it uniquely identifies the file in question. Apps can use it to verify that the file they received is exactly the file they requested. It also gives us the ability to reliably get the same file from a different server.

Nostr users declare which media server(s) they use by publishing their Blossom settings. If I store my files on Server A, and they get removed, I can simply upload them to Server B, update my public Blossom settings, and all Blossom-capable apps will be able to find them at the new location. All my existing notes will continue to display media content without any issues.

## Blossom Mirroring

Let's face it, re-uploading files to another server after they got removed from the original server is not the best user experience. Most people wouldn't have the backups of all the files, and/or the desire to do this work.

This is where Blossom's mirroring feature comes handy. In addition to the primary media server, a Blossom user can set one one or more mirror servers. Under this setup, every time a file is uploaded to the primary server the Nostr app issues a mirror request to the primary server, directing it to copy the file to all the specified mirrors. This way there is always a copy of all content on multiple servers and in case the primary becomes unavailable, Blossom-capable apps will automatically start loading from the mirror.

Mirrors are *really easy* to setup (you can do it in two clicks in Primal) and this arrangement ensures robust media handling without any central points of failure. Note that you can use professional media hosting services side by side with self-hosted backup servers that anyone can run at home.

## Using Blossom Within Primal

Blossom is natively integrated into the entire Primal stack and enabled by default. If you are using Primal 2.2 or later, you don't need to do anything to enable Blossom, all your media uploads are blossoming already.

To enhance user privacy, all Primal apps use the "/media" endpoint per BUD-05, which strips all metadata from uploaded files before they are saved and optionally mirrored to other Blossom servers, per user settings. You can use any Blossom server as your primary media server in Primal, as well as setup any number of mirrors:

![]()## Conclusion

For such a simple protocol, Blossom gives us three major benefits:

1. **Verifiable authenticity**. All Nostr notes are always signed by the note author. With Blossom, the signed note includes a unique hash for each referenced media file, making it impossible to falsify.

2. **File hosting redundancy**. Having multiple live copies of referenced media files (via Blossom mirroring) greatly increases the resiliency of media content published on Nostr.

3. **Censorship resistance**. Blossom enables us to seamlessly switch media hosting providers in case of censorship.

Thanks for reading; and enjoy! 🌸

Exploring Blossom

I often see IPFS criticised but I’ve happily been hosting assets and even websites on there for a while. The design choices are very similar.

Generic gateways vs profile servers seem to be the main difference for discoverability and redundancy.

Networked keyboard apps are security holes.

Finally saw a real person in #bitchat.

I may have spoken to them in person first and we both agreed to open the app, but it’s a start!

I’ve been doing some research into Nostr vs Bluesky recently working towards a cross platform self-sovereign publishing stack.

I can confirm that Nostr is indeed more decentralised 🫡

The feeling when you can literally vibe code a mini app in a single prompt is unparalleled.

Pure hype-free productivity!

ChatGPT 5.1 personality feels closer to 4o than 5.

It may be private but Proton’s AI agent is also the only model I’ve seen that constantly self-promotes in unrelated queries.

💫 Two-Way Sync Between WordPress & Nostr 💫

Introducing Nostr for WP (Beta) now live at: Nostroid.com

Nostr for WP brings seamless publishing between WordPress and Nostr:

- 🔄 Two-way sync between WordPress and Nostr

- 💬 Nostr Notes (kind 1) mapped to a custom WordPress note post type

- 📝 Long-Form Content (kind 30023) synced to standard WordPress posts

- ↩️ Automatic background syncing from Nostr → WordPress

- 🔐 NIP-07 browser extension support for publishing WordPress → Nostr

- 🗂️ Gutenberg block for displaying your Nostr notes archive

- ⚙️ WebSocket relay configuration built in

Download the beta at:

https://nostroid.com

Feedback and contributions welcome on GitHub:

https://github.com/danieljwonder/nostr-for-wp

Follow nostr:nprofile1qyt8wumn8ghj7mn0wd68ytn8d3jk27n99e3k7mgpzemhxue69uhkummnw3ezumr0wfjkuar69e5hxqpq7g2d26d9kf4qmlsqu7xwn2unqt0a32s25cz3vfzg0yw0vawtx0dql5dcek for plugin updates.

**Planned Features:**

- Follow Button to Grow Your Nostr Audience on Your Site

- Zap support for bitcoin donations over Lightning

- NIP-01 syncing Nostr Profile Data with WordPress profiles

- NIP-05 Support for User and Domain Linking

- Deeper integration with NIP 65 for relay management

- NIP-51 Support for Link List Pages

⚡Zaps welcome to accelerate the timeline⚡

What goes up, must come down. Sometimes.

Finally got my Nostr WP block working properly!

I've reached the age where many of the "cool" music artists from my youth now look ready to pick up their pension.

People are nodes. Networks are roads.

nostr:nprofile1qydhwumn8ghj7mn0wd68yetvv9uju7t9va58ymewwd5hgegpz4mhxue69uhkummnw3ex2mrfw3jhxtn0wfnsqgpxax4h7tyd9tphjqa0jzlz5xh0du4vh45e7ne9nj4v0tfn6gqqcy9mflxw looks like Damus wrote you a blank following list today. Probably because they couldn't/didn't resolve your snort one.

https://nosta.me/npub1ym56klev354vx7gr47gtu2s6aahj4j7kn860ykw243adx0fqqrqsf6pdvw

Ah an email from my close personal friend…

Or a short reminder of why you should always test your marketing emails. https://t.co/vmzetxm1hu

In a world where any question can be answered, the stand out skill is asking the right questions.

Added a Links page to my NOSTR powered site. Pulls links from kind 30003 using the `links` or nostr:nprofile1qyxhwumn8ghj7mn0wvhxcmmvqywhwumn8ghj7mn0wd68yttsw43zuam9d3kx7unyv4ezumn9wsqzpxk8nnppzekzxz0txvwt4cntkhaaujauttmmxc6f77clss6fsr5v4hunvu label.

You can see it in action @ https://danielwonder.com/links/