---
title: "Notion コネクタ"
description: "Tajo を介して Notion のデータベース、ページ、ワークスペースコンテンツを Brevo と同期するための完全な Notion 統合ガイド。"
url: https://tajo.io/jp/docs/connectors/custom/notion/
markdown: https://tajo.io/jp/docs/connectors/custom/notion.md
lang: ja-JP
robots: noindex
---

先行利用を申し込む

お名前と会社のメールアドレスを入力してください。Tajoへのアクセス申請を確認するためのリンクをメールでお送りします。

# Notion コネクタ

コネクターのステータス: 予定 まだ構築されていません。Tajo は現在このコネクターを実行していません。

| 送信元フィールド | 送信先フィールド | サンプル値 |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Notion ワークスペースを Brevo に接続し、Tajo を介してコンテンツ駆動型マーケティングワークフロー、CRM データベース同期、自動通知を実現します。

## 概要

| プロパティ | 値 |
| --- | --- |
| **プラットフォーム** | Notion |
| **カテゴリ** | カスタム |
| **セットアップの複雑さ** | 簡単 |
| **公式統合** | いいえ |
| **同期データ** | データベース、ページ、ユーザー |
| **API タイプ** | REST API |
| **認証** | Internal Integration Token / OAuth 2.0 |
| **ベース URL** | `https://api.notion.com` |
| **API バージョン** | `2022-06-28`(`Notion-Version` ヘッダー経由) |

## 機能

- **データベース同期** - Notion データベースのエントリを Brevo 連絡先およびリストに同期
- **CRM ブリッジ** - Notion データベースを軽量 CRM として使用し Brevo に同期
- **コンテンツ通知** - Notion ページが公開されたときに Brevo キャンペーンをトリガー
- **プロパティマッピング** - Notion データベースのプロパティを Brevo 連絡先属性にマッピング
- **ページ監視** - ページ更新をトラッキングして Brevo イベントとして転送
- **ユーザーディレクトリ同期** - Notion ワークスペースのメンバーを Brevo 連絡先に同期

## 前提条件

開始する前に、以下を準備してください。

1. 管理者アクセス権を持つ Notion ワークスペース
2. Notion の内部統合または OAuth アプリ
3. 統合と共有されているデータベースページ
4. API アクセス可能な Brevo アカウント
5. 有効なサブスクリプションを持つ Tajo アカウント

## 認証

Notion は 2 つの認証方法をサポートしています。

### オプション 1: 内部統合(単一ワークスペース向け推奨)

