
Claude Coworkで議事録から自分のタスクを抽出してSlack Canvasに追記してみた
こんにちは!製造ビジネステクノロジー部の石井です。
会議が終わった瞬間に「あれ、何を引き受けたっけ?」ってなること、ありませんか?「その件、私やっておきます!」と宣言したはいいけど、直後の割り込みや次の会議に押されて流れてしまうやつです。
Google MeetにはGeminiが自動で議事録と「推奨される次のステップ」(いわゆるアクションアイテム)を作ってくれる機能がありますが、1日に複数会議があると全部開いて自分のタスクを確認するのはなかなかしんどい。
そこで、毎朝自動で「自分のタスクだけ」をSlack CanvasのTo-Doリストに追記してくれる仕組みを作ってみました。
使ったのはClaude DesktopのCoworkです。
GASでも似たことはできますが、JavaScriptを理解できる必要があり、AI抽出は別途APIキーが必要です。
CoworkならプロンプトとMCP接続で完結するので、エンジニアじゃなくてもセットアップから自動化までやりやすいのが嬉しいところです。
完成形はこんな感じ
実際に動いている状態を先にお見せします。
毎朝10時に動くよう設定しているので、SlackのDMにある自分のTo-Doリスト(Canvas)に昨日の会議から抽出されたタスクが自動で追記されます。

完了したタスク(チェックを入れたもの)は「完了履歴」セクションに自動で移動されて、完了日付きで取り消し線表示になってます。
Canvasの先頭には更新情報が記録されます。
最終更新: 2026/6/16 10:00 / 新規 2件 ・ 完了 1件 ・ 取得経路: Gmail
「取得経路」については後で説明します。
全体の流れ
ざっくり3ステップです。
ポイントは2つ。
- 議事録の全文ではなく 「推奨される次のステップ」だけ を読む(Gemini側で要約済みなのでClaudeに渡す量が少ない)
- 出口を Slack Canvas にする(メッセージと違って流れない、チェックで消化できる、完了タスクは履歴に自動移動)
必要なものと前提条件
今回の仕組みはGoogle Meet + Gemini自動メモ前提で組んでいます。Zoomを使っている場合も、サマリーメールが届く設定にしていればGmail経由で似た構成を作れるので、応用の余地はあります。将来的にZoomのMCPコネクタが整備されれば、もっとスムーズに対応できるようになるかもしれません。
ただし現状そのまま動かすには工夫が必要で、理由は2つ。ZoomのAI Companionのサマリーはzoom.usのポータルに保存される仕組みなのでGoogle Drive経由では取得できません。プロンプト自体もGoogle Meet固有の言葉(「Geminiが生成した議事録」「推奨される次のステップ」など)で書かれているので、Zoom向けに書き直しは必要になります。
Google Workspace側
- Google Workspace Business Standard以上のプランであること
- Google MeetのGemini自動メモ生成が有効になっていること
- 会議中に手動でオンにするか、カレンダー予定を作るときに「Geminiでメモを生成」にチェックを入れる方法と、Workspace管理者が全体設定でオンにする方法があります
- メモの共有設定で自分にメールが届く設定になっていること(「すべての招待済みゲスト」または「組織内の招待済みゲスト」)
Cowork側
- Claude Desktop(Pro以上)がインストール済みであること
- 以下のコネクタが接続済みかつトグルONになっていること(Settings → Connectors)
- Google Calendar
- Gmail(議事録メールの取得に使用)
- Google Drive(Gmailで取れなかった場合のフォールバック。「Drive検索」のトグルが特に重要、後述)
- Slack
- 10時にPCが起動していてClaude Desktopが開いていること
Slack側
- 自分のDMにTo-DoリストのCanvasが存在すること
- Canvas IDを事前に確認しておくこと(後で手順を説明します)
セットアップ手順
Step 1. コネクタの接続と有効化
CoworkのSettings → ConnectorsからGoogle Calendar、Google Drive、Gmail、Slackをそれぞれ接続します。
ここで一つ重要なポイント。Google Driveのコネクタを接続したとき、「Drive検索」というトグルが別途あります。これがデフォルトでOFFになっていることがあるので注意。

