Martijn Aslander

June 28, 2025

Van een e-mailarchief van 14 gigabyte naar doorzoekbare wijsheid - Hoe ik 96.000 emails converteerde

Van een e-mailarchief van 14 gigabyte naar doorzoekbare wijsheid: Hoe ik 96.000 emails converteerde in een rijk aan elkaar onderling verbonden archief

Over wat er gebeurt als je de rijkdom in zo'n groot archief praktisch bruikbaar maakt


Toen mijn boek 📗 Starten met Obsidian deze week werd afgerond was er in één keer wat meer ruimte voor nieuwe ideeën. Dat liep vrij fors uit de hand.

Het begon met een simpele vraag: met hoeveel verschillende mensen heb ik eigenlijk gemaild sinds ik mijn e-mailadres ben gaan gebruiken? En hoeveel van die mensen heb ik al in mijn Obsidian staan?

Wat zou ik allemaal kunnen vinden in die 96.000 mailtjes? Sowieso dingen over mijn leven die bruikbaar zijn, naast een hele hoop onzin. Maar wat als ik dat eens veranderde in een gestructureerde dataset? Losse Markdown-bestanden met metadata die ik zelf heb bedacht?

Dan zou opruimen, structureren, filteren en vinden vast in een keer veel makkelijker worden.

Tegelijkertijd realiseerde ik me nog wat. In een tijd waarin meer dan ooit gesproken wordt over data soevereiniteit en controle over je eigen data is het helemaal niet een raar idee om je hele mailarchief lokaal te trekken en die vervolgens goed te back-upen. Want als die toch beter doorzoekbaar is dan de service van bijvoorbeeld Google zelf, waarom zou ik die dan online laten staan?

Dat moment realiseerde ik me iets wat waarschijnlijk voor veel van ons geldt: onze inbox is een van de rijkste kennisbronnen die we hebben, maar tegelijkertijd compleet ontoegankelijk. Vol met gesprekken, beslissingen, contacten en inzichten die daar gewoon maar staan zonder dat je er wat aan hebt of er wat mee kunt.

Met de James Webb Telescoop kunnen we maar liefst 13 miljard jaar terugkijken in de tijd. We kunnen verder kijken in het universum dan in onze eigen digitale geschiedenis. Gek toch dat we in onze eigen mailboxen niet heel makkelijk terug kunnen kijken in de tijd en daar chocola van kunnen maken?

Dus ik ging op avontuur in mijn eigen mailarchief met mijn eigen skills. En gebruikte de Terminal app van Apple samen met ChatGPT om Python scripts te schrijven en iteratief stap voor stap deze puzzel op te lossen.

De droom: email als kennisbron

Voor ik je meeneem in de technische details, even waarom dit überhaupt de moeite waard was. Ik wilde mijn emailcorrespondentie kunnen:

- Doorzoeken als onderdeel van mijn dagelijkse notities
- Koppelen aan personen, projecten, locaties, events en optredens in Obsidian
- Gebruiken als historisch spoor van mijn werk en netwerk
- Ontsluiten zonder afhankelijk te zijn van Gmail's interface
- En bovendien wilde ik snel kunnen filteren om alles wat echt irrelevant is makkelijk op te kunnen ruimen (dat vind ik in Gmail zelf teveel gedoe)

Ik wilde dus mijn gehele inbox verplaatsen naar mijn bestaande Obsidian Vault, zodat ik een nog krachtiger geïntegreerde kennisbank heb, met meer dan 20 jaar aan inhoud, kennis en bovenal context. In mijn handen is dat echt goud waard.

Stap 1: De grote export

Eerste stap was logisch: alles eruit halen. Via Google Takeout exporteerde ik mijn complete Gmail als één groot .mbox-bestand. Ik had maar liefst 14 gigabyte aan e-mail inclusief bijlagen. Nadat ik een verzoek indiende bij Google Takeout kon ik binnen een dag op een download link klikken. 14 gigabyte aan digitale herinneringen, netjes verpakt in een technisch formaat dat ongeveer niemand kan lezen.

Die zette ik in een mapje op mijn bureaublad en keek er een dag later naar. Wat te doen? Geen idee.

Stap 2: ChatGPT als scriptschrijver

Ik beschik nauwelijks over programmeerskills, maar had al een paar keer met ChatGPT werkende Python code gemaakt. Ik weet er het fijne niet van, maar zolang ik code kan maken en draaien, kom ik er wel uit.

Dus vroeg ik ChatGPT om me te helpen met een Python-script. Om te beginnen wilde ik het hele bestand met alle e-mails laten analyseren. Ik wilde eerst weten per jaar en maand hoeveel mails ik had, hoeveel ik verzonden had en hoeveel ik ontvangen had en van hoeveel verschillende personen. Het leek me handig, want dan wist ik een beetje waar ik aan begon.

Gezien de omvang vroeg ik aan ChatGPT wat ik het beste kon doen met deze volumes. Ik voerde het gegenereerde overzicht aan ChatGPT die me adviseerde om in batches van twee maanden exports te runnen en daar in de code al rekening mee te houden.

