Skip to content
Developer Codex
Getting Started

Import Existing Content

Your lore doesn’t always start in Inklings. Maybe you’ve been keeping notes in Obsidian for two years, or you have a folder of markdown files you’ve been accumulating since before you had a system. Either way, you don’t have to start over — Inklings can import your existing content and turn it into a proper workspace.

This tutorial walks you through the import dialog from start to finish: selecting your source, reviewing the preview, choosing how conflicts are handled, and verifying the result.

The import system reads from a folder on your local filesystem. A few things to have ready:

  • A source folder, Obsidian vault, AnyType export, or Notion export at a known path on your machine
  • No inklings.db file in the source folder — that means the folder is already an Inklings workspace. Open it directly instead of importing it.

Inklings supports four source types, and it detects which one you have automatically:

  • Markdown Folder — any directory of .md files
  • Obsidian Vault — a directory containing a .obsidian subdirectory
  • AnyType Export — an AnyType native markdown export (contains objects/ and types/ directories)
  • Notion Export — a Notion markdown and CSV export (files with 32-character hex ID suffixes)

The import dialog shows you which type was detected before you commit to anything.

Open the import dialog via File → Import or the import action in the sidebar. The dialog has three stages: select a source, review a preview, and confirm.

Navigate to your Obsidian vault directory — the folder that contains the .obsidian subdirectory. The dialog detects the .obsidian marker and identifies it as an Obsidian Vault.

If you enter a path that doesn’t exist, the dialog shows a validation error and won’t proceed. If you accidentally select a file rather than a folder, the same thing happens. The preview step only appears once the source path is valid.

Before anything is imported, the dialog analyzes your source and shows you what it found:

  • File count — how many .md files will be imported as pages
  • Folder count — how many subdirectories (which become parent pages in the hierarchy)
  • Wiki-link count (Obsidian only) — how many [[PageName]] references will be converted to Inklings wiki-link format

For Obsidian vaults, the preview shows the wiki-link count because the import converts Obsidian’s [[PageName]] syntax to Inklings’s [[Display|slug]] format. After import, those links resolve and navigate correctly between the imported pages.

An empty folder is valid — the import completes without error but creates zero pages.

If your workspace already has pages with the same slug as files in your import source, you need to decide what happens:

StrategyWhat it does
SkipLeaves your existing pages unchanged. Imported files with conflicting slugs are skipped and reported in the summary.
RenameImports the conflicting file with a modified slug (e.g., hero-1). Both your existing page and the new import coexist with different slugs.

If no conflicts exist, this choice doesn’t matter — all files are imported cleanly.

Click Import to start. The dialog shows a progress state while the import runs, then transitions to a completion summary showing:

  • How many pages were imported
  • How many were skipped (if any)

After import, the new workspace opens with the imported pages visible in the sidebar. If your source had a nested folder structure, the sidebar mirrors it — subdirectories become parent pages containing child pages.

If you imported an Obsidian vault with [[wiki-link]] references, open a page that contained links and check that they resolved.

  1. Open a page you know had outgoing Obsidian links.
  2. Look for wiki-link pills in the content — they should appear as styled inline elements, not as raw [[...]] text.
  3. Click a link to confirm it navigates to the target page.

Links that resolved correctly appear with normal styling. If a link pointed to a page that wasn’t in the import (or didn’t match any imported slug), it appears with ghost styling — the same dimmed, dashed appearance that new unresolved links show. This isn’t an error; it means the target page genuinely doesn’t exist yet in this workspace.

After a successful import:

  • Every .md file became a page, with the filename as the page title
  • Folder structure became page hierarchy — regions/thornwall-keep.md becomes the Thornwall Keep page nested under a Regions page
  • The event log records creation events for each imported page, giving you an audit trail of when the content arrived

When importing an AnyType export, the import system:

  • Detects object types from your AnyType frontmatter (Character, Note, Task, etc.) and shows them in the preview with suggested type mappings
  • Converts object links from AnyType’s [Title](File.md) markdown format to Inklings wiki-links, preserving your knowledge graph
  • Imports Sets and Collections as Folder pages containing links to their member objects
  • Extracts metadata including tags, titles, icons, and relation values from YAML frontmatter
  • Maps object types to Inklings page types with pre-populated suggestions (Note to Page, Task to Task, Set to Folder)
AnyType featureWhat happens in Inklings
Object typesMapped to Inklings page types (customizable in the type mapping step)
Object linksConverted to wiki-links with backlink support
Relations (typed)Converted to wiki-links. Relation type names are not preserved — a “created by” and “member of” relation both become plain links.
Sets and CollectionsBecome Folder pages with links to their members. Filter and sort settings are not preserved.
TagsImported as Inklings tags
Images and filesImported as attachments from the files/ directory
TemplatesSkipped (not imported as pages)
  • Relation types are lost: AnyType’s typed relations (e.g., “blocks”, “created by”) become plain wiki-links. The link exists but the relationship type is not preserved.
  • Set/Collection queries are not preserved: Only the membership list is imported, not the filter or sort configuration.
  • Some block types may convert imperfectly: LaTeX equations become code blocks, toggle blocks become blockquotes.

When importing a Notion markdown and CSV export, the import system:

  • Strips UUID suffixes from all filenames and folder names, producing clean page slugs
  • Converts internal links from Notion’s URL-encoded relative paths to Inklings wiki-links
  • Converts callout blocks from HTML <aside> tags to standard markdown blockquotes with bold emoji
  • Converts toggle blocks from HTML <details> / <summary> to bold headings with flattened content
  • Parses database properties from CSV sidecar files and inline Property: Value lines
  • Extracts tags from database properties
  • Detects databases and shows a summary of each database with row counts and property names
Notion featureWhat happens in Inklings
UUID filenamesStripped — My Page abc123.md becomes my-page
Internal linksConverted to wiki-links with backlink support
Callout blocksConverted to blockquotes: {> emoji text}
Toggle blocksFlattened to bold headings with content
Database CSVsParsed for property extraction and type mapping
Database propertiesStored as page metadata
Images/filesImported as attachments from page subdirectories
External linksPreserved unchanged
  • Notion.so URLs are not resolved: Links in the form https://notion.so/Page-Title-abc123 are preserved as external links rather than converted to wiki-links.
  • Computed properties lose their formulas: Rollups, formulas, and computed database properties are imported as plain text values.
  • Database views are not preserved: Only the raw data from the CSV is imported, not filters, sorts, or view configurations.
  • Synced blocks and embeds are dropped: These Notion-specific features have no standard markdown equivalent.

Any tool that can export to markdown files can be imported through the markdown folder workflow.

Was this page helpful?