CMS y publicaciones

Un sitio web, un blog, la documentación de un producto, un libro por capítulos: todo lo que se escribe para publicarse. STXT es el formato fuente de ese contenido: el texto vive en ficheros, la estructura es visible, la validación es una plantilla y la presentación se decide después.

El contenido que se publica tiene siempre tres capas: el texto que alguien escribe, la estructura que lo organiza —páginas, secciones, capítulos— y los datos que lo acompañan —título, autor, fecha, estado editorial, etiquetas—. Las herramientas que lo gestionan tienden a fundir esas capas con la interfaz de edición y con la presentación final, y el resultado es conocido: el contenido acaba dentro de una base de datos, con una forma que solo esa herramienta entiende, y cambiar de herramienta es una migración.

Con STXT como formato fuente, cada página es un fichero de texto con sus datos como nodos y su cuerpo en bloques. El gestor de contenidos —sea un generador estático, un CMS headless o un proceso de maquetación— lee el árbol y decide qué hacer con él. Este mismo portal está construido así: cada página de stxt.dev es un documento STXT del namespace dev.stxt.website, y el generador lo convierte en HTML. La FAQ enseña dos maneras de comprobarlo desde el navegador.

Una página

Page (com.acme.cms.page):
	Title: Sobre STXT
	Slug: sobre-stxt
	Language: es
	Status: Published
	Layout: default

	SEO:
		Title: STXT — Lenguaje Human First
		Description: Lenguaje textual legible y validable
		Keywords:
			Keyword: stxt
			Keyword: documentos
			Keyword: formatos

	Header >>
		## STXT

		Lenguaje de texto estructurado, legible por personas
		y fiable para máquinas.

	Content >>
		### ¿Qué es STXT?

		STXT es un lenguaje diseñado para escribir documentos
		que pueden ser leídos y procesados sin fricción.

		### Principios

		- Human First
		- Sintaxis mínima
		- Validación opcional

	Footer >>
		Última actualización: enero de 2026

Los metadatos editoriales —slug, idioma, estado, layout, SEO— son nodos que el gestor lee directamente. El cuerpo va en bloques de tipo MARKDOWN (STXT-SCHEMA-SPEC §9.7): STXT no interpreta ese Markdown, solo lo entrega tal cual al renderizador; el tipo es un contrato para quien lo consume (y para el editor y el playground, que lo colorean como Markdown). El pie es TEXT: se enseña literalmente. El reparto de trabajo entre los dos lenguajes se desarrolla en STXT frente a Markdown.

La plantilla

Template (@stxt.template): com.acme.cms.page
	Description >>
		Page: Página de un sitio web
		Status: Estado editorial; solo Published se publica
	Structure >>
		Page:
			Title: (1)
			Slug: (1)
			Language: (?) ENUM [es, en, fr]
			Status: (1) ENUM [Draft, Published, Archived]
			Layout: (?)
			SEO: (?)
				Title: (?) @Title
				Description: (?)
				Keywords: (?)
					Keyword: (+)
			Header: (?) MARKDOWN
			Content: (?) MARKDOWN
			Footer: (?) TEXT

La plantilla garantiza lo que el generador necesita para funcionar —título, slug y un estado de la lista— y deja el resto opcional. Una página sin Slug no valida, y por tanto no se genera; un Status: published en minúsculas tampoco. Es la diferencia entre un error que aparece en el editor y una página que desaparece del sitio sin que nadie sepa por qué.

SEO/Title reutiliza la definición de Title con @Title: es el mismo nodo, con la misma definición, en otro lugar del árbol.

Un artículo con autores y estado

Un blog o una revista añade autoría, fecha y un flujo editorial:

