Mastodon-Follower als Textdatei abspeichern

13.09.2026
Clock Icon 2 min.
coding fediverse

In diesem kurzen Beitrag geht es darum, wie man die Liste der Follower bei Mastodon als Textdatei abspeichert. So kann man zum Beispiel untersuchen, was sich nach einiger Zeit verändert hat. Ich habe einmal festgestellt, dass mein Account schlagartig Follower verloren hat. Durch einen Vergleich zweier Listen habe ich dann entdeckt, dass alle verschwundenen Accounts von einer Instanz waren. Vermutlich wurde sie gebannt oder abgeschaltet, keine Ahnung..

API-Key für Mastodon

Zuerst benötigt man einen API-Key, mit dem sich das Skript bei Mastodon authentifizieren kann. Dafür öffnet man Einstellungen und dann Entwicklung auf der Mastodon-Instanz, wo man beheimatet ist. Dort kann man eine neuen Key anlegen: Button "Neue Anwendung".

Anwendungsname: Irgendwas, ich habe für das Skript den Namen "Python" gewählt. Weiterleitungs-URI:

TXT
urn:ietf:wg:oauth:2.0:oob

Für dieses Skript benötigt man folgende Rechte:

  • read:accounts
  • read:follows
  • profile
  • read:statuses

Wenn man auf Speichern klickt, bekommt man einen API-Key, den man nicht verlieren sollte. Man kann ihn nicht wieder anzeigen lassen und müsste bei Verlust erneut eine App anlegen.

Skript zum Abrufen der Followerliste

Folgendes Python-Skript lädt die Liste der Follower und speichert sie als Textdatei. Vor dem Aufrufen muss man drei Variablen ausfüllen:

  • INSTANCE_URL: Die Instanz, z.B. https://norden.social
  • ACCOUNT_NAME: Der Accountname, wie er im Profil steht, nur ohne das @.
  • ACCESS_TOKEN: Der API-Key wie oben beschrieben
PYTHON
 1import datetime
 2import requests
 3
 4INSTANCE_URL = "https://dein_instanz.social"
 5ACCOUNT_NAME = "accountname"
 6ACCESS_TOKEN = ""
 7
 8def get_all_followers(instance_url, account_id, token):
 9    url = f"{instance_url}/api/v1/accounts/{account_id}/followers"
10    headers = {"Authorization": f"Bearer {token}"}
11    all_usernames = []
12    
13    print("Starte Abfrage der Follower...")
14
15    while url:
16        response = requests.get(url, headers=headers)
17        
18        if response.status_code != 200:
19            print(f"Fehler beim Abruf: {response.status_code}")
20            break
21        
22        data = response.json()
23        for follower in data:
24            all_usernames.append(follower['acct'])
25        
26        print(f"{len(all_usernames)} Follower bisher gefunden...")
27
28        url = response.links.get('next', {}).get('url')
29
30    return all_usernames
31
32def get_account_id(instance_url, username, token):
33    url = f"{instance_url}/api/v1/accounts/lookup?acct={username}"
34    headers = {"Authorization": f"Bearer {token}"}
35    response = requests.get(url, headers=headers)
36    if response.status_code != 200:
37        raise Exception(f"Fehler beim Abruf der Account-ID: {response.status_code}")
38    data = response.json()
39    return data['id']
40
41now = datetime.datetime.now()
42output_file = f"followers_{now.strftime('%Y%m%d_%H%M%S')}.txt"
43try:
44    account_id = get_account_id(INSTANCE_URL, ACCOUNT_NAME, ACCESS_TOKEN)
45
46    followers = get_all_followers(INSTANCE_URL, account_id, ACCESS_TOKEN)
47
48    # In Datei schreiben
49    with open(output_file, "w", encoding="utf-8") as f:
50        for name in followers:
51            f.write(name + "\n")
52    
53    print("---")
54    print(f"Fertig! {len(followers)} Benutzernamen wurden in '{output_file}' gespeichert.")
55
56except Exception as e:
57    print(f"Ein unerwarteter Fehler ist aufgetreten: {e}")

Viel Spaß damit 👍🏻