new_my_likes 

Combine os dados novos e antigos:


deduped_my_likes 

E, por fim, salve os dados atualizados substituindo o arquivo antigo:


rio::export(deduped_my_likes, 'my_likes.parquet')

Passo 4. Visualize e pesquise seus dados da maneira convencional

Gosto de criar uma versão desses dados especificamente para usar em uma tabela pesquisável. Inclui um link no final do texto de cada postagem para a postagem original no Bluesky, permitindo-me visualizar facilmente quaisquer imagens, respostas, pais ou tópicos que não estejam no texto simples de uma postagem. Também removo algumas colunas que não preciso da tabela.


my_likes_for_table 
   mutate(
     Post = str_glue("{Post} >>"),
     ExternalURL = ifelse(!is.na(ExternalURL), str_glue("{substr(ExternalURL, 1, 25)}..."), "")
    
     ) |>
  select(Post, Name, CreatedAt, ExternalURL)

Aqui está uma maneira de criar uma tabela HTML pesquisável desses dados, usando o pacote DT:


DT::datatable(my_likes_for_table, rownames = FALSE, filter="top", escape = FALSE, options = list(pageLength = 25, autoWidth = TRUE, filter = "top", lengthMenu = c(25, 50, 75, 100), searchHighlight = TRUE,
                  search = list(regex = TRUE)
                                                                           
      )
)

Esta tabela tem uma caixa de pesquisa para toda a tabela no canto superior direito e filtros de pesquisa para cada coluna, para que eu possa pesquisar dois termos em minha tabela, como a hashtag #rstats na barra de pesquisa principal e, em seguida, qualquer postagem onde o texto contenha LLM (a pesquisa da tabela não diferencia maiúsculas de minúsculas) na barra de filtro da coluna Post. Ou, porque habilitei a pesquisa de expressões regulares com o search = list(regex = TRUE) opção, eu poderia usar um único padrão lookahead regexp (?=.rstats)(?=.(LLM)) na caixa de pesquisa.

IDG

Chatbots de IA generativos como ChatGPT e Claude podem ser muito bons na escrita de expressões regulares complexas. E com os destaques de texto correspondentes ativados na tabela, será fácil ver se o regexp está fazendo o que você deseja.

Consulte suas curtidas no Bluesky com um LLM

A maneira gratuita mais simples de usar IA generativa para consultar essas postagens é enviando o arquivo de dados para um serviço de sua escolha. Tive bons resultados com o NotebookLM do Google, que é gratuito e mostra o texto fonte de suas respostas. NotebookLM tem um limite generoso de arquivos de 500.000 palavras ou 200 MB por fonte, e o Google afirma que não treinará seus grandes modelos de linguagem (LLMs) em seus dados.

A consulta “Alguém falou sobre um pacote R com paletas de cores relacionadas à ciência” puxou o exato post que eu estava pensando – um que eu gostei e depois postei novamente com meus próprios comentários. E não precisei fornecer ao NotebookLLM meus próprios prompts ou instruções para dizer que queria 1) usar apenas esse documento para obter respostas e 2) ver o texto fonte usado para gerar sua resposta. Tudo que eu tive que fazer foi fazer minha pergunta.

bluesky_noteboklm_04a

IDG

Formatei os dados para serem um pouco mais úteis e com menos desperdício, limitando o CriadoAt a datas sem hora, mantendo o URL da postagem como uma coluna separada (em vez de um link clicável com HTML adicionado) e excluindo a coluna de URLs externos. Salvei essa versão mais simplificada como um arquivo .txt e não .csv, já que o NotebookLM não suporta extensões .csv.


my_likes_for_ai 
   mutate(CreatedAt = substr(CreatedAt, 1, 10)) |>
  select(Post, Name, CreatedAt, URL)

rio::export(my_likes_for_ai, "my_likes_for_ai.txt")

Depois de enviar seu arquivo de curtidas para o NotebookLM, você poderá fazer perguntas imediatamente assim que o arquivo for processado.

bluesky_noteboklm_04

IDG

Se você realmente deseja consultar o documento dentro do R em vez de usar um serviço externo, uma opção é o Elmer Assistant, um projeto no GitHub. Deve ser bastante simples modificar suas informações de prompt e fonte de acordo com suas necessidades. No entanto, não tive muita sorte ao executar isso localmente, embora tenha um PC com Windows bastante robusto.

Atualize suas curtidas agendando o script para ser executado automaticamente