Net als de eerste pannenkoek ging ook de eerste code fout

Ik maakte eerst een script - nou ja, ik vertelde aan ChatGPT wat voor code ik nodig had en wat die moest doen. En toen kreeg ik daar kopieerbare code uit die ik in een tekstbestand plakte en als extensie .py meegaf. Meer was het eigenlijk niet.

De code/het script moet dus in dezelfde map staan als het bestand dat je te lijf wil. En je gebruikt de titel om in het Mac programma Terminal de boel op te starten. In mijn geval was dit het commando dat ik in Terminal moest intikken: `python3 convert_batch.py --batch 1`

Ik maakte eerst een script dat in mijn Obsidian Vault een grote indexfile in JSON formaat maakte met alle namen die al bij mij in Obsidian staan. JSON is gewoon een manier om lijstjes en gegevens op te slaan die computers makkelijk kunnen lezen - een soort Excel voor nerds. Die bewaarde ik keurig in hetzelfde mapje als het bestand met alle e-mails. En toen ik toch bezig was, deed ik dat ook voor bestemmingen, locaties en organisaties.

Hiermee kon ik aan het script dat die enorme database te lijf ging vertellen wat al voorkwam in mijn database en wat nog niet.

Toen realiseerde ik me dat een computer natuurlijk helemaal niet weet wat een naam is en wat niet. Dus na enig zoeken vond ik ergens online een grote dataset met 15.000 Nederlandse persoonsnamen. Superhandig. Ook maar gelijk in het mapje gestopt en aan het script verteld dat je daar rekening mee moet houden.

En toen werd ik een beetje doorgedraaid. Waarom alleen personen en plaatsen? Ik maakte ook lijsten voor hotels (met 🏨), landen (compleet met vlaggen zoals 🇳🇱), en zelfs een onderscheid tussen eilanden (⛵) en gewone plaatsen (🛤️). Elke categorie kreeg zijn eigen emoji-systeem. Ik schreef over dit hele systeem in mijn lange artikel over mijn persoonlijke ontologie.

Slimmer worden: echte namen versus ruis

De oplossing kwam in twee delen. Eerste: ik maakte een handgemaakte lijst van échte personen uit mijn netwerk - `entiteiten_personen.json` - met namen zoals "Genieke Hertoghs" en "Peter Ros". Mensen die ik daadwerkelijk ken.

Tweede: ik vond een database met 9.705 Nederlandse voornamen. Nu kon het script alleen iets als persoon herkennen als:

- Het exact in mijn persoonlijke lijst stond, of
- Het begon met een echte Nederlandse voornaam

Nu herkende het script alleen echte namen.

Een uur of zes klooien voor het juiste recept

Maar zelfs met de juiste naamherkenning was ik er nog lang niet. Het duurde nog een uur of zes heen en weer proberen voordat ik het juiste template had en de instructies precies goed waren. Elke keer een kleine aanpassing, het script runnen, kijken wat er uitkwam, weer terug naar ChatGPT met "dit werkt nog niet helemaal...".

En toen bedacht ik me nog iets: al die bijlagen. Duizenden foto's, PDF's, documenten die jarenlang met emails waren meegestuurd. Die wilde ik niet kwijt, maar ook niet door mijn nette Markdown-bestanden heen. Dus koos ik ervoor om alle bijlagen te strippen en apart op te slaan per jaar en maand. Dan kan ik er later nog doorheen snuffelen om te kijken of er iets tussen zit wat ik wil bewaren. Ik vermoed dat zeker 85% wel weg kan. Dat zou zomaar vele gigabytes kunnen schelen.

Het template: van rauwe email naar gestructureerde kennis

Na al dat heen en weer experimenteren had ik eindelijk een template dat precies deed wat ik wilde. Elke email werd omgezet naar een Markdown-bestand met een rijke structuur:

```markdown
---
Categorie: mailarchief
Verzender: genieke@voorbeeld.nl
Ontvanger: martijn@voorbeeld.nl
Persoon: [[👥 Genieke Hertoghs]]
Organisatie: [[🛗 Subconscious Impact]]
Domein: gmail.com
Datum: 2014-03-22
Onderwerp: Planning workshop volgende week
Project: [[⚗️ Fixing the World of Work]]
---

### 📅 Daglog-link: [[2014-03-22]]

---

### 👥 Alle namen in deze mail
- [[👥 Genieke Hertoghs]]
- [[👥 Peter Ros]]

### 🛤️ Alle locaties
- [[🛤️ Amsterdam]]

---

### 🛗 Organisatie
- [[🛗 Subconscious Impact]]

---

### 📋 Inhoud mail:

Hoi Martijn,

Zullen we de workshop dan maar op donderdag plannen?

Groeten,
Genieke

---

### 📝 Aantekeningen Martijn
---

### 🔗 URL's in deze mail:

https://wondersofwork.nl

---


```

