MD-Curcuma | Library
Eine Typescript-Bibliothek zum Daten transportieren und umwandeln.
Warum?
// Motivation
Ich bin ja nun mit meiner Webseite von Wordpress noch Hugo umgezogen, und möchte gerne Inhalte aus meinem Second-Brain - der Notiz App Obsidian in mein Hugo-Projekt transportieren und dort veröffentlichen.
Das geht natürlich nicht so einfach. Ausserdem hatte ich das folgende Problem:
Obsidian / Markdown Dokumente
Ich habe zum Beispiel umfangreiche Manuskripte in Obsidian geschrieben, mit 4-stufigen Kapitelstrukturen und dementsprechend vielen einzelnen Markdown-Dokumenten. Mit dem Obsidian Longform Plugin kann man solche Manuskripte zu einer großen Datei zusammenfassen und dann z. B. mit Pandoc in ein beliebiges anderes Format konvertieren. Aber wenn ich das Buch auf meiner Webseite veröffentlichen will, habe ich ein Problem. Die Langform ist zu groß. Die einzelnen Kapitel wären wiederum zu fragmentiert, um sie auf der Hugo-Website anzuzeigen. Die Lösung war, das Langform-Dokument wieder in einzelne Dokumente auf einer Überschriftenebene aufzuteilen (# ), ein Hugo-kompatibles Frontmatter hinzuzufügen und die Links und andere Dinge in Hugo-Shortcodes umzuwandeln.
Die Dateien müssen im Obsidian Vault ausgewählt werden, Frontmatter und Markdown müssen umgewandelt, und das ganze muss dann an andere Orte in Hugo -Projekt kopiert werden. Natürlich sollen auch Attachments wie Bilder und PDFs übernommen werden.
Book Buddy
Ausserdem verwende ich die App BookBuddy um meine Bibliothek zu verwalten. Den Inhalt kann man als CSV-Tabellen-Datei exportieren. Ich würde die Daten gerne in Hugo verwenden. Dazu muss man die Datei in das JSON-Format umwandeln, damit Hugo damit was anfangen kann. Ausserdem müssen die mit exportierten Cover-Fotos heruntergeladen, und mit dem Datensatz verknüpft werden.
Dafür ist dieses Programm gedacht.
Features
Transportiert (kopiert) und transformiert Markdown- oder CVS-Dateien aus Obsidian zur Verwendung in Hugo .
- Entwickelt mit Typescript / Node .
- Inspiriert von: https://github.com/accraze/split-md
- Warum nicht golang ? Damit man es außerhalb des Golang-Universums einfacher benutzen kann.
Das Programm ist noch in der Entwicklung, und das ist bisher umgesetzt:
Transporter
- MD_Transporter - für Markdown-Dateien.
- CSV_Transporter - Für Dateien mit kommagetrennten Werten, bei denen jede Zeile ein Datensatz ist. Das ist eine BookBuddy App Unterstützung: CSV-Dateikonvertierung & Bild-Download.
Markdown Transformer
- Kopieren und transformieren von einem oder mehreren Markdown-Dateien.
- Aufteilen von Longform-Dokumenten in mehrere Einzeldokumente.
- Die Aufteilung sollte auf Überschriften erfolgen: z. B.:
#
- Der Text der Überschrift wird als Dateiname verwendet.
- Wenn nötig, mit einer vorangestellten Zahl, ggf.
- Sonderzeichen url konform ersetzen.
- Überschrift entfernen (vorzugsweise als Option)
- Die Aufteilung sollte auf Überschriften erfolgen: z. B.:
- Obsidian-Links (Bilder und Dokumente) umwandeln.
- nebenbei die Bilder & Dateien kopieren.
- Ein Simulationsmodus gibt Auskunft darüber, welche Verzeichnisse, Bilder und Anhänge wo erwartet werden.
- Latex-Formeln, Absatz und Inline.
- Frontmatter: Hinzufügen, Ersetzen, Zuordnen und Transformieren von Werten.
- Callouts.
- Absätze mit TODOs entfernen.
- TODO: Wikilinks (Querverweise) berücksichtigen.
- TODO: Unterstützung von Fußnoten und Endnoten.
Verfügbare Mappings
- Adopt Value - ein einfaches Beispiel.
- ArrayJoin, ArraySplit
- Boolesche Umkehrung
- Bild-Downloader
- Datum einfügen (jetzt)
- UUID einfügen
- Zeichen aus String abschneiden.
Man kann einfach selber Transformatoren und Mappings bauen. Weitere geplante Features und Änderungen gibts in der CHANGELOG.md
Einschränkungen
- Läuft nur im Backend, nicht in Web-Browsern.
Download
- auf github.com
- bei npmjs.com
- Anleitung in Docs