yarle

akosbalaskoMIT更新放缓

把 Evernote 导出的 .enex 文件批量转成 Markdown,保留附件和元数据,方便迁移到 Obsidian、Logseq 等笔记工具。

Yarle - The ultimate converter of Evernote notes to Markdown

v6.16.1发布于 2026-03-05 07:32 UTC1,816star114fork同步于 2026-11-07 07:33 UTC

怎么上手

由 README 提炼,执行前请确认
npx -p yarle-evernote-to-md@latest yarle --configFile <path_to_your_file e.g. ./config.json>
硬件要求按 README 说明

README 未说明;提供 Mac、Windows、Linux(.rpm/.deb) 桌面安装包,也可通过 npx 在命令行运行

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

把 Evernote 导出的 enex 笔记批量转成 Markdown,方便迁移到 Obsidian、Logseq 等工具

把 Evernote 导出的 .enex 文件批量转成 Markdown,保留附件和元数据,方便迁移到 Obsidian、Logseq 等笔记工具。

核心能力

  • 转换文本、元数据、标签、GPS 位置与来源 URL
  • 保留笔记间内部链接和外部链接
  • 把内联图片与附件统一放进 _resources 子目录
  • 支持自定义模板生成 Markdown 与元数据
  • 按原笔记时间更新文件的创建与修改时间戳

容易踩的坑

