Convertisseur d'export de conversation en texte — WhatsApp, ChatGPT, Slack

Convertissez un export WhatsApp, ChatGPT, Claude, Slack ou Discord en transcription lisible. Le format est détecté automatiquement et rien ne quitte votre navigateur.

Exports de conversation : cinq plateformes, cinq idées incompatibles de la même chose

Toutes les messageries vous laissent exporter vos données, et chacune a décidé indépendamment comment une conversation devait être représentée sur le disque. Le contenu sous-jacent est identique — qui a dit quoi, et quand — mais les formes n'ont rien en commun. L'une est un journal texte dont le format d'horodatage dépend de la région du téléphone. Une autre est un arbre de nœuds indexés par identifiant où la conversation n'est qu'un chemin dans le graphe. Une autre encore est un dossier de fichiers rangés par canal et par date, les noms étant stockés entièrement ailleurs.

Cette page lit toutes ces formes et produit une transcription lisible. La plateforme est déduite de la structure du fichier plutôt que de son nom, vous pouvez donc déposer un export sans avoir à préciser ce que vous avez. Tout tourne dans cet onglet.

Comment fonctionne la détection

Les noms de fichiers ne servent à rien ici. La moitié de ces plateformes nomment leur export conversations.json, et de toute façon les fichiers sont renommés au passage par la messagerie et le stockage en ligne. La détection lit donc la structure : un tableau chat_messages à côté d'un champ sender, un objet mapping associé à create_time, un champ ts contenant un horodatage Unix sous forme de chaîne. Chacun est une empreinte que produit une seule plateforme.

Une subtilité d'ordre compte. Un export WhatsApp d'iPhone commence par [12/03/2024, 14:23:01] — un crochet ouvrant, exactement comme un tableau JSON. Tester le JSON en premier livrerait chaque journal de conversation d'iPhone à l'analyseur JSON, qui échouerait dessus. Le motif de ligne WhatsApp est donc vérifié avant le test du crochet, et non après.

Les cinq formes

  • WhatsApp écrit un journal en texte simple, un message par ligne, avec un format d'horodatage qui varie selon la plateforme et la langue du téléphone. Les messages sur plusieurs lignes se poursuivent sur des lignes nues sans marqueur : un analyseur doit donc traiter toute ligne sans horodatage comme la suite de celle du dessus.
  • ChatGPT range chaque conversation sous forme de carte de nœuds. Chaque réponse régénérée et chaque question modifiée est conservée comme une branche : reconstituer ce que vous avez réellement vu suppose de partir de la racine et de suivre le dernier enfant à chaque étape.
  • Claude utilise un tableau plat, le plus simple des cinq. La seule aspérité est que les exports récents rangent le texte du message dans une liste de blocs typés, là où les anciens utilisent une simple chaîne : les deux sont lus.
  • Slack est une arborescence : un dossier par canal, un fichier JSON par jour, plus un users.json séparé qui contient la table des identités. Les messages désignent les personnes par U0123ABCD : sans ce fichier, chaque message est attribué à un code.
  • Les exports Discord, tels que les produit l'outillage communautaire courant, sont un objet unique avec les métadonnées du canal et un tableau plat de messages. Simple, et le plus proche de ce qu'on concevrait en partant de zéro.

Ce qui est retiré

Un export brut contient beaucoup de choses que personne ne veut lire. Les réglages par défaut les écartent, et des commutateurs les ramènent :

Les messages système. L'avis de chiffrement en tête de chaque export WhatsApp, les arrivées et départs de groupe, les changements de sujet, les « ce message a été supprimé », le sous-type channel_join de Slack. Dans un groupe où les gens vont et viennent, ils peuvent être plus nombreux que les vrais messages.

Les repères de pièces jointes. <Media omitted> apparaît partout où se trouvait une image ou un message vocal, et dans une conversation riche en photos c'est l'essentiel du fichier. Cela vous dit que quelque chose s'est produit, et rien sur ce que c'était.

La tuyauterie cachée. Les exports ChatGPT contiennent l'invite système et le trafic des outils, marqués comme masqués dans la conversation. Ils ne vous ont jamais été montrés et sont écartés.

Les archives aussi sont prises en charge

Slack et ChatGPT livrent des fichiers .zip, pas du JSON en vrac : l'archive peut donc être déposée telle quelle. Le lecteur cherche d'abord conversations.json, car sa présence signifie qu'il constitue l'export entier. À défaut, il traite l'archive comme un espace de travail Slack : il charge users.json avant tout le reste pour que les identités se résolvent, puis parcourt les fichiers quotidiens et les rassemble en une transcription par canal, dans l'ordre des dates. Les fichiers qu'il ne reconnaît pas sont ignorés plutôt que de faire échouer toute l'archive.

Pourquoi tout cela tourne dans votre navigateur

C'est l'entrée de ce site pour laquelle cela compte le plus. Un export de conversation n'est pas un document écrit pour un public : ce sont des années de conversations privées, et il contient tout ce qui s'y est dit. Des adresses. De la santé. De l'argent. Des choses sur d'autres personnes qui n'ont jamais donné leur accord à quoi que ce soit.

Envoyer cela à un service de conversion, c'est faire confiance à la politique de conservation d'un inconnu, à ses contrôles d'accès, à ses sauvegardes et à son avenir. L'analyse se fait ici en JavaScript, dans cet onglet. Votre fichier est lu par le navigateur, converti en mémoire et affiché. Il n'y a pas d'étape d'envoi, donc rien à conserver et rien à supprimer. Le construire ainsi signifie aussi que son fonctionnement ne coûte rien et qu'il marche hors ligne une fois la page chargée.

Les pages par plateforme

Si vous savez ce que vous avez, les pages dédiées portent les instructions d'export propres à chaque plateforme : WhatsApp, ChatGPT, Claude et Slack. Elles utilisent le même analyseur : le résultat est identique.