Añadir contenido
Escribe una entrada de blog, un caso de estudio o una página de docs — carpetas por idioma, esquemas de frontmatter y la regla de rutas paralelas.
El contenido vive en colecciones de contenido tipadas bajo src/content/.
Cada colección tiene un esquema Zod en src/content.config.ts, así que un campo
ausente o malformado es un error de compilación, no una página rota. Dos reglas
se cumplen en todas partes:
- Carpetas por idioma. Cada colección anida por idioma:
src/content/<colección>/<idioma>/<slug>. El idioma por defecto esen. - Añade archivos, no rutas. Las rutas catch-all enumeran la colección y emiten una página por entrada. Nunca registras una ruta a mano.
Entrada de blog
La colección blog carga */*.mdx — es decir, <idioma>/<slug>.mdx.
- Crea el archivo
src/content/blog/en/my-first-post.mdx - Rellena el frontmatter
El esquema requiere
title(≤70),description(70–160),datePublishedy una referenciaauthor; el resto son opcionales:--- title: Shipping faster with astro-ignite description: How an opinionated, fully-owned starter cut our time-to-first-deploy from an afternoon to a coffee break. datePublished: 2026-06-09 author: jordi tags: [astro, dx] ogImage: ./_assets/og-shipping.png --- Your MDX body here. Plain Markdown is styled by the layout's prose utility; import any component (e.g. from src/components/ui/) to go beyond it.Nota:
ogImagees la imagen de vista previa social de la entrada — las tarjetas de entrada y las páginas de detalle renderizan una portada en gradiente resuelta por tokens, no una imagen hero. Omítela y OG recurre al banner por defecto de todo el sitio. - Míralo
pnpm dev→ la entrada está en vivo en/blog/my-first-post, listada en/blog, y plegada en la paginación, las etiquetas y las entradas relacionadas automáticamente.
Caso de estudio de proyecto
La colección projects carga */*/index.mdx — cada proyecto es una carpeta
(<idioma>/<slug>/index.mdx) para que pueda llevar sus propios recursos. Añade
summary, techStack, links (live / repo / demo / caseStudy) y un status
(shipped | in-progress | archived):
---
title: Acme redesign
description: A ground-up rebuild of Acme's marketing site on Astro, shipping Lighthouse 100s and a 60% faster LCP.
summary: Full redesign and rebuild, from Figma to production in six weeks.
datePublished: 2026-05-01
techStack: [Astro, TypeScript, Tailwind]
links:
live: https://acme.example.com
status: shipped
---
Vive en /projects/acme-redesign.
Página de docs
En la plantilla docs, la colección docs carga <idioma>/<slug>.mdx. El
frontmatter es title + description (40–160), con tags, lastUpdated y
draft opcionales:
---
title: Configuration
description: Every setting in site.ts and what it controls, with sensible defaults for a first deploy.
tags: [reference]
---
## Section
Sidebar, breadcrumbs, on-this-page, and prev/next all derive from the
collection — add this file and it slots into the nav.
Reorganiza el orden / agrupación de la barra lateral en src/config/sidebar.ts.
La regla de rutas paralelas
Aquí es donde el contenido y las páginas personalizadas difieren:
- El contenido de colección (blog, projects, docs) lo sirven las rutas
catch-all (
[...slug].astropara el idioma por defecto,[lang]/[...slug].astropara el resto). Ya manejan cada idioma — así que una entrada localizada es solo un segundo archivo bajo la carpeta del idioma de destino. Nada más que conectar. - Las páginas
.astroescritas a mano (p. ej.src/pages/about.astro) deben entregar una paralela ensrc/pages/[lang]/about.astrocuyogetStaticPathsemita una entrada por idioma no predeterminado. Una página en/foosin un/[lang]/fooes una brecha de i18n que la auditoría de invariantes señalará.
Borradores
Cada esquema de contenido entrega un draft: boolean (por defecto false).
Establece draft: true para mantener una entrada fuera de los listados, el
sitemap y el conjunto publicado de la compilación mientras trabajas en ella.