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 servidor ni base de datos.
- Publicas un artículo en tu web.
- Publicas un post en una app del AT Protocol (Bluesky, Mu, Deer, etc.) con el enlace a ese artículo.
- Insertas el componente en tu HTML, apuntando al post mediante su AT URI (cómo obtenerla):
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/atproto-comments@1/dist/atproto-comments.css">
<script type="module" src="https://cdn.jsdelivr.net/npm/atproto-comments@1/dist/index.js"></script>
<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 el 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, iniciativa europea independiente que trabaja para construir una web social abierta, donde invitaban a mover 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 poco más raro. Pero era verdad: cambié 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 encontré y probé Deer y pasó lo mismo.
Para que entiendas mi sorpresa, aquí está el mismo post de Eurosky visto a través de tres apps:
Espera, esto me recordaba a algo que ya había vivido. ¡Claro, qué morriña! Los blogs, el RSS, Google Reader y Feedly. Cuando internet era descentralizada, lo que publicábamos era nuestro y lo que leíamos 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, cada cuenta tiene un identificador permanente (DID) y sus datos viven en un servidor de datos personal (PDS), 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. Podemos consumir nuestros datos y los de las personas a las que seguimos desde distintas apps. Y podemos desarrollar herramientas como atproto-comments 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 (@xulioze.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 aat://<did>/app.bsky.feed.post/<id>. - Relay: como los datos están repartidos en muchos PDS, el Relay los reúne y reemite sus cambios en un único flujo en tiempo real (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 atributoappview. Ten en cuenta que esa petición sale del navegador de cada visitante y que, al cargarse con JavaScript, los buscadores no suelen indexar los comentarios. - 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, la idea es muy parecida a la del RSS y los blogs: los datos son de quien los publica, que puede llevárselos adonde quiera. Cada cual decide cómo y dónde consumirlos. Y cualquiera puede desarrollar herramientas para el ecosistema sin pedir permiso a nadie, como atproto-comments, que estrenamos hoy aquí.
Si ya tienes cuenta en el AT Protocol, deja un comentario aquí abajo desde tu app favorita (Bluesky, Mu, Deer…) y lo verás aparecer. Si no tienes, crea una cuenta en Eurosky y úsala en la app que quieras. ¡Bienvenida a las redes sociales abiertas!