No niin.

Evernote as a Zettelkasten

(This is a short English language summary of my post Evernote als Zettelkasten)


I mainly use four notebooks in my Zettelkasten:

  • !_Inbox (Default notebook)
  • 1_Inspiration (more or less for my own thoughts and ideas)
  • 2_Reference (more or less for iritations from other people)
  • 3_ZKN (for notes that have "matured")

Everything is supposed to start in the inbox and then quickly moves on to inspiration or reference. The trick here is to just have an easy decission to make when trying to empty your inbox. And deciding if something is my own idea or somebody elses is easy enough. Matured notes are those that I keep coming back to. I try to move them when I have at least touched them twice.


I have a tag tree that looks something like this:

  • 00-meta
    • 00-meta.01-setup
      • 00-meta.01-setup.03-reading-writing
        • 00-meta.01-setup.03-reading-writing.00-notizen
          • 00-meta.01-setup.03-reading-writing.00-notizen.02-evernote

This hierarchy has some history to it and is used not only in Evernote, but also in Gmail, in the file system, in OmniFocus, etc. In Evernote the tags retain the full "path" as the tag title, because tags have to be unique in Evernote and some sub tags are used many times throughout the hierarchy (for example "00-meta").

I use Keyboard Maestro to make working with tags easier. The management of the tag tree is somewhat involved since I keep a running note of all tags, a changelog of when I added a tag and a list of rules and practices on how to use the hierarchy.


I have a template which is the base of all notes/Zettel:



(Source: )

  • back: * s
  • forward: * s
  • cross references:
    • s

This layout helps to structure notes and includes enough "nudges" to do the right thing, that is to link Zettels together. I also link notes inline, but it helps to have back/forward and cross reference available. It's all about making it easy to build up a network of notes.

Principles of working with a Zettelkasten

New search strategy

Searching always needs to start in the Zettelkasten. Even if I'm certain, that I won't find what I'm looking for, I need to find a place to connect what I've researched to. The new search strategy for a new problem looks as follows:

  • Have I written a Zettel about this?
  • If yes:
    • write follow up notes that further the "reach" of the Zettelkasten
  • If no:
    • e. g. use the Internet and write a Zettel about it

Atomic Notes

A note should be as atomic as possible, which means it should only hold one thought or just do one thing. Here is an explanation:

The underlying principle I’d call the principle of atomicity: put things which belong together in a Zettel, but try to separate concerns from one another.[2] For example, I might collect a list of assumptions in one Zettel which serves as an overview. like hard determinism. A related argument and its conclusion will be kept in another Zettel. Moral responsibility under hard determinism is a good example. I can re-use the arguments without buying into the assumptions because the arguments are of sufficiently general form. Atomicity fosters re-use which in turn multiplies the amount of connections in the network of Zettels.

And here the Footnote 2:

If you’re a programmer, separation of concerns should ring a familiar bell. I deal with notes in a fashion similar to complex code. Instead of writing classes, I create new note files. Accordingly, patterns emerge: there are argumentative notes; there are notes with term definitions; there are sparks and ideas. Each Zettel pattern fulfils a different purpose.

In my words: The guideline for writing notes should be: reusability when looking at the output and restriction of "functionality" (outline, example, definition, …) when looking at the input. Since atomic notes can be linked with each other, this ensures a high potential of interconnectivity.

No perfection nowhere

Completeness, uniformity, homogenity, closure, etc. There is no need to make Zettels perfect on the first try. Quite the oposite: Gradual practice of improving notes where it is neccesary, right now, ensures much better that the practice of notes taking is a long lasting one. A good way of putting this, from here:

It can be tempting to spend a lot of time to create highly structured, perfectionistic notes. The problem is, you often have no idea which sources will end up being valuable until much later. Instead of investing a lot of effort upfront, organize your notes opportunistically, in small bits over time

Your rule of thumb should be: add value to a note every time you touch it. This could include adding an informative title the first time you come across a note, highlighting the most important points the next time you see it, and adding a link to a related note sometime later. By spreading out the heavy work of organizing your notes over time, you not only save time and effort, but ensure that the most frequently used (and thus most valuable) notes surface organically, like a ski slope where the most popular routes naturally end up with deeper grooves.

