Auto SEO (JSON-LD)
Núcleo headless e independiente del framework para generar datos estructurados Schema.org como JSON-LD (Article, Product, Organization, BreadcrumbList, WebSite, LocalBusiness, FAQPage). Sin clases, sin dependencia de ningún framework. El alcance (MVP, v1) es solo JSON-LD — OpenGraph y las vistas previas de tarjetas sociales quedan fuera de alcance.
Abrir playground · Auto SEO en vivoVariables de entorno
Este componente no requiere variables de entorno.
Instalación manual
Descarga el tarball y copia a tu proyecto los archivos de tu framework:
curl -L -o auto-seo.tar.gz https://modularcorehub.com/registry/auto-seo.tar.gz
tar -xzf auto-seo.tar.gz | Origen | Destino en tu proyecto |
|---|---|
core/index.ts | src/modularcore/auto-seo/core/index.ts |
core/create-schema.ts | src/modularcore/auto-seo/core/create-schema.ts |
core/create-graph.ts | src/modularcore/auto-seo/core/create-graph.ts |
core/stringify.ts | src/modularcore/auto-seo/core/stringify.ts |
core/validate.ts | src/modularcore/auto-seo/core/validate.ts |
core/schema-types.ts | src/modularcore/auto-seo/core/schema-types.ts |
Instalación con CLI
modularcore add auto-seoDocumentación
@modularcore/auto-seo es un core headless y agnóstico de framework para generar datos estructurados de Schema.org en formato JSON-LD.
Alcance (MVP, v1): solo JSON-LD
Las etiquetas OpenGraph, la extracción de palabras clave y las vistas previas de tarjetas sociales quedan explícitamente fuera de alcance de este paquete y se dejan para una futura iteración.
Instalación
Es un componente copy-code (como Media Picker o AI Chat): copia core/ a tu proyecto a través de la CLI de ModularCore, o impórtalo directamente desde este workspace durante el desarrollo.
pnpm add zod
pnpm add -D schema-dts # solo tipos, no es una dependencia en tiempo de ejecución
API
Todas las funciones son puras — sin clases, sin encadenado de builders, sin dependencia de framework.
import { createSchema, createGraph, stringify, validate } from '@modularcore/auto-seo';
const article = createSchema('Article', {
headline: 'Componentes modulares para la web moderna',
datePublished: '2026-08-25',
author: { '@type': 'Person', name: 'Jane Doe' },
});
const { valid, errors } = validate(article);
// { valid: true, errors: [] }
const graph = createGraph(article, /* ...más schemas */);
const jsonLd = stringify(graph, { absolute: 'https://example.com' });
// seguro para incrustar: <script type="application/ld+json">{jsonLd}</script>
createSchema(type, props)
Construye un objeto JSON-LD ({ '@context', '@type', ...props }) para uno de los 7 tipos de Schema.org soportados: Article, Product, Organization, BreadcrumbList, WebSite, LocalBusiness, FAQPage. props está tipado a partir de schema-dts de Google, para autocompletado en el editor (devDependency solo de tipos, sin coste en runtime).
createGraph(...schemas)
Combina 2 o más schemas en un único objeto { '@context', '@graph': [...] }.
stringify(schema, { absolute? })
Serializa un schema/graph a una cadena segura para incrustar dentro de una etiqueta <script type="application/ld+json">.
- Seguridad (requisito obligatorio):
JSON.stringify()no escapa<por defecto, así que un valor de campo que contenga</script><script>...</script>podría cerrar la etiqueta<script>que lo contiene.stringify()siempre sustituye cada<de su salida por<antes de devolverla — esto no se puede desactivar. absolute: URL base opcional. Cuando se indica, cualquier campo de tipo string que empiece por/se resuelve como una URL absoluta contra esa base; los valores ya absolutos se dejan tal cual.
validate(jsonld)
Valida un schema (o graph) contra un schema Zod para su @type declarado, devolviendo { valid: boolean, errors: string[] }. Detecta campos obligatorios ausentes (p. ej. Article.headline, Product.offers, Organization.logo) — no es un validador estructural completo de Schema.org.
Notas de diseño
- Sin clases, sin builders encadenados: mantiene la API trivialmente portable a cualquier framework o contexto de renderizado en servidor.
schema-dtses una devDependency únicamente (tipos, sin código en runtime), de modo que instalar este paquete a través del comandoaddde la CLI nunca añade una dependencia extra de producción.zodes unadependencynormal, en línea con el resto del monorepo (packages/cli,packages/ai-chat,packages/registry-client).
Prueba este componente en vivo en el Playground de Auto SEO.