notion-automation について
Composio の Notion ツールキットを介して、ページ、データベース、コンテンツブロック、コメント、ユーザーを管理するワークフロースキルです。Rube MCP と Notion 接続を使うエージェント向けです。
主な機能
- 01ページの作成・更新・アーカイブ
- 02データベースの検索とレコード管理
- 03ページブロックの読み取り・追加・置換・削除
- 04データベースの作成とスキーマ更新
- 05ユーザー一覧とページコメントの管理
活用シーン
- 01プロジェクトページとコンテンツの保守
- 02データベースの検索とレコードの追加・更新
- 03ページコメントの確認や追加
MCP 対応
Rube MCP 経由で Composio の Notion ツールキットを利用します。実行には、クライアントでの Rube MCP 接続と Notion 接続の有効化が必要です。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ composiohq/ awesome-claude-skills --skill notion-automationインストール後、Claude Code で/notion-automationを入力して読み込まれたか確認します。
詳細
Rube MCP 経由の Notion 自動化
Rube MCP 経由で Composio の Notion ツールキットを使用して、Notion の操作を自動化します。
ツールキットのドキュメント: composio.dev/toolkits/notion
前提条件
- Rube MCP が接続されている必要があります(RUBE_SEARCH_TOOLS が利用可能)
RUBE_MANAGE_CONNECTIONSを通じて、有効な Notion 接続が必要です。ツールキットはnotionを指定します- 現在のツールスキーマを取得するため、必ず最初に
RUBE_SEARCH_TOOLSを呼び出してください
セットアップ
Rube MCP を入手する: クライアントの設定で https://rube.app/mcp を MCP サーバーとして追加します。API キーは不要です。エンドポイントを追加するだけで動作します。
RUBE_SEARCH_TOOLSが応答することを確認し、Rube MCP が利用可能であることを確認します- ツールキットに
notionを指定してRUBE_MANAGE_CONNECTIONSを呼び出します - 接続が ACTIVE でない場合は、返された認証リンクに従って Notion OAuth を完了します
- ワークフローを実行する前に、接続ステータスが ACTIVE と表示されていることを確認します
主なワークフロー
1. ページの作成と管理
使用する場面: Notion ページの作成、更新、またはアーカイブをユーザーが希望している場合
ツールの順序:
NOTION_SEARCH_NOTION_PAGE- 親ページまたは既存のページを検索します[前提条件]NOTION_CREATE_NOTION_PAGE- 親ページの下に新しいページを作成します[任意]NOTION_RETRIEVE_PAGE- ページのメタデータ/プロパティを取得します[任意]NOTION_UPDATE_PAGE- ページのプロパティ、タイトル、アイコン、カバーを更新します[任意]NOTION_ARCHIVE_NOTION_PAGE- ページをソフト削除(アーカイブ)します[任意]
主なパラメーター:
query: SEARCH_NOTION_PAGE に渡す検索テキストparent_id: 親ページまたはデータベースの IDpage_id: 取得/更新/アーカイブするページの IDproperties: 親のスキーマに一致するページプロパティの値
注意点:
- RETRIEVE_PAGE が返すのはメタデータ/プロパティのみで、本文の内容は含まれません。ページ本文には FETCH_BLOCK_CONTENTS を使用してください
- ARCHIVE_NOTION_PAGE はソフト削除(archived=true に設定)であり、完全な削除ではありません
- has_more/next_cursor のページネーションを最後まで行わないと、広範囲な検索で結果が不完全に見えることがあります
2. データベースのクエリと管理
使用する場面: データベースの行のクエリ、新しいエントリーの挿入、またはレコードの更新をユーザーが希望している場合
ツールの順序:
NOTION_SEARCH_NOTION_PAGE- 名前でデータベースを検索します[前提条件]NOTION_FETCH_DATABASE- スキーマとプロパティを確認します[前提条件]NOTION_QUERY_DATABASE/NOTION_QUERY_DATABASE_WITH_FILTER- 行をクエリします[必須]NOTION_INSERT_ROW_DATABASE- 新しいエントリーを追加します[任意]NOTION_UPDATE_ROW_DATABASE- 既存のエントリーを更新します[任意]
主なパラメーター:
database_id: データベース ID(検索結果または URL から取得)filter: Notion のフィルター構文に一致するフィルターオブジェクトsorts: ソートオブジェクトの配列start_cursor: 前回の応答から取得したページネーションカーソルproperties: 挿入/更新時にデータベーススキーマに一致するプロパティの値
注意点:
- 404 object_not_found は通常、database_id が誤っているか、データベースがインテグレーションと共有されていないことを示します
- 結果にはページネーションがあります。has_more/next_cursor を無視すると、読み取りが通知なく途中で切り詰められます
- スキーマの不一致や必須プロパティの不足により、400 validation_error が発生します
- Formula フィールドと読み取り専用フィールドは INSERT_ROW_DATABASE では設定できません
- フィルター内のプロパティ名はスキーマと完全に一致している必要があります(大文字と小文字を区別)
3. ブロックとページコンテンツを管理する
使用する場面:ページ内のコンテンツブロックを読み取る、追加する、または変更する場合
ツールの順序:
NOTION_FETCH_BLOCK_CONTENTS- ページの子ブロックを読み取ります[必須]NOTION_ADD_MULTIPLE_PAGE_CONTENT- ページにブロックを追加します[任意]NOTION_APPEND_TEXT_BLOCKS- テキストのみのブロックを追加します[任意]NOTION_REPLACE_PAGE_CONTENT- ページの全コンテンツを置き換えます[任意]NOTION_DELETE_BLOCK- 特定のブロックを削除します[任意]
主なパラメーター:
block_id/page_id:対象のページまたはブロックの IDcontent_blocks:ブロックオブジェクトの配列(child_blocksではありません)text:APPEND_TEXT_BLOCKS に渡すプレーンテキストのコンテンツ
注意点:
content_blocksパラメーターを使用してください。child_blocksを使うと検証に失敗します- ADD_MULTIPLE_PAGE_CONTENT はアーカイブ済みのページでは失敗します。先に UPDATE_PAGE でアーカイブを解除してください
- 作成されたブロックは response.data.results に含まれます。後で編集できるよう、ブロック ID を保存してください
- DELETE_BLOCK はアーカイブ(archived=true)であり、完全な削除ではありません
4. データベーススキーマを管理する
使用する場面:データベースを作成する、またはその構造を変更する場合
ツールの順序:
NOTION_FETCH_DATABASE- 現在のスキーマを確認します[前提条件]NOTION_CREATE_DATABASE- 新しいデータベースを作成します[任意]NOTION_UPDATE_SCHEMA_DATABASE- データベースのプロパティを変更します[任意]
主なパラメーター:
parent_id:新しいデータベースの親ページ IDtitle:データベースのタイトルproperties:タイプとオプションを含むプロパティ定義database_id:スキーマ更新対象のデータベース ID
注意点:
- UPDATE_SCHEMA ではプロパティのタイプを変更できません。新しいプロパティを作成してデータを移行する必要があります
- Formula、rollup、relation の各プロパティには、複雑な設定が必要です
5. ユーザーとコメントを管理する
使用する場面:ワークスペースのユーザーを一覧表示する、またはページのコメントを管理する場合
ツールの順序:
NOTION_LIST_USERS- ワークスペースの全ユーザーを一覧表示します[任意]NOTION_GET_ABOUT_ME- 現在認証されているユーザーを取得します[任意]NOTION_CREATE_COMMENT- ページにコメントを追加します[任意]NOTION_FETCH_COMMENTS- ページのコメントを一覧表示します[任意]
主なパラメーター:
page_id:コメント対象のページ ID(discussion_idとも呼ばれます)rich_text:リッチテキスト配列形式のコメント内容
注意点:
- コメントは個々のブロックではなく、ページに関連付けられます
- people 型プロパティのフィルターには、LIST_USERS で取得したユーザー ID が必要です
よくあるパターン
ID の解決
ページ/データベース名 -> ID:
1. Call NOTION_SEARCH_NOTION_PAGE with query=name
2. Paginate with has_more/next_cursor until found
3. Extract id from matching result
データベーススキーマの確認:
1. Call NOTION_FETCH_DATABASE with database_id
2. Extract properties object for field names and types
3. Use exact property names in queries and inserts
ページネーション
- ページごとの結果数を
page_sizeで設定します(最大 100) - レスポンスの
has_moreブール値を確認します - 次のリクエストで
start_cursorまたはnext_cursorを渡します has_moreが false になるまで続けます
Notion のフィルター構文
単一のフィルター:
{"property": "Status", "select": {"equals": "Done"}}
複合フィルター:
{"and": [
{"property": "Status", "select": {"equals": "In Progress"}},
{"property": "Assignee", "people": {"contains": "user-id"}}
]}
既知の注意点
インテグレーションとの共有:
- ページとデータベースにアクセスするには、Notion インテグレーションと共有する必要があります
- アイテムがインテグレーションと共有されていない場合、タイトル検索の結果が 0 件になることがあります
プロパティのタイプ:
- プロパティ名は大文字と小文字が区別され、スキーマと完全に一致している必要があります
- Formula、rollup、created_time の各フィールドは読み取り専用です
- select/multi-select の値は、新しいものを作成する場合を除き、既存のオプションと一致している必要があります
レスポンスの解析:
- レスポンスデータは
data_previewまたはdata.resultsの下にネストされている場合があります - ネストのレベルが異なる場合に備え、フォールバックを用意して慎重に解析してください
Quick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| Search pages/databases | NOTION_SEARCH_NOTION_PAGE | query |
| Create page | NOTION_CREATE_NOTION_PAGE | parent_id, properties |
| Get page metadata | NOTION_RETRIEVE_PAGE | page_id |
| Update page | NOTION_UPDATE_PAGE | page_id, properties |
| Archive page | NOTION_ARCHIVE_NOTION_PAGE | page_id |
| Duplicate page | NOTION_DUPLICATE_PAGE | page_id |
| Get page blocks | NOTION_FETCH_BLOCK_CONTENTS | block_id |
| Append blocks | NOTION_ADD_MULTIPLE_PAGE_CONTENT | page_id, content_blocks |
| Append text | NOTION_APPEND_TEXT_BLOCKS | page_id, text |
| Replace content | NOTION_REPLACE_PAGE_CONTENT | page_id, content_blocks |
| Delete block | NOTION_DELETE_BLOCK | block_id |
| Query database | NOTION_QUERY_DATABASE | database_id, filter, sorts |
| Query with filter | NOTION_QUERY_DATABASE_WITH_FILTER | database_id, filter |
| Insert row | NOTION_INSERT_ROW_DATABASE | database_id, properties |
| Update row | NOTION_UPDATE_ROW_DATABASE | page_id, properties |
| Get database schema | NOTION_FETCH_DATABASE | database_id |
| Create database | NOTION_CREATE_DATABASE | parent_id, title, properties |
| Update schema | NOTION_UPDATE_SCHEMA_DATABASE | database_id, properties |
| List users | NOTION_LIST_USERS | (none) |
| Create comment | NOTION_CREATE_COMMENT | page_id, rich_text |
| List comments | NOTION_FETCH_COMMENTS | page_id |
Powered by Composio