O que é o Bluesky e o AT Protocol

O Bluesky e uma rede social criada inicialmente com apoio do Twitter (hoje X) e desenvolvida de forma independente desde 2022. O diferencial técnico e o AT Protocol (Authenticated Transfer Protocol), um protocolo aberto que permite a qualquer desenvolvedor criar clientes, servidores e aplicações sobre a mesma infraestrutura de dados.

A proposta central e simples: você não esta preso a um servidor específico. Sua identidade, seus posts e seus seguidores podem migrar para qualquer servidor compatível com o AT Protocol sem perder nada - diferente do Twitter/X, onde sua conta só existe nos servidores da empresa.

Para desenvolvedores, o AT Protocol e interessante porque expõe uma API pública e bem documentada, permite criar bots, feeds customizados, aplicações de terceiros e até redes sociais próprias usando a mesma base de usuários do Bluesky.

Como funciona o AT Protocol

O AT Protocol funciona sobre três componentes principais: o PDS (Personal Data Server), o AppView e o Relay. Cada usuário tem seus dados armazenados em um PDS (pode ser o oficial do Bluesky ou um que você mesmo hospeda). O Relay agrega posts de todos os PDSs e o AppView e a camada que transforma esses dados em feeds legíveis.

A identidade no AT Protocol e baseada em DIDs (Decentralized Identifiers), que podem ser vinculados a um domínio próprio. Isso significa que você pode usar seu próprio domínio como handle - por exemplo, wallyson.duarte.dev em vez de @wallyson.bsky.social.

Os dados são armazenados em repositórios imutáveis chamados CAR files, com cada operação (post, like, follow) sendo um registro assinado criptograficamente. Isso garante autenticidade e permite auditoria de qualquer ação na rede.

Principais recursos para desenvolvedores

O ecossistema do AT Protocol oferece vários pontos de entrada para devs que querem construir sobre ele:

  • API REST do Bluesky (XRPC): protocolo próprio baseado em HTTP com schemas Lexicon (similar ao GraphQL mas com validação de tipo mais rígida). Permite postar, seguir, buscar e ler qualquer dado público.
  • Firehose: stream em tempo real de todos os eventos da rede (posts, likes, follows). Útil para analytics, bots de monitoramento e feeds customizados.
  • Custom Feeds: você pode criar um algoritmo de feed próprio e disponibiliza-lo para qualquer usuário do Bluesky. E a versão aberta dos algoritmos de recomendação.
  • Labelers: serviços de moderação que qualquer desenvolvedor pode criar e distribuir - usuários escolhem quais labelers aplicar ao seu feed.
💡
Dica

Para começar com a API do Bluesky, use o SDK oficial @atproto/api (Node.js) ou a biblioteca atproto (Python). Ambos abstraem o XRPC e deixam o código muito mais limpo.

Como começar: acesso passo a passo

Para usar a API do Bluesky como desenvolvedor, você precisa de uma conta no Bluesky e de uma App Password (senha de aplicação separada da senha principal).

Passo 1: Acesse bsky.app e crie sua conta gratuitamente.

Passo 2: Va em Settings > Privacy and Security > App Passwords e gere uma senha específica para sua aplicação.

Passo 3: Instale o SDK oficial:

npm install @atproto/api
# ou para Python
pip install atproto

Passo 4: Autentique e faca seu primeiro post via API:

const { BskyAgent } = require('@atproto/api')

const agent = new BskyAgent({ service: 'https://bsky.social' })

await agent.login({
  identifier: 'seu-handle.bsky.social',
  password: 'SUA_APP_PASSWORD'
})

await agent.post({
  text: 'Meu primeiro post via API do Bluesky!',
  createdAt: new Date().toISOString()
})

Exemplo prático

Vamos criar um bot simples que monitora a firehose do Bluesky e conta quantos posts por minuto contem a palavra 'JavaScript'. Esse e um exemplo clássico de analytics em tempo real sobre a rede.

const { Firehose } = require('@atproto/sync')

let contador = 0
const inicio = Date.now()

const firehose = new Firehose({ service: 'wss://bsky.network' })

firehose.on('commit', (evt) => {
  for (const op of evt.ops) {
    if (op.action === 'create' && op.path.startsWith('app.bsky.feed.post')) {
      const texto = op.record?.text || ''
      if (texto.toLowerCase().includes('JavaScript')) {
        contador++
      }
    }
  }
})

