diff --git a/README.md b/README.md
index 7e4df7d..9683d02 100644
--- a/README.md
+++ b/README.md
@@ -1,117 +1,11 @@
# acampada26s.net
-Web de la acampada del 26S en Madrid. Comunicados, directo, cómo organizarse
-y dónde están los colectivos.
+Web de la acampada del 26S en Madrid. HTML y CSS, sin JavaScript.
-HTML y CSS. Sin JavaScript en el navegador, sin cookies, sin analítica y sin
-peticiones a terceros. La tipografía va dentro del repo.
+1. `site/` va a `/var/www/acampada26s.net`. `deploy/nginx.conf` y `deploy/hub.conf` a nginx.
+2. Directo es el HUB del pub OASIS (`/c`), servido en local en `127.0.0.1:3000`.
+3. Comunicados, comisiones y debates salen de OASIS con `deploy/web26s.timer`. Rellenar `CUENTA` y `TRIBU` en `deploy/web26s.service`.
+4. Publica quien está en la tribu pública de la acampada y lo sigue la cuenta de la acampada. Comunicado: post con `#comunicado26s`, primera línea de título. Comisión: subtribu pública. Debate: foro público.
+5. Fotos subidas a mano: `tools/limpia-img.sh` antes, siempre.
-La comunicación viva no depende de esta web: va por un pub de
-[OASIS](https://code.03c8.net/krakenslab/oasis) (Secure Scuttlebutt). Si la web
-cae o la tiran, el pub y lo publicado siguen en la red.
-
-## Estructura
-
-```
-site/ lo que se sirve (copiar tal cual a /var/www/acampada26s.net)
-deploy/ nginx y timer de systemd
-tools/ generador desde OASIS y limpieza de imágenes
-```
-
-## Qué sale de dónde
-
-- **Directo**: enlace al HUB del pub (`/c?type=feed`). Lo sube la gente de
- comunicación desde OASIS. No pasa por esta web.
-- **Comunicados, comisiones y debates**: los genera `tools/` a partir de OASIS
- cada dos minutos. Nadie edita HTML a mano.
-- **Colectivos**: lista fija en `site/index.html`. Para añadir uno, un `
`
- más. Solo webs o cuentas comprobadas.
-
-## Publicar desde OASIS
-
-Quien publica en la web: miembros de la tribu pública de la acampada **a los
-que la cuenta de la acampada sigue**. Hacen falta las dos cosas. Unirse a una
-tribu es un mensaje que cualquiera puede publicar sobre sí mismo (el código de
-invitación solo lo comprueba la interfaz), así que la tribu sola no vale como
-permiso. El follow lo firma la cuenta de la acampada y no se puede falsificar.
-
-- Dar permiso: invitar a la tribu y seguir desde la cuenta de la acampada.
-- Quitarlo: dejar de seguir. Sus comunicados desaparecen en la siguiente pasada.
-
-Qué se publica:
-
-- **Comunicado**: un post con `#comunicado26s`. La primera línea es el título.
- Las imágenes adjuntas salen en la página. Si se borra en OASIS, se borra aquí.
-- **Comisión**: una subtribu pública de la tribu de la acampada, creada por
- alguien con permiso.
-- **Debate**: un foro público abierto por alguien con permiso.
-
-Las tribus privadas y lo que se escribe dentro de las tribus va cifrado; eso
-no sale en la web ni debe salir.
-
-La tribu tiene que ser pública (no anónima) y con invitación estricta, y la
-tiene que crear la cuenta de la acampada.
-
-## Imágenes
-
-Las de los comunicados las sirve el pub (`/c/blob/...`). Las que se suban a
-mano a `site/img/`, siempre limpias antes:
-
-```
-tools/limpia-img.sh site/img/*.jpg
-```
-
-El EXIF lleva GPS, modelo de móvil y hora. Caras tapadas salvo permiso expreso.
-
-## Despliegue
-
-Requisitos: nginx, certbot, el pub OASIS en la misma máquina, Node 22 y
-Python 3.9+.
-
-```
-rsync -a --exclude comunicados/ site/ /var/www/acampada26s.net/
-cp deploy/nginx.conf /etc/nginx/sites-available/acampada26s.net
-cp deploy/hub.conf /etc/nginx/snippets/acampada26s-hub.conf
-ln -s ../sites-available/acampada26s.net /etc/nginx/sites-enabled/
-nginx -t && systemctl reload nginx
-```
-
-Un `rsync` de `index.html` deja los bloques generados vacíos; el timer los
-repone en dos minutos.
-
-### Pub OASIS
-
-`sh oasis.sh server`. El HUB web escucha en `:3000`; mejor solo en local
-(`--host=127.0.0.1`). nginx publica `/c` en solo lectura y sin la IP de quien
-visita.
-
-### Generador
-
-```
-cp -r . /opt/26s
-cp deploy/web26s.service deploy/web26s.timer /etc/systemd/system/
-# rellenar CUENTA, TRIBU, OASIS_DIR y User en web26s.service
-systemctl enable --now web26s.timer
-```
-
-A mano:
-
-```
-OASIS_DIR=~/oasis CUENTA=@...ed25519 TRIBU=%...sha256 node tools/extrae.js \
- | python3 tools/genera.py site
-```
-
-`extrae.js` solo lee del sbot por su socket local. `genera.py` escapa todo lo
-que viene de SSB, solo deja enlaces `http(s)` y escribe de forma atómica.
-
-## Comprobaciones antes de subir
-
-```
-grep -rniE '