Het mooie hiervan: elke email wordt niet alleen doorzoekbaar, maar ook klikbaar gekoppeld aan personen, locaties, organisaties en vooral aan mijn daglog van die specifieke dag. Plots kan ik vanuit een daglog van maart 2014 direct naar alle emails van die dag, of andersom.

Maar er zat nog meer slimheid in. Het script herkende automatisch URL's in emails, las en interpreteerde (dat heet parsen) emails die uit meerdere onderdelen bestaan - tekst, bijlagen, verschillende formaten, en zorgde ervoor dat bestandsnamen altijd netjes werden voor het filesysteem. En datums in emails? Die werden automatisch omgezet naar klikbare daglog-links.

## Het reply-chain probleem

Maar er was nog een hindernis. Emails bevatten vaak hele kettingen van eerdere berichten. Het script was braaf alle tekst aan het parsen, inclusief gesprekken van maanden geleden die onderaan waren meegequoot.

Elke "nieuwe" email bevatte dus eigenlijk vijf oude emails. Met alle chaos van dien.

De oplossing: een functie die afkapt zodra het tekst tegenkomt zoals "Op ... schreef ...", "Van:" of die vertrouwde ">" tekens die gequote tekst markeren. Zo bleef alleen de échte nieuwe inhoud over.

## De iCloud verrassing

Net toen alles leek te werken, liep ik tegen een typisch macOS-probleem aan. Mijn script kon zijn eigen bestanden niet vinden. Na veel frustratie ontdekte ik dat mijn "Bureaublad" eigenlijk in iCloud stond, niet lokaal op mijn machine.

In plaats van `~/Desktop/Gmail export/` moest ik werken vanuit: `~/Library/Mobile Documents/com~apple~CloudDocs/Desktop/Gmail export/`

Apple's cloud-integratie: zo naadloos dat je niet eens doorhebt wanneer het je leven compliceert.

## Het resultaat: gestructureerde nostalgie

Na alle technische uitdagingen begon het te werken. Batch na batch verschenen er netjes gestructureerde Markdown-bestanden:

```
✉️ 2013-12-16 - 👥 Wim den Braber - Morgen.md
```

Elk bestand bevat metadata, een link naar mijn daglog van die dag, automatisch herkende personen en locaties, en natuurlijk de inhoud zelf. Plus een sectie voor mijn eigen aantekeningen.

Ineens kon ik vanuit een daglog van 2014 klikken op een naam en zien: wie mailde ik wanneer waarover? Welke projecten liepen er? Welke gesprekken vormden de context van beslissingen die ik nu nog steeds mee draag?

## Het informatiekapitaal uit mijn stoffige informatiekluis wordt ineens hyperliquide

Ineens is een fors deel van mijn archief veel bruikbaarder in de dagelijkse praktijk. In plaats van een bak met stoffige data ergens in een online omgeving die niet van mij is en traag werkt, of een enorm bestand wat ik niet kan doorgronden, heb ik in één keer een sterk onderling verbonden kennissysteem waar ik acuut uit kan putten.

Ineens is een fors deel van mijn archief veel bruikbaarder in de dagelijkse praktijk. In plaats van een bak met stoffige data ergens in een online omgeving die niet van mij is en traag werkt, of een enorm bestand wat ik niet kan doorgronden, heb ik in één keer een sterk onderling verbonden kennissysteem waar ik acuut uit kan putten.

Tot slot

Terwijl ik dit verhaal schrijf, vraag ik me af hoe het bij jullie zit. Ik ben vast niet de enige met een heel rijk archief met vele gigabytes aan e-mail. Ik ben heel benieuwd wat jullie eruit zouden kunnen halen of van zouden willen leren en welke ideeën ik over het hoofd zag.

Hoeveel waardevolle kennis zit er opgesloten in jouw inbox? Hoeveel gesprekken, inzichten, contacten en herinneringen wachten erop om weer ontdekt te worden?

Je inbox is waarschijnlijk slimmer dan je denkt. De kunst is alleen om er mee te leren praten en een paar vaardigheden aan te leren die je hiervoor niet had.

Wil je dit ook doen? Ik deel het script graag, of help je op weg. Want volgens mij zijn we allemaal wel toe aan wat meer controle over onze digitale herinneringen.

Mijn boek Starten met Obsidian is te bestellen via deze link en komt in juli 2025 uit. Ik schreef het samen met AI
Zo ook dit lange artikel, omdat instructieteksten nu eenmaal beter zijn mét AI in mijn geval. Zie je dit niet bij een tekst van mijn hand staan, dan heb ik AI alleen gebruikt voor grammatica en interpunctie en schreef ik alles zelf.  Zie je op dat punt tóch fouten, dan had ik haast of geen zin 🤣


Hier het vervolg met praktische inzichten over waar ik tegenaanliep.

About Martijn Aslander

Technologie-filosoof | Auteur | Spreker | Verbinder | Oprichter van vele initiatieven

Momenteel vrolijk druk met Digitale Fitheid 

De leukste dingen die ik momenteel aan het doen ben: https://linktr.ee/martijnaslander en https://linktr.ee/digitalefitheid