Every server-rendered Kite story page at https://kite.kagi.com/<feed-id>/<category>/<N> returns the same OpenGraph and Twitter-card metadata in its HTML <head>, regardless of which story N was requested. The meta always describes story N=0 (the current top story in that category), and og:title / og:description come back translated into a different random language on each page. Only og:url is correct.
This breaks every link-preview consumer that reads SSR HTML: Slack, Discord, X, Facebook, Bluesky
Each Kite story URL should SSR the meta tags for that story:
og:image / twitter:image → the image belonging to story N (or omitted if unavailable)
og:title → the English headline of story N (or, consistently, the reader's requested locale — not a random language per page)
og:description → the summary of story N in the same locale as og:title
og:url → the requested URL (already correct)
So link previews on Slack, Discord, Bluesky, X, etc. show the right image and headline for the story being shared.