1 changed files with 116 additions and 0 deletions
@ -0,0 +1,116 @@ |
|||||
|
# Migrate your notes from Bear to Zettlr! |
||||
|
|
||||
|
## Background |
||||
|
|
||||
|
I recently switch from Bear to Zettlr to manage my notes. |
||||
|
However, I was sad to discover that Bear exports notes in a non-standard way: |
||||
|
|
||||
|
- File attachments are HTML links that don't even point to the correct file |
||||
|
- All notes are stored in the same directory, regardless of your tag hierarchy |
||||
|
- The tag format used by Bear (#foo/bar) is incompatible with Zettlr format (#bar) |
||||
|
- Bonus: some file attachment were missing... |
||||
|
|
||||
|
So, I decided to write this tool in order to save my hundreds of notes! |
||||
|
|
||||
|
## Usage |
||||
|
|
||||
|
First, export all your notes from Bear. |
||||
|
|
||||
|
* Go to **Notes** |
||||
|
* Hit **Cmd+A** to select all your notes |
||||
|
* Go to **File** > **Export Notes...** |
||||
|
* Select **Markdown** and check **Export attachments** |
||||
|
* Select a directory to store your exported notes |
||||
|
* Click **Export notes** |
||||
|
|
||||
|
Then, install **git** and **go**. |
||||
|
|
||||
|
```sh |
||||
|
brew install git golang |
||||
|
``` |
||||
|
|
||||
|
Checkout this repository. |
||||
|
|
||||
|
```sh |
||||
|
git clone https://github.com/nmasse-itix/bearnotes.git |
||||
|
cd bearnotes/cli |
||||
|
``` |
||||
|
|
||||
|
Start a discovery of your notes. |
||||
|
|
||||
|
```sh |
||||
|
go run main.go discover --from /path/to/bear-notes --tag-file /tmp/tags.yaml |
||||
|
``` |
||||
|
|
||||
|
If everything goes well, it should display a count of your exported notes |
||||
|
along with the discovered tag list. |
||||
|
|
||||
|
You can review the generated tag configuration file. |
||||
|
|
||||
|
```sh |
||||
|
open /tmp/tags.yaml |
||||
|
``` |
||||
|
|
||||
|
Finally, launch the proper migration phase. |
||||
|
|
||||
|
```sh |
||||
|
go run main.go migrate --from /path/to/bear-notes --to /path/to/zettlr-notes --tag-file /tmp/tags.yaml |
||||
|
``` |
||||
|
|
||||
|
Review the migrated notes. |
||||
|
|
||||
|
If you want to change the default folder hierarchy, read the next section. |
||||
|
|
||||
|
## Configuration |
||||
|
|
||||
|
You can configure how the migration tool stores your notes, in which folder and even rewrite the tags to match Zettlr's format. |
||||
|
|
||||
|
The default configuration for a tag is: |
||||
|
|
||||
|
```yaml |
||||
|
foo/bar: |
||||
|
ignore: false |
||||
|
handling_strategy: same-folder |
||||
|
target_directory: foo/bar |
||||
|
target_tag_name: bar |
||||
|
``` |
||||
|
|
||||
|
It defines that any note having this tag will go to the **foo/bar** directory. |
||||
|
The **#foo/bar** tag will be rewritten as **#bar**. |
||||
|
All the notes having the **#foo/bar** tag, will be stored in the same directory, along with their embedded images and file attachments. |
||||
|
|
||||
|
If you think the migration tool wrongly identified a tag, you can switch the **ignore** option to **true**. |
||||
|
|
||||
|
```yaml |
||||
|
foo/bar: |
||||
|
ignore: true |
||||
|
``` |
||||
|
|
||||
|
If you want to rewrite the **#foo/bar** tag as **#foo-bar**, you can change the **target_tag_name**. |
||||
|
|
||||
|
```yaml |
||||
|
foo/bar: |
||||
|
ignore: false |
||||
|
handling_strategy: same-folder |
||||
|
target_directory: foo/bar |
||||
|
target_tag_name: foo-bar |
||||
|
``` |
||||
|
|
||||
|
Note: If you want to remove the tag from the migrated note, use `target_tag_name: ""`. |
||||
|
|
||||
|
The `target_directory` option is straightforward: it defines where to store the notes having this tag. |
||||
|
|
||||
|
The `handling_strategy` option specifies how notes will be saved on the filesystem |
||||
|
|
||||
|
- **same-folder**: all notes having this tag are stored in the **target_directory** along with their embedded images and file attachments. |
||||
|
- **one-note-per-folder**: each note will get a sub-folder in the **target_directory** |
||||
|
|
||||
|
Note: given that a document can have multiple tags, it is perfectly valid for a tag to specify no target directory or no handling strategy if you know that another tag will provide them. |
||||
|
|
||||
|
If by any chance, for a note the tool cannot determine a target directory or an handling strategy, the note will be stored in the root of the target directory. |
||||
|
|
||||
|
And if a note receives different configurations by two different tags, the first one wins (by order of tag appearance in the document). |
||||
|
|
||||
|
## License |
||||
|
|
||||
|
MIT |
||||
Loading…
Reference in new issue