grep 'property="og:image"' build/**/index.html finds only og:image:type, og:image:width, og:image:height and og:image:alt. The actual og:image and twitter:image are never emitted, even for feature pages that define cover in their meta.

This is separate from dynamic OG image generation: even without generated images, the existing cover should be published.

Cause

  • Meta.svelte derives coverUrl from its cover prop; the root layout renders <Meta /> without props
  • getPageInfo() in pages.remote.js returns title, description, tags, etc. but not cover
  • The emitted og:image:type is hardcoded to image/png and 1200x630 regardless of the real cover

Tasks

  • Return the cover's largest img.src (absolute, via PROJECT_URL) from getPageInfo()
  • Use it in Meta.svelte for og:image and twitter:image; only emit type/width/height when known
  • Fall back to a static site-wide OG image for pages without a cover
  • Add a build-time test that every listed page has an absolute og:image

Social previews

A cover that reaches the meta tags

A static site template built with SvelteKit.

Sveleton, 2025