Nextcloud-Notizen automatisiert in DokuWiki veröffentlichen
Markdown zu DokuWiki: Automatische Konvertierung aus Nextcloud-Notizen
Ich habe ein Bash-Skript entwickelt, das per Cronjob Markdown-Dateien aus einem bestimmten Verzeichnis meiner Nextcloud in das DokuWiki-Format konvertiert und in das entsprechende Verzeichnis für meine DokuWiki kopiert.
Meine Notizen in der Nextcloud
Als Basis für meine DokuWiki habe ich meine in Markdown verfassten Notizen verwendet, welche in meiner Nextcloud gespeichert sind.
Diese Notizen waren das Ergebnis meiner kontinuierlichen Bemühungen, mein Wissen zu strukturieren und zugänglich zu machen. Durch die Nutzung von Obsidian als Editor und der Synchronisation mit der Nextcloud hatte ich eine effiziente Methode gefunden, meine Gedanken und Erkenntnisse festzuhalten.
Hierzu gibt es auch einen Artikel, der beschreibt, wie ich meine Notizen in Obsidian mit KI-Unterstützung erstelle.
Das Bash-Skript zur Konvertierung
Ich habe ein Bash-Skript geschrieben, um die Konvertierung meiner Markdown-Notizen in das DokuWiki-Format zu automatisieren. Das Skript durchläuft alle .md
-Dateien im angegebenen Quellverzeichnis meiner Nextcloud, konvertiert sie mittels Pandoc in das DokuWiki-Format und speichert sie im Zielverzeichnis meiner DokuWiki-Installation. Dabei habe ich besonders auf die korrekte Abbildung der Verzeichnisstruktur und die Behandlung von Sonderzeichen geachtet.
Hier ist das vollständige Skript:
#!/bin/bash
# Basisverzeichnis definieren
INPUT_DIR="/mnt/NextcloudData/michael/files/Notizen/Wiki/" # Quellverzeichnis mit .md-Dateien
OUTPUT_DIR="/var/docker/web/dokuwiki/config/dokuwiki/data/pages/michael" # Zielverzeichnis für DokuWiki-Dateien
# Sicherstellen, dass das Zielverzeichnis existiert und leer ist
mkdir -p "$OUTPUT_DIR"
rm -rf "$OUTPUT_DIR/*"
find "$INPUT_DIR" -type f -name "*.md" -print0 | while IFS= read -r -d '' file; do
# Relative Pfad ermitteln
outputfile="$(echo ${file#$INPUT_DIR} | sed -E -e 's/ /_/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ß/ss/g;s/.*/\L&/;s/\.md$/\.txt/')"
# Pfad für die Zieldatei zusammenstellen (Sicherstellen, dass keine doppelten Slashes entstehen)
mkdir -p "$(dirname "$OUTPUT_DIR/$outputfile")"
# Datei konvertieren
echo "Konvertiere: $file -> $OUTPUT_DIR/$outputfile"
pandoc "$file" -f markdown -t dokuwiki -o "$OUTPUT_DIR/$outputfile"
done
docker restart dokuwiki
Wichtige Schritte im Skript
- Definition der Verzeichnisse: Im Skript habe ich die Variablen
INPUT_DIR
undOUTPUT_DIR
definiert.INPUT_DIR
verweist auf das Verzeichnis in meiner Nextcloud, in dem die Markdown-Notizen gespeichert sind.OUTPUT_DIR
gibt das Verzeichnis an, in dem die konvertierten Dateien für DokuWiki abgelegt werden sollen. - Sicherstellung eines leeren Zielverzeichnisses: Zu Beginn des Skripts habe ich sichergestellt, dass das Zielverzeichnis existiert und leer ist. Dies habe ich mit den Befehlen
mkdir -p "$OUTPUT_DIR"
undrm -rf "$OUTPUT_DIR/*"
erreicht, falls dort noch alte Dateien liegen sollten. - Durchlaufen der Markdown-Dateien: Mit dem Befehl
find "$INPUT_DIR" -type f -name "*.md" -print0
habe ich alle Markdown-Dateien im Quellverzeichnis gesucht und verarbeitet. - Konvertierung und Sonderzeichenbehandlung: Ich habe den relativen Pfad jeder gefundenen Datei ermittelt und Sonderzeichen sowie Leerzeichen durch Unterstriche ersetzt. Außerdem habe ich die Dateiendung von
.md
in.txt
geändert, um die Kompatibilität mit DokuWiki zu gewährleisten. Dies habe ich mitsed
und regulären Ausdrücken erreicht. - Erstellung der Zielverzeichnisstruktur: Mit
mkdir -p "$(dirname "$OUTPUT_DIR/$outputfile")"
habe ich sichergestellt, dass die notwendige Verzeichnisstruktur im Zielverzeichnis erstellt wird, falls sie noch nicht vorhanden war. - Konvertierung mit Pandoc: Der Befehl
pandoc "$file" -f markdown -t dokuwiki -o "$OUTPUT_DIR/$outputfile"
konvertiert die Markdown-Dateien in das DokuWiki-Format. - Neustart des DokuWiki-Containers: Abschließend habe ich den DokuWiki-Docker-Container neu gestartet, um die Änderungen zu übernehmen.
Danach befinden sich die Notizen im korrekten Format im Verzeichnis meiner Dokuwiki:
Installation und Konfiguration von Pandoc
Pandoc ist eines der genialsten Tools, wenn es um die Formatumwandlung zwischen verschiedenen Dokumententypen geht.
Um das Skript ausführen zu können, muss es auf dem System installiert sein. Die Installation von Pandoc unter Linux ist unkompliziert. Auf einem Debian-basierten System, wie zum Beispiel Ubuntu, kann Pandoc mit folgendem Befehl installiert werden:
sudo nala install pandoc
Nach der Installation kann die korrekte Funktionsweise von Pandoc mit folgendem Befehl überprüft werden:
pandoc --version
Dieser Befehl gibt die installierte Version von Pandoc aus.
Nutzung der Nextcloud als zentrale Datenbasis
Die Entscheidung, meine Notizen in der Nextcloud zu speichern, basiert auf dem Wunsch nach einer zentralen und sicheren Datenhaltung. Die Nextcloud bietet nicht nur die Möglichkeit, Dateien zu synchronisieren und zu teilen, sondern auch die Integration von Apps wie "Notes", die ein einfaches Erstellen und Bearbeiten von Markdown-Dateien ermöglicht. In einem früheren Blog-Beitrag habe ich beschrieben, wie die lokale KI in der Nextcloud installiert und konfiguriert werden kann. So kann ich auch unterwegs am Smartphone sogar per Spracherkennung Notizen erstellen, die gleichzeitig auch Beiträge in der Dokuwiki sind.
Da ich nur Dokumente unterhalb des Ordners wiki
übertrage, kann ich leicht persönliche und öffentliche Dokumente trennen. Zusätzlich ist meine Dokuwiki als privat
eingerichtet. So erhalten nur Personen Zugriff, denen ich einen Account freigeschaltet habe. Auf diese Weise ist eine granulare Rechteverwaltung garantiert.
Fazit
Durch die Automatisierung der Konvertierung meiner Markdown-Notizen in das DokuWiki-Format habe ich einen effizienten Weg gefunden, mein Wissen zentral zu verwalten und zugänglich zu machen, wo ich es wünsche. Das entwickelte Bash-Skript ermöglicht es, die Notizen aus meiner Nextcloud direkt in meine DokuWiki zu integrieren.
Später folgt möglicherweise die Integration lokaler KI, um zum Beispiel persönliche Informationen zu entfernen sobald Dokumente veröffentlicht werden...