Cloudflare
Actualizado el 12 nov 2026
Cloudflare Workers puede servir directamente un directorio de recursos estáticos: sin cómputo aparte ni capa SPA. Así se publica livemark.dev, y la misma estructura de wrangler.jsonc funciona para cualquier sitio Livemark.
Compila el sitio
livemark buildLa salida queda en .livemark/build/client/.
Configura wrangler.jsonc
Coloca esto en la raíz de tu proyecto:
{
"name": "my-docs",
"compatibility_date": "2026-04-01",
"workers_dev": true,
"assets": {
"directory": ".livemark/build/client",
},
}Dos campos hacen el trabajo pesado:
| Campo | Propósito |
|---|---|
assets.directory | Apunta Wrangler a la salida de compilación de Livemark. Cada archivo se sirve tal cual. |
workers_dev | Te da una URL de vista previa <name>.<account>.workers.dev mientras pruebas. |
Despliega desde tu máquina
livemark build
wrangler deployLa primera ejecución te pide wrangler login para autorizar el acceso a tu cuenta de Cloudflare.
Despliega con GitHub Actions
name: deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
cache: pnpm
node-version: 24
- run: pnpm install
- run: pnpm livemark build
- uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}Crea un token de API con alcance limitado en My Profile → API Tokens (la plantilla "Edit Cloudflare Workers" concede exactamente lo que necesitas) y guarda ambos valores como secretos del repositorio.
Dominio personalizado
Añade un bloque routes cuando tu zona esté en Cloudflare:
{
"name": "my-docs",
"compatibility_date": "2026-04-01",
"assets": { "directory": ".livemark/build/client" },
"routes": [{ "pattern": "docs.example.com", "custom_domain": true }],
}custom_domain: true indica a Cloudflare que aprovisione un dominio gestionado: DNS, certificado y ruta se gestionan por ti. Define site con el mismo dominio en livemark.config.ts para que las URLs absolutas del sitemap y los feeds RSS coincidan.
Markdown para agentes
Los agentes de IA piden una página como Markdown enviando Accept: text/markdown. Los recursos estáticos siempre responden con HTML, así que añade a tu zona una URL Rewrite Rule que dirija esas peticiones al gemelo Markdown de la página. Las URL Rewrite Rules están disponibles en todos los planes, incluido el gratuito, y el sitio sigue siendo totalmente estático.
En el panel, abre tu dominio, ve a Rules → Overview → Create rule → URL Rewrite Rule y rellena:
| Campo | Valor |
|---|---|
| Rule name | Markdown for agents |
| If incoming requests match | Custom filter expression (abajo) |
| Path | Rewrite to → Dynamic → concat(http.request.uri.path, "index.md") |
| Query | Preserve |
any(http.request.headers["accept"][*] contains "text/markdown") and ends_with(http.request.uri.path, "/")Las URLs de las páginas terminan en /, así que la regla solo afecta a las páginas. Una petición a /guide se redirige primero a /guide/ y luego se reescribe. Los recursos estáticos sirven los archivos .md como text/markdown, así que el tipo de respuesta no necesita ninguna regla adicional.
Ver también
-
Agentes de IA: lo que la compilación publica para los agentes.
-
Metadatos del sitio:
sitehace posibles las URLs absolutas y la generación de feeds. -
Despliegue: vuelve al índice de hostings.
Hecho con ❤ y Livemark