notes-migrator icon indicating copy to clipboard operation
notes-migrator copied to clipboard

Migrate your notes b/w different note-taking software

#+title: notes-migrator

** Usage

You can do this in one of the following ways:

  1. Download this script. (e.g =git clone https://github.com/bitspook/notes-migrator=)

  2. To load the migration script, in Emacs, run =M-x load-file=, and select the migration script you want to run (e.g =nm-org-roam-to-denote.el=). See [[id:00f586a4-f8db-4a13-892a-f8efacb5ee65][Supported Conversions]] section below for supported migration scripts.

  3. Rtfm; Migration script is now loaded, and there should be a function with =nm-migrate-= prefix loaded in Emacs. e.g for org-roam to denote migration, there should be =nm-migrate-org-roam-to-denote=. You can invoke =C-h f= and enter/select this function to read its documentation.

  4. Run migration by invoking the migration function. =M-x= and selecting the =nm-migrate-*= function should do the job

** Supported Conversions :PROPERTIES: :ID: 00f586a4-f8db-4a13-892a-f8efacb5ee65 :END:

*** [[https://github.com/org-roam/org-roam/][org-roam]] to [[https://protesilaos.com/emacs/denote][denote]]

  • Script: [[file:nm-org-roam-to-denote.el][nm-org-roam-to-denote.el]]

  • Command: =nm-migrate-org-roam-to-denote=

  • Maintainer: [[https://github.com/bitspook][@bitspook]]

  • Tested with:

    • Emacs versions
      • 29.0.5
      • 28.1
    • org-roam versions
      • v2.2.1

**** Known limitations

  • If you are using org-roam's feature of having multiple nodes in a single file (having a ID on a subtree in a org-roam file treats the subtree as a separate note in itself), then the same file will result in multiple denote notes. The filename will be different (it is one file per sub-note), but original file's complete content is present in each.

*** [[https://protesilaos.com/emacs/denote][denote]] to [[https://logseq.com/][logseq]]

  • Script: [[file:nm-denote-to-logseq.el][nm-denote-to-logseq.el]]

  • Command: =nm-migrate-denote-to-logseq=

  • Maintainer: [[https://github.com/hapst3r][@haspt3r]]

  • Tested with:

    • Emacs versions
      • 28.1
    • Denote version
      • v1.0.0

**** Known limitations

  • You need to specify an existing =LOGSEQ-DIRECTORY=. Specifying a nonexistent one will result in an error. Specifying nothing (NIL), everything will be copied into your home folder (on linux).
  • In =LOGSEQ-DIRECTORY=, files with identical names (i.e. earlier transferred notes) will be overwritten without notification.
  • The tags currently don't work. Denote uses #+FILETAGS and Logseq #+TAGS in the header line, Denote uses :TAG1:TAG2: format and Logseq uses TAG1, TAG2 format.
  • Invalid denote links are ignored i.e they are left behind in the migrated notes as-is

** Purpose

To migrate notes from one software to another.

Fluidly taking notes is a powerful habit. In the quest of a fluent workflow, you (like me) might find yourself trying many software. In this repo I will put code I use to convert my notes from one software to another, so I can assess them with my actual of notes instead of just toying around.

** Contributing

If you want conversion b/w software not covered in this repo, or want different behavior for existing migration scripts, please create an [[https://github.com/bitspook/notes-migrator/issues][issue on Github]].

If you're willing to get your hands dirty and write some code, I will assist you write the required code. Or you can create a PR if you have already written one. Or we wait until The One^{TM} comes along.