setInterval(() => {
  const mins = (Date.now() - inicio) / 60000
  console.log('Posts com JavaScript por minuto: ' + (contador / mins).toFixed(1))
}, 10000)

firehose.start()

Esse script conecta ao relay público do Bluesky, escuta todos os eventos em tempo real e filtra posts que mencionam JavaScript. Em produção, você substituiria o console.log por um banco de dados ou dashboard.

Comparação com alternativas

O Bluesky/AT Protocol não e a única tentativa de rede social descentralizada. As principais alternativas são o Mastodon (protocolo ActivityPub) e o Nostr.

  • Mastodon/ActivityPub: protocolo mais antigo e maduro, usado por centenas de instâncias independentes. A federação e diferente: cada servidor tem sua própria comunidade e os dados ficam fragmentados. Não e possível migrar levando posts antigos.
  • Nostr: mais descentralizado ainda, sem entidade central, usa chaves criptográficas como identidade. Mais difícil para usuário comum, mas com total soberania de dados.
⚠️
Atenção

O AT Protocol ainda esta em desenvolvimento ativo. APIs e schemas Lexicon podem mudar entre versões. Monitore o repositório oficial no GitHub antes de colocar um projeto em produção.

O diferencial do Bluesky/AT Protocol e que a migração de servidor preserva identidade, seguidores E posts antigos - algo que o ActivityPub não garante. Para devs, a API REST e muito mais simples de usar que o ActivityPub.

Pontos positivos e limitações

Pontos positivos: API pública e bem documentada, SDK oficial para Node.js e Python, firehose em tempo real para analytics, custom feeds com algoritmos próprios, identidade portável via DID e handle de domínio próprio.

Limitações reais: o protocolo ainda não suporta mensagens diretas encriptadas de ponta a ponta (DMs existem mas não são E2E). A rede ainda e menor que o Twitter/X em termos de volume. Hospedar um PDS próprio exige conhecimento técnico significativo.

Outro ponto: o modelo de moderação distribuída via Labelers e poderoso mas complexo para o usuário comum entender. A experiência fora do cliente oficial bsky.app ainda e inconsistente entre apps de terceiros.

Casos de uso reais

O AT Protocol abre possibilidades reais para desenvolvedores que queiram construir sobre uma rede social aberta:

  • Bot de noticias: postar automaticamente atualizações de um RSS feed ou API de noticias no Bluesky sem depender de serviços pagos como Buffer.
  • Analytics de sentimento: monitorar a firehose para medir o sentimento sobre um produto, empresa ou evento em tempo real.
  • Feed customizado: criar um algoritmo de curadao especializado (ex: só posts de devs brasileiros sobre Python) e disponibiliza-lo para a comunidade.
  • Espelho de conta: sincronizar posts de outra rede para o Bluesky automaticamente.

Dicas e boas práticas

💡
Dica

Use sempre uma App Password dedicada para cada aplicação, nunca sua senha principal. Assim você pode revogar o acesso de uma app sem afetar as outras.

🚀
Pro tip

Vincule seu próprio domínio como handle no Bluesky (Settings > Change Handle > I have my own domain). Isso melhora sua credibilidade e deixa a identidade independente do servidor bsky.social.

🔴
Cuidado

A firehose do Bluesky gera um volume muito alto de eventos - centenas de posts por segundo nos horários de pico. Se você consume a firehose sem filtragem, prepare sua infraestrutura para lidar com esse throughput antes de ir para produção.

Vale a pena?

Para desenvolvedores interessados em construir sobre redes sociais abertas, o Bluesky/AT Protocol e o ponto de entrada mais acessível hoje. A API e clara, o SDK funciona bem e a comunidade de devs esta ativa no próprio Bluesky.

Se você quer apenas postar conteúdo automaticamente, o Bluesky já compete de igual para igual com o Twitter/X em facilidade de integração. Se você quer construir uma aplicação nova sobre uma rede social, o AT Protocol oferece algo que nenhuma rede fechada oferece: dados abertos e portabilidade real.

O próximo passo e criar sua conta no bsky.app, gerar uma App Password e rodar o exemplo de post automático deste artigo. A documentação oficial em atproto.com cobre todos os endpoints com exemplos prontos.