Install
openclaw skills install openclaw-notion-syncSync local workspace directories and files to Notion pages using the notion-sync CLI or programmatic API. Use when the user wants to push files to Notion, mirror a directory structure into Notion, initialize notion-sync config, manage ignore patterns, or check sync status.
openclaw skills install openclaw-notion-syncCLI and library for syncing a local directory tree into Notion. Folders become Notion pages, files become sub-pages with content.
npm install -g @kitakitsune/notion-sync
Requires Node.js >= 18.
notion-sync init --token ntn_xxx --page <notion-page-id> [--dir <path>]
.notion-sync.json in the target directorynotion-sync sync # sync everything
notion-sync sync --dry-run # preview changes
notion-sync sync --diff # only sync changed files
notion-sync sync --dir /some/path # sync a specific directory
notion-sync status # show sync state
notion-sync ignore list # list ignore patterns
notion-sync ignore add "*.env" # add ignore pattern
node_modules, .git, dist, .notion-sync.json, *.lock, *.log
import { syncWorkspace, initConfig, loadConfig, saveConfig } from '@kitakitsune/notion-sync';
import type { NotionSyncConfig } from '@kitakitsune/notion-sync';
const config = loadConfig(process.cwd());
const result = await syncWorkspace(config, { dryRun: false, diffOnly: true });
// result.pushed - files that were synced
// result.skipped - files unchanged (when diffOnly)
// result.errors - files that failed
src/
cli.ts - Commander.js CLI (init, sync, ignore, status)
sync.ts - Core sync logic, Notion API calls, checksum diffing
config.ts - Load/save/init .notion-sync.json
types.ts - NotionSyncConfig interface
index.ts - Public API exports
bin/
notion-sync.js - CLI entry point
.notion-sync.json under checksums field. Used by --diff to skip unchanged files.folderCache avoids redundant API calls..notion-sync.json:
{
"path": "/absolute/path",
"notion": {
"token": "ntn_...",
"rootPageId": "page-id"
},
"ignore": ["node_modules", ".git", "dist", ".notion-sync.json", "*.lock", "*.log"],
"checksums": { "src/index.ts": "md5hash" }
}
npm run dev # watch mode (tsup)
npm run build # production build
Build uses tsup to bundle TypeScript to ESM format. Output goes to dist/.