Very cool. Is this the first time you have implemented the outbox model yourself?
The latest https://github.com/fiatjaf/nak release (v0.16.2) comes with an --outbox flag to "nak req", which means you don't have to specify relays in your filter and relays from specific authors will be used (filters will be smartly split).
Which means you can, for example, get all pubkeys who have published to wss://lang.relays.land/es then go to each of their own outbox relay, fetch their new notes live and publish those to wss://lang.relays.land/es.
nak req -l 10000 lang.relays.land/es | jq --slurp 'map(.pubkey) | unique | {authors: .}' | nak req --since '1 hour ago' -k 1 --outbox -n 3 --stream | nak event lang.relays.land/es
Discussion
I am not sure what it means to "implement the outbox model", but if you're talking about whatever code that talks directly to people's relays I've implemented it a bunch of different ways in different places, and this is really just a few lines based on code that already existed in the Go library.
Ah makes sense. I guess the hard "outbox model" problem I was thinking of was building an infinite feed from some list of pubkeys.