1. [notion.so/my-integrations](https://www.notion.so/my-integrations) にアクセス
2. **New integration** をクリック
3. 「Tajo Integration」と名前を付ける
4. ワークスペースを選択
5. 機能を設定:

```
Content Capabilities:
  Read content: ✓
  Update content: ✓
  Insert content: ✓

User Capabilities:
  Read user information: ✓
```

6. **Internal Integration Secret** をコピー(`ntn_` で始まる)

ページ共有が必要

内部統合は、明示的に共有されたページおよびデータベースのみにアクセスできます。各対象データベースを「…」メニュー > 「Connections」 > 統合を選択 から統合と共有してください。

### オプション 2: OAuth 2.0(パブリック統合)

複数のワークスペースを対象とする統合の場合、OAuth 2.0 フローを使用します。

1. 統合をパブリック統合として登録
2. ユーザーを次にリダイレクト: `https://api.notion.com/v1/oauth/authorize?client_id=...`
3. コードを `/v1/oauth/token` でアクセストークンと交換

### Tajo への接続

```bash
tajo connectors install notion \
  --token $NOTION_TOKEN
```

## 設定

### 基本セットアップ

```yaml
connectors:
  notion:
    enabled: true
    api_version: "2022-06-28"

    sync:
      databases: true
      pages: false
      users: true

    databases:
      - id: "abc123def456"
        name: "Customers"
        sync_to_list: 25
      - id: "ghi789jkl012"
        name: "Leads"
        sync_to_list: 26
```

### フィールドマッピング

Notion データベースのプロパティを Brevo 連絡先属性にマッピングします。

```yaml
field_mapping:
  # Notion プロパティ -> Brevo 属性
  Name:
    type: title
    target: FIRSTNAME
  Email:
    type: email
    target: email
  Phone:
    type: phone_number
    target: SMS
  Company:
    type: rich_text
    target: COMPANY
  Status:
    type: select
    target: LEAD_STATUS
  Deal Value:
    type: number
    target: DEAL_VALUE
  Last Contact:
    type: date
    target: LAST_CONTACT_DATE
  Tags:
    type: multi_select
    target: TAGS
```

## API エンドポイント

Tajo は以下の Notion API エンドポイントと統合します。

| エンドポイント | メソッド | 目的 |
| --- | --- | --- |
| `/v1/databases/{id}/query` | POST | データベースエントリをクエリ |
| `/v1/databases/{id}` | GET | データベーススキーマを取得 |
| `/v1/pages` | POST | 新しいページを作成 |
| `/v1/pages/{id}` | GET | ページプロパティを取得 |
| `/v1/pages/{id}` | PATCH | ページプロパティを更新 |
| `/v1/blocks/{id}/children` | GET | ブロックの子要素を取得 |
| `/v1/users` | GET | すべてのワークスペースユーザーを一覧取得 |
| `/v1/users/{id}` | GET | ユーザーを取得 |
| `/v1/search` | POST | ワークスペース全体を検索 |

## コード例

### コネクタの初期化

```javascript
import { TajoClient } from '@tajo/sdk';

const tajo = new TajoClient({
  apiKey: process.env.TAJO_API_KEY,
  brevoApiKey: process.env.BREVO_API_KEY
});

await tajo.connectors.connect('notion', {
  token: process.env.NOTION_TOKEN
});
```

### データベースを Brevo に同期

```javascript
// Notion データベースを Brevo リストに同期
await tajo.connectors.sync('notion', {
  type: 'full',
  resources: ['databases'],
  databaseId: 'abc123def456',
  targetList: 25
});

const status = await tajo.connectors.status('notion');
console.log(status);
// {
//   connected: true,
//   lastSync: '2024-03-15T14:30:00Z',
//   databasesSynced: 2,
//   pagesTracked: 1450,
//   usersCount: 32
// }
```

### クエリとフィルタ

```javascript
// フィルタ付きで Notion データベースをクエリ
const results = await tajo.connectors.query('notion', {
  databaseId: 'abc123def456',
  filter: {
    property: 'Status',
    select: { equals: 'Active' }
  },
  sorts: [
    { property: 'Last Contact', direction: 'descending' }
  ]
});
```

### Brevo イベントからページを作成

```javascript
// Brevo 連絡先がマイルストーンに達したときに Notion ページを作成
tajo.events.on('contact.attribute_updated', async (event) => {
  if (event.attribute === 'LIFECYCLE_STAGE' && event.value === 'customer') {
    await tajo.connectors.create('notion', {
      databaseId: 'ghi789jkl012',
      properties: {
        Name: { title: [{ text: { content: event.contact.name } }] },
        Email: { email: event.contact.email },
        'Converted Date': { date: { start: new Date().toISOString() } }
      }
    });
  }
});
```

## レート制限

Notion は統合ごとにレート制限を適用します。

| 制限タイプ | 値 |
| --- | --- |
| **レート制限** | 統合ごとに 3 リクエスト/秒 |
| **バースト制限** | 短いバーストが許可され、その後スロットリング |
| **ページサイズ** | ページネーションリクエストごとに最大 100 アイテム |

カーソルベースのページネーション

Notion はカーソルベースのページネーションを使用します。Tajo はこれを自動的に処理し、`has_more` が `false` を返すまで `next_cursor` パラメータを使用してすべてのページを反復処理します。

レート制限を超えると、Notion は `Retry-After` ヘッダー付きで `429 Too Many Requests` を返します。

## トラブルシューティング

### 一般的な問題

| 問題 | 原因 | 解決策 |
| --- | --- | --- |
| 401 Unauthorized | トークンが無効または期限切れ | 統合トークンを再生成 |
| 403 Forbidden | ページが統合と共有されていない | Connections 経由でページ/データベースを統合と共有 |
| 404 Object not found | データベース ID が不正または共有されていない | データベース ID と共有設定を確認 |
| プロパティの欠落 | スキーマの不一致 | データベーススキーマを再同期してフィールドマッピングを更新 |
| レート制限超過 | 高速すぎるリクエスト | 同期頻度またはバッチサイズを削減 |

### デバッグモード

```yaml
connectors:
  notion:
    debug: true
    log_level: verbose
    log_api_calls: true
```

### 接続テスト

```bash
tajo connectors test notion
# ✓ API 認証に成功
# ✓ データベースアクセスを確認
# ✓ ユーザーリストにアクセス可能
# ✓ 検索操作可能
# ✓ ページ作成が利用可能
```

## ベストプラクティス

1. **データベースを明示的に共有する** - 内部統合は共有されたコンテンツのみを参照できる
2. **検索よりもデータベースクエリを使用する** - 既知のデータベースに対してはクエリの方が高速で信頼性が高い
3. **プロパティタイプを慎重にマッピングする** - Notion は多くのプロパティタイプを持つので、Brevo 属性タイプに一致させる
4. **ページネーションを処理する** - 完全なデータのため常にすべてのカーソルページを反復処理
5. **増分同期を行う** - 変更されたエントリのみを同期するため `last_edited_time` フィルタを使用
6. **ポーリングスケジュールを設定する** - Notion はネイティブで Webhook をサポートしないため、定期的にポーリング

## セキュリティ

- **ベアラートークン認証** - 統合シークレットと OAuth トークン
- **HTTPS のみ** - すべての API 通信は TLS 1.2 以上で暗号化
- **スコープ付きアクセス** - 統合は明示的に共有されたコンテンツのみにアクセス
- **OAuth 2.0** - パブリック統合用の安全な認可フロー
- **暗号化されたストレージ** - トークンは Tajo で保存時に暗号化
- **ワークスペース分離** - 各統合は単一のワークスペースにスコープ

## 関連リソース

- [Airtable コネクタ](https://tajo.io/jp/docs/connectors/custom/airtable)
- [GitHub コネクタ](https://tajo.io/jp/docs/connectors/custom/github)
- [Linear コネクタ](https://tajo.io/jp/docs/connectors/custom/linear)
- [Brevo Contacts API](https://tajo.io/jp/docs/contact-management)
