Giter Site home page Giter Site logo

obsidianmd / obsidian-importer Goto Github PK

View Code? Open in Web Editor NEW
587.0 17.0 46.0 10.84 MB

Obsidian Importer lets you import notes from other apps and file formats into your Obsidian vault.

Home Page: https://help.obsidian.md/import

License: MIT License

JavaScript 4.29% TypeScript 93.79% HTML 1.31% CSS 0.61%
obsidian obsidian-plugin obsidianmd

obsidian-importer's Introduction

Obsidian Importer screenshot

This Obsidian plugin allows you to import notes from other apps and file formats into your Obsidian vault. Notes are converted to plain text Markdown files.

Get started

Install Importer in Obsidian β†’ Community Plugins.

Import guides are hosted on the official Obsidian Help site. You can help contribute to the guides on the obsidian-help repo.

Contributing

Is a format missing? You can help! See our Contribution guidelines.

Some issues have been tagged with #bounty.

Credits

This plugin relies on important contributions:

obsidian-importer's People

Contributors

akosbalasko avatar arthurtyukayev avatar daledesilva avatar ericaxu avatar j-palindrome avatar jeromezephyr avatar jveldboom avatar kepano avatar kuredev avatar lishid avatar mirnovov avatar nicolashohm avatar p3rid0t avatar polyipseity avatar puffo avatar sayzard avatar tgrosinger avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

obsidian-importer's Issues

Import from Notion - $1,000

Please upvote this issue if you would like to see import from Notion.

Bounty

See the Contribution guidelines for how to claim this bounty.

Bounty: $1,000 USD
Timeframe: 10 days

Requirements

Must support the following:

  • Uses either Notion's HTML or MD export (decide which one is best)
  • Convert page title to file name and remove it from the top of the file
  • Maintain folder structure
  • Proper Obsidian Markdown formatting
  • Parse internal links
  • Parse page properties, including internal links must be imported into YAML frontmatter using the correct field types
    • Text
    • Date
    • Time
    • Number
    • List
    • Checkbox

Internal link format (added in Obsidian 1.4+)

---
link: "[[Link]]"
linklist:
  - "[[Link]]"
  - "[[Link2]]"
---

Current solutions

Import from Roam - $500

Please upvote this issue if you would like to see import from Roam

Bounty

See the Contribution guidelines for how to claim this bounty.

Bounty: $500 USD
Timeframe: 10 days

Requirements

  • Resolve page names with allowed characters only
    • Resolve date format for daily notes, convert to the user's daily note format (YYYY-MM-DD by default)
  • Convert outlines to bullet lists with block references
  • Convert highlights and todos to Obsidian Markdown
  • Support for attachments

Current solutions

Import from Google Keep - $500

Please upvote this issue if you would like to see Google Keep as an import format.

Bounty

See the Contribution guidelines for how to claim this bounty.

Bounty: $500 USD
Timeframe: 10 days

Requirements

By using the existing HTML importer you should be to convert Google Keep's HTML export

  • Must work on macOS, Windows, Linux
  • Convert to proper Obsidian Markdown formatting
  • Maintain folder structure
  • Apply the created/modified date to the created Markdown file
  • Follow the user's setting for Default location for new attachments
  • Use Obsidian-style embed links for attachments ![[image.png]]

Current solutions

Import from Standard Notes

The Obsidian MD Exporter is doable but I really wish there is a click to import that I can use.

While the Python script though seems innocuous and safe, I'm also a tad worried about security as I have notes that I would rather not have anyone have access to.

Would appreciate being able to directly import from Standard Notes.

Please upvote if you are in the same boat as me and would like to see this happens.

Thanks

Import from Zim

It would be great to have a way to import notes from Zim. Its syntax is described here.

There are currently several ways to convert Zim notes to Obsidian, but all still need some tweaking:

  1. This script is an attempt to directly convert Zim notes to Obsidian.

  2. This script is post-processing Zim notes that were exported to Markdown (through Pandoc, but it has its flaws when exporting through Zim, like missing indented text) with the built-in exporter of Zim. Some issues need attention there, f.i. indentations, checkboxes and code blocks aren't converted properly, as are Markdown and WikiLinks links.

  3. Zim's built-in exporter also allows exporting to HTML, but it's currently unclear how the HTML should look like in order to work with the HTML import feature.

