nsite-clay

nsite-clay

Un nsite que se edita a sí mismo. Un solo archivo HTML que se edita y se vuelve a publicar por su cuenta, alojado en Nostr.

El título de una página publicada mientras se edita en el navegador, con el menú de bloques abierto
Editando una página publicada. El título es texto vivo; la barra de herramientas la pone el runtime.

Qué es

Abre la página, inicia sesión con tu clave y escribe encima. El documento serializa su propio DOM, envía esos bytes a un servidor Blossom como un blob direccionado por su contenido y vuelve a publicar el manifiesto nsite NIP-5A que apunta a él. Quien cargue la página después recibe un documento estático normal con tus cambios ya dentro.

En todo ese ciclo no hay ningún servidor que tengas que mantener tú. Los relays guardan el manifiesto, los servidores Blossom guardan los bytes y el navegador hace el resto. La propiedad es un par de claves, así que quién puede editar esta página no es una fila en la base de datos de otro.

  1. 01 INSTANTÁNEA

    La página clona su propio DOM, lo limpia y serializa el documento entero.

  2. 02 BLOSSOM

    Esos bytes van a un servidor Blossom como un blob direccionado por su propio sha256.

  3. 03 MANIFIESTO

    Un evento nsite reemplazable asocia la ruta con ese hash. Publicarlo es el despliegue.

Esta página que estás leyendo es uno de esos documentos. Funciona con nsite-clay y se guarda igual.

Para geeks de Nostr

Un nsite es alojamiento web. No son notas de formato largo, sino archivos HTML enteros. Un nsite no es más que eso.

nsite-clay le añade una cosa: la página se edita y se actualiza sola, así que el CMS vive dentro del HTML estático en lugar de detrás de él.

Lo que cambias es el DOM. Haz clic por la página y edita lo que quieras, o abre el inspector de DOM del navegador y cámbialo desde ahí; a la página le da igual. La versión nueva se sube a tus servidores Blossom y se vuelve a publicar un evento reemplazable que dice a qué hash de Blossom apunta ahora / o /about-us. Cualquier gateway de nsites lo renderiza.

Toda la integración

Un atributo dice de quién es el archivo, otro marca dónde se puede escribir y una etiqueta de script hace el resto.

<!DOCTYPE html>
<html lang="en" autosave nc:owner="npub1…">
<head><meta charset="utf-8"><title>Notes</title></head>
<body>
  <h1 editable="single-line">My notes</h1>
  <div editable>
    <p>Type anything here.</p>
  </div>
  <script src="/nsite-clay-c3ac5914.js"></script>
</body>
</html>

Guárdalo y abre el archivo en un editor de texto: tus palabras están dentro del HTML. El DOM es la base de datos, no hay otro sitio donde pueda vivir el estado.

Editar

Marca un contenedor con editable y se convierte en texto enriquecido para el propietario y en marcado normal para los demás.

Enter empieza un párrafo nuevo. Al seleccionar texto aparece una barra flotante cuyo primer control es un menú de bloque: párrafo, títulos 1 a 3, cita y bloque de código.

Los atajos de teclado funcionan como esperarías, y escribir , o al principio de una línea, también.

Lo que llega al archivo es marcado que podría haber escrito una persona a mano. Ni la barra de herramientas ni la basura que sueltan los navegadores al ejecutar comandos de edición acaban guardadas.

Plantillas como aplicaciones

Una plantilla no es una combinación de colores. Cada una es una pequeña aplicación que resulta ser un solo archivo: lee de los relays, tiene controles y en varias quien la visita puede hacer algo. La página puede tener el aspecto que quieras, porque debajo no hay nada que decida cómo tiene que ser una página.

Las once plantillas

Pruébalo con una clave de verdad

Hay un documento vivo publicado con una clave desechable, y la clave es pública a propósito. Ábrelo, pulsa Iniciar sesión, pega el nsec y edita la página. Al guardar reescribes el documento real para todo el mundo.

Abrir la demo

Cualquiera puede reescribir esa página, así que lo que encuentres ahí son las sobras de otros. No pegues nunca una clave que te importe en una página que no hayas publicado tú.

Publica el tuyo

La CLI publica la primera versión. A partir de ahí la página se guarda sola, y solo vuelves a ella para los cambios que hagas fuera del navegador.

# crea la carpeta de un sitio y genera una clave para él
npx nsite-clay init mysite

# publícalo
npx nsite-clay deploy mysite --sec=nsec1…

# o deja la clave fuera de esta máquina y firma con un bunker
npx nsite-clay deploy mysite --bunker="bunker://…"

Tu sitio queda en https://<npub>.nsite.lol/. Los sitios con nombre reciben su propio subdominio, cada guardado deja una versión permanente con su propia URL y cualquier gateway NIP-5A sirve el mismo sitio, así que puedes apuntar un CNAME a uno de ellos para tener dominio propio.

Los recursos se publican en rutas que llevan su hash de contenido, y cada documento vigila su propio manifiesto y se recarga cuando aparece una versión más nueva. Nadie tiene que saber qué es una recarga forzada.

Guía completa de despliegue

Pensado para agentes, porque ahora la web la construyen agentes

La mayoría de las páginas hechas con esto las construirá un agente y no una persona a mano, así que el proyecto trae instrucciones para uno. Apunta tu agente de código a ese archivo y pídele la página que quieras.

Explica qué preguntarte, cómo elegir y retocar una plantilla, cómo poner la página en línea con un firmante remoto —en lugar de con la clave en crudo— y las pocas cosas que se tuercen. Enlaza la documentación en vez de repetirla, y sirve como AGENTS.md en un proyecto construido sobre nsite-clay.

llms-b536d55d.txt Plantillas

Dónde se sirve

Un gateway resuelve tu manifiesto y sirve los archivos. Todos leen los mismos eventos, así que tu sitio no depende de ninguno en concreto. Si uno se cae, cambias el nombre de host.

Lo que no hace

solo lectura

Inicia sesión para editar esta página

Solo la firma del propietario puede volver a publicarla. Los demás ven la página que tienes delante ahora.

La clave se queda en la memoria de esta pestaña y no se escribe en ningún sitio, pero la estás tecleando en una página que sirve un gateway. Un firmante remoto nunca entrega la clave.