atproto-comments
Publicado a 🤖 Se queres que a tua IA leia este post, descarrega-o como markdown.Acabei de publicar o atproto-comments (no npm e no JSR), um web component que leva os comentários do AT Protocol a qualquer site, de forma simples e sem necessidade de autenticação.
- Publicas um artigo no teu site.
- Publicas um post numa app do AT Protocol (Bluesky, Mu, Deer, etc.) com a ligação para esse artigo.
- Inseres o componente no teu HTML, apontando para o post através da sua AT URI:
<atproto-comments thread-uri="at://did:plc:xxxx/app.bsky.feed.post/yyyy"></atproto-comments>
E pronto: as respostas a esse post aparecem como comentários no teu artigo. Além disso, se um visitante com conta numa app do AT Protocol quiser comentar, escolhe a sua app e é redirecionado para o post.
O objetivo é duplo. Por um lado, oferecer um sistema de comentários fácil de integrar, sem base de dados própria e sem depender de plataformas como o Disqus. Por outro, trazer para o teu site as conversas que hoje ficam fechadas dentro das redes sociais.
Se não conheces o AT Protocol, continua a ler. Vou-che contar o caminho que segui até o conhecer e entender, porque tenho a intuição de que vai ser mais útil do que uma definição de manual.
Há um ano e meio, farto da esterqueira em que se converteu o X, procurei alternativas. Dei com o Bluesky, que prometia ser uma rede aberta e tinha uma interface com vibes do velho Twitter. Gostei: case sem ruído, nazis e bots. Mas não entendi o porquê do "aberta".
Em março vi um chio da Eurosky, uma iniciativa europeia independente que trabalha para construir uma web social aberta. Convidavam a mudar as nossas contas do Bluesky, alojadas em servidores nos EUA, para os seus servidores na Europa, e a continuar a conversar no Bluesky. Como? Isto já era um chisco mais estranho. Mas era verdade: mudei a minha conta para a Eurosky e continuei a conversar no Bluesky.
Em junho, outro chio da Eurosky. Desta vez anunciavam o mu.social, uma nova app de microblogging. Experimentei entrar com as minhas credenciais do Bluesky e fiquei co cu torto. Ali estava o meu perfil, com os meus posts, a gente que sigo e os meus seguidores. Tudo. Depois dei com o Deer e passou a mesma cousa.
Espera, isto lembrava-me algo que já tinha vivido. Já sei: o RSS, o Google Reader, o Feedly, a época dourada dos blogues! Quando a internet era descentralizada e o que líamos e publicávamos não estava deformado polos algoritmos de empresas privadas.
Investiguei e recapitulei. Isto era possível porque o Bluesky está construído sobre o AT Protocol, um protocolo aberto para redes sociais descentralizadas. Nele, os teus dados vivem num servidor de dados pessoal (PDS) e estão assinados criptograficamente. Por isso podemos mudar de fornecedor sem perder a conta nem os seguidores (os dados são nossos!), e até montar o nosso próprio servidor (ligação ao repositório no GitHub). Podemos consumir os nossos dados e os das pessoas que seguimos a partir de diferentes apps. E podemos desenvolver ferramentas como o atproto-comments, que agora publiquei, sem depender do que uma empresa decida em cada momento.
Como funciona por dentro
Se queres ver as peças do puzzle, estas são as que entram em jogo quando o atproto-comments carrega os comentários:
- Identidade (DID e handle): cada conta tem um identificador permanente (
did:plc:...) e um nome legível (@xulio.eurosky.social). O DID é o que permite mudar de servidor sem perder nada. - PDS (Personal Data Server): o servidor onde vivem os teus dados, num repositório assinado. Pode ser o do Bluesky, o da Eurosky ou o teu próprio.
- Lexicons e registos: cada tipo de dado tem um esquema público. Um post é um registo da coleção
app.bsky.feed.post; por isso a AT URI aponta paraat://<did>/app.bsky.feed.post/<id>. - Relay: recolhe as mudanças de todos os PDS e emite-as num fluxo único (o firehose).
- AppView: consome esse fluxo, indexa-o e serve vistas já montadas, como o fio de respostas de um post. O atproto-comments pede esse fio à API pública do AppView do Bluesky (
app.bsky.feed.getPostThread), mas podes apontá-lo para outro AppView com o atributoappview. - Apps clientes: Bluesky, Mu, Deer… são só interfaces diferentes sobre os mesmos dados, e cada uma pode decidir como os mostra: que algoritmo usa, como ordena o feed, que moderação aplica. Se um dia não gostar de como o Bluesky me serve o feed, mudo para outra app que o faça mais ao meu gosto, sem perder nada.
No fundo, é a mesma ideia daquela época dourada dos blogues: os dados são teus e podes lê-los, publicá-los e levá-los para onde quiseres. O atproto-comments é só uma pequena peça mais nesse puzzle. Experimenta-o e, se o usares no teu site, conta-mo respondendo ao post deste artigo: o teu comentário vai aparecer aqui em baixo.