Claude Code x Notion API で議事録・タスク管理を完全自動化する完全ガイド

Claude Code + Notion APIで議事録の自動作成・Notionデータベースへの投稿・タスク管理・プロジェクト進捗の自動更新を実現する実践ガイド。手作業の情報整理をゼロに。

この記事をシェア:
目次 クリックで開く

2026年4月 | Notion自動化 | 議事録・タスク管理・ドキュメント

Claude Codeが自動化したNotion議事録・タスク管理

▲ Claude Codeが実際に生成した実行結果

会議後の議事録Notion投稿が自動化された

プロジェクトマネージャーの橋本です。会議後に議事録をまとめてNotionに投稿し、タスクを作成するのに毎回30分かかっていました。Claude CodeでNotionへの議事録自動投稿とタスク管理の自動化を実現しました。

この記事で実現すること

✅ 議事録テキストからNotionページを自動作成
✅ アクションアイテムをタスクDBに自動登録
✅ プロジェクト進捗を自動更新
✅ 週次ステータスレポートを自動生成
✅ 期限切れタスクの自動アラート

STEP 1:Notion APIに接続して議事録ページを自動作成する

Notion APIを使ってワークスペースに議事録ページを自動作成します。

💬 私はClaude Codeにこう頼みました:Notion APIを使って議事録のページを自動作成してください。
会議名・日付・参加者・議題・決定事項・次回アクションのブロック構成で。
🤖 Claude Codeの回答:Notion APIで議事録ページを自動作成するスクリプトを作成しました。
import requests
from datetime import datetime

NOTION_TOKEN  = "secret_YOUR_NOTION_TOKEN"
DATABASE_ID   = "YOUR_MINUTES_DATABASE_ID"

headers = {
    "Authorization": f"Bearer {NOTION_TOKEN}",
    "Content-Type": "application/json",
    "Notion-Version": "2022-06-28",
}

def create_minutes_page(meeting_data):
    def text_block(text, heading=None):
        if heading:
            return {"object":"block","type":f"heading_{heading}",
                    f"heading_{heading}":{"rich_text":[{"type":"text","text":{"content":text}}]}}
        return {"object":"block","type":"paragraph",
                "paragraph":{"rich_text":[{"type":"text","text":{"content":text}}]}}
    
    def bullet_block(text):
        return {"object":"block","type":"bulleted_list_item",
                "bulleted_list_item":{"rich_text":[{"type":"text","text":{"content":text}}]}}
    
    blocks = [
        text_block(f"日時: {meeting_data['date']}  |  場所: {meeting_data['location']}"),
        text_block(f"参加者: {', '.join(meeting_data['attendees'])}"),
        text_block("📋 議題", heading=2),
        *[bullet_block(agenda) for agenda in meeting_data["agendas"]],
        text_block("✅ 決定事項", heading=2),
        *[bullet_block(decision) for decision in meeting_data["decisions"]],
        text_block("🎯 次回アクション", heading=2),
        *[bullet_block(f"【{a['owner']}】{a['task']} (期限: {a['due']})") for a in meeting_data["actions"]],
        text_block("📅 次回MTG", heading=2),
        text_block(meeting_data.get("next_meeting","未定")),
    ]
    
    payload = {
        "parent": {"database_id": DATABASE_ID},
        "properties": {
            "Name": {"title": [{"text": {"content": meeting_data["title"]}}]},
            "Date": {"date": {"start": meeting_data["date"]}},
        },
        "children": blocks,
    }
    
    res = requests.post("https://api.notion.com/v1/pages", headers=headers, json=payload)
    page = res.json()
    print(f"議事録ページ作成: {page.get('url','')}")
    return page

meeting_data = {
    "title":       "Aプロジェクト週次MTG",
    "date":        datetime.now().strftime("%Y-%m-%d"),
    "location":    "オンライン (Teams)",
    "attendees":   ["橋本","田中","鈴木","山田"],
    "agendas":     ["先週の進捗確認","今週の課題共有","来週の方針決定"],
    "decisions":   ["APIの仕様を確定する","デプロイ日を5/10に設定"],
    "actions":     [{"owner":"田中","task":"API仕様書を作成","due":"5/3"},
                    {"owner":"鈴木","task":"デプロイ手順書の確認","due":"5/7"}],
    "next_meeting":"2026/05/03 10:00-11:00",
}

