0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code × Notion MCP で『議事録→タスク→実装指示』を自動化したら、週5時間浮いた話

0
Posted at

毎週月曜の朝、議事録からタスクを手で転記する虚無の30分。それが消えました。

この記事では、Claude Code と Notion MCP サーバーを組み合わせて、議事録の投入からタスク生成・優先度付け・実装指示ドラフトの作成までを全自動化した方法を紹介します。結果として週あたり約5時間の作業が消え、月曜朝の憂鬱がなくなりました。

MCP × Notion の実運用記事はまだ少ないため、構築手順・プロンプト設計・ハマりポイントまで具体的に書きます。

環境・前提条件

項目 バージョン / 条件
Claude Code 最新版(CLI)
Node.js v20 以上
Notion API 2022-06-28 以降
MCP サーバー @anthropic/notion-mcp-server(npm)
OS macOS / Linux(WSL2 可)
  • Notion のワークスペースに 議事録 DBタスク DB が存在すること
  • Notion Integration トークンを取得済みであること

1. Before:手動フローの全貌

まず、自動化前のフローを振り返ります。毎週こんなことをやっていました。

  1. Google Meet / Zoom の議事録を Notion の「議事録DB」にコピペ
  2. 議事録を読み返し、タスクを手動で「タスクDB」に転記
  3. 各タスクに優先度・担当者・期限を手入力
  4. 実装着手前に CLAUDE.md へ指示書を手書き
  5. やっと Claude Code で実装開始

赤いノードがすべて「人間が手を動かしている」ステップです。これが毎日 65 分、週 5 日で 約 5 時間 25 分。控えめに言って虚無でした。

2. MCP(Model Context Protocol)サーバーの概要と Notion MCP の構築手順

MCP とは何か

MCP(Model Context Protocol)は、AI モデルが外部ツールやデータソースに安全にアクセスするための標準プロトコルです。Claude Code は MCP サーバーを介して、Notion・GitHub・Slack などの外部サービスを「ツール」として呼び出せます。

ポイントは、Claude Code 本体を改造する必要がないことです。MCP サーバーを追加するだけで能力が拡張されます。

Notion MCP サーバーの構築手順

Step 1:Notion Integration の作成とトークン取得

  1. Notion Integrations ページ で新しい Integration を作成
  2. 「Read content」「Insert content」「Update content」の権限を付与
  3. Internal Integration Token(ntn_ で始まる文字列)をコピー
  4. 議事録 DB・タスク DB それぞれで「コネクト」から作成した Integration を追加

Step 2:MCP サーバーの設定

Claude Code の設定ファイル ~/.claude/claude_code_config.json(または プロジェクトルートの .mcp.json)に以下を追記します。

{
  "mcpServers": {
    "notion": {
      "command": "npx",
      "args": ["-y", "@anthropic/notion-mcp-server"],
      "env": {
        "NOTION_API_TOKEN": "ntn_xxxxxxxxxxxxxxxxxxxx"
      }
    }
  }
}

注意: トークンを直接書く代わりに環境変数を参照させる方法を後述の「ハマりポイント」で解説します。

Step 3:接続確認

Claude Code を起動し、/mcp コマンドで Notion サーバーが connected になっていることを確認します。

claude
# 起動後
> /mcp
# notion: connected ✅ と表示されればOK

3. 実装:Claude Code から Notion DB を読み書きする

使用する MCP ツール

Notion MCP サーバーが公開する主なツールは以下の通りです。

ツール名 用途
notion_query_database DB からフィルタ付きでページを取得
notion_create_page DB に新しいページ(行)を作成
notion_update_page 既存ページのプロパティを更新
notion_get_page ページの詳細情報を取得
notion_get_block_children ページ内のブロック(本文)を取得

プロンプト設計:議事録→タスク自動生成

CLAUDE.md に以下のようなカスタムコマンド定義を記述します。

## カスタムワークフロー:議事録からタスク生成

### /generate-tasks コマンド

以下の手順を実行してください:

1. Notion MCP で議事録DB(ID: `abc123...`)から、
   ステータスが「未処理」のページを取得する
2. 各議事録ページの本文ブロックを取得し、
   以下の観点でタスクを抽出する:
   - 「〜する」「〜を対応」「TODO」「要確認」を含む文
   - 担当者名が明記されている箇所
   - 期限が言及されている箇所
3. 抽出したタスクごとに、タスクDB(ID: `def456...`)へ
   以下のプロパティで新規ページを作成する:
   - タスク名: タスクの要約(30文字以内)
   - ステータス: 「未着手」
   - 優先度: 内容から判断して「高/中/低」を設定
   - 担当者: 議事録から抽出(不明なら空欄)
   - 期限: 議事録から抽出(不明なら翌週金曜日)
   - 元議事録: 議事録ページへのリレーション
4. すべてのタスク作成後、実装指示ドラフトを生成する:
   - 優先度「高」のタスクについて、
     技術的な実装方針を3行以内で記述
   - ドラフトは `docs/tasks/YYYY-MM-DD.md` に保存
