Slack-Export in Text umwandeln — kostenlos und privat

Machen Sie aus einem Slack-Workspace-Export lesbare Transkripte. Löst Nutzer-IDs zu Namen auf, packt Links und Erwähnungen aus und entfernt Beitritts- und Austrittsmeldungen.

Einen Slack-Workspace-Export verständlich machen

Ein Slack-Export ist keine Datei. Es ist ein Verzeichnisbaum: ein Ordner je Kanal, darin eine JSON-Datei je Tag, dazu eine Handvoll Workspace-Metadaten an der Wurzel. Öffnen Sie irgendeine Tagesdatei und Sie finden ein Array von Nachrichtenobjekten, in denen die Verfasserin ein Code wie U04J8K2L9 ist, der Text von Auszeichnung in spitzen Klammern durchzogen wird und der Zeitstempel eine Unix-Zeit mit Mikrosekunden als Zeichenkette ist.

Diese Seite setzt das wieder zu lesbaren Transkripten zusammen, eines je Kanal, in Datumsreihenfolge, mit echten Namen. Legen Sie die ganze .zip ab — sie wird in diesem Browser-Tab gelesen und nie hochgeladen.

Die Namen stehen in einer anderen Datei

Das ist die eine Sache, die einen Slack-Export ohne Werkzeug unlesbar macht. Nachrichten benennen ihre Verfasserin über eine Nutzer-ID und sonst nichts. Die Zuordnung dieser IDs zu menschlichen Namen liegt in users.json an der Wurzel des Archivs, getrennt von jeder Nachricht, die sie braucht.

users.json wird deshalb zuerst gelesen, vor jeder Kanaldatei, und die entstehende Zuordnung durch den gesamten Durchlauf mitgeführt. Jede Nutzerin bietet mehrere mögliche Namen — echter Name, Anzeigename, Kontokennung — und sie werden in dieser Reihenfolge probiert, denn den echten Namen erkennt eine Leserin, und den Anzeigenamen zeigt Slack, wenn er gesetzt ist. Manche Exporte betten außerdem ein user_profile-Objekt direkt an der Nachricht ein; ist es vorhanden, wird es bevorzugt, weil es den Namen festhält, wie er damals war, statt wie er heute ist.

Bot-Nachrichten haben überhaupt keine Nutzer-ID, sondern eine Bot-Kennung und manchmal einen Benutzernamen. Sie werden gesondert behandelt, damit die Ausgabe einer Integration zugeordnet wird, statt leer zu erscheinen.

Slacks eigene Auszeichnung

Nachrichtentext ist nicht schlicht. Slack wickelt mehrere Arten von Verweisen in spitze Klammern, und unangetastet machen sie ein Transkript schwer lesbar:

  • Nutzer-Erwähnungen erscheinen als <@U04J8K2L9>. Diese werden über dieselbe Nutzerzuordnung aufgelöst und werden zu einem lesbaren @name.
  • Kanalverweise erscheinen als <#C01234ABC|general>, mal mit dem Namen hinter dem senkrechten Strich, mal ohne.
  • Links haben die Form <https://example.com|Anzeigetext>. Der Text bleibt erhalten, die URL folgt in Klammern dahinter, sodass weder Formulierung noch Ziel verlorengeht.
  • Rundruf-Erwähnungen wie <!here> und <!channel> werden zu ihrer schlichten Entsprechung.
  • HTML-Entitäten. Kaufmännische Und, spitze Klammern und Anführungszeichen sind in der Quelle maskiert und werden zurückgewandelt.

Rauschen, das man loswerden sollte

Slack verzeichnet Ereignisse als Nachrichten mit einem Subtyp. Kanalbeitritte und -austritte, Zweck- und Themenänderungen, Archivierungshinweise — alles steht im selben Array wie die eigentliche Unterhaltung. In einem Workspace nennenswerter Größe können diese die echten Nachrichten übertreffen, besonders in allgemeinen Kanälen, in die alle automatisch aufgenommen werden. Sie werden als Systemnachrichten eingestuft und voreingestellt weggelassen.

Dann gibt es noch den Fall einer Nachricht ganz ohne Text: ein Datei-Upload, oder ein Bot-Beitrag, dessen Inhalt vollständig in einem Anhangsblock liegt. Anhänge werden auf Text geprüft, bevor eine Nachricht verworfen wird, sodass eine Integration, die ihre Ausgabe als Anhang postet, ihren Inhalt dennoch beisteuert, statt zu verschwinden.

Die Tage wieder zusammensetzen

Weil jeder Kanal über eine Datei je Tag verteilt ist, muss die Geschichte eines Kanals wieder zusammengeführt werden. Dateien werden in sortierter Reihenfolge verarbeitet, was bei datumsbenannten Dateien chronologisch ist, und Nachrichten werden an ein einziges Transkript je Kanal angehängt. Das Ergebnis ist eine durchgehende Unterhaltung unter einer Überschrift mit dem Kanalnamen statt mehrerer hundert Bruchstücke.

Dateien, die keine Kanaldaten sind — die Kanalliste, Integrationsprotokolle, die verschiedenen Direktnachrichten-Verzeichnisse — werden übersprungen. Alles, was sich nicht parsen lässt, wird übersprungen, statt das Archiv scheitern zu lassen: ein beschädigter Tag kostet Sie nicht den Workspace.

Wofür das verwendet wird

Geschichte sichern, bevor ein kostenloser Workspace seine Nachrichtengrenze erreicht und ältere Unterhaltungen unerreichbar werden. Zu einem anderen Werkzeug wechseln und etwas Lesbares zurücklassen. Eine Compliance- oder Rechtsanfrage mit einem Transkript beantworten statt mit einem Verzeichnis voller JSON. Die Diskussion zu einer Entscheidung wiederfinden, die sonst nirgends festgehalten wurde. Einen Projektkanal einem Modell geben, um zu rekonstruieren, was über sechs Monate geschehen ist.

Den Export bekommen

Eine Workspace-Inhaberin oder -Administratorin kann einen aus den Workspace-Einstellungen erzeugen, unter Daten importieren/exportieren, dann Exportieren. Der Standardexport umfasst öffentliche Kanäle. Private Kanäle und Direktnachrichten erfordern eine andere Exportstufe und, in den meisten Rechtsordnungen, einen dokumentierten Grund.

Lokal gelesen

Ein Workspace-Export ist eine der heikelsten Dateien, die eine Organisation hervorbringt. Er enthält interne Diskussionen, Kundennamen, Zugangsdaten, die Leute in Kanäle eingefügt haben, in die sie nicht gehörten, und die offenen Meinungen aller Beteiligten. Ihn zu einem fremden Konverter hochzuladen ist für die meisten Unternehmen ein meldepflichtiger Vorfall.

Hier wird nichts übertragen. Das Archiv wird von JavaScript in diesem Browser-Tab geöffnet und geparst, und nur die lesbare Ausgabe wird angezeigt. Kein Server erhält die Datei, es gibt also keine Aufbewahrungsfrage zu beantworten und nichts, dessen Löschung man erbitten müsste.

Andere Plattformen werden auf der allgemeinen Chat-Export-Seite verarbeitet.