Lately, I’ve been making a lot of progress on Bandwagon’s Federated Search Engine. It’s time to share some progress, and ask the community – especially @simon at Mirlo and Simon from Faircamp – for some input.
Some Quick Background 
After starting the Bandwagon project, it quickly became clear that Music Discovery is one of the key advantages that the big platforms have. Bandcamp (as just one example) does an amazing job of surfacing new music to potential fans. For any open solution to be viable, we need an answer to this.
I started working on this near the end of 2024, with an opt-in engine for syndicating music to streaming radio stations. Our first integration with @TheIndieBeat has been phenomenal, and I’m hoping to add more syndication targets to this engine in the future.
But streaming radio is only one part of this equation. Most things I discover online come through my Mastodon news feed. So, I want to enable serendipitous music discovery through there, too. Users should be able to search for the kind of music they like, then have it show up in their news feed every now and then.
The Federated Search Engine 
That’s what I launched earlier this week – a tag-based search engine that can publish search results via ActivityPub.
The next step is to share content between many sources beyond Bandwagon.fm: other Bandwagon servers, Mirlo, Faircamp, and anyone who’ll op-in to being indexed. The goal is to make a federated search index that anyone can run, that shares data among every platform in the network.
To do this, we need two more technological pieces: 1) a simple protocol for people to opt-in, and 2) a standard data model to publish artist, album, and song-based information. This is where I need your ideas and insights.
This next part gets techie, so if that’s not your thing, no worries. I’d still love to hear your thoughts about the above, even if you don’t dream of electric sheep…
The Search Protocol 
The design goals for this protocol are to 1) make this as easy as possible for publishers to participate, 2) work with existing standards, 3) provide strong opt-in controls, and 4) enable data sharing between search servers.
My solution is to use Emissary’s existing support for both RSS and ActivityPub as ways to “follow” content online, which should give publishers and other search servers the tools that fit their specific needs.
RSS indexes + OpenGraph metadata
The first, simpler method will use an RSS feed that points to each album URL. Album URLs would then embed standard OpenGraph metadata specific to music, including music:album
and music:song
.
Static RSS-based indexes can indicate who is/isn’t allowed to index the site using standard ROBOTS.TXT files.
I believe this is pretty close to what Faircamp is already doing (with some minor changes) and should be simple for any music producer to assemble on their own website. If you’re not running your own search index, this is probably the best option.
ActivityPub Search Actors
The more sophisticated method will use ActivityPub, with a standard actor publishing Album/Track data to a query-able outbox, and delivering real-time messages to followers.
This method will work primarily between search engines, roughly like an ActivityPub relay, so that one search server can subscribe to the search results of another.
Another benefit of this approach is that it sits atop a big existing tech stack, including strong permission controls. Search indexes and choose who is allowed to follow, and which search results to include in the indexes that they publish.
I’m currently testing a followable actor for global searches, along with an outbox collection that provides the complete search index in JSON-LD format.
nExT sTePs 
Fortunately for me, a lot of this is already built. But I need to get buy in from the bigger players in this space to make it worthwhile. So… what do you think?
If the high-level ideas are okay, I’m happy to go into more details about the specific fields I’ll be looking for. But fortunately, we’re not designing anything new here. RSS and OpenGraph are pretty well understood, and the ogp.me site is pretty thorough about the music-specific extensions.