Guías
Configura tu contenido
Da forma a tus sitios y colecciones en el admin o por MCP, con un esquema, rutas, reglas y una guía de estilo, sin desplegar.
Configura tu contenido
La estructura de tu contenido vive en la base de datos de Hollware, junto al contenido mismo: tus sitios, sus colecciones, el esquema del frontmatter de cada colección, sus rutas, sus reglas y su guía de estilo. La cambias en el admin, o haces que un agente la cambie por MCP, y se aplica al instante a cada guardado y publicación posterior. No se despliega nada.
Sitios y colecciones
Un despliegue sirve uno o más sitios. Un sitio tiene sus locales y sus colecciones; una colección es un tipo de entrada, como posts o páginas. hollware init crea tu primer sitio a partir de una plantilla, un blog salvo que pidas docs o una colección de páginas:
npx hollware init --site my-site --preset blog --locales en,es --localDesde ahí, abre Colecciones en el admin o lee la estructura por MCP con get_structure.
El nombre de una colección son minúsculas, dígitos y guiones, como blog. Cinco nombres los ocupan rutas de la API de lectura y ninguna colección puede tenerlos: admin, assets, ops, search y site.
En el admin
- Colecciones lista las colecciones del sitio y crea una a partir de una plantilla.
- La página de una colección edita sus campos, sus rutas por locale, qué campos agrupan las traducciones, las etiquetas y el orden, sus reglas y su guía de estilo.
- Sitio edita los locales, la URL pública, los orígenes que pueden leer desde el navegador, la guía de estilo del sitio y sus webhooks, crea un sitio nuevo y envía uno a la papelera.
Un cambio que afectaría entradas que el sitio ya tiene primero te dice cuáles y espera tu confirmación: una colección o un locale que quitas deja sus entradas fuera de alcance hasta que vuelva, y un esquema que rechaza algunas entradas las lista, para que las corrijas en su próximo guardado. Nunca se borra ninguna entrada.
Por MCP
Un agente con un token que tiene schema:admin, el scope de un dueño, da forma al sitio con las mismas reglas:
| Herramienta | Qué hace |
|---|---|
get_structure | la definición del sitio, su versión y el catálogo de reglas |
update_site | reemplaza la definición, en la versión leída |
set_collection | agrega, reemplaza o quita una colección |
create_site | crea un sitio, contigo como dueño |
delete_site, restore_site | envían un sitio a la papelera y lo recuperan |
make_webhook_secret | crea el secreto que firma los envíos de un webhook |
Cada cambio se revisa completo antes de escribir nada, y cada problema vuelve en su ruta con su corrección. Uno que afecta entradas existentes responde needs_confirmation con lo que haría; el agente lo envía de nuevo con confirm: true cuando estés de acuerdo. Un cambio enviado con una versión desactualizada responde conflict, así dos personas nunca se sobrescriben.
El esquema
El esquema de una colección es el JSON Schema de su frontmatter. Un borrador cuyo frontmatter no se ajusta se guarda con un error en su veredicto, y no se puede publicar hasta que se ajuste. En el admin cada campo tiene un tipo (texto, fecha, opción, lista de textos, número, sí o no), sus límites y si es obligatorio; todo lo demás que diga el JSON Schema se mantiene tal cual.
- Las traducciones comparten nombra el campo que une las entradas de un mismo post en cada locale.
- Etiquetas nombra el campo que guarda las etiquetas, por las que filtra
list_entries. - Más nuevas primero según nombra un campo de fecha: las listas muestran primero lo más reciente según él. Sin él, según la fecha de la primera publicación.
Algunos campos nadie debería escribirlos a mano. Quién lo escribe, en un campo de fecha o de número, deja que Hollware lo llene (automaticFields de la colección por MCP):
| Hollware llena | Con | Un valor escrito |
|---|---|---|
firstPublished | la fecha en que la entrada se publicó por primera vez | gana, así el contenido traído de otro lado conserva sus fechas |
lastModified | la fecha de un cambio publicado después de eso | gana cuando es posterior |
readingTime | minutos, a 200 palabras por minuto, contando también los bloques de código | se ignora |
wordCount | las palabras del cuerpo | se ignora |
Un campo así nunca es obligatorio, el formulario de una entrada no lo muestra, y describe_site lo marca readOnly para que los agentes no lo toquen. Un sitio lo lee lleno, en el frontmatter, y hollware export --published lo escribe en los archivos; el Markdown que guarda Hollware sigue siendo lo que se escribió. Un blog nuevo tiene su date llenado así.
Rutas
Las rutas dan la ruta de una entrada en cada locale, con :slug, como /blog/:slug/ y /es/blog/:slug/. Los enlaces entre entradas se revisan contra ellas, y cada locale del sitio necesita una.
Componentes
El cuerpo de una entrada es Markdown con componentes, escritos como ::name{prop="value"}. Cada colección declara los componentes que permite, con el JSON Schema de sus props, una descripción y un ejemplo; cualquier otro componente es un error. Los agentes los leen con describe_site.
Reglas
Las reglas vienen de un catálogo, cada una con sus parámetros, como un título de 60 caracteres como máximo salvo que haya un seoTitle; consulta Contratos.
Guías de estilo
La guía de estilo de un sitio y de cada colección es Markdown para quien escribe. Hollware no la revisa; los agentes la leen con describe_site. Mantenla breve y concreta.
hollware.config.ts. Su Worker traslada la configuración a la base de datos en su primera solicitud después de actualizar, y nunca vuelve a leerla: desde ese momento, da forma al sitio en el admin.