Structured Data

Helpers tipados de JSON-LD y componente StructuredData para graphs de website, artículos y breadcrumbs.

API de Structured DataLink

Boltdocs emite JSON-LD para buscadores y crawlers mediante seo.structuredData o el componente cliente <StructuredData />. Es independiente del índice de búsqueda interno.

La factory cómodaLink

Usa createStructuredData() cuando una página necesite uno o varios graphs comunes. Structured Data es una API estable de SEO; solo View Transitions y experimental.fileRouting requieren opt-in:

ts
import { createStructuredData, defineConfig, defineStructuredData } from 'boltdocs'

export default defineConfig({
  seo: {
    structuredData: defineStructuredData(
      createStructuredData({
        website: {
          name: 'Example Docs',
          url: 'https://example.com',
        },
        article: {
          headline: 'Primeros pasos',
          url: 'https://example.com/docs/start',
          description: 'Instala y configura el proyecto.',
          datePublished: '2026-08-01',
          author: 'Example Team',
        },
        breadcrumbs: [
          { name: 'Docs', url: 'https://example.com/docs' },
          { name: 'Primeros pasos', url: 'https://example.com/docs/start' },
        ],
      }),
    ),
  },
})

La factory devuelve un objeto cuando se proporciona un solo preset y un array cuando se generan varios nodos. Lanza un error claro si no proporcionas ningún graph. Usa additional para tipos Schema.org que no tengan un preset incorporado:

ts
const data = createStructuredData({
  additional: {
    '@context': 'https://schema.org',
    '@type': 'SoftwareApplication',
    name: 'Example App',
    applicationCategory: 'DeveloperApplication',
  },
})

Opciones de los presetsLink

websiteLink

PropiedadTipoRequeridaDescripción
namestringsíNombre público del sitio.
urlstringsíURL canónica del sitio.
descriptionstringnoDescripción del sitio.
searchUrlstringnoEndpoint de búsqueda con el prefijo de consulta, por ejemplo https://example.com/search?q=.

articleLink

PropiedadTipoRequeridaDescripción
headlinestringsíTitular del artículo o página.
urlstringsíURL canónica de la página.
descriptionstringnoResumen del artículo.
datePublishedstring | DatenoFecha de publicación, normalizada a ISO.
dateModifiedstring | DatenoFecha de modificación, normalizada a ISO.
imagestringnoURL absoluta o resuelta de imagen.
authorstring | { name, url? }noNombre o objeto de persona.

Pasa un array ordenado de objetos { name, url }. Las posiciones se generan automáticamente desde 1.

ts
const breadcrumbs = createStructuredData({
  breadcrumbs: [
    { name: 'Docs', url: 'https://example.com/docs' },
    { name: 'API', url: 'https://example.com/docs/api' },
  ],
})

Datos por página en MDXLink

Agrega un graph directamente en el frontmatter de una página:

mdx

El seo.structuredData global y el de la página se emiten juntos.

Páginas React externasLink

Renderiza JSON-LD desde una página en pages-external/:

tsx
import { StructuredData, createStructuredData } from 'boltdocs/client'

export default function AboutPage() {
  const data = createStructuredData({
    article: {
      headline: 'Sobre Example',
      url: 'https://example.com/about',
    },
  })

  return (
    <>
      <StructuredData data={data} id="about-jsonld" />
      <main>Sobre Example</main>
    </>
  )
}

El componente escapa de forma segura < antes de escribir el script application/ld+json.

Helpers especializados existentesLink

Siguen disponibles cuando prefieras una construcción explícita:

ts
import {
  createArticleStructuredData,
  createBreadcrumbStructuredData,
  createWebSiteStructuredData,
  defineStructuredData,
} from 'boltdocs'

defineStructuredData() conserva los tipos literales de TypeScript; no modifica el valor en runtime.

Last updated on October 18, 2026

Was this page helpful?