「接続済み」になっているだけでは不十分で、このトグルもONにしないとClaudeがDriveのツールを使えません。実際にここでハマりました(詳細は後述)。
Step 2. Canvas IDを確認する
Canvas IDはブラウザのSlackでCanvasを開いてURLを確認します。URLの末尾の F から始まる文字列がCanvas IDです。
https://〇〇.slack.com/docs/hoge/FXXXXXXXXXX
Section IDはプロンプト内で slack_read_canvas を使って動的に取得するので、事前に調べておく必要はありません。
Step 3. まず手動で1回テスト実行
いきなりスケジュール登録するよりも、先に手動で動かして確認するのがおすすめです。以下のプロンプトをCoworkに貼り付けて、{自分のフルネーム} と {CanvasID} の2箇所だけ書き換えて実行してみてください。
ちなみにこのプロンプト自体も、最初は「こういう仕組みを作りたい」とClaudeに相談して作ってもらったものです。技術用語が並んでいますが、書き換えが必要なのは上記2箇所だけなので、中身を完全に理解する必要はありません。
毎朝、前営業日のGoogle Meet会議の議事録から自分のタスクを抽出して、SlackのTo-Do Canvasを更新してください。
### 前提情報
- 私の名前:{自分のフルネーム}
- Slack To-Do Canvas ID:{CanvasID}
- Canvasの構造は `slack_read_canvas` で読み取り、「今週」セクションのsection_idを動的に特定すること
- Geminiの議事録はGoogleドキュメントとしてカレンダーの予定に添付される。添付の識別条件は `mimeType: "application/vnd.google-apps.document"` かつ `title` に「Gemini」を含むこと
- 議事録内の「推奨される次のステップ」セクションに、タスクが「[担当者名] タスク内容: 詳細説明」の形式で記載されている
- フォールバック用として、Geminiは会議終了後にGmailにも議事録メールを送信する
### 制約
- 議事録の全文は読み込まない。「推奨される次のステップ」セクションだけを処理すること
- Canvas内のチェック未済タスクは一切変更しないこと
- NEVER WebFetchで議事録を取得しない(認証エラーになる)
### 実行手順
**ステップ0:ツールの接続確認**
Google CalendarとGoogle Driveのツールが使用可能か確認する。使用できない場合は20秒待って再試行する(最大3回)。
- Google Calendarが使用できない場合 → Canvasの更新日時にエラーを記載して終了する
- Google Driveのみ使用できない場合 → ステップ1へ進み、ステップ2の前に再試行する
**ステップ1:前営業日の会議を取得**
`gcal_list_events` で前営業日の予定を取得する。
パラメータ:
- `calendarId`: `primary`
- `timeMin`: `{前営業日}T00:00:00`
- `timeMax`: `{前営業日}T23:59:59`
- `timeZone`: `Asia/Tokyo`
- `condenseEventDetails`: `false`(添付ファイル情報が必要なため)
前営業日の判定:
- 火〜金曜に実行 → 前日
- 月曜に実行 → 前週の金曜
取得した予定のうち、`attachments` に Gemini議事録(上記の識別条件に合致)が含まれる予定だけを対象にする。
**ステップ2:議事録を取得**
各会議の議事録を以下の優先順位で取得する。
優先:Gmail経由
- Gmailで前営業日の議事録メールを検索して取得する
フォールバック:Google Drive経由
- Gmail経由で取得できなかった場合は、ステップ1で特定した Gemini議事録の `fileId` を使い、`google_drive_fetch` で取得する
- ステップ0で `google_drive_fetch` が未取得の場合は、ここで再度ToolSearchを実行する(20秒間隔×最大3回)
議事録が見つからない会議はスキップし、ステップ6で報告する。
**ステップ3:タスクを抽出**
各議事録の「推奨される次のステップ」セクションから、担当者名に「{自分のフルネーム}」が含まれる項目だけを抽出する。
**ステップ4:Canvasの読み取りと整理(完了タスクの移動)**
`slack_read_canvas` で Canvas(Canvas ID: {CanvasID})を読み取り、`section_id_mapping` から「今週」セクションのsection_idを特定する。
「今週」セクション内にチェック済みタスク(`* [x]` で始まる行)がある場合:
1. 「✅ 完了履歴」セクションが存在するか確認する。なければ Canvas末尾に `## ✅ 完了履歴` を作成する
2. チェック済みタスクを「今週」セクションから削除する
3. 「完了履歴」セクションに以下のフォーマットで追記する
フォーマット:
`* ~~{元のタスク内容}~~ (完了: {前営業日の日付})`
完了履歴は直近2週間分を保持する。2週間より古い完了タスクは削除する。
**ステップ5:新しいタスクをCanvasに追記**
ステップ3で抽出したタスクを、`slack_update_canvas` でステップ4で特定した「今週」セクションにappendする。
フォーマット:
`* [ ] 【{会議名}】{タスク内容}({日付} {開始時間}-{終了時間})`
**ステップ6:更新日時を記録**
`slack_update_canvas` でCanvasのタイトル直下に最終更新日時を記録する。既存の更新日時がある場合はreplaceで上書きする。
フォーマット:
`*最終更新: {実行日} {実行時刻} / 新規 {件数}件 ・ 完了 {完了件数}件 ・ 取得経路: {Drive or Gmail} ・ 対象: {前営業日の日付}*`
議事録が見つからなかった会議がある場合は改行して追記:
`*⚠️ 議事録なし: {会議名}({開始時間}-{終了時間})*`
### 補足ルール
- 「推奨される次のステップ」セクションが存在しない議事録はスキップし、ステップ6で報告する
- 新規タスクが0件でも、Canvas整理と更新日時の記録は実行する
- エラーが起きた場合は、更新日時の行にエラー内容を記載する
- 1対1のミーティング(参加者2名以下)も対象に含める
Canvas IDのところは実際の値に書き換えてください。
実行したら、Canvasに正しく追記されているか確認します。Gmail/Driveどちらで取れたかは「取得経路」の表示で確認できます。
※参考