Please upvote this issue, if you would like to import your notes from Zim.

Importer should tell me which notes failed to import

Use case or problem
I was importing a batch of ~3k notes from Evernote. 18 notes failed, but I couldn’t tell which ones.

Proposed solution
Provide the title for each note that failed to import.

Current workaround (optional)
If you open the console before running the import and filter by β€œfailed to convert”, you can see the notes that failed. If you DON’T open it before running, then it seems to only retain the last 100 or so notes imported, which may or may not include those that failed.

[Evernote] Use correct formatting for tags front matter metadata

Imported an Evernote note with two tags and these were converted in the front matter metadata as:

---
tags: ["#python","#tutorial"]
---

While obsidian seems to detect tags from this format, I guess it would be cleaner to have these formatted as

---
tags:
  - python
  - tutorial
---

Import TextBundle format

.textbundle file/folder format

http://textbundle.org/

It's used by a bunch of different applications, the format is quite simple.

Generally a single .textbundle would contain a single markdown file and a folder of any assets that file includes.

Copywriting: You successfully imported 0 notes

If zero notes were imported, display a more helpful message. Likely there will be errors reported in the log, so we can show a more useful message:

You successfully imported 0 notes! to No notes were imported. See error log below.

Google Keep: unnecessary alias

Aliases should only be used when the title would be an invalid file name, otherwise it's just duplicated information. Now every note with a title has one.
Notes that don't have a title in Keep get a date title, but no alias, which is also weird.

HTML files in Google Keep Importer labelled skipped

In the final merge of the Google Keep import format, files found in the zip which are irrelevant to the import have been set to report as "Skipped". I would recommend against this.

As I found with my previous import plugin, mentioning these files as being skipped causes the user to to think something has gone wrong when it hasn't. And it can also can cause them to create GitHub issues about it unnecessarily.

For instance, HTML files are ignored in the import because they only duplicate the JSON files which we do import.
Reporting them as skipped, therefore, implies an issue where there is none, and bloats the output log such that the user finds it harder to notice the actual relevant messages such as notes that have been entirely skipped because they had an "archived property".

Note, this only affects importing as a zip because when selecting files directly you aren't given the ability to select unimportable files.

Google Keep: note aliases ruined by commas

Notes that have a comma in their title, like This, also that get an aliases field like aliases: This, also that, which Obsidian then treats as two separate aliases for This and also that. It's not just visual either, both aliases come up in the quick switcher and other places.
image

Recognize import formats and open Importer modal

Recognize an attempt to drag and drop an import format in any Obsidian window and open the Importer modal with that file/folder already selected

  • Folder
  • .enex
  • .md
  • .html
  • .txt
  • Make this easily extensible for other file extensions

Import from OneNote - $1,000

Please upvote this issue if you would like to see OneNote as an import format.

Bounty

See the Contribution guidelines for how to claim this bounty.

Bounty: $1,000 USD
Timeframe: 10 days

Requirements

  • Export files from OneNote
  • Must work on macOS and Windows
  • Convert to proper Obsidian Markdown formatting
  • Maintain folder structure
  • Parse internal links
  • Apply the created/modified date to the created Markdown file

Current solutions

Feature Request: Import Template

Add the ability to have an Importer Template with access to metadata. I could envision something like:

---
created: "{file.ctime}"
tags: {file.tags}
---

Notion Importer hangs on large .zip file import (1.1.0)

When I try importing my notion backup it appears stuck at 0 notes imported --

stuck

Opening the developer console reveals this error:

Uncaught (in promise) DOMException: The requested file could not be read, typically due to permission problems that have occurred after a reference to a file was acquired.
eval @ plugin:obsidian-importer:72

A quick google search led me to this SO post which seems to indicate an ArrayBuffer size issue. My notion export is rather large, at 9.24 GB. Is there any way around this? I should note that most of the size is due to images and video in the archive.

Import from Apple Notes - $2,500

Please upvote this issue if you would like to see Apple Notes as an import format.

Bounty

See the Contribution guidelines for how to claim this bounty.

Bounty: $2,500 USD
Timeframe: 21 days

Please only apply if you have taken time to explore the Importer codebase, as well as existing options such as Apple Notes Liberator and Apple Cloud Notes Parser. Provide detail about how you would approach solving it within the constraints of this Obsidian plugin.

