🧪 Skills

obsidian-curator

Manage Obsidian vaults via LiveSync CouchDB — capture notes, AI-enrich and file them, manage tasks, audit and tidy vault structure. Use when working with Obs...

v0.1.1
❤️ 0
⬇️ 444
👁 1
Share

Description


name: obsidian-curator description: Manage Obsidian vaults via LiveSync CouchDB — capture notes, AI-enrich and file them, manage tasks, audit and tidy vault structure. Use when working with Obsidian vaults through CouchDB/LiveSync (not local filesystem). Requires CouchDB with Obsidian LiveSync plugin. AI features (process, file) need an AI provider configured; capture, audit, tidy, and tasks work rule-based without any API key. metadata: openclaw: emoji: "📋" requires: bins: ["obsidian-curator"] install: - id: node kind: node package: obsidian-curator bins: ["obsidian-curator"] label: "Install obsidian-curator (npm)"

obsidian-curator

Manage Obsidian vaults through the CouchDB database that powers Obsidian LiveSync. Capture, process, file, audit, tidy, and manage tasks — all via CLI or Node.js API.

Prerequisites: CouchDB with LiveSync configured, E2EE disabled.

Security & Trust

  • Open source: github.com/philmossman/obsidian-curator (MIT)
  • npm provenance: Published via GitHub Actions OIDC with Sigstore attestation — cryptographically verifiable build provenance
  • No lifecycle scripts: No preinstall, install, or postinstall scripts — npm install only copies files
  • Minimal dependencies: Only nano (CouchDB client) and date-fns (date parsing)
  • Local network only: Connects to your CouchDB instance (user-configured host/port). No external telemetry, no phone-home, no data leaves your network
  • Credentials: Stored locally in ~/.obsidian-curator/config.json — never transmitted except to your own CouchDB
  • E2EE note: LiveSync E2EE must be disabled because the tool reads/writes vault documents directly via CouchDB. This is a LiveSync architectural requirement, not a security compromise by this tool

Setup

Run the interactive wizard — it tests the CouchDB connection live:

obsidian-curator init

Configures: CouchDB connection, vault structure preset (PARA/Zettelkasten/Johnny Decimal/Flat/Custom), AI provider (OpenAI/Anthropic/Ollama/None), task projects.

Config location: ~/.obsidian-curator/config.json

Commands

Capture (no AI needed)

obsidian-curator capture "Quick thought about project X"
obsidian-curator capture "Meeting notes from standup" --source meeting

Process inbox (AI required)

Enrich inbox notes with tags, summary, and suggested folder:

obsidian-curator process
obsidian-curator process --limit 5 --dry-run
obsidian-curator process --force   # re-process already-processed notes

File notes (AI required)

Route processed notes to canonical vault folders:

obsidian-curator file
obsidian-curator file --dry-run --min-confidence 0.8

Audit (no AI needed)

Check vault structure against configured canonical folders:

obsidian-curator audit

Tidy (AI optional)

Find duplicates, structure violations, dead notes. With AI, ambiguous cases are triaged automatically:

obsidian-curator tidy --dry-run
obsidian-curator tidy --checks dupes,stubs

Tasks (no AI needed)

obsidian-curator tasks                          # list open tasks
obsidian-curator tasks --project Work --priority high
obsidian-curator task "call dentist next Tuesday"   # create task (parses dates, priority, project)
obsidian-curator done "dentist"                     # mark done by partial title match

Config

obsidian-curator config show
obsidian-curator config set ai.provider ollama
obsidian-curator config set vault.host 192.168.1.100

Programmatic API

const { VaultClient, Curator, createAIAdapter, loadConfig } = require('obsidian-curator');

const config = loadConfig();
const vault = new VaultClient(config.vault);
await vault.ping();
const ai = createAIAdapter(config);
const curator = new Curator({ vault, ai, config });

await curator.capture('Quick thought');
await curator.process({ limit: 5 });
await curator.file({ dryRun: true });
await curator.audit();
await curator.tidy({ checks: ['dupes', 'stubs'], dryRun: true });

const tasks = await curator.tasks({ status: 'open', project: 'Work' });
await curator.createTask('call Alice next Friday');
await curator.taskBrief();  // markdown summary

AI Providers

Provider Cost Privacy Setup
none Free Local Default — rule-based features only
ollama Free Local config set ai.provider ollama + model name
openai Pay-per-use Cloud config set ai.provider openai + API key
anthropic Pay-per-use Cloud config set ai.provider anthropic + API key
Custom/OpenRouter Varies Varies Use openai provider with custom baseUrl

Vault Structure Presets

  • PARA: inbox → Projects / Areas / Resources / Archives
  • Zettelkasten: inbox → Slipbox / References / Projects / Archives
  • Johnny Decimal: inbox → numbered category folders (00-09, 10-19, ...)
  • Flat: inbox only, no enforced structure
  • Custom: define your own canonical folders

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs