This code is powering skyfeed.me. All feeds published using the SkyFeed Builder use did:web:skyfeed.me, so all requests for them end up here.
The feed generator fetches the app.bsky.feed.generator record for every requested feed from bsky.social and then uses https://github.com/skyfeed-dev/query-engine to generate the feed skeleton. It also adds a caching layer (60 seconds) and pagination.
If you want to self-host your SkyFeed Builder feeds, these are the rough steps:
- Setup an instance of https://github.com/skyfeed-dev/indexer to index the firehose data in SurrealDB
- Deploy https://github.com/skyfeed-dev/query-engine somewhere
- In this repo: Copy
.env.exampleto.envand edit the values - Run
dart run bin/skyfeed_me.dartand setup a reverse proxy for it, for examplefeed-generator.example.com - Update your existing published
app.bsky.feed.generatorrecords to usedid:web:feed-generator.example.cominstead ofdid:web:skyfeed.me
If you prefer you can build static binaries using dart compile exe bin/skyfeed_me.dart for the platform you're on.