Requirements

  • Must work on macOS β€” iOS is nice to have but not required for initial version
  • Properly converts files to Obsidian-flavored Markdown, including tables, to-do lists, etc
  • Support for images and attachments. Embed links converted to Markdown format !()[image.png] and placed in the user's defined attachment location (Settings β†’ File & links)
  • Supports internal links added in iOS17

Current solutions

Images in an html file are missed

If I look at the attached html file in a web browser, it looks like this:

image

This was exported from evernote, and it looks pretty much the same there.

However, when I import into into obsidian using the obsidian importer plugin, it looks like this:

image

Evernote_is_really_html.txt

Import from Evernote: texts are missing

I tried to import from a .enex file which contains 12 notes but only 1 note was imported completedly. In the rest 11 notes, only the images in them are imported in _resources folders but the texts are missing.

image

Notion import cyrillic in file names problem and mode

Hey, i am trying new version with notion import, and encountered two problems

  1. It breaks file and folder names with cyrillic
Screenshot 2023-08-12 at 21 23 16
  1. It seems there is a problem when you make partial export in notion - it includes referenced pages several times, so there might be a chance of file name collision, import just stuck with error
app.js:1 Uncaught (in promise) Error: Folder already exists.
    at t.<anonymous> (app.js:1:1024123)
    at app.js:1:236930
    at Object.next (app.js:1:237035)
    at a (app.js:1:235753)

it can be solved by manually removing them from archive though

Feature Request: Autotag / Link

