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).
-
Required Install Node.js version 10.22.1 or higher.
-
Clone or download this repo.
-
Open a terminal and navigate to the root folder of the repo.
-
Type
npm i
, it installs the dependencies. -
Type
npm run build
to build the package.
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--outputFormat
, generates internal file links and highlights in Obsidian-style: highlights are going to be bounded by==
instead of ` characters, file links are going to be as follows:![[file-name]]
instead of![file-name](file-name)
. Possible values:ObsidianMD
to get Obsidian-style notes,StandardMD
or skip it completely, if you prefere Standard Markdown format.
npm run start -- --enexSource=GeneralNotes.enex --outputDir=./out --include-metadata --zettelkasten --plaintext-notes-only --outputFormat=ObsidianMD
const options: YarleOptions = {
enexFile: 'enexFile',
outputDir: 'outputDir',
isZettelkastenNeeded: true,
isMetadataNeeded: false ,
};
yarle.dropTheRope(options);
-
Features:
- Webclipped notes, namely articles, simplified articles, bookmarks, screenshots scraped by Evernote's web clipper are converted
- UrlEncodeMD introduced as possible value of 'outputFormat' property, it makes image links be url-encoded in markdown notes, thx to Martin Hähnel
- Links in headers supported
-
Fixes:
- Enclosing brackets around links are removed to avoid causing troubles in MD file (fixes: Issue#50)
- NodeJs version limitation resolved.
- Feature requested in Issue#39 implemented: the conversion returns the number of the failed notes if any.
- Logo added to readme.
- Previously if unit tests were executed in timezone differs from Western Europe, they were failed. It's fixed now.
- Bug reported in Issue#39 fixed.
- Action added to test Yarle in different Node versions.
Special thanks to Rodrigo Vieira for the contribution!
- New command-line argument introduced :
--outputFormat
. Its optional, one possible value isObsidianMD
that configures Yarle to generate internal file links and highlights in Obsidian-style.
- 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 )