Skip to main content
KiwiFS can import data from third-party SaaS platforms, converting records into markdown pages.

Notion

Import pages from a Notion database.
kiwifs import --from notion \
  --prefix knowledge/ \
  --root ./knowledge
FlagDescription
--database-idNotion database ID (required for MCP)
--prefixPath prefix in KiwiFS
--limitMax records to import
--dry-runPreview without writing

Setup

  1. Create a Notion integration and copy the API key.
  2. Share your database with the integration.
  3. Set the NOTION_API_KEY environment variable.
export NOTION_API_KEY="ntn_..."
kiwifs import --from notion --root ./knowledge

MCP usage

{
  "tool": "kiwi_import",
  "arguments": {
    "from": "notion",
    "database_id": "abc123...",
    "prefix": "notion-pages/"
  }
}

Airtable

Import records from an Airtable base.
kiwifs import --from airtable \
  --prefix records/ \
  --root ./knowledge
FlagDescription
--base-idAirtable base ID (required for MCP)
--table-idAirtable table ID (required for MCP)
--prefixPath prefix in KiwiFS
--limitMax records to import

Setup

  1. Create a personal access token in Airtable.
  2. Set the AIRTABLE_API_KEY environment variable.
export AIRTABLE_API_KEY="pat..."
kiwifs import --from airtable --root ./knowledge

MCP usage

{
  "tool": "kiwi_import",
  "arguments": {
    "from": "airtable",
    "base_id": "app...",
    "table_id": "tbl...",
    "prefix": "airtable/"
  }
}

Google Sheets

Import rows from a Google Sheets spreadsheet.
kiwifs import --from gsheets \
  --spreadsheet-id "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms" \
  --sheet "Sheet1" \
  --prefix gsheets/ \
  --root ./knowledge
FlagDescription
--spreadsheet-idGoogle Sheets spreadsheet ID (required)
--sheetSheet name (defaults to first sheet)
--credentialsPath to Google service account JSON (or set GOOGLE_APPLICATION_CREDENTIALS)
--id-columnColumn to use as filename
--prefixPath prefix in KiwiFS
The first row is treated as column headers.

Obsidian

Import an Obsidian vault into KiwiFS, preserving wiki-links and frontmatter.
kiwifs import --from obsidian \
  --path ~/my-vault \
  --prefix vault/ \
  --root ./knowledge
FlagDescription
--pathPath to the Obsidian vault directory (required)
--prefixPath prefix in KiwiFS
Obsidian’s [[wiki-link]] syntax is preserved — KiwiFS uses the same link format natively.

Confluence

Import pages from a Confluence space.
kiwifs import --from confluence \
  --url "https://your-domain.atlassian.net" \
  --prefix confluence/ \
  --root ./knowledge
FlagDescription
--urlConfluence base URL (required)
--prefixPath prefix in KiwiFS
--limitMax pages to import
Confluence import uses the Confluence REST API. Authenticate via API token set as environment variable or passed through the Airbyte connector for richer sync. See Airbyte import.

Re-import behavior

All SaaS imports are idempotent. KiwiFS uses _source_id in frontmatter to track which records have been imported. Re-running an import:
  • Skips records that haven’t changed
  • Updates records with new field values
  • Creates new records that weren’t imported before
Use --dry-run to preview changes before writing:
kiwifs import --from notion --dry-run
Last modified on May 31, 2026