# pi-notion

Notion integration for [Pi Coding Agent](https://shittycodingagent.ai) — search, fetch, create, and update Notion pages as Markdown.

## Installation

```bash
pi install npm:pi-notion
```

## Features

### Tools

| Tool | Description |
|------|-------------|
| `notion_search` | Search pages and databases by title |
| `notion_fetch` | Fetch a page by ID, convert blocks to Markdown, save as `.md` |
| `notion_create` | Create a new page from Markdown content |
| `notion_update` | Replace a page's content with new Markdown |
| `notion_databases` | List or query Notion databases |

### TUI Config Editor

Run `/notion-config` inside Pi to interactively set your API token and options — no JSON editing needed.

### Bi-directional Markdown ↔ Notion Blocks

- **Notion → Markdown**: Headings, lists, code blocks, tables, callouts, toggles, images, bookmarks, equations, and more
- **Markdown → Notion**: Headings, lists, code blocks, quotes, checkboxes, images, dividers
- YAML frontmatter with page metadata (ID, URL, timestamps)

## Configuration

Credentials are loaded from (in priority order):

1. `.pi/notion.json` (project-local)
2. `~/.pi/agent/notion.json` (global)
3. Environment variables: `NOTION_API_TOKEN`, `NOTION_OUTPUT_DIR`

### Config format

```json
{
  "apiToken": "ntn_xxxxx",
  "outputDir": "./notion-docs",
  "notionVersion": "2022-06-28"
}
```

You can reference environment variables with the `ENV:` prefix:

```json
{
  "apiToken": "ENV:NOTION_API_TOKEN",
  "outputDir": "./notion-docs"
}
```

### Setup

1. Create an integration at https://www.notion.so/my-integrations
2. Copy the **Internal Integration Secret** (`ntn_...`)
3. Share pages/databases with your integration in Notion (⋯ → Connections → Add)
4. Run `/notion-config` in Pi or create the config file manually

## Usage Examples

```
> Search my workspace for API docs
  → notion_search query="API docs"

> Download the onboarding guide
  → notion_fetch pageId="abc123-def456"

> Create a meeting notes page
  → notion_create parentPageId="..." title="Sprint Review 2025-03" content="## Highlights\n- ..."

> Update the runbook
  → notion_update pageId="..." content="## Updated Runbook\n..."

> List all databases
  → notion_databases action="list"

> Query a task tracker
  → notion_databases action="query" databaseId="..."
```

## License

MIT