Step 4. スケジュール登録
動作が確認できたら、Coworkでスケジュールタスクとして登録します。
このタスクを毎朝平日10:00に自動実行するようにスケジュール登録して
これでCoworkが /schedule コマンドを使ってスケジュール登録を行います。
実際に動かしてわかったこと
分かりづらかったところ1:Drive検索トグルがOFF問題
最初にClaudeが「No Google Drive MCP is available」と言い張って困りました。Connectorsを見たらGoogle Driveの接続自体はできてるのに...。
原因は**「Drive検索」という個別トグルがOFFだったこと**。コネクタが「接続済み」になっていても、ツールが使えるとは限らない。Coworkには各コネクタ内にさらに機能単位のトグルがあって、こちらも有効にする必要があります。
ちなみに「Google Driveから追加」ボタンでファイル一覧は見えていたんですが、あれはファイルを手動でコンテキストに追加する機能で、MCPツールとしての自律的なDrive検索とは別物だったわけです。
チェックポイントとして、「接続済み」と「Drive検索トグルON」は別物なので両方確認しましょう。
分かりづらかったところ2:想定外の方法で議事録を取りに行く
Gmail・Driveで取れなかった場合に、Claudeがブラウザで議事録URLを直接開こうとすることがありました。ログインが必要なURLなので当然エラーになります。
「その方法は使わない」と明示的に書いておくことで解決しました。AIへの指示は「やること」だけでなく「やらないこと」も書いておくのが大事だなと気づいた部分です。
設計判断:出口をSlack Canvasにした理由
最初はSlack DMへのメッセージ投稿を考えていたんですが、メッセージだと翌日には他の通知に埋もれてしまう。
Canvasなら固定された場所に蓄積されていくし、チェックボックスで消化を管理できます。Slack MCPにはCanvas読み取り(slack_read_canvas)・更新(slack_update_canvas)・作成(slack_create_canvas)のツールが揃っているので、特定のセクションへのピンポイント追記も問題なくできました。
設計判断:Canvas IDはハードコード、Section IDは動的取得
「自分のDMに投稿して」という自然言語指示でSlackのDM宛先は特定できます。Canvas IDについても指定しなくても動くと思いますが、意図しないCanvasを更新するリスクを避けるために明示的に渡しています。
Section IDは slack_read_canvas で毎回動的に取得する設計にしました。ハードコードすると、Canvasの構造を変えたときにプロンプトの修正も必要になるためです。
発展させるとしたら
別の情報集約パターンに広げる
今回は「議事録からタスク抽出 → Slack Canvas追記」でしたが、同じ枠組みで他にも色々できます。例えばイベント準備の状況把握に、SlackチャンネルのメッセージとMeet議事録から「決まったこと」「未確定事項」「次やること」を拾って整理する、みたいな使い方もできました。「情報源(Slack/Meet/Drive)→ Claudeで抽出・整理 → 出口(Canvas/メッセージ/別ツール)」のテンプレで応用が効きます。
タスク管理ツールへの自動起票
AsanaやJiraのMCPコネクタが存在するので、そちらに自動起票する構成も作れます。ただしJiraのMCPはベータで動作が不安定な部分もあるのでご注意を。
チーム展開
プラグイン化して組織内で共有すれば、チーム全員が使えます。名前・Canvas IDをそれぞれの設定に変えるだけで、チームメンバーそれぞれのTo-Doリストにタスクが届く形にできますね。
まとめ
Coworkのスケジュールタスク+MCPコネクタだけで、コードゼロで「毎朝10時に議事録からタスクを自動抽出してSlack Canvasに追記」する仕組みができました。
個人的に分かりづらかったところとしては、
- Drive検索トグルのOFF問題(「接続」と「トグルON」は別)
- WebFetchへの意図しないフォールバックの抑止
あたりが詰まった部分でしたが、全部プロンプトレベルで対処できてます。
会議が多くてタスク管理に悩んでいる方は、ぜひ試してみてください。ちなみに、Claudeの導入・活用はクラスメソッドで総合支援しています。
おまけ
この記事自体「非エンジニアでもCoworkでこんなことができる」という事例の一つですが、もっと色々な活用方法や事例を直接聞ける勉強会を、6/29(月)にクラスメソッド名古屋オフィスで開催します。
「なごやクラメソゆる勉強会 #3」のテーマがまさに「非エンジニアのClaude活用術」です。
職種の異なるクラメソ社員による活用方法や事例の紹介、社内AI活用コンテストの入選作品紹介、参加者の登壇枠もあります。
私も「Claude最新アップデート」枠で冒頭に登壇します。
今回の記事で紹介したCowork × MCPの話とかも、当日の交流時間でカジュアルに話せます。
なごやクラメソゆる勉強会 #3 非エンジニアのClaude活用術 - connpass
伏見駅徒歩5分、ゆるい雰囲気で気軽に参加できますのでご興味ある方はぜひ!






