🤖
GPTでタスク管理 これをAppleScript→Alfred workflow→Things3にタスク登録
Things 3 でタスク管理していた筆者が、GPT を使ったタスク登録・整理の快適さに気づきました。音声入力+自然言語で登録できる一方、タスク一覧を確認するには GPT に「今現在のタスク一覧を表形式で出力して」と頼むステップが必要です。
そこで GPT と Things 3 を連携するワークフローを試行錯誤した内容をまとめます。
📌 全体フロー
-
ChatGPT で Things 3 互換の AppleScript(
.scpt
) を生成 - 生成した
.scpt
を ダウンロード & ローカル保存 -
Alfred Workflow が
.scpt
を自動実行 - Things 3 にタスクが登録
- 後処理:実行済み
.scpt
を ゴミ箱へ移動
GPT ⇄ Things 3 の流れを自動化し、「登録 → 実行 → 削除」までワンストップで完結させます。
💡 前提条件(検証環境)
項目 | 必須バージョン | 備考 |
---|---|---|
macOS | 13 Ventura 以降 | AppleScript/Alfred 5 動作確認済み |
ChatGPT | Pro プラン |
.scpt ファイル生成可 |
Things 3 | 3.19+ | URL スキーム things:///add? 対応 |
Alfred | 5.x | Powerpack 購入必須(Workflow 機能) |
補足
- ChatGPT Plus でも
.scpt
出力は可能ですが、ダウンロードリンク生成は現状不可- Alfred は “Mac を使う理由” になるほどの効率化ツールです
1. ChatGPT でタスクを管理する
-
タスク専用チャットを用意し、自然言語で追加
- 例:
明日牛乳を買うタスクを追加して
- 例:
- 音声入力でも OK:ラフな発話でも GPT が整形して楽ちんな登録
- タスク一覧の取得/完了指示も自然言語で完結
- 例:
今の残タスク一覧を表形式で出力して
- 例:
牛乳を買うタスクは完了したから削除して
- 例:
秘書がいるかのように便利だが😞残念な課題
- 一覧をサッと確認しにくい(専用 UI の利便性に劣る)
- オフライン非対応
- 期限通知 🔔 がない
- 使い慣れた Things 3 のメリットを活かせない
2. GPT 管理タスクを Things 3 に登録(AppleScript 活用)
Things 3 には公式 REST/API がない(2025‑04 現在)。
外部連携には AppleScript/URL スキーム/Mail to Things をラッパー API として利用する。
2.1 ChatGPT への AppleScript 生成プロンプト
今時点での残タスクを Things 3 に登録するための AppleScript を出力し、`.scpt` ファイルに保存して、ダウンロードリンクを提示してください。
各タスクは `title`(タスク名)、`notes`(補足説明)、`due date`(期限)に分けて、AppleScriptネイティブ構文(`tell application "Things3"`〜)で構成してください。
📌 `due date` は以下のような構文で、macOSロケールに依存しない形式で正確に記述してください:
```applescript
set dueDate to current date
set year of dueDate to 2025
set month of dueDate to April
set day of dueDate to 22
set time of dueDate to (16 * hours) -- 16:00
このように年月日時分を明示的に設定し、due date:dueDate の形で登録してください。
1タスクごとに delay 0.5 秒を入れてください。
❗️制約:
• 「osascript ~」「set scriptPath ~」など、自分自身を呼び出す命令は絶対に含めないでください
• スクリプトは 1回で完結する構成にしてください(無限ループや再帰呼び出し禁止)
✅ 出力形式は以下の3つに分けてください:
1. AppleScriptコード本体(.scpt ファイルとして保存可能な形式)
2. ファイル名は ThingsTasks_YYYYMMDD_HHmm_TZ.scpt の形式にしてください
(例:ThingsTasks_20250420_1003_JST.scpt)
3. 登録されるタスクの一覧を表形式またはマークダウン形式で出力してください
(title / notes / due date の3列)
最後に .scpt ファイルを生成し、ダウンロードリンクを提示してくださいラベル別コンテンツ機能では、選択したラベルに基づいて関連記事を自動で表示します。この機能のオプションを編集するには、関係者を選択して鉛筆アイコンをタップします。
2.2 作成したプロンプトをAlfredからすぐに呼び出せるようにSnippet登録する
2.3 プロンプト実行するとAppleScript形式 .scpt ファイルが出力される
3 AppleScriptをAlfred workflowを使用して実行と完了後のファイル削除
📝メモ
- ChatGPT Plus でも
.scpt
出力は可能ですが、ダウンロードリンク生成は現状不可- ダウンロード後のAppleScriptを手動クリック実行でもThings3に登録できるが
- 完了後のファイル削除まで手作業になるのでAlfredのworkflowで自動化すること
- Alfredのworkflowの公式ギャラリーには便利なちょっとしたツールが多数
- ⚠️ Alfredのworkflow機能を使用するにはPowerpackの購入が必要です。
3.1 workflowを設定する
AlfredのworkflowからTemplatesのKeyword to Scriptを選択する
3.2 Alfred Workflow ─ Keyword to Script トリガの初期設定
項目 | 設定値 | 機能的な意味 |
---|---|---|
Keyword | gpt2things3 | Alfred の検索バーでこのキーワードを入力するとワークフローが起動します |
Argument | No Argument(引数なし) | キーワード入力のみで実行。追加パラメータを受け取らず、そのまま次のノードへ遷移 |
Title | ChatGPT to Things3 | Alfred の候補リストに表示されるラベル。可読性確保のため句読を含む説明的タイトル |
Subtext | (空欄) | キーワード候補の下に出る補足説明。今回は未設定 |
Icon | ワークフロー独自アイコン(スクリーンショット右側のイラスト) | Alfred の入力候補/ワークフロー一覧で視覚的に識別 |
接続 | Keyword → /usr/bin/osascript (Run Script) | キーワードが発火すると、後段の Run Script アクションに AppleScript が渡り実行される |
3.3 Run Script ノード(AppleScript 実行)の「スクリプト本体以外」の設定項目
項目 | スクリーンショット値 | 役割・挙動 |
---|---|---|
Language | /usr/bin/osascript (AppleScript) |
macOS 標準の osascript を介して AppleScript を実行するモードを指定。ここでシェル種別と実行バイナリを決めるため、Bash/Zsh/Python などにも切り替え可 |
with input as | {query} |
上流ノードから受け取った入力(Keyword の引数など)を {query} プレースホルダにバインドしてスクリプト内で利用する方式。今回は Keyword が No Argument のため実際には空文字列が渡る |
running instances | Sequentially | ワークフローを短時間で連続起動した場合、前回インスタンスが完了するまでキューに溜めて順番に実行。排他制御が必要なファイル操作に安全 |
Escaping オプション | Backquotes・Double Quotes・Backslashes がチェック済み |
{query} をスクリプトに埋め込む際に、選択した文字を自動エスケープして構文破壊やコードインジェクションを防止 |
Alfred workflowのスクリプトの中身
-- DownloadsフォルダのPOSIXパスを取得
set downloadsFolder to POSIX path of (path to downloads folder)
-- "ThingsTasks_" で始まり、".scpt" で終わるファイルの中から最新を取得(タイムスタンプ・タイムゾーン対応)
set latestScript to do shell script "find " & quoted form of downloadsFolder & " -type f -name 'ThingsTasks_*.scpt' -print0 | xargs -0 ls -t | head -n 1"
-- スクリプトを実行し、完了ダイアログ+ゴミ箱に移動
try
do shell script "osascript " & quoted form of latestScript
display dialog "👍️ Things 3 にタスクを追加しました!" buttons {"OK"} default button 1 with title "📥 完了" with icon note
set macPath to POSIX file latestScript as alias
tell application "Finder"
move macPath to trash
end tell
on error errMsg
display dialog "🙅 スクリプトの実行に失敗しました: " & errMsg buttons {"OK"} default button 1 with title "⚠️ エラー" with icon stop
end tryラベル別コンテンツ機能では、選択したラベルに基づいて関連記事を自動で表示します。この機能のオプションを編集するには、関係者を選択して鉛筆アイコンをタップします。
3.4 Alfred workflowを実行しThings3にタスクを追加する
- ChatGPTより出力されダウンロードされたAppleScriptファイルを
- Alfred workflowが実行
- Things3に登録完了後にAppleScriptファイルをゴミ箱に追加
Discussion