What problem does it solve? Page head metadata is easy to get subtly wrong: canonical URLs must name one origin regardless of which host served the request, structured data must spell @context and @type exactly, and JSON-LD must not let page content close its own script tag. This Skill centralizes those rules in one createSeo() instance plus Seo, Seo.Meta, and Seo.JsonLd components. ## Core Features & Use Cases - Canonical URL resolution: seo.canonical() pins every page to the site's single origin, fixing preview deployments or custom domains that emit their own host in the canonical link. - Head metadata components: Seo.Meta renders Open Graph, Twitter card, and robots tags without restating the site name and description at every route. - Typed JSON-LD builders: schema builders for Organization, Article, BreadcrumbList, FAQPage, SoftwareApplication, and Book, with jsonLdString escaping every < so no value can close the script element. - Use Case: A Remix app deployed to preview URLs is emitting the preview host in its canonical tags; create one seo instance at module scope and call seo.canonical(request.url) per page to always emit the production origin. ## Quick Start Add @sdxc/seo as a workspace dependency, create one seo instance with createSeo at module scope, and render Seo.Meta and Seo.JsonLd in the page head.