atproto-comments

Publicado el 🤖 Si quieres que tu IA lea este post, descárgaselo como markdown.

Acabo de publicar atproto-comments (en npm y en JSR), un web component que lleva los comentarios del AT Protocol a cualquier web, de forma sencilla y sin necesidad de autenticación.

  1. Publicas un artículo en tu web.
  2. Publicas un post en una app del AT Protocol (Bluesky, Mu, Deer, etc.) con el enlace a ese artículo.
  3. Insertas el componente en tu HTML, apuntando al post mediante su AT URI:
<atproto-comments thread-uri="at://did:plc:xxxx/app.bsky.feed.post/yyyy"></atproto-comments>

Y listo: las respuestas a ese post aparecen como comentarios en tu artículo. Además, si un visitante con cuenta en una app del AT Protocol quiere comentar, elige su app y se le redirige al post.

El objetivo es doble. Por un lado, ofrecer un sistema de comentarios fácil de integrar, sin base de datos propia y sin depender de plataformas como Disqus. Por otro, traer a tu web las conversaciones que hoy se quedan encerradas dentro de las redes sociales.

Si no conoces el AT Protocol, sigue leyendo. Te voy a contar el camino que seguí hasta conocerlo y entenderlo, porque tengo la intuición de que te será más útil que una definición de manual.

Hace año y medio, harto del estercolero en el que se ha convertido X, busqué alternativas. Di con Bluesky, que prometía ser una red abierta y tenía una interfaz con vibes del viejo Twitter. Me gustó: casi sin ruido, nazis ni bots. Pero no entendí el porqué de lo de "abierta".

En marzo vi un post de Eurosky, una iniciativa europea independiente que trabaja para construir una web social abierta. Invitaban a mudar nuestras cuentas de Bluesky, alojadas en servidores en EE. UU., a sus servidores en Europa, y a seguir conversando en Bluesky. ¿Cómo? Esto ya era un pelín más raro. Pero era verdad: mudé mi cuenta a Eurosky y seguí conversando en Bluesky.

En junio, otro post de Eurosky. Esta vez anunciaban mu.social, una nueva app de microblogging. Probé a entrar con mis credenciales de Bluesky y me quedé de piedra. Ahí estaba mi perfil, con mis posts, la gente a la que sigo y mis seguidores. Todo. Después di con Deer y pasó lo mismo.

Espera, esto me recordaba a algo que ya había vivido. Ya lo tengo: ¡el RSS, Google Reader, Feedly, la época dorada de los blogs! Cuando internet era descentralizada y lo que leíamos y publicábamos no estaba deformado por los algoritmos de empresas privadas.

Investigué y recapitulé. Esto era posible porque Bluesky está construido sobre el AT Protocol, un protocolo abierto para redes sociales descentralizadas. En él, tus datos viven en un servidor de datos personal (PDS) y están firmados criptográficamente. Por eso podemos cambiar de proveedor sin perder la cuenta ni los seguidores (¡los datos son nuestros!), e incluso montar nuestro propio servidor (enlace al repositorio en GitHub). Podemos consumir nuestros datos y los de las personas a las que seguimos desde distintas apps. Y podemos desarrollar herramientas como atproto-comments, que acabo de publicar, sin depender de lo que una empresa decida en cada momento.

Cómo funciona por dentro

Si quieres ver las piezas del puzle, estas son las que entran en juego cuando atproto-comments carga los comentarios:

  • Identidad (DID y handle): cada cuenta tiene un identificador permanente (did:plc:...) y un nombre legible (@xulio.eurosky.social). El DID es lo que permite cambiar de servidor sin perder nada.
  • PDS (Personal Data Server): el servidor donde viven tus datos, en un repositorio firmado. Puede ser el de Bluesky, el de Eurosky o el tuyo propio.
  • Lexicons y registros: cada tipo de dato tiene un esquema público. Un post es un registro de la colección app.bsky.feed.post; por eso la AT URI apunta a at://<did>/app.bsky.feed.post/<id>.
  • Relay: recoge los cambios de todos los PDS y los emite en un único flujo (el firehose).
  • AppView: consume ese flujo, lo indexa y sirve vistas ya montadas, como el hilo de respuestas de un post. atproto-comments pide ese hilo a la API pública del AppView de Bluesky (app.bsky.feed.getPostThread), pero puedes apuntarlo a otro AppView con el atributo appview.
  • Apps cliente: Bluesky, Mu, Deer… son solo interfaces distintas sobre los mismos datos, y cada una puede decidir cómo los muestra: qué algoritmo usa, cómo ordena el feed, qué moderación aplica. Si un día no me gusta cómo me sirve Bluesky el feed, me cambio a otra app que lo haga más a mi gusto, sin perder nada.

En el fondo, es la misma idea de aquella época dorada de los blogs: los datos son tuyos y puedes leerlos, publicarlos y llevártelos adonde quieras. atproto-comments es solo una pequeña pieza más de ese puzle. Pruébalo y, si lo usas en tu web, cuéntamelo respondiendo al post de este artículo: tu comentario aparecerá aquí abajo.