agentsclimarketplace

Notion importer

Skill Enakoneschniy/claude-dev-stack/skills/notion-importer

One command to set up a complete AI-powered development workflow with Claude Code. Persistent memory, session management, 35+ CLI tools.

Install
npx -y skills add Enakoneschniy/claude-dev-stack --skill notion-importer

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Import Notion pages into project vault via MCP. Trigger when user wants to import or sync Notion content into the vault: "import notion", "notion docs", "sync notion", "импортируй notion", "обнови notion", "sync notion pages", "обнови notion docs". Uses the claude.ai Notion MCP server (notion-fetch tool) directly from a live Claude session. Does NOT spawn subprocesses.

SKILL.md

3.4 KB, as published. Nobody here has run it

Notion Importer Skill

Import Notion pages into the project vault using the claude.ai Notion MCP server. This skill calls MCP tools directly from a live Claude session — no subprocess needed.

Trigger Phrases

English: "import notion", "notion docs", "sync notion", "sync notion pages", "import notion pages" Russian: "импортируй notion", "обнови notion", "обнови notion docs", "синхронизируй notion"

Required Setup

The project must have .claude/notion_pages.json configured. Run claude-dev-stack notion add <url> to add pages.

Import Steps

  1. Read config: Load .claude/notion_pages.json to get the list of pages.
cat .claude/notion_pages.json
  1. Fetch each page: For each page in config.pages, call the notion-fetch MCP tool with the page_id to retrieve markdown content. Use the MCP tool directly:
notion-fetch(page_id: "<page_id>")

Or use notion-search MCP tool if you need to locate pages by title.

  1. Determine vault path: Use the vault_path field from the page config (default: docs/notion). Resolve against the vault project directory: vault/projects/{project-slug}/docs/notion/

  2. Write with provenance: Each imported file gets a frontmatter stamp:

---
notion_page_id: <page_id>
notion_last_synced: <ISO timestamp>
notion_content_hash: <SHA-256 of content below frontmatter>
---

<page content>
  1. 3-way hash check (overwrite protection, per D-06):

    • If file does not exist → create it with stamp (status: created)
    • If notion_content_hash in frontmatter matches hash of new content → skip (status: unchanged)
    • If local body hash matches stored notion_content_hash (no local edits) → overwrite in place (status: updated)
    • If local body hash differs from stored notion_content_hash (local edits detected) → write {filename}.notion-update.md sibling and warn (status: conflict)
  2. Filename convention: Use the page title for the filename, cleaned with the same rules as cleanNotionFilename() in lib/docs.mjs — strip Notion UUID suffixes, lowercase, replace spaces with hyphens. Example: My Page abc123...my-page.md

  3. Report results: Print a summary of created/updated/unchanged/conflict counts.

Important Notes

  • Use MCP tools directly — call notion-fetch or notion-search from the Claude session. Do NOT spawn node, claude mcp call, or any subprocess.
  • The notion_pages.json config is per-project (.claude/notion_pages.json).
  • After import, existing notebooklm sync picks up the new files automatically.
  • If the Notion MCP server is not configured, run: claude mcp add notion
  • Check MCP status: claude mcp list

Example Session

User: импортируй notion
Claude: [reads .claude/notion_pages.json]
        [calls notion-fetch(page_id: "abc123...") via MCP]
        [writes vault/projects/myproject/docs/notion/my-page.md with frontmatter]
        Summary: 1 created, 0 updated, 0 unchanged, 0 conflicts

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.