SEO and schema.org
seo and schema are static literals resolved against data/params — they generate real meta tags, Open Graph and JSON-LD, not a plugin that guesses.
Declaring seo
export const seo = {
title: `${data.name} | My shop`,
description: data.description,
canonical: `/products/${params.slug}`
};title, description and canonical go straight into <head> — with data/params interpolation already resolved at build time.
Rich results with schema
export const schema = {
type: "Product",
name: data.name,
offers: {
type: "Offer",
price: data.price,
priceCurrency: "USD"
}
};schema generates a real <script type="application/ld+json">, valid for Google's Rich Results.
The SEO Analyzer
nexa build
# [NEXA-SEO-001] missing `title` in `seo`
# [NEXA-A11Y-001] <img> with no `alt`nexa build warns when a title, a description, or an image alt is missing — it never blocks the build, only warns. nexa lint can fail on purpose, for a CI step.