Auto Note Importer
approvedby uppinote20
Automatically import notes from an external database like Airtable into your Vault.
Auto Note Importer
Import and sync notes bidirectionally between Airtable, SeaTable, and your Obsidian vault with smart field mapping and organization features. Built on a provider-agnostic core; more databases (Supabase, Notion, Custom API) tracked in #11.
✨ Key Features
- Multiple Databases: Airtable and SeaTable supported today; pluggable provider architecture for more
- Bidirectional Sync: Sync notes from your remote database to Obsidian and back
- Multi-Config: Run several sync configurations (different bases / tables / folders) side-by-side
- Computed-Field Support: Auto-fetch formula / rollup / lookup / link-formula values after pushing
- Conflict Resolution:
Manual,Obsidian wins,Remote winsmodes - Smart Field Selection: Type-aware dropdowns; provider-specific safe-for-filename whitelist
- Subfolder Organization: Auto-organize notes into subfolders based on a field value
- Safe File Naming: Per-provider validation (text / select / number / formula / auto-number)
- Template Support:
{{fieldName}}placeholders with nested-property access - Obsidian Bases Compatible: YAML output tuned for table/card views
- Automated Syncing: Manual sync, scheduled intervals, or auto on file change
- Zero Coding Required: Point-and-click setup with intuitive UI
📦 Installation
- Open Obsidian
- Go to Settings → Community plugins → Browse
- Search for "Auto Note Importer" and install it
- Enable the plugin
- Add a credential for your provider (Airtable PAT or SeaTable API Token), then configure a sync configuration
🚀 Quick Start
1. Get Your Provider Credentials
Airtable
- Visit the Airtable Tokens page
- Click Create new token
- Select scopes:
data.records:read— required for importingdata.records:write— required for bidirectional syncschema.bases:read— required for field selection
- Choose your bases and click Create token
- Copy the Personal Access Token
SeaTable
- Open your SeaTable Base → More options (⋯) → Advanced settings → API Tokens → Add API Token
- Pick Read and write permission
- Copy the API Token (it is base-specific)
- Note your server URL (default:
https://cloud.seatable.io; self-hosted users use their own host)
2. Configure the Plugin
- Open Settings → Auto Note Importer
- Add credential — pick the provider type (Airtable / SeaTable) and paste your token
- The connection card adapts to your selected credential. Fill in:
- Airtable: Base → Table → View (optional) → Filename / Subfolder fields
- SeaTable: Table ID → View ID (optional) → Filename / Subfolder column names
- Destination folder in your vault
- Template — optional
{{fieldName}}template - Bidirectional sync — toggle if you want changes flowing both ways
You can have multiple configurations (e.g. one for Airtable, one for SeaTable, or two SeaTable bases) — switch between them with the tab bar at the top of the settings panel.
3. Sync Notes
Use Command Palette (Ctrl/Cmd + P). Each command is labeled with the active config's provider:
| Command | Description |
|---|---|
| Sync current note from {provider} | Refresh current note from the remote database |
| Sync all notes from {provider} | Import / update all notes |
| Sync current note to {provider} * | Push current note changes |
| Sync modified notes to {provider} * | Push pending changes |
| Sync all notes to {provider} * | Push every note |
| Bidirectional sync current note * | Push, wait for formulas, then pull |
| Bidirectional sync modified notes * | Same for modified notes |
| Bidirectional sync all notes * | Same for all notes |
* Commands marked with * require Enable bidirectional sync to be turned on. They are hidden from Command Palette when disabled.
You can also schedule syncs:
- Sync interval: minutes (0 = manual only)
- Watch for changes: detect file edits and queue automatic sync
⚙️ Settings Guide
Per-Configuration Basics
| Setting | Description |
|---|---|
| Credential | Pick a registered credential (Airtable / SeaTable) |
| Base / Table / View (Airtable) | Selectable from your base via the Meta API |
| Table / View ID (SeaTable) | Identifiers from your SeaTable base — auto-derived dropdowns are tracked in #73 |
| Filename Field | Field used for note filenames (safe types only) |
| Subfolder Field | Optional — organize notes into subfolders |
| New File Location | Destination folder in your vault |
| Template File | Custom template (optional) |
| Sync Interval | Auto-sync frequency in minutes (0 = disabled) |
| Allow Overwrite | Update existing notes vs skip duplicates |
Bidirectional Sync
| Setting | Description |
|---|---|
| Enable bidirectional sync | Allow Obsidian → remote pushes |
| Conflict resolution | Manual, Obsidian wins, Remote wins |
| Watch for file changes | Auto-detect Obsidian edits and queue sync |
| Auto-sync computed fields | After push, fetch formulas / rollups / lookups |
| Computed-field sync delay | ms to wait for the remote to recompute (default: 1500) |
Supported Field Types
The plugin maps each provider's native types to a normalized taxonomy (text / number / date / boolean / single-select / multi-select / attachment / link / computed / system). Each provider's FieldTypeMapper decides which types are filename-safe and which are read-only (excluded from push) — fail-closed for unknown types.
Airtable
✅ Safe for Filenames & Subfolders: singleLineText, singleSelect, number, formula
🔒 Read-only (synced from Airtable only): formula, rollup, count, lookup, externalSyncSource, aiText, button, createdTime, lastModifiedTime, createdBy, lastModifiedBy, autoNumber
📋 Complete Airtable Field Type Reference →
SeaTable
✅ Safe for Filenames & Subfolders: text, single-select, number, auto-number, formula
🔒 Read-only (synced from SeaTable only): formula, link-formula, button, ctime, mtime, creator, last-modifier, auto-number
Unsupported / read-only fields are automatically hidden in dropdowns to prevent push errors.
🔄 How It Works
Unique Identification
Each note carries the remote record id in the primaryField frontmatter key — the immutable handle the sync pipeline uses to match notes back to their remote row.
File Naming Logic
- Use the selected Filename Field if present and non-empty
- Fallback to the remote record id
- All filenames are sanitized for cross-platform compatibility
Subfolder Organization
- With Subfolder Field:
destination/field-value/note.md - Without Subfolder Field:
destination/note.md - Supports nested folders (e.g. "Category/Subcategory")
- Recursive duplicate detection across all subfolders
Bidirectional Sync Flow
┌─────────────┐ Push ┌──────────────┐
│ Obsidian │ ───────────▶ │ Remote DB │
│ (Notes) │ │ (Airtable / │
│ │ ◀─────────── │ SeaTable) │
└─────────────┘ Pull └──────────────┘
- Obsidian → Remote: edit frontmatter, sync pushes writable fields
- Server-side computation: the remote computes formulas / rollups / link-formulas
- Remote → Obsidian: pull back computed values to update notes
Conflict Resolution
When the same field is modified in both Obsidian and the remote:
| Mode | Behavior |
|---|---|
| Manual | Show notification, skip conflicting fields |
| Obsidian wins | Overwrite the remote with Obsidian values |
| Remote wins | Keep remote values, ignore Obsidian changes |
📝 Template Usage
Create custom note templates using {{fieldName}} placeholders:
---
title: "{{Title}}"
status: "{{Status}}"
author: "{{Author.name}}"
created: "{{Created time}}"
---
# {{Title}}
## Summary
{{Summary}}
## Content
{{Description}}
## Attachments
{{Attachment.0.url}}
Advanced Features:
- Nested Access:
{{Attachment.0.url}},{{User.name}} - Multi-line Support: Automatic YAML block-scalar formatting
- Bases Optimization: Proper YAML types for table/card views
📝 Template Examples & Best Practices →
🔗 Obsidian Bases Integration
This plugin emits Bases-compatible YAML frontmatter with proper data types for seamless table/card view editing. Import your notes, enable the Bases plugin, and create a database from the imported folder for powerful data management workflows.
📊 Example Workflows
One-way Import
- Collect data with automation tools (n8n, Zapier, Apps Script)
- Store in Airtable or SeaTable
- Import to Obsidian via this plugin
- Organize automatically using Subfolder Field
- Manage in Obsidian Bases (table/card view)
Bidirectional Workflow
- Import records as Obsidian notes
- Edit frontmatter fields in Obsidian (status, tags, notes)
- Push changes back to the remote
- Compute formulas / rollups / link-formulas server-side
- Pull computed values back into Obsidian
🛠️ Troubleshooting
Common Issues:
- No fields showing: re-check token permissions and base/table selection
- Sync fails: verify network connection and credentials
- File naming errors: confirm the selected field type is supported (per-provider whitelist)
- Missing subfolders: check the subfolder field value isn't empty
- Bidirectional sync not working: ensure write permissions (Airtable PAT
data.records:write; SeaTable token "Read and write") - Formulas not updating: increase the computed-field sync delay
- Conflicts detected: check conflict resolution mode
Provider-specific Tips:
- Airtable: read-only fields (formulas, rollups) are auto-excluded from push. Use Obsidian wins for faster sync (skips conflict detection).
- SeaTable: API tokens are base-specific. Each token grants access to exactly one base — get a separate token per base. Self-hosted users override
Server URLper credential.
☕ Support
If you find this plugin useful, support development:
📄 License
MIT License
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.