A tool that converts enex note(s) into Markdown format in order to let you escape from Evernote universe with all your belongings.
- Works with enex files that contain single or multiple notes also.
- Works with notes that contain pictures too.
- Puts
title
,creation time
,update time
,tags
, andlatlong
meta-information into md as metadata. - Updates md files' access and modification timestamps according to the notes' update time.
- Organizes all attachments into a _resources subfolder (to keep the notes' folder as simple as possible).
- Notes of Web Clips are not supported (yet).
-
install Node.js. Please use Node 10.18.1 because of 3rd party dependencies rebuild problems.
-
clone or download this repo
-
npm i
-
npm run build
Those markdown notes that contains external resources such pictures or files, are stored in /<outputDir>/complexNotes
subfolder, the simple plain-text ones go to /<outputDir>/simpleNotes
folder.
--enexSource=<your-enex-file> or the folder of your enex files
, specifies the exported Evernote notebook(s)--outputDir=<relative_output_dir>
, this is the main output dir in where the extracted markdown files are going to be created--include-metadata
, if it's set, then every markdown file will be extended by metadata (tags, time of creation, time of last update, lat-lon coordinates)--zettelkasten
, puts Zettelkasten Id (based on time of creation) at the beginning of the file name--plaintext-notes-only
, skips those notes, which has attachment, or picture in it.--skip-latlng
, does not include location into metadata section--skip-creation-time
, does not include creation time into metadata section--skip-update-time
, does not include update time into metadata section--skip-tags
, does not include tags into metadata section
npm run start -- --enexSource=GeneralNotes.enex --outputDir=./out --include-metadata --zettelkasten --plaintext-notes-only
const options: YarleOptions = {
enexFile: 'enexFile',
outputDir: 'outputDir',
isZettelkastenNeeded: true,
isMetadataNeeded: false ,
};
yarle.dropTheRope(options);
- Huge performance improvement, works with enex files that contain 2k+ notes
- Bugfix: generates OS-friendly file and folder names
- Logging improved
- Bug around tag extraction fixed
- Bugfix: handling internal resource files (with no filenames) correctly
- Small bugfixes
- Attached images are converted as standard Markdown images instead of as wikistyle-links.
- Highlights supported
- Typescript building bugfix
- Generating links in wiki-style links is supported by default, its command line argument is removed.
- Evernote's internal links among the notes are supported in the case if the note title and its created reference is the same text.
As a hotfix notes within resources (e.g. web clips) are skipped to be referenced from the generated Markdown files.
- Folders can be added as input, in this case all the enex files within this folder will be transformed
- Zettelkasten IDs are unique, if multiple notes has been created in the same minute, then they will be indexed by numbers starting from 1 (except the first, it has no index)
- Bugfix: untitled notes' title is removed from the generated filename if Zettelkasten is required.
- Bugfix: tags are moved to the top and # added as prefix for each if it's missing.
- Skipping parts of metadata in configurable via options
- Links are generated in wiki-style links ([[link]]) if
--wikistyle-media-links
option is set - Bugfix: Notes with single resources are exported fine
- Codebase refactored
- Conversion of tables, lists, numbered lists and checkboxes are supported.
- plaintext-notes-only command line argument added, that enables you to skip converting notes with any resources, pictures, pdf, etc.
- The whole tool is reimplemented in Typescript
- ZettelKasten ID is an option for filename generation (format is |(pipe) <title>.md or .md if there is no title)
- File name conventions changed (whitespaces are generated instead of underscores)
- Metadata is moved at the end of the text and transformed as code snippet (looks better in Ulysses)
- Fix on HTML to MD conversion (turndown package is configured better to do not add multiple newline characters )