███╗ ██╗ ██████╗ ████████╗██╗
████╗ ██║██╔═══██╗╚══██╔══╝██║
██╔██╗ ██║██║ ██║ ██║ ██║
██║╚██╗██║██║ ██║ ██║ ██║
██║ ╚████║╚██████╔╝ ██║ ██║
╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝
Your Notion workspace just got a brain.
Noti is a Claude Code skill that lets Claude read, write, search, and rearrange your Notion workspace like it owns the place. Need a page converted to Markdown? Done. Want to create 20 sub-pages from a research doc? Say the word. Upload a diagram? Already there.
No browser tabs. No copy-paste. No "let me just check Notion real quick." Just type /noti and go.
| Command | What happens |
|---|---|
noti list |
Shows every page and database your integration can see |
noti read <url> |
Reads a page's full content — properties, body, everything |
noti search <query> |
Searches across your entire workspace |
noti convert <url> [file] |
Converts a Notion page to clean Markdown with YAML frontmatter |
noti create <parent> <title> [md] |
Creates a sub-page, optionally from a Markdown file |
noti write <url> <file> |
Appends Markdown content to an existing page |
noti delete <id> |
Archives a page or block |
noti blocks <url> |
Lists all block IDs in a page (for surgical edits) |
noti link <parent> [after] |
Inserts a linked list of child pages |
noti icon <url> [--emoji] [--cover-url] |
Sets page icon and/or cover image |
noti image <url> <file> [caption] |
Uploads a local image and adds it to a page |
Page IDs, full Notion URLs, or UUIDs — noti eats them all.
| Skill | What it does |
|---|---|
/noti |
Master mode — researches, cross-checks, asks before writing |
/noti-list |
List pages and databases |
/noti-read <url> |
Read a page |
/noti-search <query> |
Search the workspace |
/noti-convert <url> [file] |
Page to Markdown |
/noti-write <parent> <file> |
Create or append content |
bash skill/install.shThe installer will:
- Ask for your Notion API key (or reuse the existing one)
- Copy the runtime to
~/.claude/tools/noti/ - Install dependencies
- Register all
/noti-*skills in~/.claude/skills/
- Go to notion.so/my-integrations
- Create a new integration — enable Read, Update, and Insert content
- Copy the Internal Integration Token (
ntn_...) - Share pages with your integration: Page → ··· → Connections → Add your integration
~/.noti/config.json Your API key lives here
~/.claude/tools/noti/ Runtime (index.js + node_modules)
~/.claude/skills/noti-*/ Skill definitions (one SKILL.md per command)
Config precedence: ~/.noti/config.json > ~/.claude/tools/noti/.env > process.env
Just two:
@notionhq/client— official Notion SDKdotenv— env fallback
No frameworks. No build step. One file. index.js does everything.
cd skill/
NOTION_API_KEY=ntn_... node index.js list
NOTION_API_KEY=ntn_... node index.js search "my page"
NOTION_API_KEY=ntn_... node index.js convert <page-url> output.mdMIT
Built by Turing Labs — because alt-tabbing to Notion is a skill issue.