byaan-ai/byaan/notion
Claude Code and agent skill by byaan-ai/byaan
- community
Checking that the SKILL.md file is still in the repository.
Create and manage pages, databases, and blocks in Notion
Install
npx vskill@latest install byaan-ai/byaan/notionSKILL.md
Notion
Use the Notion API to search, create, read, and update pages, databases, and blocks.
Setup Guide
Before using this skill, you need to create a Notion integration and grant it access to your pages:
1. Create an Integration
- Go to https://www.notion.com/my-integrations
- Click "New integration"
- Name your integration (e.g., "Byaan")
- Select the workspace you want to connect
- Set capabilities: enable Read content, Update content, and Insert content as needed
- Click Submit to create the integration
- Copy the Internal Integration Secret (starts with
ntn_orsecret_) - Paste this key in Settings > Skills > Notion in the app
2. Grant Access to Pages
This step is required — integrations can only see pages explicitly shared with them.
- Open the Notion page or database you want to access
- Click the "..." menu in the top-right corner
- Click "Connections" (or "Add connections")
- Find and select your integration by name
- Repeat for each page/database you want to access
How Authentication Works
You do not need to handle authentication manually. When you call execute_skill_api(), the system automatically:
- Retrieves the API key from the configured credentials
- Adds the
Authorization: Bearer <api_key>header - Adds the
Notion-Version: 2022-06-28header
Just call the API with skill name, endpoint path, method, and body — authentication is handled for you.
Finding Pages and Content
When a user asks to find, read, or work with a Notion page, ALWAYS start with a search. Never assume you know the page ID.
Search Workflow
- Search by title to find pages:
- Filter to pages only (exclude databases):
- Get recently edited pages:
- Get all accessible pages (empty query):
- Read page content once you have the page_id:
Search Parameters
| Parameter | Description | |
|---|---|---|
query | Text to match against titles (empty string returns all) | |
filter.property | Always "object" | |
filter.value | "page" or "database" | |
sort.direction | "ascending" or "descending" | |
sort.timestamp | "last_edited_time" | |
page_size | Number of results (max 100) | |
start_cursor | Pagination cursor from previous response |
Search Behavior
- Search only returns pages/databases explicitly shared with the integration
- Search matches titles only, not page content
- To search within page content, fetch blocks first then search locally
- Archived pages won't appear in search results
- Page titles are in
properties.title, not a simpletitlefield
Common Operations
Get a Page
Get Page Content (Blocks)
Create a Page in a Database
Create a Standalone Page
Query a Database
Get Database Schema
Create a Database
Update Page Properties
Add Blocks to a Page
Delete a Block
Property Types
Common property formats for database items:
| Type | Format | |
|---|---|---|
| Title | {"title": [{"text": {"content": "..."}}]} | |
| Rich text | {"rich_text": [{"text": {"content": "..."}}]} | |
| Select | {"select": {"name": "Option"}} | |
| Multi-select | {"multi_select": [{"name": "A"}, {"name": "B"}]} | |
| Date | {"date": {"start": "2024-01-15", "end": "2024-01-16"}} | |
| Checkbox | {"checkbox": true} | |
| Number | {"number": 42} | |
| URL | {"url": "https://..."}} | |
{"email": "a@b.com"} | ||
| Relation | {"relation": [{"id": "page_id"}]} |
Pagination
All list endpoints support pagination:
- `page_size`: Number of results per request (default and max: 100)
- `start_cursor`: Cursor from previous response to get next page
Response includes:
- `has_more`:
trueif more results exist - `next_cursor`: Use as
start_cursorin next request
Example pagination flow:
Common Pitfalls
- "Object not found" errors: The integration hasn't been granted access to that page. Go to the page in Notion → "..." → "Connections" → add your integration.
- Search returns empty results: Search only finds pages explicitly shared with the integration, not all pages in the workspace.
- Can't find page content:
GET /pages/{id}returns metadata only. UseGET /blocks/{id}/childrento get the actual content.
- Database rows are pages: Items in a Notion database are actually pages with
parent.type: "database_id". Query the database, then fetch each row's blocks if you need content.
- Page IDs from URLs: Notion URLs contain the page ID at the end (32 hex chars). Convert
abc123def456...to UUID formatabc123de-f456-...or use without dashes — both work.
- Rich text arrays: Text properties are always arrays of rich text objects, even for simple strings:
[{"text": {"content": "Hello"}}]
Notes
- Page/database IDs are UUIDs (with or without dashes)
- The API cannot set database view filters — that's UI-only
- Rate limit: ~3 requests/second average
- Use
is_inline: truewhen creating databases to embed them in pages
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingserver/skills/notion/SKILL.md
Popularity
- Repository stars
- 91
- Repository forks
- 1
- 7-day trend score
- 23
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/byaan-ai/byaan/notion)