Criei um bot de posts mais relevantes do Tabnews para o Bluesky
Ontem, fui impactado pela ideia do nosso colega fausto
que criou um bot que informa as 3 publicações mais bem ranqueadas do Tabnews no X/Twitter, divulgando muitos produtos que são publicados aqui no Tabnews.
Havia perguntado a ele se pensava em implantar o bot para o Bluesky, mas informou que só adotaria quando houvesse uma migração em massa para lá. Ideia prudente, visto que estima-se que 21 milhões de pessoas eram usuárias do X no Brasil enquanto que estima-se que há 2 milhões de contas brasileiras no Bluesky.
Gostei tanto da ideia, e vendo artigos alegando que o developer experience do Bluesky era boa, que tomei a iniciativa e criei o bot do Tabnews para o Bluesky. Todos os dias, às 12h (Horário de Brasília), o bot postará os conteúdos mais relevantes do Tabnews para a rede Bluesky, para que todos que migraram do X para o Bluesky, possam seguir os produtos e as ideias mais relevantes aqui desse grande site.
Desenvolvi com o intuito de entender como funciona a API do Bluesky, e dar uma pequena contribuição a comunidade do Tabnews, que cresce cada vez mais, procurando amplificar o Tabnews para um novo canal. Também é a minha forma de agradecer ao Deschamps, por ter sido a única pessoa que me fez entender uma skill importante (Jest), que me deu uma paz de espírito para um projeto importante.
E a questão do developer experience? Bem, para fazer postagens automatizadas na plataforma, para postar um simples texto, os passos são simples. Existem SDKs prontas em PHP e Javascript, e basta apenas criar uma senha de aplicativo (app password), instalar o SDK, e no código, usar o seu handle (no meu caso tabnewsbot.bsky.social
) e a senha de app criada. Depois, (pelo SDK em PHP), apenas uma função é necessária para fazer a postagem, que reproduzo aqui, vindo da documentação do SDK em PHP:
$args = [
'collection' => 'app.bsky.feed.post',
'repo' => $bluesky->getAccountDid(),
'record' => [
'text' => 'Testing #TestingInProduction',
'langs' => ['en'],
'createdAt' => date('c'),
'$type' => 'app.bsky.feed.post',
],
];
$data = $bluesky->request('POST', 'com.atproto.repo.createRecord', $args);
Para colocar links como embed, a situação é um pouco mais complicada, pois tem que informar os bytes de início e fim de link. Para colocar um card de visualização, é necessário informar a URL da imagem (um processo ainda mais sofisticado, que ainda não consegui implementar, por isso os cards não estarão visíveis nos primeiros posts). São detalhes um pouco mais complexos, que colocarei em um post extra aqui nesta plataforma em breve.
Assim, convido todos aqueles que usam o Bluesky a seguirem o @tabnewsbot.bsky.social e ficarem ligados nos posts mais relevantes deste site.