Contents
Todoist の標準機能でできる自動化
Todoist だけでも日々のタスク入力を大幅に削減できます。本セクションでは、追加ツール不要で実現できる「繰り返し」「テンプレート」「フィルター」の3つの標準機能と、その具体的な設定手順・活用例を解説します。まずは Todoist 本体の機能に慣れ、土台を固めてから外部連携へ進むことが成功の近道です。
繰り返しタスク
繰り返しタスクは「期限」欄で周期を指定するだけで、完了した瞬間に次回分が自動生成されます。
- 設定例:毎朝 9:00 にレポート作成 と入力すれば、毎日同じ時刻のタスクが自動的に作られます。
- 活用ポイント:定期的なルーチン(週次ミーティング、月次レビューなど)はすべてこの機能で置き換え可能です。
テンプレート
テンプレートはプロジェクト構造やラベル・フィルターを JSON 形式でエクスポートし、再利用できる仕組みです。
- 作成手順:設定 > プロジェクト > エクスポート → JSON ダウンロード。
- インポート例:新規プロジェクト開始時に「インポート」ボタンで同じタスクセットを瞬時に復元できます。※公式ガイドは 2024 年版が最新版([Todoist ヘルプセンター][ref‑todoist‑template])です。
フィルター自動化
カスタムフィルターで「今日のタスク」や「高優先度かつ未完了」のビューを作成し、サイドバーに固定できます。
- 設定例:today & priority 1 → 今日期限が迫っている最重要タスクだけを表示。
- 効果:検索操作を省き、常に重要項目だけを俯瞰できるため、作業の切り替えコストが減ります。
Zapier で実現する代表的連携と設定手順
Zapier はコード不要で数千アプリをつなげられるノーコードプラットフォームです。本章では Zapier アカウント作成 → Todoist API キー取得(安全に管理) → Zap の構築 までの流れを、メールとカレンダー連携の2パターンで具体的に示します。
メール → Todoist タスク化
Gmail(または Outlook)で特定ラベルが付いたメールを自動でタスク化するフローです。
1. Zapier にログインし「Make a Zap」ボタンをクリック。
2. トリガー:Gmail – New Email Matching Search を選択し、検索クエリに label:todoist など条件を入力。
3. アクション:Todoist – Create Task を選び、以下の項目をマッピングします(※テーブルは後述)。
| Gmail フィールド | Todoist フィールド |
|---|---|
| Subject | Task content |
| Body preview | Description |
| Date (if present) | Due date |
- 認証:Todoist の API キーは「設定 > インテグレーション」から取得し、Zapier の認証画面では 環境変数(例:
{{zap_env.TODOIST_TOKEN}})を使用して貼り付けます。コードや UI に平文で書かないことがベストプラクティスです。 - 「Test & Review」でサンプルメールがタスク化されることを確認し、Zap をオンにします。
注意:
Due dateが空欄だと期限なしタスクになるため、Zapier の「Filter」ステップでDateの有無を判定し、必要ならデフォルト期限(例:翌日)を付与してください。
Google カレンダー → リマインドタスク作成
会議や締め切りがカレンダーに入っているとき、その情報を Todoist に自動変換します。
1. トリガー:Google Calendar – Event Start Trigger(開始30分前)を選択。
2. アクション:Todoist – Create Task に以下の項目をマッピングします。
| カレンダーフィールド | Todoist フィールド |
|---|---|
| Event title | Task content |
| Start time | Due date (date+time) |
| Description | Description |
| Location | Labels(例: @meeting) |
- 必要に応じて Zapier の「Formatter」ステップで日時を ISO 8601 形式 (
YYYY-MM-DDTHH:mm:ssZ) に変換し、Todoist が正しく認識できるようにします。 - テスト実行後、Zap を有効化すれば会議開始前に自動リマインドタスクが生成されます。
ポイント:メール・カレンダー連携は「情報取得 → フィルタ → タスク生成」のシンプルな流れで構築でき、業務の抜け漏れ防止に有効です。
Zoho Flow / Make(Integromat)での自動化フロー作成
Zoho Flow と Make は無料プランでも一定回数の実行が可能です。本節ではそれぞれの 無料プラン上限 と、Todoist へのタスク追加・定期更新フローを具体例とともに紹介します。
無料プラン上限と公式情報
| プラットフォーム | 無料実行数(2024‑12‑01 時点) | 出典 |
|---|---|---|
| Zoho Flow | 月間 1,000 フロー実行 | 【Zoho Flow Pricing】[ref‑zoho] |
| Make (Integromat) | 月間 1,200 操作ステップ | 【Make Pricing】[ref‑make] |
※上記数値は公式料金ページに掲載されている最新情報です(2024 年12月取得)。利用状況によってはプラン変更が必要になる点に留意してください。
Todoist タスク追加フローの例
- Webhook モジュールで外部サービス(例:Google Forms)から POST データを受信。
- JSON パーサー で
title,due_date,project_idを抽出。 - Todoist – Create a Task アクションにマッピングし、認証は環境変数
TODOIST_TOKEN(Make の「Add variable」機能)を使用します。
|
1 2 3 4 |
flowchart TD A[Webhook (Google Form)] --> B[JSON パーサー] B --> C[Todoist: Create Task] |
スケジューラーモジュールで定期的な更新
- Make の Scheduler を利用し、毎日 09:00 に「未完了タスクの期限延長」フローを走らせます。
- フロー内で
Todoist – Get Active Tasksを呼び出し、取得リストからdue_date < now()のものだけを抽出(フィルタ条件)。 - 抽出結果に対して Todoist – Update Task アクションで新しい期限(例:
+3 days)を設定します。
ベストプラクティス:Webhook エンドポイントは必ず認証トークン付き URL にし、外部からの不正呼び出しを防止してください。
Todoist API とスクリプトによる高度自動化例
API を直接利用すれば、ノーコードツールでは実現できない細かなロジックや大量データ処理が可能です。本章では Python と Node.js のサンプルコードを通じて、タスク一括作成と優先順位自動付与の手順を解説します。
Python でタスクを一括作成
- API キー取得方法は「設定 > インテグレーション」からコピーし、
.envファイルにTODOIST_API_TOKEN=xxxxxと保存。コード内ではos.getenv()で読み込みます。 requestsライブラリでエンドポイントhttps://api.todoist.com/rest/v2/tasksに POST リクエストを送ります。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
import os, time, json, requests from dotenv import load_dotenv load_dotenv() API_TOKEN = os.getenv("TODOIST_API_TOKEN") HEADERS = { "Authorization": f"Bearer {API_TOKEN}", "Content-Type": "application/json" } tasks = [ {"content": "月次レポート作成", "project_id": 2203306145, "due_string": "tomorrow"}, {"content": "顧客ミーティング準備", "project_id": 2203306145, "due_string": "next Monday"}, # 必要に応じて最大100件まで追加可能 ] def create_task(task): resp = requests.post( "https://api.todoist.com/rest/v2/tasks", headers=HEADERS, json=task, ) if resp.status_code == 200: print(f"✅ {task['content']} 作成成功") else: print(f"❌ エラー ({resp.status_code}): {resp.text}") for t in tasks: create_task(t) time.sleep(0.02) # レート制限対策(1秒あたり最大50リクエスト)[ref‑todoist‑rate] |
- レート制限根拠:Todoist の公式開発者ドキュメントに「1 秒につき最大 50 リクエスト」(2024‑10‑01) と記載があります([ref‑todoist‑rate])。
time.sleep(0.02)は安全側の設定です。
Node.js で優先順位を自動付与
.envにTODOIST_TOKEN=xxxxxを保存し、dotenvパッケージで読み込みます。- タスク取得後に期限までの日数から優先度 (1〜4) を算出し、
PATCH /tasks/{id}で更新します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
require('dotenv').config(); const fetch = require('node-fetch'); const TOKEN = process.env.TODOIST_TOKEN; const HEADERS = { Authorization: `Bearer ${TOKEN}`, 'Content-Type': 'application/json', }; async function updatePriorities() { const res = await fetch('https://api.todoist.com/rest/v2/tasks', { headers: HEADERS }); if (!res.ok) throw new Error(`取得失敗: ${res.status}`); const tasks = await res.json(); for (const task of tasks) { // 期限が近いほど優先度を高く設定 const dueDateStr = task.due?.date; let priority = 1; // デフォルト低 if (dueDateStr) { const daysLeft = (new Date(dueDateStr) - new Date()) / (1000 * 60 * 60 * 24); if (daysLeft < 1) priority = 4; else if (daysLeft < 3) priority = 3; else if (daysLeft < 7) priority = 2; } const updRes = await fetch(`https://api.todoist.com/rest/v2/tasks/${task.id}`, { method: 'POST', // Todoist は PATCH の代わりに POST で部分更新 headers: HEADERS, body: JSON.stringify({ priority }), }); if (updRes.ok) console.log(`✅ ${task.content} → priority=${priority}`); else console.error(`❌ 更新失敗 (${updRes.status})`); } } updatePriorities().catch(console.error); |
- エラーハンドリング:
try/catchとステータスコードチェックで失敗時は指数バックオフ(例:setTimeout)を入れると、レート超過や一時的なネットワーク障害に強くなります。
セキュリティ注意点:API キーは決してソースコードにハードコーディングしないでください。環境変数・シークレットマネージャ(例:GitHub Secrets、AWS Parameter Store)を利用し、リポジトリにキーが残らないよう徹底しましょう。
AI(ChatGPT・Claude)連携でタスク優先順位付けと自動生成
AI を組み合わせれば、メール本文や会議メモから「要件抽出」→「優先度スコア付与」までを自動化できます。本節では OpenAI の ChatGPT API と Anthropic の Claude API を用いたフロー例と、実装上の留意点を示します。
ChatGPT API を使ったタスク生成フロー
- 入力取得:Zapier(または Make)の「Retrieve Email」や「Google Docs」ステップでテキストデータを取得。
- Webhook → POST で OpenAI の
v1/chat/completionsエンドポイントに以下の JSON を送信。
|
1 2 3 4 5 6 7 8 9 10 |
{ "model": "gpt-4o-mini", "messages": [ {"role":"system","content":"タスク管理アシスタントです。入力テキストからタスク名と優先度(1‑5) を抽出してください。"}, {"role":"user","content":"{{メール本文}}"} ], "temperature": 0.2, "response_format": { "type": "json_object" } } |
- AI 応答は JSON 配列で返ります(例:
[{"task":"顧客提案書作成","priority":5}, …])。 - Zapier の「Loop」ステップで配列を展開し、各要素を
Todoist – Create Taskにマッピング。priorityは Todoist の 1‑4 スケールに合わせて変換(例:5→4、4→3)します。
出典:OpenAI API 料金・レートは公式ページ(2024‑11‑01 更新)を参照【OpenAI Pricing】[ref‑openai]。
temperatureを低く設定すると結果のばらつきが抑えられ、業務フローで安定した出力が得られます。
Claude API を使った高度シナリオ
- 会議メモを取得(例:Google Docs → テキスト抽出)。
- HTTP モジュールで Anthropic の
messagesエンドポイントへ POST。プロンプトは指示ベースで「JSON 配列だけ返す」ように指定します。
|
1 2 3 4 5 6 7 8 9 10 |
{ "model": "claude-3-haiku-20240307", "max_tokens": 1000, "temperature": 0.1, "system": "You are a task extraction assistant.", "messages": [ {"role":"user","content":"以下の議事録からタスクを抽出し、JSON 配列で返してください。各項目は title, due_date (ISO8601, デフォルト +2d), priority(1‑4)。\n---\n{{会議メモ}}\n"} ] } |
- Claude のレスポンスを Make の「HTTP」モジュールで受け取り、同様に
Todoist – Create Taskに流すだけで完了です。
出典:Anthropic API の利用制限・料金は公式ドキュメント(2024‑10‑15 更新)に記載【Anthropic Docs】[ref‑anthropic]。AI 呼び出しは従量課金のため、必ず「フィルタ」ステップで本当に必要なテキストだけを送信するよう設計してください。
実務ですぐ使える自動化シナリオ10選とベストプラクティス
シナリオ一覧(ツール別)
| # | ユースケース | 推奨ツール | 主な設定ポイント |
|---|---|---|---|
| 1 | Slack メッセージ → Todoist タスク | Zapier | new_message トリガー → Create Task、@todoist メンションでフィルタ |
| 2 | Google フォーム回答 → プロジェクトタスク | Make | Webhook 受信 → JSON パーサ → Todoist Create(ラベル @form) |
| 3 | GitHub Issue → 開発タスク | Zapier | New Issue トリガー → ラベル ↔ Todoist ラベルマッピング |
| 4 | RSS フィード → 読書リスト | Zoho Flow | RSS 新規アイテム → タスク作成、link をコメントに |
| 5 | Outlook カレンダー → リマインドタスク | Make | Scheduler 毎朝実行 → 当日イベント抽出 → Todoist に期限付きタスク |
| 6 | メール添付ファイル → ドキュメントレビュー | Zapier | New Attachment → Google Drive 保存 + タスクにリンク添付 |
| 7 | Notion DB 更新 → タスク同期 | Make | Notion API 変更検知 → Todoist Update(プロジェクト ID 同期) |
| 8 | ChatGPT 要件抽出 → タスク生成 | Zapier + Webhooks | 前述の AI フローを組み合わせ、優先度付きタスク自動作成 |
| 9 | Microsoft Teams メッセージ → 緊急タスク | Zoho Flow | New Message → キーワード 緊急 判定 → 高優先度タスク生成 |
| 10 | CSV 定期レポート → タスク一括作成 | Python スクリプト | CSV 読み込み → 100 件バッチで API POST(レート制限対策) |
ベストプラクティス
- 命名規則とラベル設計
- タスク名は
[プロジェクト] – アクション形式で統一し、検索性を向上させます。例:[マーケ] – SNS 広告文作成。 -
ラベルは機能別(
@email,@meeting,@dev)と優先度別(P1,P2)で階層化し、フィルターと組み合わせたビューを複数用意します。 -
エラー監視とリトライ
- Zapier/Make の「Task History」や Slack 通知を有効にし、失敗時は自動リトライまたは担当者へメールで通知するフローを追加。
-
API スクリプトではステータスコードチェックと指数バックオフ(例:
2^n * 100ms)を実装し、レート超過や一時的障害に備えます。 -
データセキュリティ
- API キー・シークレットは環境変数またはシークレットマネージャで管理し、コードベースにハードコーディングしない。Git のコミット履歴からキーが流出する危険を防止します。
-
Webhook エンドポイントには Basic Auth や Bearer Token を設定し、外部からの不正アクセスを遮断します。
-
パフォーマンス最適化
- 大量タスク作成時は バッチリクエスト(最大 100 件) と
time.sleepによるレート制御を組み合わせ、API の停止リスクを低減。 -
フィルター条件はできるだけ絞り込み、不要なトリガー実行回数を削減し、無料プランの上限を有効活用します。
-
AI 活用時のコスト管理
- AI 呼び出しは従量課金なので、前段でテキスト抽出・フィルタリング を行い、必要最低限の文字数だけ送信。
temperatureは 0.1〜0.3 に抑えて結果のブレを防止します。
まとめ:まずは Todoist の標準機能で土台を固め、次に Zapier・Make・Zoho Flow といったノーコードツールで外部サービスと連携し、最終的に API + AI で高度なロジックや大量処理へ拡張します。段階的に自動化レベルを上げることで、導入コストと運用リスクを最小限に抑えつつ、生産性を最大化できます。
参考文献・出典
- [ref‑todoist‑template] Todoist ヘルプセンター「プロジェクトテンプレート」(2024‑10‑15) https://help.todoist.com/hc/ja/articles/360043927913
- [ref‑todoist‑rate] Todoist Developer Documentation – Rate Limits (2024‑10‑01) https://developer.todoist.com/rest/v2/#rate-limits
- [ref‑zoho] Zoho Flow Pricing (2024‑12‑01) https://www.zoho.com/flow/pricing.html
- [ref‑make] Make (Integromat) Pricing (2024‑12‑01) https://www.make.com/en/pricing
- [ref‑openai] OpenAI API Pricing (2024‑11‑01) https://openai.com/api/pricing/
- [ref‑anthropic] Anthropic API Documentation – Usage Limits (2024‑10‑15) https://docs.anthropic.com/claude/reference/rate-limits
本記事の情報は執筆時点(2024 年)に基づいています。各サービスのプランやレート制限は予告なく変更される可能性があるため、最新情報は公式サイトをご確認ください。