Você quer monitorar uma hashtag específica do Mastodon sem fazer login ou atualizar a timeline manualmente. A API pública do Mastodon permite buscar publicações por hashtag em formato JSON, e você pode converter esses dados em um feed RSS para seu leitor preferido. Este artigo mostra o processo usando o endpoint da API pública, explica os parâmetros necessários e como gerar uma saída RSS XML válida.
Principais Pontos: RSS de Hashtag do Mastodon via API Pública
- GET /api/v1/timelines/tag/{hashtag}: Endpoint principal que retorna publicações públicas recentes para qualquer hashtag em uma instância do Mastodon.
- Parâmetro de consulta limit=40: Controla o número de publicações retornadas por requisição, sendo 40 o valor máximo permitido.
- Script de conversão XML: Um script simples em Python ou Node.js transforma o array JSON em XML RSS 2.0 válido para seu leitor de feeds.
Como a API de Timeline Pública do Mastodon Funciona para Hashtags
O Mastodon expõe uma API RESTful que não requer autenticação para leitura de dados públicos. O endpoint GET /api/v1/timelines/tag/{hashtag} retorna um array JSON de objetos de status para a hashtag fornecida. Cada objeto de status contém o conteúdo da publicação renderizado como HTML, o nome de exibição e nome de usuário da conta, o timestamp de criação e a URL da publicação. A API respeita as configurações de conteúdo e privacidade da instância, então apenas publicações públicas que a instância federou aparecem nos resultados.
A URL base para qualquer instância do Mastodon é tipicamente https://<instância>.social. Por exemplo, usando a instância principal, a URL completa se torna https://mastodon.social/api/v1/timelines/tag/technology. A hashtag na URL não inclui o símbolo #. A API retorna até 40 publicações por padrão, e você pode definir o parâmetro limit com um valor entre 1 e 40. Para um feed que atualiza com frequência, você pode solicitar o máximo de 40 publicações e depois filtrar ou truncar o feed conforme necessário.
Campos de Dados Necessários para um Feed RSS
Um feed RSS 2.0 requer pelo menos um título de canal, descrição, link e um ou mais elementos de item. Cada item deve ter um título, descrição, link e data de publicação. A partir do objeto de status do Mastodon, você pode mapear estes campos:
- Título do item: Use o nome de exibição da conta seguido por dois pontos, depois os primeiros 80 caracteres do conteúdo sem tags HTML.
- Descrição do item: O conteúdo HTML completo da publicação, opcionalmente sanitizado para remover scripts e tags indesejadas.
- Link do item: O campo
urldo objeto de status, que aponta para a publicação na instância de origem. - Data de publicação do item: O timestamp ISO 8601
created_at, que pode ser convertido para o formato RFC 822 para conformidade com RSS.
Passos para Construir o Feed RSS de Hashtag
- Escolha uma instância do Mastodon e verifique o endpoint da API
Selecione uma instância do Mastodon que federe a hashtag que você deseja monitorar. Abra um navegador e navegue atéhttps://<instância>.social/api/v1/timelines/tag/suahashtag?limit=5. Substituasuahashtagpelo texto exato da hashtag. Se o navegador exibir um array JSON de objetos de status, o endpoint funciona. Se você vir um erro, a instância pode bloquear o acesso público ou a hashtag pode conter caracteres não suportados. - Escreva um script para buscar os dados JSON
Crie um script Python usando a bibliotecarequests. Aqui está um exemplo mínimo:import requests
url = 'https://mastodon.social/api/v1/timelines/tag/technology?limit=40'
response = requests.get(url)
data = response.json()
Para Node.js, use o pacotenode-fetch. O script deve tratar erros HTTP e timeouts adequadamente. - Analise os objetos de status e extraia os itens do feed
Percorra o array JSON. Para cada objeto de status, extraia os camposcontent,url,created_ateaccount.display_name. Remova as tags HTML do conteúdo para criar um título em texto simples. Use uma biblioteca comohtml2textem Python ouheem Node.js para decodificar entidades HTML. - Gere a saída RSS XML
Construa um documento RSS 2.0 com um elemento channel. Defina o título do canal como algo comoMastodon hashtag: technology. O link do canal deve apontar para a página da hashtag na instância, por exemplohttps://mastodon.social/tags/technology. Para cada publicação, crie um elemento<item>. Mapeie os campos conforme descrito na seção anterior. Use a bibliotecaemailem Python ou o módulorssem Node.js para formatar datas no formato RFC 822. - Hospede o feed como um arquivo XML estático ou um endpoint dinâmico
Salve a saída como um arquivo.xmle faça upload para um servidor web. Para um feed que atualiza automaticamente, configure um cron job (Linux) ou Agendador de Tarefas (Windows) para executar o script a cada 15 a 30 minutos. Alternativamente, implante o script como uma função serverless em plataformas como AWS Lambda ou Vercel que retorna o XML RSS quando acessada.
Problemas Comuns ao Construir o Feed
A API retorna um array vazio para uma hashtag popular
Isso geralmente acontece quando a instância que você está consultando não federa com as instâncias onde as publicações se originam. Tente uma instância diferente e maior, como mastodon.social ou mastodon.online. Você também pode verificar a página da hashtag na interface web da instância para confirmar se existem publicações.
O feed RSS não valida nos leitores de feed
Os leitores de feed exigem conformidade estrita com RSS 2.0. Erros comuns incluem a falta do atributo de versão <rss>, uso de formato de data não RFC 822, ou inclusão de HTML bruto sem escape adequado. Use uma biblioteca XML para construir o documento em vez de concatenação de strings. Valide seu feed usando o Serviço de Validação de Feed do W3C.
Limitação de taxa bloqueia requisições frequentes
As instâncias do Mastodon impõem limites de taxa nas chamadas de API. O limite padrão é de 300 requisições a cada 5 minutos por IP. Se você executar o script com mais frequência do que a cada 30 segundos, pode atingir o limite. Adicione um atraso entre as requisições e armazene em cache a saída do feed para reduzir a carga. Para uso de alta frequência, considere usar uma instância dedicada ou contatar o administrador para um limite maior.
Feed RSS Construído Manualmente vs. Uso de Serviço Terceiro
| Item | Script Manual da API | Serviço Terceiro |
|---|---|---|
| Personalização | Controle total sobre campos dos itens, formatação e frequência de atualização | Limitado ao modelo e cronograma de atualização do serviço |
| Custo | Gratuito se você tiver um servidor web ou função serverless | Geralmente gratuito com anúncios ou pago por recursos premium |
| Privacidade | Seu IP e padrões de consulta permanecem em sua própria infraestrutura | O provedor de serviços registra suas consultas de hashtag e uso |
| Tempo de configuração | 30 a 60 minutos para um script básico e implantação | 5 minutos para configurar uma conta e selecionar uma hashtag |
| Confiabilidade | Depende do tempo de atividade da sua hospedagem e do tratamento de erros do script | O provedor de serviços gerencia o tempo de atividade e as mudanças na API |
Com a abordagem de script manual, você pode adicionar recursos avançados, como filtrar publicações por idioma, remover boosts ou incorporar links de mídia na descrição do feed. O serviço terceiro funciona melhor quando você precisa de uma solução rápida e sem código para uma única hashtag.
Agora você pode construir um feed RSS personalizado para qualquer hashtag do Mastodon usando a API pública e um script curto. Teste o feed com um leitor local como Thunderbird ou um serviço baseado na web como Feedly para confirmar que ele é exibido corretamente. Para uma implantação em produção, adicione registro de erros e configure monitoramento para reiniciar o script se ele falhar. Considere estender o feed para incluir avisos de conteúdo lendo o campo spoiler_text do objeto de status, o que fornece uma representação mais completa da publicação.