Skriuw Documentation

Importing

How Skriuw v2 moves a vault or workspace in from another tool - what you can select, which formats are detected, and what the preview shows you before anything is written.

Import in v2 is preview-plan-apply. You choose a source, v2 reads it, detects which tool it came from, and builds a full plan. Nothing is written to your workspace until you confirm the plan you are looking at.

The two entry points

Both live in the command palette (mod+k) and in Settings → Data.

CommandOpensUse it for
Import notes from folder…A folder pickerA whole vault or export directory, including its attachments
Import provider export or files…A file picker, multi-selectAn archive, or any number of loose note files

Selecting several files at once

The file picker accepts a multi-file selection. This matters most for Apple Notes, whose exporters produce one .md file per note rather than a single archive - select all of them in one pass instead of importing note by note.

The rules for a multi-file selection:

  • Every selected entry must be a file. Folders and archives are single-source only, so select one of those on its own.
  • Every file must be .md, .markdown, .txt, .json, or .csv. A selection containing anything else - an image, a PDF - is rejected as a whole, naming the offending file, rather than partially imported.
  • Files with the same name from different folders both survive. The second one is staged as Note (2).md, so nothing is silently overwritten.

The selection is staged into a single temporary directory, detected as one source, and planned as one import - so the preview, the duplicate handling, and the commit all behave exactly as they do for a folder. The temporary copy is removed when the import finishes, including when it fails or you cancel.

Single selections are unchanged: one folder, one .zip, one .bear2bk, or one note file all take the path they always did.

Formats that are detected

Detection is scored across every adapter rather than chosen by file extension, so you don't tell v2 what tool the notes came from - though you can override it in the preview.

SourceTypical selection
ObsidianVault folder
NotionExport .zip
Bear.bear2bk backup
SimplenoteExport .zip or .json
Apple NotesLoose .md files (multi-select)
MarkdownFolder or files
Plain textFolder or files

The preview

Before anything is written, the preview shows the plan and lets you change four things:

  • Format - the detected source, overridable if the guess is wrong. Switching it re-reads the plan against a different adapter.
  • Destination - the folder the import lands in. Top-level entries are re-parented under it.
  • Provenance - whether to record where the notes came from. See below.
  • Re-import - how notes that came from this same source before are handled: skip previous imports, update previous imports, or create copies. Previous imports are recognized by a key derived from what you selected, so a repeated import of the same files is recognized as a repeat.

All three re-import variants are planned up front, so switching between them updates the counts immediately.

Recording where a note came from

The preview has a "Record the import source as a property" checkbox, on by default, which stamps two properties on each newly created note:

PropertyTypeValue
SourceTextThe adapter label, e.g. Apple Notes Markdown
ImportedDateThe day the import ran

They are ordinary note properties - visible in the properties panel, editable, deletable, and carried through export like any other. Three rules keep them from getting in the way:

  • New notes only. Notes matched as previous imports and updated in place are never re-stamped, so re-importing doesn't churn the property.
  • Your properties win. If the file already carries a property named Source or Imported - an Obsidian frontmatter key, a Notion column - that one is left alone and the matching stamp is skipped.
  • Untick and they're gone. The stamps are planned separately from the rest of the import, so clearing the checkbox drops them without changing anything else in the plan.

The right sidebar's Details section is unrelated to this: Words, Characters, Read time, File size, Created, and Updated are all derived from the note itself, and no import writes to them. Note that "Created" reflects the original file's timestamp only for Bear and Simplenote, which are the two adapters that supply one; every other source falls back to the time the import ran.

Provenance was always tracked, just invisibly

Independently of this checkbox, every import records a durable receipt per note

  • provider, source key, source path - which is what the skip/update/copy re-import handling matches against. The property is what makes that visible in the note itself.

What the report tells you

The apply step is atomic - every operation commits together - and finishes with a report that names what it could not do faithfully, not just what worked. Expect lines covering notes created, updated, and skipped; folders and tags created; notes stamped with their import source; images imported; remote images blocked from loading; ambiguous or unresolved wiki-links kept as source text; notes preserved in raw mode because they used unsupported Markdown; unreadable files skipped; and unsupported attachments skipped by name.

If a note's Markdown can't be represented losslessly, v2 preserves it raw rather than dropping the parts it doesn't understand, and says so in the report.

Where this lives in the repo

PiecePath
Source adapters and detectionv2/app/src/import/sources
Plan constructionv2/app/src/import/plan.ts
Preview UIv2/app/src/import/import-preview-host.tsx
Picker, staging, commit, reportv2/app/src/export/markdown-transfer.ts
Native pickers and source stagingv2/app/src-tauri/src/lib.rs

On this page