---
name: notion-writer
description: Push markdown content to Notion pages or databases. Supports appending to pages, replacing page content, creating database rows, listing accessible content, and getting page/database info. Use when working with Notion documentation, saving reports to Notion, or managing Notion content programmatically.
allowed-tools: Read, Glob, Grep, Write, Edit, Bash
---

# Notion Writer Skill

Push markdown content to Notion pages or databases via Claude Code.

## Prerequisites

- Python virtual environment at `~/Project/claude-skills-factory/custom-skills/02-notion-writer/code/scripts/venv`
- Notion API key configured in `.env` file
- Target pages/databases must be shared with the integration

## Quick Start

```bash
cd ~/Project/claude-skills-factory/custom-skills/02-notion-writer/code/scripts
source venv/bin/activate
```

## Commands

### Test Connection
```bash
python notion_writer.py --test
```

### List Accessible Content
```bash
python notion_writer.py --list
python notion_writer.py --list --filter pages
python notion_writer.py --list --filter databases
```

### Get Page/Database Info
```bash
python notion_writer.py -p PAGE_URL --info
python notion_writer.py -d DATABASE_URL --info
```

### Write to Page
```bash
# Append content
python notion_writer.py -p PAGE_URL -f content.md

# Replace content
python notion_writer.py -p PAGE_URL -f content.md --replace

# From stdin
cat report.md | python notion_writer.py -p PAGE_URL --stdin
```

### Create Database Row
```bash
python notion_writer.py -d DATABASE_URL -t "Entry Title" -f content.md
```

## Supported Markdown

| Markdown | Notion Block |
|----------|--------------|
| `# Heading` | Heading 1 |
| `## Heading` | Heading 2 |
| `### Heading` | Heading 3 |
| `- item` | Bulleted list |
| `1. item` | Numbered list |
| `- [ ] task` | To-do (unchecked) |
| `- [x] task` | To-do (checked) |
| `> quote` | Quote |
| `` ```code``` `` | Code block |
| `---` | Divider |
| Paragraphs | Paragraph |

## Workflow Example

Integrate with Jamie YouTube Manager to log video info:
```bash
# Check video and save to markdown
python jamie_youtube_api_test.py VIDEO_URL

# Write to Notion
python notion_writer.py -p LOG_PAGE_URL -f output/video_status.md
```
