Notizen aus Textbundles nach Obsidian migrieren

Seit vielen Jahren organisiere ich meine Notizen in Markdown-formatierten Textdateien. Sehr lange habe ich dafür das Programm nvAlt genommen und die Notizen via NextCloud zwischen den Rechnern gesynct. Vor wenigen Jahren habe ich die Bear.app für macOS und iOS entdeckt, fand es eine sehr schöne Alternative und habe all meine Notizen dort rein gekippt. So richtig glücklich hat mich das aber nicht gemacht. Vor ein paar Wochen bin ich auf Notion gestoßen und war erstmal schwer verliebt – zum Glück nur ganz kurz. Bei Youtube habe ich dan Videos a la „Warum ich von Notion zu Obsidian gewechselt bin“, habe mir Obsidian angesehen und nun beschlossen, das Programm intensiver zu nutzen und zu testen.

So stand ich vor der Aufgabe, die Notizen aus dem Bear-Datensilo zu befreien und in Obsidian zu importieren. Bear exportiert die Notizen als reine Textdateien (im Markdown-Format), wenn die Notiz keine Bilder enthält sowie als Textbundle bei Notizen mit Bildern (u.a. Medien-Anhängen). Textbundle ist eine Spezifikation, um Markdown-Dateien zusammen mit den eingebettetetn Medien in einer Ordnerstruktur zu speichern.

In Bear ist der Titel der Notiz in der erste Zeile der Datei enthalten, in Obsidian wird der Dateiname als Titel genommen (oder umgekehrt).

Im Falle der Textdatei braucht an dieser nur die Endung des Dateinamens von .txt in .md geändert werden.
Beim Export als Textbundle mit der Erweiterung *.bearnote muss:

  1. die Datei in *.zip umbenannt werden (weil beim Auspacken ein Ordner mit genau dieser Erweiterung *.bearnote erstellt wird und einen Fehler verursachen würde),
  2. das Zip-Archiv ausgepackt werden,
  3. die Datei text.txt aus dem Ordner <Notizname>.bearnote nach <Notizname>.md in den aktuellen Arbeitsordner verschoben werden,
  4. alle Medien-Anhänge (bei mir nur Bilddateien im JPG- oder PNG-Format) aus den entpackten Textbundle-Ordnern <Notizname>.bearnote/assets/* in einen neu angelegten Ordner __images verschoben werden,
  5. in den Markdown-Dateien die Verlinkungen zu den Mediendateien von [assets/imagename.jpg] in ![[imagename.jpg]] geändert werden,
  6. die erste Zeile mit dem Titel der Notiz aus den Markdown-Dateien emtfernt werden,
  7. die Dateien und der Medienordner __images in den Ordner verschoben werden, in dem die Obsidian-Dateien gespeichert sind.

Dabei helfen eine Handvoll Einzeiler an der Kommandozeile:

# Rename text-only files
for i in *.txt ; do mv "$i" "${i/.txt/.md}" ; done

# Rename textbundles to zip archives
for i in *.bearnote ; do mv "$i" "${i/.bearnote/.zip}" ; done

# unpack the zip archives
for i in *.zip ; do unzip "$i" ; done

# move the markdown file from the textbundle sub-folder 
# to the current folder
for i in *.bearnote
do
  title=$( basename "$i"&nbsp; .bearnote )
  mv "$i/text.txt" "$title.md"
done

# move asset files from texbundle sub-folder to the folder '__images'
mkdir -p __images/
for i in *.bearnote
do
    title=$( basename "$i"&nbsp; .bearnote )
    mv "$i"/assets/* __images
done

# Change the image links in the markdown files to point to 
# files in the folder '__images'
perl -i.bak -pe 's/\[assets\/([^]]+)\]/\![[\1]]/g' *.md

# Remove the first line in markdown files, if they begin with '#'
sed -i.bak -e '1!b' -e '/^#/d' *.md

# Move the markdown files and the folder '__images' to the
# Obsidian documents folder
mv *.md __images /path/to/Obsidian/Notes_folder/

Erledigt!

PS: Beitragsfoto „Geared Up“ von Tim Mossholder auf Unsplash