# Inicio

> Convierte una carpeta de páginas Markdown y HTML en un sitio: un layout, un tema, recarga en vivo, para humanos y agentes.

Código abierto · Licencia MIT

Escribe en Markdown o HTML sencillo, y htmlpress añade layout, tema, navegación y recarga en vivo, construidos con web components y CSS, todo escapable. Ideal para documentación interna y para publicar contenido.

[Empezar](/es/introduction/) [Ver el código](https://github.com/datisthq/htmlpress)

- `curl -fsSL https://htmlpress.dev/install.sh | sh`
- `pip install htmlpress`
- `npm install gethtmlpress`
- `cargo install htmlpress`

![Un panel de electricidad hecho como una sola página de htmlpress, con indicadores, un gráfico de columnas apiladas y un anillo](/screenshots/author.webp) ![Un panel de electricidad hecho como una sola página de htmlpress, con indicadores, un gráfico de columnas apiladas y un anillo](/screenshots/author-dark.webp)

**HTML arbitrario, tal cual**rust/docs/examples/energy-dashboard.html

```html
<title>Electricity dashboard</title>
<style>.nrg { … }</style>
<div class="nrg">…</div>
```

![La página de elementos enriquecidos de htmlpress con avisos de información, éxito, advertencia y peligro](/screenshots/components.webp) ![La página de elementos enriquecidos de htmlpress con avisos de información, éxito, advertencia y peligro](/screenshots/components-dark.webp)

**Escrito en HTML sencillo**rust/docs/authoring/rich-elements.html

```html
<htmlpress-callout type="tip">
  <p>Every page built.</p>
</htmlpress-callout>
```

![El buscador de htmlpress con resultados para deploy en toda la documentación](/screenshots/search.webp) ![El buscador de htmlpress con resultados para deploy en toda la documentación](/screenshots/search-dark.webp)

**Indexado al construir**rust/docs/deployment/index.html

```html
<h1>Deployment</h1>
<p><code>htmlpress build</code>
  produces a fully static site…</p>
```

![El índice del blog de htmlpress con dos entradas fechadas, sus autores, las entradas recientes y las etiquetas](/screenshots/blog.webp) ![El índice del blog de htmlpress con dos entradas fechadas, sus autores, las entradas recientes y las etiquetas](/screenshots/blog-dark.webp)

**Fechado en su propio head**rust/docs/blog/hello-world.html

```html
<meta name="date" content="2026-04-10" />
<meta name="author" content="Htmlpress Team" />
<meta name="keywords" content="announcement" />
```

![La navegación de htmlpress abierta como panel lateral en un teléfono](/screenshots/mobile-nav.webp) ![La navegación de htmlpress abierta como panel lateral en un teléfono](/screenshots/mobile-nav-dark.webp)

![Pasos numerados y un bloque de código en un teléfono](/screenshots/mobile-steps.webp) ![Pasos numerados y un bloque de código en un teléfono](/screenshots/mobile-steps-dark.webp)

![El selector de idioma abierto como hoja inferior sobre un panel en un teléfono](/screenshots/mobile-sheet.webp) ![El selector de idioma abierto como hoja inferior sobre un panel en un teléfono](/screenshots/mobile-sheet-dark.webp)

**Escrito en HTML sencillo**rust/docs/authoring/rich-elements.html

```html
<h3 data-step>Install</h3>
```

## No te estorba

Sin framework, sin configuración de compilación, sin estructura obligatoria. Una carpeta de Markdown o HTML ya es un proyecto.

- ### Cualquier estructura de archivos

  Una página es cualquier archivo `.md` o `.html`: Markdown con frontmatter, o HTML desde un simple fragmento hasta un documento completo. Déjalas planas o anídalas: una carpeta con `index.html` se convierte en un grupo de navegación, y cualquier otro archivo se copia tal cual.

- ### Web components, light DOM

  Cada componente es un elemento personalizado estándar: sin framework, sin shadow DOM. Tu CSS y los tokens del tema llegan dentro, y el texto queda en la página para la búsqueda y los agentes. Un archivo en `.htmlpress/components/` añade tu propia etiqueta.

- ### Escapa lo que quieras

  Reemplaza el layout, el tema o cualquier componente integrado desde `.htmlpress/`, o da a una página [su propio layout](/es/customization/custom-routes/). Esta landing page es una de ellas.

```
.htmlpress/
├─ layouts/
│  └─ landing.html    ← this page's chrome
└─ components/
   └─ site-hero.css   ← your own component
guides/
├─ setup.html
└─ faq.html
images/               ← copied as they are
index.html            ← a page too
htmlpress.yaml
```

## Preciosa por defecto

Un tema cuidado, los componentes que necesita una documentación y valores predeterminados sensatos. Personaliza solo lo que quieras.

### Estilos desde los elementos

Los encabezados, las listas, las tablas, el código, `<details>`, `<figure>` y `<kbd>` se ven bien sin ninguna clase.

### Web components donde HTML no los tiene

Avisos, pestañas, pasos, tarjetas, árboles de archivos, insignias, iconos, tablas ordenables, diagramas Mermaid e imágenes ampliables, como elementos personalizados en light DOM.

### Código resaltado

Resaltado al construir en más de 220 lenguajes, con títulos, pestañas, diff, foco y marcas de línea, en un tema claro y otro oscuro.

### Navegación desde la carpeta

Agrupada por carpeta, ordenada por `<meta name="order">`, con una tabla de contenidos y enlaces de anterior y siguiente.

### Búsqueda incluida

Un índice de texto completo escrito al construir y abierto con `S`; la página que abre un resultado resalta la coincidencia.

### Documentación, blog y registro de cambios

Divide un sitio en secciones con su propia pestaña y barra lateral: entradas fechadas con un feed RSS, o una página por versión desde un `CHANGELOG.md`.

### Cómoda en un teléfono

La navegación se convierte en un panel lateral, los selectores en hojas inferiores y nada se desplaza en horizontal.

### Modo oscuro y tokens de tema

Un tema oscuro según el sistema o el interruptor, y cada color, fuente y ancho es un token `--htmlpress-*`.

### En cada idioma

Traduce una página junto a su original como `page.es.html`: cada idioma tiene su prefijo, navegación, búsqueda y textos de interfaz.

### Recarga en vivo

`htmlpress start` recompila con cada guardado y recarga el navegador, escapes y componentes incluidos.

### Salida estática

`htmlpress build` escribe archivos sencillos en `.htmlpress/build`, con enlaces canónicos, listos para cualquier hosting estático.

### Un binario, tres canales

Un único ejecutable de Rust, que se instala desde npm, PyPI o crates.io. Nada más que instalar.

HTML Markdown

## Escribe HTML o Markdown. Publica un sitio web.

Tus páginas se quedan como están. Htmlpress hace el resto.

```html
<title>Quickstart</title>
<meta name="order" content="1" />

<h1>Quickstart</h1>
<p>Install the binary:</p>
<pre><code>npm install -g gethtmlpress</code></pre>

<htmlpress-callout title="Tip">
<p>Run <code>htmlpress start</code> and open the browser.</p>
</htmlpress-callout>

<h2>Features</h2>
<ul>
<li><strong>Fast</strong> rebuilds on save</li>
<li><strong>Components</strong> when HTML has none</li>
<li><em>Beautiful</em> out of the box</li>
</ul>
```

````md
---
title: Quickstart
order: 1
---

# Quickstart

Install the binary:

```sh
npm install -g gethtmlpress
```

:::callout{label="Tip"}
Run `htmlpress start` and open the browser.
:::

## Features

- **Fast** rebuilds on save
- **Components** when HTML has none
- *Beautiful* out of the box
````

### Quickstart

Install the binary:

```
npm install -g gethtmlpress
```

> **Tip**
>
> Run `htmlpress start` and open the browser.

#### Features

- **Fast** rebuilds on save
- **Components** when HTML has none
- *Beautiful* out of the box

## Pensado para agentes de programación

Los agentes conocen Markdown y HTML mejor que cualquier lenguaje de plantillas. Htmlpress mantiene pequeño su trabajo y cada respuesta legible por máquinas.

```sh
$ htmlpress build docs --json
{
  "output": "docs/.htmlpress/build",
  "pages": 8,
  "files": 12
}

$ htmlpress build --json '{"root":"docs","out":"dist"}'

$ htmlpress --llms
```

- ### Entra Markdown o HTML sencillo

  Sin framework, sin sintaxis que aprender, sin clases utilitarias: cuantas menos opciones ofrece una página, más se parecen las páginas a un mismo sitio.

- ### Todos los comandos hablan JSON

  `--json` imprime el resultado en stdout y recibe la entrada como JSON; los registros y los errores van a stderr.

- ### La CLI de una sola lectura

  `htmlpress --llms` lista el esquema de entrada y salida de cada comando como herramientas con forma de MCP.

- ### Una copia en Markdown de cada página

  Cada página obtiene un `index.md` junto a su HTML, enlazado desde el head, para que un agente lea el contenido sin el marcado.

- ### llms.txt de serie

  Un índice `llms.txt` de cada copia, agrupado como la navegación y anunciado en una cabecera `Link` de la página de inicio.

- ### Una skill para tu agente

  Cinco skills enseñan a Claude Code, Cursor o Codex a [escribir, configurar, rediseñar y desplegar](/es/agent-skills/) un sitio.

[Cómo usan htmlpress los agentes →](/es/agent-skills/)

## Empieza a escribir. *Deja que htmlpress se encargue del resto.*

Apunta htmlpress a una carpeta de Markdown o HTML, escapa lo que quieras controlar y despliega. Esa es toda la configuración.

[Lee la documentación](/es/introduction/) [Instálalo](/es/introduction/)