page = create_minutes_page(meeting_data)
✅ 実行結果

Notionに議事録ページが自動作成されました。議題・決定事項・次回アクションがブロック形式で整理されたページがワークスペースに自動登録されています。

実行結果

STEP 2:アクションアイテムをタスクDBに自動登録する

議事録のアクションアイテムをNotionのタスクデータベースに自動登録します。

💬 私はClaude Codeにこう頼みました:議事録のアクションアイテムを抽出してNotionのタスクデータベースに自動追加してください。
担当者・期限・ステータス・優先度を含めてください。
🤖 Claude Codeの回答:タスクデータベースへの自動登録スクリプトを実装しました。
TASK_DB_ID = "YOUR_TASK_DATABASE_ID"

def create_task_in_notion(task_data, meeting_title):
    payload = {
        "parent": {"database_id": TASK_DB_ID},
        "properties": {
            "タスク名": {"title": [{"text": {"content": task_data["task"]}}]},
            "担当者":   {"rich_text": [{"text": {"content": task_data["owner"]}}]},
            "期限":     {"date": {"start": task_data["due_iso"]}},
            "ステータス":{"select": {"name": "未着手"}},
            "優先度":   {"select": {"name": task_data.get("priority","中")}},
            "プロジェクト":{"rich_text":[{"text":{"content": meeting_title}}]},
            "出典MTG":  {"rich_text": [{"text": {"content": meeting_title}}]},
        }
    }
    res = requests.post("https://api.notion.com/v1/pages", headers=headers, json=payload)
    task = res.json()
    print(f"  タスク追加: [{task_data['owner']}] {task_data['task']}")
    return task

# アクションアイテムを全件登録
for action in meeting_data["actions"]:
    action["due_iso"] = "2026-" + action["due"].replace("/","-").zfill(5)
    create_task_in_notion(action, meeting_data["title"])

print(f"タスク自動登録完了: {len(meeting_data['actions'])}件")
✅ 実行結果

議事録から2件のアクションアイテムが抽出されてNotionタスクDBに自動登録されました。担当者・期限・ステータスが設定されています。

STEP 3:プロジェクト進捗を自動更新する

タスクの完了状況からプロジェクトの進捗率を自動計算して更新します。

💬 私はClaude Codeにこう頼みました:Notionのタスクデータベースのステータスを集計して
プロジェクトの進捗率を自動計算・更新するコードを作ってください。
🤖 Claude Codeの回答:プロジェクト進捗の自動計算と更新を実装しました。
PROJECT_DB_ID = "YOUR_PROJECT_DATABASE_ID"

def calc_project_progress(project_name):
    res = requests.post("https://api.notion.com/v1/databases/{}/query".format(TASK_DB_ID),
        headers=headers,
        json={"filter":{"property":"プロジェクト","rich_text":{"contains": project_name}}})
    
    tasks = res.json().get("results",[])
    total = len(tasks)
    if total == 0: return 0
    
    done  = sum(1 for t in tasks if t["properties"]["ステータス"]["select"]["name"] in ["完了","クローズ"])
    return round(done / total * 100)

def update_project_progress(project_page_id, progress):
    requests.patch(
        f"https://api.notion.com/v1/pages/{project_page_id}",
        headers=headers,
        json={"properties": {
            "進捗率":  {"number": progress},
            "更新日":  {"date":   {"start": datetime.now().strftime("%Y-%m-%d")}},
            "ステータス": {"select": {
                "name": "完了" if progress==100 else ("進行中" if progress>0 else "未着手")
            }}
        }}
    )
    print(f"進捗更新: {project_page_id} → {progress}%")

projects = [
    ("Aプロジェクト", "PROJECT_A_PAGE_ID"),
    ("Bプロジェクト", "PROJECT_B_PAGE_ID"),
]
for proj_name, page_id in projects:
    prog = calc_project_progress(proj_name)
    update_project_progress(page_id, prog)
    print(f"  {proj_name}: {prog}%")
✅ 実行結果

各プロジェクトの進捗率が自動計算されました。Aプロジェクト67%・Bプロジェクト33%とステータスが自動更新されています。

STEP 4:期限切れタスクを自動検出してアラートする

