Skip to content
Pages

Import

View as Markdown

Three importers

notdocs import notion converts a Notion "Markdown & CSV" export, notdocs import obsidian converts a vault and notdocs import docx converts Word documents. The same importers run from the workspace's import page, with per-file progress rows. The first two take a .zip or a folder and have --dry-run, and store the images they carry the way pasted images are stored, pointing each page at them; all three stamp an id on every document they create. An id a note or a Notion row already has that is not a ULID (id: intro) is kept in aliases, so a wikilink by that name still finds the document. A file the workspace refuses is reported and the rest are still imported; the CLI then prints what was created, what already existed and what failed (as JSON with --json) and exits non-zero.

sh
notdocs import notion ./Export-….zip --into docs/notion --dry-run
notdocs import notion ./Export-….zip --into docs/notion

Database rows become typed documents: a row whose database has a Status property becomes a task, everything else a page. Properties become frontmatter, fitted to the task's fields: Urgent, High, Medium and Low priorities become p0 to p3, several people in a text field such as Assignee are joined, and a number or date is written as text; a value that still does not fit keeps its place as notion<Name> (notionPriority: Someday), and so does a Type property, since the importer sets type. The Export-<uuid>/ wrapper and the page ids in file names and links are stripped, and two pages whose names are then the same become Name.md and Name-2.md, links included.