mcpField
N
notion-automation

notion-automation

github.com/davepoon生産性3.7k122 回インストール2 日前に更新
リポジトリ

notion-automation について

notion-automationは、Rube MCP経由でComposioのNotionツールキットを使う自動化スキルです。Notionのページ、データベース、ワークスペースを管理するユーザー向けです。

主な機能

  1. 01ページの作成、更新、アーカイブ
  2. 02データベースの検索と行の管理
  3. 03ページブロックの読み取りと編集
  4. 04データベースの作成とスキーマ変更
  5. 05ユーザーとページコメントの管理

活用シーン

  1. 01Notionワークスペースのページ追加や修正
  2. 02データベースの絞り込みと行の追加
  3. 03ページ内容の追記や置き換え
  4. 04コメントの確認やワークスペースユーザーの一覧

MCP 対応

Rube MCPを介してComposioのNotionツールキットにアクセスします。利用可能なツールの検索と、有効なNotion接続が必要です。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/davepoon/buildwithclaude --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 キーは不要です。エンドポイントを追加するだけで動作します。

  1. RUBE_SEARCH_TOOLS が応答することを確認し、Rube MCP が利用可能であることを確認します
  2. ツールキットに notion を指定して RUBE_MANAGE_CONNECTIONS を呼び出します
  3. 接続が ACTIVE でない場合は、返された認証リンクに従って Notion OAuth を完了します
  4. ワークフローを実行する前に、接続ステータスが ACTIVE と表示されていることを確認します

主なワークフロー

1. ページの作成と管理

使用する場面: Notion ページの作成、更新、またはアーカイブをユーザーが希望している場合

ツールの順序:

  1. NOTION_SEARCH_NOTION_PAGE - 親ページまたは既存のページを検索します[前提条件]
  2. NOTION_CREATE_NOTION_PAGE - 親ページの下に新しいページを作成します[任意]
  3. NOTION_RETRIEVE_PAGE - ページのメタデータ/プロパティを取得します[任意]
  4. NOTION_UPDATE_PAGE - ページのプロパティ、タイトル、アイコン、カバーを更新します[任意]
  5. NOTION_ARCHIVE_NOTION_PAGE - ページをソフト削除(アーカイブ)します[任意]

主なパラメーター:

  • query: SEARCH_NOTION_PAGE に渡す検索テキスト
  • parent_id: 親ページまたはデータベースの ID
  • page_id: 取得/更新/アーカイブするページの ID
  • properties: 親のスキーマに一致するページプロパティの値

注意点:

  • RETRIEVE_PAGE が返すのはメタデータ/プロパティのみで、本文の内容は含まれません。ページ本文には FETCH_BLOCK_CONTENTS を使用してください
  • ARCHIVE_NOTION_PAGE はソフト削除(archived=true に設定)であり、完全な削除ではありません
  • has_more/next_cursor のページネーションを最後まで行わないと、広範囲な検索で結果が不完全に見えることがあります
2. データベースのクエリと管理

使用する場面: データベースの行のクエリ、新しいエントリーの挿入、またはレコードの更新をユーザーが希望している場合

ツールの順序:

  1. NOTION_SEARCH_NOTION_PAGE - 名前でデータベースを検索します[前提条件]
  2. NOTION_FETCH_DATABASE - スキーマとプロパティを確認します[前提条件]
  3. NOTION_QUERY_DATABASE / NOTION_QUERY_DATABASE_WITH_FILTER - 行をクエリします[必須]
  4. NOTION_INSERT_ROW_DATABASE - 新しいエントリーを追加します[任意]
  5. 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. ブロックとページコンテンツを管理する

使用する場面:ページ内のコンテンツブロックを読み取る、追加する、または変更する場合

ツールの順序:

  1. NOTION_FETCH_BLOCK_CONTENTS - ページの子ブロックを読み取ります[必須]
  2. NOTION_ADD_MULTIPLE_PAGE_CONTENT - ページにブロックを追加します[任意]
  3. NOTION_APPEND_TEXT_BLOCKS - テキストのみのブロックを追加します[任意]
  4. NOTION_REPLACE_PAGE_CONTENT - ページの全コンテンツを置き換えます[任意]
  5. NOTION_DELETE_BLOCK - 特定のブロックを削除します[任意]

主なパラメーター:

  • block_id / page_id:対象のページまたはブロックの ID
  • content_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. データベーススキーマを管理する

使用する場面:データベースを作成する、またはその構造を変更する場合

ツールの順序:

  1. NOTION_FETCH_DATABASE - 現在のスキーマを確認します[前提条件]
  2. NOTION_CREATE_DATABASE - 新しいデータベースを作成します[任意]
  3. NOTION_UPDATE_SCHEMA_DATABASE - データベースのプロパティを変更します[任意]

主なパラメーター:

  • parent_id:新しいデータベースの親ページ ID
  • title:データベースのタイトル
  • properties:タイプとオプションを含むプロパティ定義
  • database_id:スキーマ更新対象のデータベース ID

注意点:

  • UPDATE_SCHEMA ではプロパティのタイプを変更できません。新しいプロパティを作成してデータを移行する必要があります
  • Formula、rollup、relation の各プロパティには、複雑な設定が必要です
5. ユーザーとコメントを管理する

使用する場面:ワークスペースのユーザーを一覧表示する、またはページのコメントを管理する場合

ツールの順序:

  1. NOTION_LIST_USERS - ワークスペースの全ユーザーを一覧表示します[任意]
  2. NOTION_GET_ABOUT_ME - 現在認証されているユーザーを取得します[任意]
  3. NOTION_CREATE_COMMENT - ページにコメントを追加します[任意]
  4. 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

TaskTool SlugKey Params
Search pages/databasesNOTION_SEARCH_NOTION_PAGEquery
Create pageNOTION_CREATE_NOTION_PAGEparent_id, properties
Get page metadataNOTION_RETRIEVE_PAGEpage_id
Update pageNOTION_UPDATE_PAGEpage_id, properties
Archive pageNOTION_ARCHIVE_NOTION_PAGEpage_id
Duplicate pageNOTION_DUPLICATE_PAGEpage_id
Get page blocksNOTION_FETCH_BLOCK_CONTENTSblock_id
Append blocksNOTION_ADD_MULTIPLE_PAGE_CONTENTpage_id, content_blocks
Append textNOTION_APPEND_TEXT_BLOCKSpage_id, text
Replace contentNOTION_REPLACE_PAGE_CONTENTpage_id, content_blocks
Delete blockNOTION_DELETE_BLOCKblock_id
Query databaseNOTION_QUERY_DATABASEdatabase_id, filter, sorts
Query with filterNOTION_QUERY_DATABASE_WITH_FILTERdatabase_id, filter
Insert rowNOTION_INSERT_ROW_DATABASEdatabase_id, properties
Update rowNOTION_UPDATE_ROW_DATABASEpage_id, properties
Get database schemaNOTION_FETCH_DATABASEdatabase_id
Create databaseNOTION_CREATE_DATABASEparent_id, title, properties
Update schemaNOTION_UPDATE_SCHEMA_DATABASEdatabase_id, properties
List usersNOTION_LIST_USERS(none)
Create commentNOTION_CREATE_COMMENTpage_id, rich_text
List commentsNOTION_FETCH_COMMENTSpage_id

Powered by Composio

コメント