Evernote Tag Autocomplete Macro Version 2

EDIT (08.10.2020) - Please note: A Note As Regards To My Evernote Macros And The New Evernote Client Version 10

(This is a follow up post to Keyboard Maestro Tag Autocomplete Makro für Evernote unter macOS.)

This macro enhances the tagging functionality of Evernote's native macOS client by providing a way to search for tags in an "unanchored" way, that is, if I have a tag "gotomuseum", I can find this tag when searching for "museum", whereas the native tag autocomplete would only find the tag, if I typed at least "gotom". This is helpful, when having lots of tags in a deeply nested tag hierarchy.

How it works

This macro actually consists of two macros:

  1. A collector macro, that reads and parses Evernote's tags
  2. A selector macro, that displays a search box and pastes the selected tag

The collector macro could be bound to a hot key trigger or could be run in a time controlled manner (e. g. every hour). I have bound it to a hot key, so it's easy to invoke when I rcently added a tag, but it's not yet showing up in the selector.

So what you would do to use this:

  1. You just create tags as usual
  2. You invoke the collector macro
  3. When tagging a note you invoke the selector macro, search for the tag you want and the tag is inserted where your cursor is


Just download the file and drop it onto the Keyboard Maestro App Icon in the dock, or double click the file.

Evernote Autocomplete Macros - v2 (application/octet-stream, 12 KB)

Keyboard Maestro Tag Autocomplete Makro für Evernote unter macOS

Das Problem

Ich benutze Evernote als meinen Zettelkasten, wie ich ja neulich beschrieben habe. Teil des Zettelkastens - aber nicht nur des Zettelkastens - ist ein baumartig aufgebautes Stichwortverzeichnis, meine "hierarchische Projektliste":

Eine große baumartige Struktur, in der jedes Ding (wenigstens) einen Platz hat. Beispiel:


Da Tags sich in Evernote in beliebiger Tiefe verzweigen lassen, ist jedes Teilsegment (d. h. 00-meta und 01-setup) jeweils ein eigenes Stichwort, welches hierarchisch ineinander verschachtelt ist. Da aber aus technischen Gründen Evernote nur das Tag selbst, nicht aber die sie enthaltenden Eltern- und Großelterntags anzeigt, wird die gesamte Hierachie bis zum jetzigen Stichwort immer mitgeschrieben, d. h. obiges Beispiel sieht praktisch so aus:

  • 00-meta
  • 00-meta.01-setup
  • 00-meta.01-setup.03-reading-writing
  • 00-meta.01-setup.03-reading-writing.00-notizen
  • 00-meta.01-setup.03-reading-writing.00-notizen.02-evernote

Derzeit unterstützt der native Evernote-Client keine ausreichend flexible Tag-Autovervollständigung. So würde ich, wenn ich in der Stichwortleiste nach evernote suchen würde, das entsprechende Tag nicht finden.


Bevor das passende Tag für Evernote überhaupt als auswählbares Stichwort im Tag-Feld auftaucht, müsste ich wenigstens 00-meta.01-setup.03-reading-writing hinschreiben.

Logischerweise kann sich das niemand merken. Würde ich aber die Baumstruktur meines Tagsystems auflösen, verlöre ich viele Vorzüge eines solchen Systems. Also braucht es eine andere Lösung.

Für lange Zeit habe ich entsprechende Tags lediglich von einer Tag-Übersicht herauskopiert. Aber das war umständlich und führte tendenziell dazu, dass man Tags weniger häufig benutzt hat, als man es vielleicht gewollt hätte.

Die Lösung

Ein Hoch auf Keyboard Maestro! Keyboard Maestro ist ein Automatisierungstool für den Mac, mit dem man in vielen Fällen Apps um Funktionalitäten oder Integrationen erweitern kann, die einem fehlen. Wir machen es uns hier zu nutze, um eine funktionierende Stichwort-Autovervollständigung zu bauen.

Schritt 1

Wie gesagt, habe ich in Evernote eine Notiz mit allen Tags die auf den Namen Tagliste hört.

