Documentación
docs

Contenido y SEO

El módulo de contenido MDX de Shipabase: escribe posts sin CMS, añade nuevos tipos de contenido y aprovecha el SEO automático (sitemap, JSON-LD, llms.txt).

Shipabase incluye un módulo de contenido en MDX sin CMS ni parsers externos: los posts son archivos .mdx que exportan su frontmatter como JavaScript plano, y todo se pre-renderiza en build.

Escribir un post

Crea un archivo en content/blog/ y exporta un objeto frontmatter al inicio:

export const frontmatter = {
  title: 'Mi post',
  date: '2026-01-01',
  description: 'Resumen corto para listados y og tags.',
  author: 'Tu Nombre',
  published: true,
  coverImage: 'https://tu-imagen.com/cover.jpg'
}

Tu contenido aquí...

Eso es todo: el post aparece automáticamente en /blog, en el sitemap y en llms.txt. Si pones published: false, queda oculto.

Añadir un nuevo tipo de contenido

¿Quieres /changelog, /guias o cualquier otra sección? Dos pasos:

  1. Crea la carpeta content/changelog/ con tus archivos .mdx
  2. Añade 'changelog' al union ContentType y al array CONTENT_TYPES en content/content.ts

El listado, la página de post, el sitemap y llms.txt se actualizan solos. No hace falta escribir loaders: el módulo resuelve los imports dinámicamente.

Sección de docs con menú lateral

El tipo docs viene incluido y se renderiza con un layout de documentación: menú lateral fijo con todas las páginas (plegable en móvil) y la página activa resaltada. Cualquier tipo de contenido puede usar este layout — basta con listarlo en SIDEBAR_TYPES:

// content/content.ts
export const SIDEBAR_TYPES: ContentType[] = ['docs', 'changelog'];

El título del menú se traduce como cualquier otro texto de la UI, en el namespace contentNav de messages/en.json y messages/es.json.

Para controlar el orden de las páginas en el menú, usa el campo opcional order del frontmatter (menor primero; las páginas sin order van después, ordenadas por fecha):

export const frontmatter = {
  title: 'Primeros pasos',
  date: '2026-01-01',
  order: 1
}

SEO automático

Cada post genera sin configuración extra:

  • Metadata dinámica: title, description, Open Graph y Twitter Cards desde el frontmatter
  • JSON-LD: datos estructurados Schema.org BlogPosting para rich results en Google
  • Sitemap: /sitemap.xml se regenera en cada deploy con todos los posts
  • robots.txt: apunta al sitemap
  • llms.txt: índice del sitio para crawlers de LLMs (Anthropic, OpenAI, Perplexity…)

Siguiente paso

Configura los idiomas en Internacionalización.