notion について
notion は、Notion API でページ、データソース、ブロックを作成・取得・更新するためのスキルです。Notion を操作するワークフロー向けに、新しいデータソース用エンドポイントと一般的な API 操作を扱います。
主な機能
- 01ページとデータソースの検索
- 02ページとコンテンツブロックの取得
- 03ページとデータソースの作成
- 04ページプロパティとブロックの更新
- 05API 認証とバージョン差分の説明
活用シーン
- 01Notion ページの検索と読み取り
- 02データベースへのページ追加
- 03ページのステータスやプロパティの更新
- 04ページへのテキスト追加
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ letta-ai/ skills --skill notionインストール後、Claude Code で/notionを入力して読み込まれたか確認します。
同梱ファイルassets/notion-small.svgLICENSE
詳細
notion
Notion API を使用して、ページ、データソース(データベース)、ブロックを作成、読み取り、更新します。
セットアップ
- https://notion.so/my-integrations でインテグレーションを作成します
- API キー(
ntn_またはsecret_で始まります)をコピーします - 保存します:
mkdir -p ~/.config/notion
echo "ntn_your_key_here" > ~/.config/notion/api_key
- 対象のページ/データベースをインテグレーションと共有します(「...」→「接続先」→ インテグレーション名をクリック)
API の基本
すべてのリクエストに以下が必要です:
NOTION_KEY=$(cat ~/.config/notion/api_key)
curl -X GET "https://api.notion.com/v1/..." \
-H "Authorization: Bearer $NOTION_KEY" \
-H "Notion-Version: 2025-09-03" \
-H "Content-Type: application/json"
注記:
Notion-Versionヘッダーは必須です。このスキルでは2025-09-03(最新)を使用します。このバージョンでは、API 上でデータベースを「データソース」と呼びます。
よく使う操作
ページとデータソースを検索する:
curl -X POST "https://api.notion.com/v1/search" \
-H "Authorization: Bearer $NOTION_KEY" \
-H "Notion-Version: 2025-09-03" \
-H "Content-Type: application/json" \
-d '{"query": "page title"}'
ページを取得する:
curl "https://api.notion.com/v1/pages/{page_id}" \
-H "Authorization: Bearer $NOTION_KEY" \
-H "Notion-Version: 2025-09-03"
ページのコンテンツ(ブロック)を取得する:
curl "https://api.notion.com/v1/blocks/{page_id}/children" \
-H "Authorization: Bearer $NOTION_KEY" \
-H "Notion-Version: 2025-09-03"
データソースにページを作成する:
curl -X POST "https://api.notion.com/v1/pages" \
-H "Authorization: Bearer $NOTION_KEY" \
-H "Notion-Version: 2025-09-03" \
-H "Content-Type: application/json" \
-d '{
"parent": {"database_id": "xxx"},
"properties": {
"Name": {"title": [{"text": {"content": "New Item"}}]},
"Status": {"select": {"name": "Todo"}}
}
}'
データソース(データベース)にクエリする:
curl -X POST "https://api.notion.com/v1/data_sources/{data_source_id}/query" \
-H "Authorization: Bearer $NOTION_KEY" \
-H "Notion-Version: 2025-09-03" \
-H "Content-Type: application/json" \
-d '{
"filter": {"property": "Status", "select": {"equals": "Active"}},
"sorts": [{"property": "Date", "direction": "descending"}]
}'
データソース(データベース)を作成する:
curl -X POST "https://api.notion.com/v1/data_sources" \
-H "Authorization: Bearer $NOTION_KEY" \
-H "Notion-Version: 2025-09-03" \
-H "Content-Type: application/json" \
-d '{
"parent": {"page_id": "xxx"},
"title": [{"text": {"content": "My Database"}}],
"properties": {
"Name": {"title": {}},
"Status": {"select": {"options": [{"name": "Todo"}, {"name": "Done"}]}},
"Date": {"date": {}}
}
}'
ページのプロパティを更新する:
curl -X PATCH "https://api.notion.com/v1/pages/{page_id}" \
-H "Authorization: Bearer $NOTION_KEY" \
-H "Notion-Version: 2025-09-03" \
-H "Content-Type: application/json" \
-d '{"properties": {"Status": {"select": {"name": "Done"}}}}'
ページにブロックを追加する:
curl -X PATCH "https://api.notion.com/v1/blocks/{page_id}/children" \
-H "Authorization: Bearer $NOTION_KEY" \
-H "Notion-Version: 2025-09-03" \
-H "Content-Type: application/json" \
-d '{
"children": [
{"object": "block", "type": "paragraph", "paragraph": {"rich_text": [{"text": {"content": "Hello"}}]}}
]
}'
プロパティの種類
データベース項目でよく使われるプロパティ形式:
- タイトル:
{"title": [{"text": {"content": "..."}}]} - リッチテキスト:
{"rich_text": [{"text": {"content": "..."}}]} - セレクト:
{"select": {"name": "Option"}} - マルチセレクト:
{"multi_select": [{"name": "A"}, {"name": "B"}]} - 日付:
{"date": {"start": "2024-01-15", "end": "2024-01-16"}} - チェックボックス:
{"checkbox": true} - 数値:
{"number": 42} - URL:
{"url": "https://..."} - メールアドレス:
{"email": "[email protected]"} - リレーション:
{"relation": [{"id": "page_id"}]}
2025-09-03 の主な変更点
- データベース → データソース: クエリと取得には
/data_sources/エンドポイントを使用します - 2 つの ID: 各データベースに
database_idとdata_source_idの両方が付与されます- ページの作成時は
database_idを使用します(parent: {"database_id": "..."}) - クエリ時は
data_source_idを使用します(POST /v1/data_sources/{id}/query)
- ページの作成時は
- 検索結果: データベースは
data_source_idを持つ"object": "data_source"として返されます - レスポンス内の親: ページには
parent.database_idとともにparent.data_source_idが表示されます - data_source_id の確認方法: データベースを検索するか、
GET /v1/data_sources/{data_source_id}を呼び出します
注記
- ページ/データベース ID は UUID です(ハイフンの有無は問いません)
- API ではデータベースのビューのフィルターを設定できません。設定できるのは UI のみです
- レート制限:平均約 3 リクエスト/秒です。
429 rate_limitedレスポンスではRetry-Afterが使用されます - ブロックの子要素を追加する場合:1 リクエストあたり最大 100 個の子要素を追加でき、1 回の追加リクエストでは最大 2 階層までネストできます
- ペイロードサイズの上限:ブロック要素は最大 1000 個、全体で最大 500KB です
- データソースをページに埋め込んで作成する場合は
is_inline: trueを使用します
コメント
Markdown 対応