
![]() |
![]() |
![]() |
|
|---|---|---|---|
| Get YARLE for Mac | Get YARLE for Windows | Get YARLE for Linux (.rpm) | Get YARLE for Debian (.deb) |
title, creation time, update time, tags, and latlong source, notebook, link to original html meta-information into md as metadata. (To set them, please set up a custom template)Any other note taking application which recognizes notes in standard markdown, like NotePlan or Craft, but Yarle supports some others that has specific format requirements too. These are:
Tana (check details and limitations here)
If you have an idea on how to improve the tool or face any problems, feel free to raise an issue, or even contribute!
If you like the product, you can give a star here on github, or you can ![]()
![]()
![]()
from Someone
Thanks, this really helped me out of evernote!
![]()
![]()
from john@thebeard.org
YARLE has just allowed me to transfer several years-worth of Evernote notes to Obsidian painlessly and astonishingly quickly. Your work has made my day. Thank you.
![]()
from @opscat
Thanks so much!
Download the application matching with your Operating system and double-click on it. (On mac, you need to right-click + Run to Open it, because Apple prevents to directly run an application downloaded from Internet)
https://user-images.githubusercontent.com/11886731/213943491-97211b41-c130-4b6b-a1e9-1fc360741ff7.mov
In order to perform conversion into Logseq format, please choose Logseq as Target format in the configuration panel, then choose the type of your notes (Journal Notes or Pages). For Logseq all the other options have already been pre-configured.
Just open a terminal, specify config options in a config file (options detailed in Configuration) and type the following:
npx -p yarle-evernote-to-md@latest yarle --configFile <path_to_your_file e.g. ./config.json>
How to migrate notes from Evernote to Obsidian (using Yarle)
YARLE: A lifeline to escape from Evernote
To configure Yarle, you must create a config file. By default it looks like this:
{
"enexSources": [
"/absolute-path-of-your-enex-dir/test-template.enex"
],
"templateFile": "/absolute-path-of-your-template-dir/sampleTemplate.tmpl",
"outputDir": "/path-of-your-desired-output-folder",
"isZettelkastenNeeded": false,
"useZettelIdAsFilename": false,
"plainTextNotesOnly": false,
"skipWebClips": true,
"useHashTags": true,
"outputFormat": "StandardMD",
"taskOutputFormat": "StandardMD",
"urlEncodeFileNamesAndLinks": false,
"skipEnexFileNameFromOutputPath": false,
"monospaceIsCodeBlock": false,
"keepMDCharactersOfENNotes": false,
"keepOriginalAmountOfNewlines": false,
"addExtensionToInternalLinks": true,
"trimStartingTabs": false,
"convertPlainHtmlNewlines": false,
"encryptionPasswords": [],
"nestedTags": {
"separatorInEN": "_",
"replaceSeparatorWith": "/",
"replaceSpaceWith": "-"
},
"replacementCharacterMap": {
"<": "_",
">": "_",
":": "_",
"\"": "_",
"/": "_",
"\\": "_",
"|": "_",
"?": "_",
"*": "_"
},
"globalReplacementSettings": [
{
"type": "title" ,
"regex": "X",
"replace": "<replaced_X>"
},
{
"type": "content",
"regex": "a",
"replace": "<replaced_a>"
}
]
"resourcesDir": "resources",
"turndownOptions": {
"headingStyle": "atx"
},
"dateFormat": "YYYY-MM-DD",
"haveEnexLevelResources": true,
"haveGlobalResources": false,
"useUniqueUnknownFileNames": false,
"useLevenshteinForLinks": false,
"convertColorsToMDHighlight": false,
"logseqSettings":{
"journalNotes": false
},
"obsidianSettings": {
"omitLinkDisplayName": false
}
}
The following configurational properties are available:
|
|Property Name| Property value | Meaning |
|-------------|----------------|---------|
|enexSources| multiple enex files, or a folder of the enex files(if you specify it via command line) | specifies the exported Evernote notebook(s) as an absolute path|
|templateFile | path of your custom template file | if its not specified, a default template will be used
|outputDir | path to your output dir (absolute or relative) | this is the main output dir where the extracted markdown files and the external resources, images, pdf-s are going to be created|
|resourcesDir | _resources | subdir where attachments/external resources will be placed
|isZettelkastenNeeded | true or false | puts Zettelkasten Id (based on time of creation) at the beginning of the file name|
|useZettelIdAsFilename | true or false | Note files are named by their creation date (those are interpreted as zettelIds)|
|plaintextNotesOnly | true or false | skips any notes with attachments (e.g. notes containing pictures)|
|useHashTags| true or false | whether to add the pound sign in front of tags|
|outputFormat| ObsidianMD or StandardMD | 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 . Possible values: ObsidianMD to get Obsidian-style notes, StandardMD or skip it completely, if you prefer Standard Markdown format.|
|haveEnexLevelResources| true or false | stores note resources on global resources folder per enex export if enabled |
|monospaceIsCodeBlock| true or false | if it's true then all deepest elements with monospace font style is recognized as Codeblocks|
| dateFormat | string | ISO 8601 specification of the expected date format (e.g. YYYY-MM-DD)
|keepMDCharactersOfENNotes| true or false | set it true, if you used Markdown format in your EN notes|
| nestedTags | it's a complex property contains the following subitems: "separatorInEN", "replaceSeparatorWith" and "replaceSpaceWith" | separatorInEN stores the tag separator used in Evernote, replaceSeparatorWith is the string to what separatorInEN should be replaced to, and replaceSpaceWith is the string to what the space character should be replaced to in the tags. For example using the default settings a tag tag1_sub tag of tag1 is going to be converted to tag1/sub-tag-of-tag1
|keepImageSize | boolean | preserve the images' size or not
| imageSizeFormat | ObsidianMD or StandardMD | specifies the format if keepImageSize is set to True
| urlEncodeFileNamesAndLinks | true or false | URL-encodes linked file names and internal EN links . e.g "linked file.jpg" will be converted to "linked%20file.jpg"
| sanitizeResourceNameSpaces | true or false | Replace spaces in resource names with the replacementChar. e.g "linked file.jpg" will be converted to "linked_file.jpg"
| replacementChar | string | the replacement character. e.g "linked*file.jpg" will be converted to "linked_file.jpg". It defaults to ""
| replacementCharacterMap | JSON Object | it contains character key-value pairs, the keys will be replaced by the proper values in the filename
| globalReplacementSettings | JSON Array | it contains search and replace pairs, the keys will be replaced by the proper values according to the given type (title or content). Please note: this property has to be in valid JSON Array format, and each item has to have type ('title', 'content' or 'tag'), regex (what you want to replace as a valid regular expression) and replace (what you want to push instead of the matched text) properties)
| keepOriginalAmountOfNewlines | true or false | keep the original amount of newlines, default is false, when the multiple newlines are collapsed to one.
| generateNakedUrls | true or false | if it's true, Yarle generates 'naked' external Urls without any extra characters. If its false, external Urls are wrapped by '<' and '>' characters
| addExtensionToInternalLinks | true or false | adds '.md' extensions at the end of internal file links, to make them recognizable by DevonThink and other tools
| turndownOptions | {...} | additional configuration options for [turndown](https://github.com/mixmark-io/turndown#o
$ claude mcp add yarle \
-- python -m otcore.mcp_server <graph>