A while ago I created a proof of concept called hopper.at which uses the RFC 6415 - Web Host Metadata (/.well-known/host-meta.json) format for something like this.
The spec is at hopper/documentation/SPEC.md at main · astrenoxcoop/hopper · GitHub
The idea was that by using {authority}, {collection}, and {rkey} template variables, you do really simple order-based mapping.
A minimal example would be:
{
"rel": "https://hopper.at/rel/link",
"template": "https://example.com/profile/{authority}",
"properties": {}
}
A more complex example with matchers and filtering would look like:
{
"links": [
{
"rel": "https://hopper.at/rel/link",
"template": "https://example.com/profile/{authority}",
"properties": {}
},
{
"rel": "https://hopper.at/rel/link",
"template": "https://example.com/{authority}/posts/{rkey}",
"properties": {
"https://atproto.com/ns/collection": "app.bsky.feed.post"
}
},
{
"rel": "https://hopper.at/rel/link",
"template": "https://example.com/{authority}/events/{rkey}",
"properties": {
"https://atproto.com/ns/collection": "community.lexicon.calendar.event"
}
}
]
}
Could this be a lexicon schema with records? Sure, I don’t think what you’ve described and what I was looking at doing are terribly different.