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
| Flag | Description |
|---|
--database-id | Notion database ID (required for MCP) |
--prefix | Path prefix in KiwiFS |
--limit | Max records to import |
--dry-run | Preview without writing |
Setup
- Create a Notion integration and copy the API key.
- Share your database with the integration.
- 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
| Flag | Description |
|---|
--base-id | Airtable base ID (required for MCP) |
--table-id | Airtable table ID (required for MCP) |
--prefix | Path prefix in KiwiFS |
--limit | Max records to import |
Setup
- Create a personal access token in Airtable.
- 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
| Flag | Description |
|---|
--spreadsheet-id | Google Sheets spreadsheet ID (required) |
--sheet | Sheet name (defaults to first sheet) |
--credentials | Path to Google service account JSON (or set GOOGLE_APPLICATION_CREDENTIALS) |
--id-column | Column to use as filename |
--prefix | Path 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
| Flag | Description |
|---|
--path | Path to the Obsidian vault directory (required) |
--prefix | Path 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
| Flag | Description |
|---|
--url | Confluence base URL (required) |
--prefix | Path prefix in KiwiFS |
--limit | Max 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