Article (com.acme.editorial.article):
	Title: Introducción a STXT
	Slug: introduccion-a-stxt
	Authors:
		Author: Joan Costa
			Role: Editor
	Published date: 2026-01-10
	Status: Draft
	Tags:
		Tag: stxt
		Tag: formatos

	Abstract >>
		STXT es un lenguaje textual diseñado para equilibrar
		legibilidad humana y fiabilidad para máquinas.

	Content >>
		## Por qué otro formato

		La mayoría de formatos existentes fuerzan una elección:
		o son cómodos para las personas o son fiables para las máquinas.

		STXT elimina esa dicotomía.
Template (@stxt.template): com.acme.editorial.article
	Description >>
		Article: Artículo de un blog o de una publicación periódica
	Structure >>
		Article:
			Title: (1)
			Slug: (1)
			Authors: (1)
				Author: (+)
					Role: (?)
			Published date: (?) DATE
			Status: (1) ENUM [Draft, Review, Published]
			Tags: (?)
				Tag: (+)
			Abstract: (?) TEXT
			Content: (1) MARKDOWN

El flujo editorial es el ENUM de Status: un artículo pasa de Draft a Review y a Published, y ese cambio es una línea en el diff de la revisión. El generador publica solo lo que está en Published y con fecha; el resto existe en el repositorio, pero no en el sitio.

Un libro por capítulos

Una publicación larga sigue el mismo patrón, con la estructura a la vista y cada capítulo como un nodo que agrupa sus datos y su texto:

Publication (com.acme.editorial.publication):
	Title: STXT — El libro
	ISBN: 978-1-23456-789-0
	Language: es
	Status: In Progress

	Chapter: Introducción
		Number: 1
		Content >>
			Este capítulo introduce los conceptos básicos de STXT.
	Chapter: Sintaxis
		Number: 2
		Content >>
			Se describe la sintaxis del lenguaje con ejemplos.
	Chapter: Validación
		Number: 3
		Content >>
			Plantillas y esquemas permiten añadir reglas semánticas.
Template (@stxt.template): com.acme.editorial.publication
	Description >>
		Publication: Libro o documento largo dividido en capítulos
	Structure >>
		Publication:
			Title: (1)
			ISBN: (?)
			Language: (1) ENUM [es, en, fr]
			Status: (1) ENUM [In Progress, Published]
			Chapter: (+)
				Number: (1) NATURAL
				Content: (1) MARKDOWN

Los capítulos se escriben en orden y el árbol lo conserva, así que el generador no necesita ordenar nada; Number existe para que el número aparezca en la salida y para referirse a un capítulo desde fuera. Un libro de cuarenta capítulos se puede partir en cuarenta ficheros con el mismo namespace, y la plantilla sigue valiendo para cada uno.

El flujo de publicación

Cada paso es independiente y sustituible:

  1. Se escribe el documento con cualquier editor; con la extensión de VS Code, la plantilla da autocompletado y errores en el acto.
  2. Se versiona en un repositorio; la revisión editorial es un diff.
  3. Se valida —en el editor, en la línea de comandos o en integración continua— con stxt validate (La línea de comandos), que rechaza una página sin slug o un artículo sin autor antes de que llegue al generador.
  4. El generador lee el árbol canónico y produce HTML, PDF, EPUB, un feed o una API; el mismo documento sale por varios canales.

El documento no contiene HTML, CSS ni layout: la presentación se decide en el paso 4 y se puede cambiar entera sin tocar el contenido.

Límites

STXT no es un CMS: no tiene interfaz de edición, ni usuarios, ni flujo de aprobación, ni previsualización. Es el formato en el que ese CMS guarda el contenido, y lo que garantiza es que el contenido sobreviva al CMS. Tampoco define cómo se renderiza un bloque MARKDOWN ni qué dialecto de Markdown se admite: eso lo fija el renderizador, y la plantilla solo declara que el bloque debe tratarse como tal.

La variante generada de este flujo —páginas escritas por un modelo y rechazadas por el build hasta que validan— se desarrolla en IA y LLMs; el tutorial recorre el lenguaje que hay detrás de los ejemplos.