This is awesome, the only thing I'd recommend tweaking is that $ global. I think every post using this would have to explain it to its reader.
Two options: 1. Make every exported function a global, or just look like a global. 2. Force users to import and name the blocks
I think option 1 for this use case might actually be just fine.