As listas do Mastodon permitem organizar contas seguidas em feeds temáticos. A exportação padrão da interface web inclui apenas nomes de listas e IDs dos membros, sem metadados como datas de criação, descrições ou detalhes das contas. Essa limitação dificulta arquivar ou migrar listas com contexto completo. Este artigo explica como usar a API REST do Mastodon para exportar listas com dados adicionais além das configurações padrão.
Principais Conclusões: Exportar Listas do Mastodon com Metadados Completos via API
- Endpoint GET /api/v1/lists: Recupera todos os objetos de lista, incluindo id, title e replies_policy.
- Endpoint GET /api/v1/lists/:id/accounts: Retorna IDs e nomes de usuário dos membros de uma lista específica.
- Token OAuth 2.0 Bearer com escopo read:lists: Necessário para autenticar requisições à API para dados de listas.
Entendendo os Endpoints da API de Listas do Mastodon e as Limitações Padrão
A API do Mastodon fornece dois endpoints principais para dados de listas. O endpoint GET /api/v1/lists retorna um array JSON de objetos de lista. Cada objeto contém o id, title e replies_policy da lista. O endpoint GET /api/v1/lists/:id/accounts retorna as contas que pertencem a uma lista específica. Cada objeto de conta inclui id, username, acct, display_name, url, avatar e outros campos do perfil.
O recurso de exportação padrão na interface web do Mastodon gera apenas um arquivo CSV com nomes de listas e IDs das contas membros. Ele não inclui o replies_policy da lista, nem display_name ou URLs dos membros. Essa exportação limitada perde contexto útil ao migrar entre instâncias ou auditar a composição das listas.
Campos da Resposta da API Disponíveis Além da Exportação Padrão
Ao chamar o endpoint de contas da lista, cada objeto de conta contém estes campos que a exportação padrão omite:
- display_name: O nome de exibição definido pelo usuário da conta.
- acct: O handle completo da conta, incluindo o domínio da instância.
- url: O link direto para o perfil da conta na instância.
- avatar: A URL da imagem do avatar da conta.
- note: A biografia ou descrição da conta.
- created_at: O timestamp de criação da conta no Mastodon.
O objeto da lista em si inclui o campo replies_policy, que controla se as respostas aos membros da lista aparecem no feed da lista. Esse campo não é exportado pelo CSV padrão.
Pré-requisitos para Exportação de Listas via API
Antes de exportar listas pela API, você precisa de três coisas:
- Criar um token de aplicação no Mastodon
Vá em Preferências > Desenvolvimento > Nova Aplicação. Defina o nome da aplicação. Em Escopos, marque a opçãoread:lists. Você também pode marcarread:accountsse quiser detalhes completos das contas. Clique em Enviar. Copie a string do token do campo Seu token de acesso. - Escolher uma ferramenta cliente de API
Você pode usar qualquer cliente HTTP que suporte autenticação Bearer token. Ferramentas comuns incluem curl (linha de comando), Postman (GUI) ou um script personalizado em Python usando a biblioteca requests. Este guia usa comandos curl para clareza. - Saber a URL base da sua instância Mastodon
A URL base é o endereço do seu servidor Mastodon, por exemplohttps://mastodon.socialouhttps://suainstancia.com. Todas as requisições à API começam com essa URL seguida de/api/v1/.
Passos para Exportar Todas as Listas com Detalhes Completos dos Membros
Os passos a seguir recuperam todas as listas da sua conta e exportam cada lista com todos os campos disponíveis das contas membros em um arquivo JSON estruturado.
- Obter a lista de todas as listas
Execute este comando curl, substituindoSEU_TOKENpelo seu token de acesso eSUA_INSTANCIApela URL da sua instância:curl -H "Authorization: Bearer SEU_TOKEN" https://SUA_INSTANCIA/api/v1/lists
A resposta é um array JSON. Cada objeto tem um campoid. Anote o id de cada lista que deseja exportar. - Exportar membros de uma única lista
Para cada id de lista, execute este comando, substituindoID_DA_LISTApelo id real:curl -H "Authorization: Bearer SEU_TOKEN" https://SUA_INSTANCIA/api/v1/lists/ID_DA_LISTA/accounts
A resposta é um array JSON de objetos de conta com todos os campos disponíveis. - Salvar a saída em um arquivo
Adicione> lista_ID.jsona cada comando curl para salvar a saída. Por exemplo:curl -H "Authorization: Bearer SEU_TOKEN" https://SUA_INSTANCIA/api/v1/lists/12345/accounts > lista_12345.json - Combinar todas as exportações de listas em um único arquivo
Use um script para iterar sobre todos os ids de lista e mesclar os resultados. O script Python a seguir faz isso em uma única passada:import requests import json base_url = "https://SUA_INSTANCIA" token = "SEU_TOKEN" headers = {"Authorization": f"Bearer {token}"} # Obter todas as listas response = requests.get(f"{base_url}/api/v1/lists", headers=headers) lists = response.json() all_data = [] for lst in lists: list_id = lst["id"] resp = requests.get(f"{base_url}/api/v1/lists/{list_id}/accounts", headers=headers) accounts = resp.json() all_data.append({ "list_id": list_id, "list_title": lst["title"], "replies_policy": lst.get("replies_policy"), "members": accounts }) with open("exportacao_todas_listas.json", "w") as f: json.dump(all_data, f, indent=2) - Verificar o arquivo exportado
Abraexportacao_todas_listas.jsonem um editor de texto ou visualizador JSON. Cada entrada de lista inclui o título da lista, replies_policy e um array de objetos de conta membro com dados completos do perfil, incluindo display_name, acct, url e created_at.
Problemas Comuns na Exportação e Como Resolvê-los
API retorna erro 401 Não Autorizado
Esse erro significa que seu token está ausente ou inválido. Verifique se você copiou o token exatamente, sem espaços extras. Certifique-se de que o token tenha o escopo read:lists. Se você criou o token antes de adicionar o escopo, exclua-o e crie um novo.
API retorna erro 404 Não Encontrado para um id de lista
Esse erro ocorre quando o id da lista não existe na sua conta ou a lista pertence a outro usuário. Apenas ids de lista retornados pelo endpoint /api/v1/lists são válidos para sua conta. Não adivinhe nem reutilize ids de lista de outra instância.
Arquivo de exportação está vazio ou contém um array vazio
Um array vazio [] para uma lista significa que a lista não tem membros. Isso é normal para listas recém-criadas. Se você esperava membros, verifique se adicionou contas à lista através da interface web do Mastodon antes de exportar.
Limitação de taxa causa exportações incompletas
As instâncias do Mastodon impõem limites de taxa nas chamadas de API. Se você tiver muitas listas, o script pode atingir o limite e retornar erros HTTP 429. Para evitar isso, adicione um atraso entre as requisições. No script Python, insira time.sleep(1) dentro do loop após cada requisição de contas.
Exportação Padrão vs Exportação via API: Comparação de Recursos
| Item | Exportação CSV Padrão | Exportação JSON via API |
|---|---|---|
| Título da lista | Sim | Sim |
| replies_policy da lista | Não | Sim |
| ID da conta membro | Sim | Sim |
| display_name do membro | Não | Sim |
| Handle acct do membro | Não | Sim |
| URL do perfil do membro | Não | Sim |
| URL do avatar do membro | Não | Sim |
| created_at do membro | Não | Sim |
| Formato de exportação | CSV | JSON |
| Autenticação necessária | Sessão web | Token OAuth Bearer |
Agora você pode exportar listas do Mastodon com metadados completos usando a API. A saída JSON preserva as políticas das listas e perfis completos das contas. Em seguida, tente usar o campo replies_policy para filtrar feeds de lista com mais precisão. Para automação avançada, agende o script Python com um cron job para manter suas exportações atualizadas.