Add static tag (or link) on import
- For example, add a user defined tag (e.g. #Importer/Evernote) to the tags array upon import or #Importer/YYYY-MM-DD

Import from Ulysses

Ulysses notes contains nonstandard Markdown. And it breaks links to images, etc. It would be great to be able to import them into Obsidian!

Please upvote if you'd benefit from this πŸ‘

Current solutions

  • Add an external folder in Ulysses (see guide), then copy all your sheets from the β€œregular” (iCloud) collection to this external folder. Use Markdown as the format. The files will then be available in your file system and can be copied into your vault.

Dev: fails tsc

I get this error when trying to build:

> [email protected] build
> tsc -noEmit -skipLibCheck && node esbuild.config.mjs production

error TS2688: Cannot find type definition file for 'node 2'.
  The file is in the program because:
    Entry point for implicit type library 'node 2'


Found 1 error.

Clipped article URL and other metainfo not imported from .enex files

The Evernote article in the attached .enex file contains meta information that was stored by the Evernote web page clipper. But the Obsidian Importer doesn't import important meta info. For example, the URL where the web article was clipped from is missing in Obsidian, although it is present in the .enex.

The source URL is absolutely essential for a reference note, which is what most of my Evernote pages are. Also missing are the dates for when the note was created and last modified.

Evernote3_is_really_enex.txt

Feature Request: Import by folders and subfolders

The exported file directory using the export tool ExportAllEverNote is similar to the following:

$ tree
.
β”œβ”€β”€ EverMemo
β”‚   β”œβ”€β”€ xxxx.enex
β”‚   β”œβ”€β”€ xxx.enex
β”‚   └── xxx.enex
β”œβ”€β”€ Technology
β”‚   β”œβ”€β”€ hadoop
β”‚   β”‚   β”œβ”€β”€xxxx.enex
β”‚   β”‚   β”œβ”€β”€ xxxx.enex
β”‚   β”‚   └── xxxx.enex
β”‚   β”œβ”€β”€ hbase
β”‚   β”‚   β”œβ”€β”€ xxxx.enex
β”‚   β”‚   β”œβ”€β”€ xxxx.enex
β”‚   β”‚   └── xxxx.enex
β”‚   β”œβ”€β”€ hive
β”‚   β”‚   β”œβ”€β”€ xxxx.enex
β”‚   β”‚   └── xxxx.enex
β”‚   └── spark
β”‚       β”œβ”€β”€ xxxx.enex
β”‚       └── xxxx.enex
└── persion
    └── notes
        β”œβ”€β”€ xxx.enex
        └── xxx.enex

Therefore, I hope the plugin can support selecting folders(.) and subfolders for batch import.

HTML attachments - $300

Bounty

See the Contribution guidelines for how to claim this bounty.

Bounty: $300 USD
Timeframe: 7 days

Requirements

Improve the HTML importer by adding support for attachments

  • Add support for attachments (images, video, audio)
  • Follow the user's setting for Default location for new attachments
  • Use Obsidian-style embed links ![[image.png]]
  • Avoid importing icons/logos that are not part of the content of the page

Import from Scrivener

I'd like to suggest support for importing from Scrivener. It's been a while since I've written my own scripts to parse their bundled format, but I know that it's doable.

Failed to import note from Evernote

Hi, Importing a bunch of notes and got one as a failure. The stack trace is:

ugin:obsidian-importer:50 Failed to convert note: A New Way to Learn Unity: Game Development from A-to-Z – Unity Blog TypeError: The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object. Received undefined at __node_internal_captureLargerStackTrace (node:internal/errors:490:5) at new NodeError (node:internal/errors:399:5) at Function.from (node:buffer:334:9) at li (plugin:obsidian-importer:50:2441) at mi (plugin:obsidian-importer:50:1702) at ui (plugin:obsidian-importer:50:3709) at EventEmitter.eval (plugin:obsidian-importer:57:357) at EventEmitter.emit (node:events:513:28) at x.eval (plugin:obsidian-importer:14:9507) at x.emit (node:events:513:28) at m._parser.<computed>.d.indexOf.m._parser.<computed> [as onclosetag] (plugin:obsidian-importer:6:4034) at Tt (plugin:obsidian-importer:7:3626) at O (plugin:obsidian-importer:7:3666) at Xt (plugin:obsidian-importer:12:1836) at i._i [as write] (plugin:obsidian-importer:14:4808) at x.write (plugin:obsidian-importer:6:3697) at ReadStream.ondata (node:internal/streams/readable:766:22) at ReadStream.emit (node:events:513:28) at addChunk (node:internal/streams/readable:324:12) at readableAddChunk (node:internal/streams/readable:297:9) at Readable.push (node:internal/streams/readable:234:10) at node:internal/fs/streams:275:14 at FSReqCallback.wrapper [as oncomplete] (node:fs:681:5) u

I shared the note at https://www.evernote.com/shard/s21/sh/b7cb6048-ab81-449e-ac57-173024467e56/S4Py8lfiK4nqu1eLrHgj_mXWZJoyughGxCNDCMrAra6xErGQdL-Ml5rYxA
or can E-Mail it.

Detailed import log and progress bar - $500

Allow users to see a detailed log, similar to Sync log with list of every file. This would be combined with the progress meter into a new screen that is displayed while the import is running.

Bounty

See the Contribution guidelines for how to claim this bounty.

Bounty: $500 USD
Timeframe: 7 days

Requirements

  • Should be generic and compatible with existing/future converters
  • Import progress modal should replace the "Import data" modal once import begins
  • Progress meter
    • Number of remaining files (if available)
    • Number of skipped files
    • Number of failed files
    • Number of imported files
    • Progress bar should use total count of files if available, otherwise use an indefinite cycling progress bar
  • List of all files with states
    • Imported β€” timestamp, original file name, location of the new file (text color --text-muted)
    • Failed β€” timestamp, original file name, error message (text color --text-warning)
    • Skipped β€” timestamp, original file name, skipped message (text color: --text-error)
  • Toggle "errors only" to only show failed and skipped files

Reference

Mockup modified from current Sync log

Screenshot 2023-07-31 at 2 06 47 PM

Progress bar from Google Keep Import plugin by @daledesilva

Screenshot 2023-07-31 at 2 06 47 PM

Plugin does not show in Commuity Plugins left pane

Obsidian: 1.4.2
Importer: 1.04
Vault: Sandbox
Mac OS Ventura

This is odd. Importer shows when browsing plugins, it shows in the list of installed plugins, but it doesn't show in the left pane of the settings under Community Plugins

I opened the sandbox vault. Installed and enabled both Importer and Calendar. Calendar is shown in the left pane of the settings modal under Community Plugins but Importer is not.

Screenshot 2023-07-31 at 2 25 15 PM

Invalid Tags Created on Import

What

According to the Obsidian documentation, a tag must contain at least one non-numerical character.

However, on import, with notes tagged with a year for example in Evernote (e.g. #2023) a corresponding tag in Obsidian is succesfully created (and shows in the Tag side panel hierarchy.

Desired Outcome

I actually don't mind the tag being there, I'm just not sure if this impacts anything else, since it violates the allowed tag syntax documented by Obsidian.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.