Para ser útil, você precisará manter os dados subjacentes das “postagens que gostei” atualizados. Eu executo meu script manualmente em minha máquina local periodicamente quando estou ativo no Bluesky, mas você também pode agendar o script para ser executado automaticamente todos os dias ou uma vez por semana. Aqui estão três opções:

  • Execute um script localmente. Se você não está muito preocupado com o fato de seu script sempre ser executado em uma programação exata, ferramentas como tarefascheduleR para Windows ou cronR para Mac ou Linux podem ajudá-lo a executar seus scripts R automaticamente.
  • Use ações do GitHub. Johannes Gruber, autor do pacote atrrr, descreve como ele usa ações gratuitas do GitHub para executar seu bot R Bloggers Bluesky. Suas instruções podem ser modificadas para outros scripts R.
  • Execute um script em um servidor em nuvem. Ou você pode usar uma instância em uma nuvem pública, como a Digital Ocean, mais um cron job.

Você pode querer uma versão dos dados de curtidas do Bluesky que não inclua todas as postagens que você gostou. Às vezes, você pode clicar em curtir apenas para confirmar que viu uma postagem, ou para encorajar o autor de que as pessoas estão lendo, ou porque achou a postagem divertida, mas não espere encontrá-la novamente.

No entanto, um cuidado: pode ser oneroso marcar manualmente os favoritos em uma planilha se você gosta de muitas postagens e precisa se comprometer em mantê-las atualizadas. Não há nada de errado em pesquisar todo o seu banco de dados de curtidas, em vez de selecionar um subconjunto com “favoritos”.

Dito isto, aqui está uma versão do processo que estou usando. Para a configuração inicial, sugiro usar um arquivo Excel ou .csv.

Passo 1. Importe suas curtidas para uma planilha e adicione colunas

Começarei importando o arquivo my_likes.parquet e adicionando colunas vazias de Favoritos e Notas e, em seguida, salvando-o em um novo arquivo.


my_likes 
  mutate(Notes = as.character(""), .before = 1) |>
  mutate(Bookmark = as.character(""), .after = Bookmark)

rio::export(likes_w_bookmarks, "likes_w_bookmarks.xlsx")

Depois de algumas experiências, optei por ter uma coluna de Favoritos como caracteres, onde posso adicionar apenas “T” ou “F” em uma planilha, e não uma coluna lógica VERDADEIRO ou FALSO. Com caracteres, não preciso me preocupar se os campos booleanos de R serão traduzidos corretamente se eu decidir usar esses dados fora de R. A coluna Notas me permite adicionar texto para explicar por que posso querer encontrar algo novamente.

A seguir vem a parte manual do processo: marcar quais curtidas você deseja manter como favoritos. Abrir isso em uma planilha é conveniente porque você pode clicar e arrastar F ou T para baixo em várias células ao mesmo tempo. Se você já tem muitas curtidas, isso pode ser entediante! Você pode decidir marcá-los todos como “F” por enquanto e começar a marcá-los manualmente daqui para frente, o que pode ser menos oneroso.

Salve o arquivo manualmente em likes_w_bookmarks.xlsx.

Passo 2. Mantenha sua planilha sincronizada com seus likes

Após a configuração inicial, você desejará manter a planilha sincronizada com os dados à medida que são atualizados. Aqui está uma maneira de implementar isso.

Depois de atualizar o novo arquivo de curtidas deduped_my_likes, crie uma pesquisa de verificação de marcador e, em seguida, junte-a ao seu arquivo de curtidas desduplicado.


bookmark_check 
  select(URL, Bookmark, Notes)

my_likes_w_bookmarks 
  relocate(Bookmark, Notes)

Agora você tem um arquivo com os novos dados de curtidas unidos aos dados de favoritos existentes, com as entradas na parte superior ainda sem entradas de favoritos ou notas. Salve isso em seu arquivo de planilha.


rio::export(my_likes_w_bookmarks, "likes_w_bookmarks.xlsx")

Uma alternativa a este processo um tanto manual e intensivo poderia ser o uso de dplyr::filter() em seu quadro de dados de curtidas desduplicados para remover itens que você sabe que não desejará novamente, como postagens mencionando um time esportivo favorito ou postagens em determinadas datas quando você sabe que se concentrou em um tópico que não precisa revisitar.

Próximas etapas

Quer pesquisar suas próprias postagens também? Você pode obtê-los por meio da API Bluesky em um fluxo de trabalho semelhante usando atrrr’s get_skeets_authored_by() função. Depois de começar por esse caminho, você verá que há muito mais que pode fazer. E você provavelmente terá companhia entre os usuários do R.