Diese Liste müssen wir nun nur noch auslesen bzw. parsen. Um das zu ermöglichen machen wir uns einen weiteren Vorteil der Mac-Plattform zu Nutze: Die Applescript-Unterstützung des Evernote-Clients.

tell application "Evernote"      
 set mysearch to find notes "intitle:Tagliste"      
 set mynote to item 1 of mysearch      
 return HTML content of mynote  
 end tell

Dieses Applescript macht folgendes:

  1. Es sucht in Evernote nach Notizen die im Titel Tagliste enthalten...
  2. ...und wählt aus den Suchergebnisse das erste aus...
  3. ...und anschließend gibt es den Inhalt der entsprechenden Notiz als HTML aus

Wir halten HTML was so aussieht:

<div id="en-note"><ul><li><div>xx-archiv</div></li>...

Schritt 2

Diesen langen HTML-Wurm müssen wir nun so aufbereiten, dass er uns für eine Autovervollständigung dienen kann. Auch wenn man für HTML eigentlich keine regulären Ausdrücke verwenden sollte, so ist das von uns vorgefundene HTML einfach genug um es dennoch zu tun.

(?<=(<li><div>))([a-zA-Z0-9().,\-:;@#$%^&*\[\]"'+–/\/®°⁰!?{}|`~äöüÄÖÜß_ \n])+(?=(</div></li>))

Diese RegExp tut folgendes (Visualisierung von hier):

Kurz: Es wird alles gefunden was zwischen

Tags ist.

Schritt 3

Schließlich braucht es ein Makro, welches bei Bedarf die obigen Schritte durchführt und das Ergebnis vorhält.

Immer wenn ich die Tastenkombination ⌃⌥⇧⌘# drücke passiert folgendes:

  1. die Variable TagsFound wird zurückgesetzt um Duplikate zu vermeiden
  2. das Applescript aus Schritt 1 wird ausgeführt und liefert uns HTML, welches wir in der Variable Tags speichern
  3. Hier iterieren wir über jeden gefundenen Match unseres Regulären Ausdrucks (Variable TagsMatch) aus Schritt 2 und führen für jedes Stichwort die folgenden Aktionen durch
    1. wir speichern das Gefundene in der Variable TagsCaptured
    2. wir fügen den Inhalt von TagsCaptured und einen Zeilenumbruch am Ende an die Variable TagsFound an
  4. Wir löschen Tags, TagsMatch, TagsCaptured, da sie nicht mehr gebraucht werden.
  5. Schließlich geben wir eine Notification aus, dass die Tags aus Evernote gefunden und aktualisiert worden sind.

Das Ergebnis ist eine Variable die in jeder Zeile ein Tag enthält:


Hier das Makro zum Download: Evernote - ZKN - Tag Collection [ (application/octet-stream, 6 KB) ]{.small}

Schritt 4

Nun müssen wir die so befüllte Variable nur noch von KeyboardMaestro in geeigneter Form anzeigen lassen. Das geht so:

Immer wenn ich die Tastenkombination ⌥⇧⌘# drücke (also ohne Control) passiert folgendes:

  1. Es wird ein Suchschlitz eingeblendet werden, dessen Inhalt sich aus der Variable TagsFound speist und die Auswahl (d. h. den Eintrag also in unserem Falle das Tag) in die Variable TagTmp speichert.
  2. Wir fügen den Inhalt der Variable TagTmp an der Position ein, wo wir das Makro ausgeführt hatten.
  3. Wir löschen die Zwischenablage 0, d. h. unser gerade eben eingefügtes Stichwort, um nicht unsere eigentliche Zwischenablage - vielleicht habe ich ja z. B. einen Textschnipsel für einen neuen, zu taggenden Zettel in der Zwischenablage - zu "löschen".

Hier das Makro zum Download: Evernote - ZKN - Tag Selection [ (application/octet-stream, 2 KB) ]{.small}


Das Ergebnis sieht dann so aus:

Anzumerken bleibt, dass man das Tag Collection Makro nur ausführen muss, wenn sich was an den Tags geändert hat und nicht vor jeder Stichwortsuche.

Links und Inspiration

Sie sind nicht angemeldet