Contents
1️⃣ Notion API の基本概要
| 項目 | 内容 |
|---|---|
| ベース URL | https://api.notion.com/v1/ |
| 現在のバージョン | 2022-06-28(ヘッダー Notion-Version で指定) |
| リクエストレート制限 | 同一統合につき 3 リクエスト/秒(スパイク時は 429 が返ります)。※1 分間に約 180 回までが安全な目安です。 |
| 認証方式 | OAuth 2.0(推奨)または Integration Token(内部統合向け) |
| 主なエンドポイント | - /databases/{id}/query - /pages(作成・取得・更新)- /blocks/{id}(ブロック操作)- /users/me(トークン所有者情報) |
| Webhook / リアルタイム通知 | 現在 Notion は公式に Webhook を提供していません。変更検知は ポーリング か、Zapier・Make 等のサードパーティが提供する「Instant Trigger」機能で代替します。 |
⚠️ 2026 年版と称される「データベースクエリ拡張」や「WebSocket サブスクリプション」 は公式に発表されていないため、この記事では扱いません。
2️⃣ OAuth 2.0 認証フロー(公式ドキュメント通り)
- 統合の作成
- Notion 開発者コンソール → Create new integration。
-
名前・アイコンを設定し、Redirect URI を入力(例:
https://example.com/oauth/callback)。 -
必要なスコープの選択
- スペース区切りで列記します(公式はスペース方式です)。例:
text
read write update insert delete -
データベース検索が必要なら
search、ページ作成はinsertを付与。 -
認可コード取得(ユーザーリダイレクト)
plaintext
https://api.notion.com/v1/oauth/authorize?
client_id=YOUR_CLIENT_ID&
redirect_uri=YOUR_REDIRECT_URI&
response_type=code&
owner=user&
state=RANDOM_STRING&
scope=read%20write%20insert%20search
- アクセストークン取得
http
POST https://api.notion.com/v1/oauth/token
Content-Type: application/json
{
"grant_type": "authorization_code",
"code": "AUTHORIZATION_CODE_FROM_STEP3",
"redirect_uri": "YOUR_REDIRECT_URI",
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
}
- 成功すると
access_tokenと リフレッシュトークン が返ります。 -
アクセストークンは有効期限が 90 日、リフレッシュトークンで自動更新可能です(標準 OAuth 2.0 フロー)。
-
API 呼び出し時の必須ヘッダー
http
Authorization: Bearer YOUR_ACCESS_TOKEN
Notion-Version: 2022-06-28
ポイント:スコープはスペース区切りで記述し、カンマ区切りにするとエラーになります。
3️⃣ 公式連携が用意されている主なサービスと設定手順
3.1 Google Calendar(双方向同期)
| 手順 | 内容 |
|---|---|
| ① 統合の有効化 | Notion の Integrations ページで「Google Calendar」テンプレートを追加。 |
| ② カレンダー権限取得 | Google Cloud Console で OAuth クレデンシャルを作成し、スコープ https://www.googleapis.com/auth/calendar を付与。 |
| ③ データベース準備 | 同期対象の Notion データベースに「開始日時」「終了日時」(Date) プロパティと「タイトル」(Title) を用意。 |
| ④ 連携設定 | Notion → Settings & Members → Integrations → 「Google Calendar」→「Connect」し、カレンダー ID と対象データベースを紐付ける。 |
| ⑤ 動作確認 | カレンダー上でイベントを追加すると自動的に DB にレコードが生成され、逆も同様です。 |
3.2 Slack(通知・メッセージ送信)
| 手順 | 内容 |
|---|---|
| ① 統合作成 | Notion の Integrations → 「Slack」→「Add to workspace」。 |
| ② Bot Token 取得 | Slack App 作成後、OAuth & Permissions で chat:write と channels:read を許可し、Bot User OAuth Token (xoxb-…) をコピー。 |
| ③ Notion 側設定 | 対象ページまたはデータベースの Automation → 「When a page is updated」→「Send Slack message」。 |
| ④ メッセージテンプレート | 例: {{page.title}} が {{status}} に変更されました。 |
| ⑤ テスト | ページを更新すると指定チャンネルへメッセージが届くことを確認。 |
3.3 GitHub & Figma(データ連携の基本フロー)
| 項目 | GitHub 連携 | Figma 連携 |
|---|---|---|
| スコープ | repo(リポジトリ全般)※ Notion 側は read・update が必要 |
file_read(ファイル情報取得) |
| アクセストークン取得 | GitHub Settings → Developer settings → Personal access tokens | Figma の Account Settings → Personal Access Tokens |
| DB カラム例 | - Issue ID (Number) - PR URL (URL) |
- Figma File (File) - Component 名 (Text) |
| 変更検知手段 | GitHub Webhook → Zapier/Make の「Custom webhook」トリガで Notion API を呼び出す | Figma プラグイン(例: “Notion Sync”)が画像・メタ情報を更新 |
| 実装ポイント | - スコープは必ず repo だけでなく、必要に応じて admin:repo_hook も付与- Webhook のペイロードは GitHub Docs に従う |
- 画像は一旦外部 CDN にアップし、Notion の File プロパティに URL を設定 |
公式ヘルプ(GitHub): https://www.notion.so/help/github-integration
公式ヘルプ(Figma): https://www.notion.so/help/figma-integration
4️⃣ ノーコード自動化プラットフォームで実現できる代表ユースケース
4.1 Zapier – Trello → Notion のタスク自動登録
| 項目 | 内容 |
|---|---|
| トリガ | Trello ボードのカードが “Done” 列へ移動(Instant Trigger) |
| アクション | Notion データベースに新規ページ作成 Title, Due Date, Assignee をマッピング |
| 必要スコープ | insert, read |
| レートリミット | Zapier のプランに応じて 100 〜 1,000 リクエスト/15 分。Notion 側は 3 RPS 制限のため、Zapier は自動的にスロットリングします。 |
| 留意点 | 大量カードが同時に完了した場合は「Batch」アクションでまとめて送信(Zapier の Code by Zapier ステップで配列化) |
4.2 Make (Integromat) – Google Sheets → Notion ページ生成
- シナリオ開始:Google Sheets モジュール「Watch Rows」 → 新規行を検知(ポーリング間隔はプランにより 1 分〜15 分)。
- データ変換:JSON Parser で列名と Notion プロパティ名をマッピング。
- Notion アクション:
Create a Pageモジュール → 必要スコープはinsert. - エラーハンドリング:Error Handler ブロックでステータス 429(レートリミット)を捕捉し、再試行間隔を 30 秒 に設定。
| 項目 | 詳細 |
|---|---|
| 実行間隔 | 無料プランは最短 15 分、Pro 以上は 1 分単位で設定可能。 |
| レートリミット対策 | Make は自動的に 3 RPS 制限を超えないようキューイングしますが、バースト時は Delay ブロックで手動調整可。 |
4.3 Automate.io – Slack メッセージ → Notion ステータス更新
| フロー | 内容 |
|---|---|
| トリガ | Slack チャンネルで #status-update プレフィックス付きメッセージが投稿されると発火(Instant Trigger)。 |
| パーサ | 正規表現 TaskID:(\d+)\s+Status:(.+) でタスク ID と新ステータスを抽出。 |
| アクション | Notion の該当ページの「ステータス」プロパティを update(必要スコープ: update). |
| プラン制限 | 無料プランは月 1,000 アクション、Pro は 10,000。大量更新が想定される場合は有料へアップグレード推奨。 |
5️⃣ 連携方式別メリット・デメリット比較
| 方式 | リアルタイム性 | コスト (月額) | セキュリティ | 保守性 |
|---|---|---|---|---|
| 公式 API(直接呼び出し) | ★★★★★(ポーリング最短 1 秒、サーバ側でキャッシュすれば秒単位) | 無料(利用は Notion のレート制限内) | OAuth 2.0 + スコープ限定。IP 制限は不可だがトークン管理は自社で徹底可能 | 開発・バージョン対応は自社責任。変更点は公式リリースノートで把握必要 |
| Zapier | ★★★★☆(Instant Trigger があるが、無料プランは 15 分間隔のポーリング) | Free → $20/月 (Starter) 〜 $125/月 (Professional) | トークンは Zapier が暗号化保存。スコープは OAuth に準拠 | UI ベースで変更容易。Zap が削除されても再作成が簡単 |
| Make | ★★★★☆(シナリオ実行間隔は 1 分が最短、Pro 以上で秒単位のカスタムスケジューリング可) | Free → $9/月 (Core) 〜 $299/月 (Enterprise) | OAuth トークン暗号化保存。IP ホワイトリスト設定も可能(プラン依存) | ビジュアルフローで保守性高いが、モジュール更新は Make が自動対応 |
| Automate.io (2024 年末にサービス終了予定) | ★★★☆☆(ポーリングベース、最大 5 分遅延) | Free → $29/月 (Professional) | トークン暗号化保存。スコープ限定 | シンプル UI だが機能追加・アップデート頻度は低い |
選定の指針
- 即時性が最重要 ⇒ 自社サーバで公式 API + ポーリング、または Zapier の Instant Trigger。
- コストを抑えて手軽に開始したい ⇒ Zapier Free/Starter が最もハードル低い。
- 複雑なデータ変換やリトライロジックが必要 ⇒ Make のシナリオエディタが最適。
6️⃣ 類似ツールとの機能比較と業務シナリオ別ベストプラクティス
| 項目 | Notion | Coda | ClickUp |
|---|---|---|---|
| 公式 API | ✅(REST、2022‑06‑28 バージョン) | ✅(Docs API) | ✅(Automation API) |
| ノーコード連携数 | 30 +(Zapier, Make, Automate.io, Power Automate 等) | 20 + | 25 + |
| データ構造 | データベース+ページのハイブリッド UI | テーブル中心、計算式が豊富 | タスク・リスト主導 |
| リアルタイム更新手段 | ポーリング/Instant Trigger(Zapier/Make) | ポーリングベース | Webhook で即時通知 |
| 標準料金(2024‑04) | Free / $10 / ユーザー(月額) | Free / $10 / ユーザー(月額) | Free / $5 / ユーザー(月額) |
| 得意領域 | ナレッジベース・ドキュメント管理 | 複雑計算・自動化に強い Docs | プロジェクト・タスク管理がメイン |
シナリオ別推奨構成例
🎯 1. プロジェクトタスク管理
- 目的:Notion のタスクデータベースで進捗を一元化し、Slack と Google Calendar に自動通知。
- 構成
- Notion API(
insert,update) → Make シナリオ:新規ページ作成時に Google Calendar イベント生成(1 分遅延)。 - 同シナリオで Slack の Send a Message アクションを実行し、担当者へ即時通知。
- ポイント:Make のエラーハンドラで 429 発生時に 30 秒リトライ、最大 3 回まで設定。
🎯 2. 社内ナレッジ共有とコードレビュー連携
- 目的:GitHub PR コメントから Notion の技術記事ページを自動更新。
- 構成
- GitHub → Zapier New Comment Instant Trigger(
#doc-updateタグ検出)。 - Zapier の Formatter でコメント本文から Markdown 抽出し、Notion API
updateを呼び出す。 - ポイント:スコープは
read,updateのみで OK。Zapier の無料プランでも月 100 件程度なら十分。
🎯 3. デザイン更新の可視化
- 目的:Figma のファイル変更を Notion に即時反映し、開発チームが最新デザインを確認できるようにする。
- 構成
- Figma → Make Webhook(イベントは File Update)。
- Make シナリオで画像 URL を取得し、Notion の File プロパティへ
update。同時に Slack に通知。 - ポイント:画像は Figma CDN 経由の公開 URL を使用し、Notion のストレージ負荷を回避。
7️⃣ 実装前に必ずチェックすべき項目
- API バージョンヘッダー –
Notion-Versionが欠落するとデフォルトが変わり、予期しないレスポンスになる。 - レートリミットの監視 – 429 エラーは必ずハンドリングし、指数バックオフで再試行するロジックを組むこと。
- スコープ最小化 – 必要な権限だけを付与し、漏洩時のリスクを低減。
- トークン保管方法 – 環境変数・シークレットマネージャ(AWS Secrets Manager 等)で暗号化保存。
- ドキュメント更新フロー – Notion の公式リリースノートは RSS でも取得可能。自動通知を設定しておくと便利。
8️⃣ まとめ
- Notion API は REST ベースで安定した仕様(2022‑06‑28)です。公式が提供する機能以外の「サブスクリプション」や「WebSocket」は存在しないため、ポーリングやサードパーティの Instant Trigger を利用してください。
- OAuth 2.0 の スコープはスペース区切り が正しい表記です。カンマ区切りにすると認証エラーになります。
- 主要なノーコード自動化ツール(Zapier・Make)は、Notion のレートリミットを考慮した リトライロジック を組むことで安定運用が可能です。
- 公式連携ガイドは Notion ヘルプセンターに集約されているので、外部メディアへのリンクは避け、必ず公式 URL を参照してください。
次のステップ:まずは開発者コンソールでシンプルな 「ページ取得」 API 呼び出しを実装し、レートリミットと認証フローに慣れることから始めましょう。そこから段階的に自動化ツールと組み合わせて、業務効率化を図ってください。
本稿は 2024‑04 時点の公式情報に基づいて執筆しています。Notion の機能追加や料金改定が行われた場合は、必ず最新版ドキュメントをご確認ください。