必须先创建 config 文件并填好 enexSources、outputDir 等绝对路径;Mac 上首次运行需右键打开,否则会提示应用已损坏;转换 Logseq 格式需在配置面板选 Logseq 为目标格式

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v6.16.1
  1. v6.16.1最新正式版2026-03-05 · 2026-03-05 07:32 UTC

    这个版本没有写更新说明。

  2. v6.16.02025-01-13 · 2025-01-13 20:33 UTC

    这个版本没有写更新说明。

  3. v6.15.22024-11-15 · 2024-11-15 16:26 UTC

    这个版本没有写更新说明。

  4. v6.15.12024-09-10 · 2024-09-10 18:56 UTC

    这个版本没有写更新说明。

  5. v6.15.02024-09-09 · 2024-09-09 08:49 UTC

    这个版本没有写更新说明。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    logo

    Last Commit Version Documentation Maintenance License: MIT GitHub All Releases

    Download YARLE, the ULTIMATE CONVERTER OF EVERNOTE notes here:

     
    Get YARLE for MacGet YARLE for WindowsGet YARLE for Linux (.rpm)Get YARLE for Debian (.deb)

    Note: If Mac refuses to run Yarle and shows that it is damaged, please check the solution here.

    Features:

    Yarle can convert:

    • :memo: Any text
    • :memo: All metadata: original creation time, last modification time, tags, GPS location, notebook name, source URL
    • :link: External links
    • :link: Internal links among Evernote notes
    • :computer: Codeblocks
    • :framed_picture: Inline Images
    • :paperclip: Attachments
    • :page_facing_up: Webclips

    Works with:

    • :notebook: single enex file (one notebook exported from Evernote)
    • :books: or a folder of enex files supported (several notebooks exported and placed into the same folder locally)

    Highly customizable:

    • :rocket: Creates Markdown files matching to user-defined templates, see Templates introduced. See How to use templates with YARLE for details.
    • :bulb: Metadata support: Puts 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)
    • :hammer: Updates md files' creation, access, and modification timestamps according to the notes' original create/update/modification time.
    • :hammer: Organizes all attachments into a _resources subfolder (to keep the notes' folder as simple as possible).

    To where can I import the converted notes?

    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:

    Obsidian

    LogSeq

    Tana (check details and limitations here)

    Heptabase

    Feedback, Appreciation, Donation:

    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

    Yarle's supporters said:

    Proud to be suggested by:

    Instructions

    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.

    Using Yarle via command line

    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>
    

    Yarle intro and usage videos on Youtube:

    How to migrate notes from Evernote to Obsidian (using Yarle) YARLE: A lifeline to escape from Evernote

    Configuration:

    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 NameProperty valueMeaning
    enexSourcesmultiple 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
    templateFilepath of your custom template fileif its not specified, a default template will be used
    outputDirpath 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_resourcessubdir where attachments/external resources will be placed
    isZettelkastenNeededtrue or falseputs Zettelkasten Id (based on time of creation) at the beginning of the file name
    useZettelIdAsFilename  true or falseNote files are named by their creation date (those are interpreted as zettelIds)
    plaintextNotesOnlytrue or falseskips any notes with attachments (e.g. notes containing pictures)
    useHashTagstrue or falsewhether to add the pound sign in front of tags
    outputFormatObsidianMD or StandardMDgenerates 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](https://github.com/akosbalasko/yarle/blob/HEAD/file-name). Possible values: ObsidianMD to get Obsidian-style notes, StandardMD or skip it completely, if you prefer Standard Markdown format.
    haveEnexLevelResourcestrue or falsestores note resources on global _resources folder per enex export if enabled
    monospaceIsCodeBlocktrue or falseif it's true then all deepest elements with monospace font style is recognized as Codeblocks
    dateFormat stringISO 8601 specification of the expected date format (e.g. YYYY-MM-DD)
    keepMDCharactersOfENNotestrue or falseset it true, if you used Markdown format in your EN notes
    nestedTagsit'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
    keepImageSizeboolean preserve the images' size or not
    imageSizeFormatObsidianMD or StandardMDspecifies the format if keepImageSize is set to True
    urlEncodeFileNamesAndLinkstrue or falseURL-encodes linked file names and internal EN links . e.g "linked file.jpg" will be converted to "linked%20file.jpg"
    sanitizeResourceNameSpacestrue or falseReplace spaces in resource names with the replacementChar. e.g "linked file.jpg" will be converted to "linked_file.jpg"
    replacementCharstringthe 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)
    keepOriginalAmountOfNewlinestrue or falsekeep the original amount of newlines, default is false, when the multiple newlines are collapsed to one.
     generateNakedUrlstrue or falseif it's true, Yarle generates 'naked' external Urls without any extra characters. If its false, external Urls are wrapped by '<' and '>' characters
    addExtensionToInternalLinkstrue or falseadds '.md' extensions at the end of internal file links, to make them recognizable by DevonThink and other tools
    turndownOptions{...}additional configuration options for turndown, e.g., { "bulletListMarker": "-" } (only in Yarle config file, not desktop app)
    obsidianSettings{...}settings for Obsidian output. Currently, omitLinkDisplayName is supported. If set to true links will be of the form [[foo]]. Conversely they will be of the form `[[foo
    logseqSettings {...}settings for Logseq output, currently journalNotes property is supported, if it is set to true, then the notes will be converted to be recognizable by Logseq as Journal notes, the notes will be named by their creation date and they will be collected under journal folder. If it is false, then they will be converted to be Pages (e.g. simple notes, collected in pages folder).
    taskOutputFormatObsidianMD or StandardMDOutput format of Evernote v10+ tasks. ObsidianMD will connvert tasks to match with Obsidian Tasks plugin's requirements. StandardMD will create plain tasks, loosing many features like reminders or due dates.
    obsidianTaskTagstringa tag to put to a task converted from Evernote v10+ tasks. Optional by Obsidian Tasks plugin, pls check the details there.
    trimStartingTabstrue or falseRemoves the tab characters from the beginning of every line in a note. It is meaningful, because Obsidian recognizes tabs as codeblocks by default and blocks recognition of links (for instance) in the line
    convertPlainHtmlNewlines true or falseYarle converts newline html tags to newlines, even if they are within Evernote paragraphs.
    encryptionPasswords string list of passwords used in any notes, separated by commas
    useUniqueUnknownFileNamesboolean generates a couple of random characters at the end of the resource file names if the exact name cannot be recognised. For instance: unknown_filename-d2fd86c3.pdf
    useLevenshteinForLinksbooleanit applies the link to the note with the filename that has the closest Levenshtein distance to the text of the link
    keepEvernoteLinkIfNoNoteFoundboolean it keeps the link to the evernote note if no such note found among the converted files
    convertColorsToMDHighlightboolean it converts colored highlights and custom font spans to standard markdown highlights
    removeUnicodeCharsFromTagsbooleanit removes the unicode characters (like éáűőú) from tags

    Metadata settings can be set via the template.

    Note links over notebooks? No problem, here is what to do:

    In order to minimize the wrong conversion of links due to duplicated note names, you need to do the followings:

    1. Before export your notes: select all withing a notebook
    2. Create a Table of Contents note
    3. Export the notebook together with the TOC file
    4. Start yarle and convert your notes

    Converting notes to Tana

    Yarle converts your notes to Tana Internal Format. To achieve this, the only thing you need to do differently than the default usage is to the output format as Tana Internal Format. The conversion will produce one file only called notes-in-TIF.json. It will contain all of your notes in Tana Internal Format, then you can import this file to Tana.

    Limitations

    Currently Yarle (or any other converter), cannot convert images into Tana Internal Format. Moreover Yarle converts Evernote tables to Tana as plain text.

    Once Tana Internal Format supports these features, we are glad to fill these gaps in the conversion.

    Converting notes to Heptabase

    Just select Heptabase as output format, and then a zip is going to be created as a result of the conversion that contains all of your notes with images, everything together, prepared to be uploaded to Heptabase.