🤖

GPTでタスク管理 これをAppleScript→Alfred workflow→Things3にタスク登録

に公開


Things 3 でタスク管理していた筆者が、GPT を使ったタスク登録・整理の快適さに気づきました。音声入力+自然言語で登録できる一方、タスク一覧を確認するには GPT に「今現在のタスク一覧を表形式で出力して」と頼むステップが必要です。
そこで GPT と Things 3 を連携するワークフローを試行錯誤した内容をまとめます。


📌 全体フロー

  1. ChatGPT で Things 3 互換の AppleScript(.scpt を生成
  2. 生成した .scptダウンロード & ローカル保存
  3. Alfred Workflow.scpt を自動実行
  4. Things 3 にタスクが登録
  5. 後処理:実行済み .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にタスクを追加する

  1. ChatGPTより出力されダウンロードされたAppleScriptファイルを
  2. Alfred workflowが実行
  3. Things3に登録完了後にAppleScriptファイルをゴミ箱に追加

Discussion