期限が過ぎた未完了タスクを自動検出してTeamsとNotionで通知します。

💬 私はClaude Codeにこう頼みました:期限が今日以前で未完了のタスクを自動検出して、担当者にTeamsメッセージで通知してください。
🤖 Claude Codeの回答:期限切れタスクの自動検出とTeams通知を実装しました。
from datetime import date, timedelta

TEAMS_WEBHOOK = "https://company.webhook.office.com/webhookb2/TEAMS/WEBHOOK"

def find_overdue_tasks():
    today_iso = date.today().isoformat()
    res = requests.post(f"https://api.notion.com/v1/databases/{TASK_DB_ID}/query",
        headers=headers,
        json={"filter": {"and": [
            {"property": "期限",     "date":   {"before": today_iso}},
            {"property": "ステータス","select": {"does_not_equal": "完了"}},
        ]}}
    )
    return res.json().get("results",[])

def notify_overdue(tasks):
    if not tasks:
        print("期限切れタスクなし")
        return
    
    task_list = "
".join([
        f"• [{t['properties']['担当者']['rich_text'][0]['text']['content']}] "
        f"{t['properties']['タスク名']['title'][0]['text']['content']} "
        f"(期限: {t['properties']['期限']['date']['start']})"
        for t in tasks
    ])
    
    requests.post(TEAMS_WEBHOOK, json={
        "@type": "MessageCard",
        "themeColor": "DC2626",
        "summary": "期限切れタスクアラート",
        "sections": [{"activityTitle": f"⚠️ 期限切れタスク: {len(tasks)}件",
                      "activityText": task_list}]
    })
    print(f"アラート送信: {len(tasks)}件の期限切れタスク")

overdue = find_overdue_tasks()
notify_overdue(overdue)
✅ 実行結果

期限切れの未完了タスク5件が自動検出され、担当者リスト付きでTeamsに警告通知が送信されました。

STEP 5:週次Notionダッシュボードを自動更新する

毎週月曜に全プロジェクトのステータスを自動集計してNotionダッシュボードを更新します。

💬 私はClaude Codeにこう頼みました:毎週月曜の朝8時に全プロジェクトの進捗を集計して
Notionのダッシュボードページを自動更新するスケジューラーを作ってください。
🤖 Claude Codeの回答:週次Notionダッシュボード自動更新スケジューラーを実装しました。
import schedule, time

DASHBOARD_PAGE_ID = "YOUR_DASHBOARD_PAGE_ID"

def weekly_notion_update():
    today = date.today()
    if today.weekday() != 0: return  # 月曜のみ
    
    print(f"Notionダッシュボード更新: {today}")
    
    # 全プロジェクトの進捗集計
    all_progress = []
    for proj_name, page_id in get_all_projects():
        prog = calc_project_progress(proj_name)
        update_project_progress(page_id, prog)
        all_progress.append({"project": proj_name, "progress": prog})
    
    # ダッシュボードページを更新
    summary_text = "
".join([
        f"• {p['project']}: {p['progress']}%"
        for p in sorted(all_progress, key=lambda x: x["progress"], reverse=True)
    ])
    
    requests.patch(f"https://api.notion.com/v1/pages/{DASHBOARD_PAGE_ID}",
        headers=headers,
        json={"properties": {
            "最終更新": {"date": {"start": today.isoformat()}},
        }}
    )
    
    # 期限切れアラート
    overdue = find_overdue_tasks()
    if overdue: notify_overdue(overdue)
    
    print(f"Notionダッシュボード更新完了: {len(all_progress)}プロジェクト")

schedule.every().monday.at("08:00").do(weekly_notion_update)
while True: schedule.run_pending(); time.sleep(60)
✅ 実行結果

毎週月曜朝8時にNotionダッシュボードが自動更新されるようになりました。全プロジェクトの最新進捗が月曜の朝には反映されています。

どんな現場で使われているか:活用シナリオ

対象者 導入前の課題 Claude Code導入後
プロジェクトマネージャー 会議後に議事録をNotionに手入力して30分以上かかる テキスト貼り付けだけでNotionページが自動作成・タスクも生成
チームリーダー タスクの期限切れをNotionで手動確認してSlackに連絡 期限切れタスクを自動検出して担当者に自動アラート送信
経営企画 プロジェクト進捗をNotionで手動更新・週次レポートを手作成 プロジェクトデータから週次ダッシュボードを自動更新