5. 議事録ページのステータスを「処理済み」に更新する

実行例

claude "議事録DBから未処理の議事録を取得して、タスクを自動生成して"

Claude Code は MCP ツールを順次呼び出し、こんな流れで処理します。

🔍 notion_query_database で未処理の議事録を3件取得
📖 notion_get_block_children で議事録本文を読み込み
✏️ 議事録1件目から4つのタスクを抽出
📝 notion_create_page でタスクDBに4件作成
🏷️ 優先度を自動判定:高1件、中2件、低1件
📄 実装指示ドラフトを docs/tasks/2025-01-20.md に保存
✅ 議事録のステータスを「処理済み」に更新

4. After:全自動フロー

自動化後のフローはこうなりました。

人間がやることは「議事録を Notion に貼る」と「Claude Code にコマンドを1つ打つ」だけ。所要時間は議事録の量にもよりますが、3件の議事録で約2〜3分で全処理が完了します。

5. 週5時間短縮の内訳

作業 Before(1日あたり) After(1日あたり) 削減
議事録→タスク転記 30分 0分(自動) 30分
優先度・担当者の整理 15分 1分(確認のみ) 14分
実装指示書の作成 20分 2分(微修正のみ) 18分
日計 65分 3分 62分
週計(×5日) 325分(≒5.4時間) 15分 ≒5時間

控えめに見積もって 週5時間 です。月換算で約20時間。年換算で約240時間。丸10日分の作業が消えた計算になります。

浮いた時間は、設計の壁打ちやコードレビュー、つまり人間にしかできない判断業務に充てています。

6. ハマりポイント3つ

① 認証トークンの管理

問題: .mcp.json にトークンをベタ書きすると、Git に push した瞬間に事故になります。

解決策: 環境変数で外部化し、.mcp.json では参照だけにします。

# .envrc(direnv を使用する場合)
export NOTION_API_TOKEN="ntn_xxxxxxxxxxxxxxxxxxxx"
{
  "mcpServers": {
    "notion": {
      "command": "npx",
      "args": ["-y", "@anthropic/notion-mcp-server"],
      "env": {
        "NOTION_API_TOKEN": "${NOTION_API_TOKEN}"
      }
    }
  }
}

.mcp.json.envrc.gitignore に追加するのを忘れずに。チーム共有が必要な場合は .mcp.json.example をテンプレートとして用意しましょう。

② Notion リレーションプロパティの解決

問題: タスクDBから「元議事録」リレーションを設定しようとすると、リレーション先のページIDが必要です。しかし、Claude Code がリレーションプロパティを正しく構成できずエラーになるケースがありました。

解決策: CLAUDE.md にリレーションの書き方を明示的に指定します。

## Notion リレーションの設定方法

タスクDBの「元議事録」プロパティはリレーション型です。
設定時は以下のJSON構造を使ってください:

{
  "元議事録": {
    "relation": [
      { "id": "議事録ページのID" }
    ]
  }
}

※ リレーションプロパティ名は日本語のまま指定すること

③ 日本語プロパティ名のエスケープ

問題: Notion のプロパティ名に日本語を使っている場合、MCP ツールの呼び出しで文字化けしたり、プロパティが見つからないエラーが発生することがありました。

解決策: これは CLAUDE.md に DB スキーマを明記することで安定しました。

## タスクDB スキーマ(ID: def456...)

| プロパティ名 | 型 | 選択肢 |
|---|---|---|
| タスク名 | title | - |
| ステータス | select | 未着手, 進行中, 完了 |
| 優先度 | select | 高, 中, 低 |
| 担当者 | people | - |
| 期限 | date | - |
| 元議事録 | relation | → 議事録DB |

ポイントは、Claude Code に「このプロパティ名をそのまま使え」と指示することです。AI が勝手に英語に翻訳しようとする場合があるため、明示が重要です。

7. この設計の限界と次に狙う Slack MCP 連携

現在の限界

  • 議事録の質に依存する: 曖昧な書き方の議事録だとタスク抽出精度が下がる。事前に議事録テンプレートを統一しておく必要がある
  • 複雑なリレーション構造に弱い: 3階層以上のリレーション(タスク→エピック→プロジェクト)は手動補正が必要になることがある
  • レート制限: Notion API のレート制限(3リクエスト/秒)により、大量の議事録を一括処理すると遅延する

次のステップ:Slack MCP 連携

Slack の会議チャンネルから直接議事録を取得→タスク生成→GitHub Issue 作成→Slack に完了通知というフローを構想中です。Notion への手動ペーストすら不要になります。

まとめ

  • Claude Code × Notion MCP で、議事録→タスク→実装指示の手動フローを全自動化し、週5時間の作業削減を実現した
  • MCP サーバーの設定は .mcp.json に数行書くだけで完了し、CLAUDE.md にスキーマとプロンプトを明記すれば安定稼働する
  • ハマりどころはトークン管理・リレーション解決・日本語プロパティ名の3つ。事前に対策すればスムーズに導入できる

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?