notion
Create pages, search content, and manage Notion workspaces. Use when asked to create Notion pages, search Notion, add content to pages, or fetch Notion data.
Best use case
notion is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Create pages, search content, and manage Notion workspaces. Use when asked to create Notion pages, search Notion, add content to pages, or fetch Notion data.
Teams using notion should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/notion/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How notion Compares
| Feature / Agent | notion | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Create pages, search content, and manage Notion workspaces. Use when asked to create Notion pages, search Notion, add content to pages, or fetch Notion data.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Notion
Create pages, search content, fetch data, and add content to your Notion workspace. Connect your Notion account to manage pages, databases, and content programmatically.
## Requirements
- Install the `orth` CLI
- Connect your Notion workspace at https://orthogonal.com/dashboard/integrations
- OAuth connection must be active (HTTP 428 response means not connected)
## Actions
### Create Page
Create a new page in your Notion workspace.
```bash
orth run notion /create-page --body '{
"title": "Meeting Notes",
"parent_id": "parent-page-or-database-id"
}'
```
**Parameters:**
- `title` (required) - Page title
- `parent_id` (required) - Parent page or database ID where page will be created
- `icon` - Page icon (emoji or external URL)
- `cover` - Cover image URL for the page
### Search
Search for pages and databases in your Notion workspace.
```bash
orth run notion /search --body '{
"query": "meeting notes",
"filter_value": "page"
}'
```
**Parameters:**
- `query` - Search query text
- `filter_value` - Filter results by type (page, database)
- `direction` - Sort direction (ascending, descending)
- `timestamp` - Property to sort by timestamp
- `page_size` - Number of results per page
- `start_cursor` - Cursor for pagination
- `filter_property` - Property to filter by
### Fetch Data
Retrieve pages and databases from your Notion workspace.
```bash
orth run notion /fetch-data --body '{
"get_pages": true,
"page_size": 20
}'
```
**Parameters:**
- `query` - Optional search query
- `get_pages` - Retrieve pages (only one of get_pages, get_databases, get_all can be true)
- `get_databases` - Retrieve databases (only one of get_pages, get_databases, get_all can be true)
- `get_all` - Retrieve both pages and databases (only one of get_pages, get_databases, get_all can be true)
- `page_size` - Number of items per page
### Add Content
Add content blocks to an existing Notion page.
```bash
orth run notion /add-content --body '{
"parent_block_id": "page-block-id",
"content_blocks": [
{"type": "paragraph", "text": "This is a paragraph with **markdown** support."},
{"type": "heading_1", "text": "Main Heading"}
]
}'
```
**Parameters:**
- `parent_block_id` (required) - ID of the parent block/page to add content to
- `content_blocks` (required) - Array of content blocks to add (supports markdown)
- `after` - Insert content after specific block ID
## Usage Examples
**Create a new project page:**
```bash
orth run notion /create-page -b '{"title":"Q1 Project Plan","parent_id":"abc123-def456-ghi789","icon":"📋"}'
```
**Search for meeting notes:**
```bash
orth run notion /search -b '{"query":"team meeting","filter_value":"page","page_size":10}'
```
**Get all pages:**
```bash
orth run notion /fetch-data -b '{"get_pages":true,"page_size":50}'
```
**Get all databases:**
```bash
orth run notion /fetch-data -b '{"get_databases":true}'
```
**Add structured content:**
```bash
orth run notion /add-content -b '{"parent_block_id":"page123","content_blocks":[{"type":"heading_2","text":"Action Items"},{"type":"paragraph","text":"- Complete user testing\n- Update documentation\n- Schedule follow-up meeting"}]}'
```
**Add content with markdown:**
```bash
orth run notion /add-content -b '{"parent_block_id":"page456","content_blocks":[{"type":"paragraph","text":"This **important** note has [a link](https://example.com) and `inline code`."}]}'
```
## Content Block Types
When adding content, you can use these block types:
- `paragraph` - Regular text paragraph
- `heading_1` - Main heading (H1)
- `heading_2` - Section heading (H2)
- `heading_3` - Subsection heading (H3)
- `bulleted_list_item` - Bullet point
- `numbered_list_item` - Numbered list item
- `to_do` - Checkbox item
- `code` - Code block
- `quote` - Block quote
## Error Handling
- **HTTP 428** - Notion integration not connected. Visit https://orthogonal.com/dashboard/integrations to connect your workspace
- **400 Bad Request** - Invalid parameters or malformed content blocks
- **401 Unauthorized** - Invalid or expired Notion token
- **403 Forbidden** - Insufficient permissions for page or database
- **404 Not Found** - Page, database, or block does not exist
- **429 Rate Limited** - Notion API rate limit exceeded
- **validation_error** - Invalid block content or structure
## Tips
- Get parent_id from existing pages by using the search or fetch-data actions
- Page IDs can be found in the URL when viewing a page in Notion
- Content blocks support markdown formatting (bold, italic, links, code)
- Use only one of get_pages, get_databases, or get_all in fetch-data
- Icons can be emoji characters or external image URLs
- Search is case-insensitive and searches titles and content
- Pagination uses start_cursor from previous responses
- Block IDs are returned when creating pages or adding contentRelated Skills
yt-dlp-downloader
Download videos from YouTube, Bilibili, Twitter, and thousands of other sites using yt-dlp. Use when the user provides a video URL and wants to download it, extract audio (MP3), download subtitles, or select video quality. Triggers on phrases like "下载视频", "download video", "yt-dlp", "YouTube", "B站", "抖音", "提取音频", "extract audio".
slack
Send messages and manage Slack channels. Use when asked to send Slack messages, post to channels, list channels, or fetch message history.
yc-batch-evaluator
Evaluate YC batch companies for investment — scrapes the YC directory, researches each company and its founders (work history, LinkedIn, website), assesses founder-company fit, and exports to Google Sheets with priority rankings. Use when asked to evaluate YC companies, research a YC batch, screen startups, or do due diligence on YC companies.
website-screenshot
Take screenshots of websites and web pages
weather
Get current weather and forecasts using free APIs (no API key required). Use when asked about weather, temperature, forecasts, or climate conditions for any location.
weather-forecast
Get weather forecasts - temperature, precipitation, wind, and conditions
vhs-terminal-recordings
Create polished terminal GIF recordings using VHS (Video Hardware Software) by Charmbracelet. Use when asked to create terminal demos, CLI gifs, command-line recordings, or animated terminal screenshots for documentation, READMEs, or marketing.
verify-email
Verify if an email address is valid and deliverable
valyu
Web search, AI answers, content extraction, and async deep research
uptime-monitor
Monitor website uptime - check availability, response times, and status
twitter-profile-lookup
Look up Twitter/X profiles - get bio, followers, tweets, and engagement
tomba
Email finder and verifier - find emails from domains, LinkedIn, or company search