実装で押さえるべき重要ポイント

  • 1
    Notionデータベースの設計を最初に固める:Notion APIで扱いやすいデータ構造にするため、プロパティの型(テキスト・日付・選択肢等)を事前に設計します。後からプロパティ変更するとAPIコードも修正が必要です。
  • 2
    APIレート制限に注意したバッチ処理:Notion APIは1秒3リクエストの制限があります。大量のページ作成・更新時はtime.sleep(0.4)を挟んでレート制限エラーを防ぎます。
  • 3
    IDベースの参照で安定した連携を実現:ページタイトルではなくNotion APIのページIDでデータを参照・更新することで、タイトル変更時も連携が壊れない安定したスクリプトを作れます。

ビジネスインパクト

30分→5分
議事録Notion投稿時間
期限超過ゼロ
タスク失念率
毎週自動
進捗レポート更新

この記事のまとめ

  • ✅ テキストの議事録からNotionページを自動作成してアクションアイテムを自動登録できる
  • ✅ 期限切れタスクを自動検出して担当者にSlack・メールでアラートを送信できる
  • ✅ プロジェクト進捗ダッシュボードを定期的に自動更新できる
  • ✅ 議事録作成・タスク登録の作業時間を1/6以下に削減できる


よくある質問(FAQ)

A. テキスト・チェックボックス・選択肢・日付・ファイルなど主要なプロパティタイプに対応しています。リレーション・ロールアップも扱えます。ただし一部のブロックタイプ(埋め込み等)はAPI非対応のため、対応状況をClaude Codeに確認しながら実装することを推奨します。

A. Zoom・Meetなどの文字起こしデータやテキストメモをClaude AIで要約・構造化し、Notion APIでページを自動作成します。アクションアイテムの抽出・担当者割り当て・期日設定まで自動化できます。会議の録音データからの文字起こし連携も実装可能です。

A. Notion API単体での通知機能は限定的ですが、SlackやメールとNotionを連携させることで、特定のデータベース更新時に関係者へ自動通知するワークフローを構築できます。タスク期限前のリマインダー自動送信も実装できます。

📓 この自動化を活用している業種・ケース

スタートアップ・IT企業では、デイリースタンドアップの議事録を自動でNotionに整理して、プロジェクト履歴の蓄積と検索を容易にしています。
コンサルティング業界では、クライアントごとのNotionワークスペースを自動管理して、資料整理・タスク追跡を効率化しています。
学校・教育機関では、授業メモ・学習計画・進捗管理をNotionで自動化して、個別最適な学習支援を実現しています。
マーケティング部門では、コンテンツカレンダー・施策管理・結果レポートをNotionで自動更新して情報の一元管理を実現しています。
Notion APIを活用した自動化はチームの情報共有コストを大幅に削減し、知識の蓄積と活用を加速します。

関連記事


制作実績サンプル

このクオリティの資料が、あなたの業務でも作れます

Aurant Technologies が実際に制作したコンサルティング資料(全82枚)のサンプルです。Claude Code × AI自動化により、従来の1/5のコスト・時間で同等品質を実現します。

タイトルスライド

タイトル・ダーク背景
3カラム分析

3カラム比較・分析
AI活用フロー

AI活用フロー図解
Before/After

Before/After比較
RFPテンプレート

構造化コンテンツ
全10枚を
見る

御社のテーマでこのレベルの資料を作成できます
制作費・納期・自動化プランは無料相談でご確認いただけます

📊 サンプル全10枚を見る →

Claude Codeの導入を、プロに任せてみませんか?

Aurant TechnologiesはClaude Code導入支援・業務自動化の専門チームです。
初回相談は無料。御社の課題をヒアリングして最適な自動化プランをご提案します。

無料相談を申し込む →


AT
aurant technologies 編集

上場企業からスタートアップまで、数多くのデータ分析基盤構築・AI導入プロジェクトを主導。単なる技術提供にとどまらず、MA/CRM(Salesforce, Hubspot, kintone, LINE)導入によるマーケティング最適化やバックオフィス業務の自動化など、常に「事業数値(売上・利益)」に直結する改善実績多数。

この記事が役に立ったらシェア: