Claude Cowork スケジュールタスクの設定と運用
毎朝同じ情報をかき集め、金曜の夕方に同じ形式のレポートを手で作る。こうした「決まった時間に決まった作業」を続けていると、ある日ふと、これは自分がやらなくてもいいのでは、と思う瞬間が来ます。Claude Cowork のスケジュールタスクは、まさにその瞬間に効いてくる機能です。
ただ、設定すれば勝手にうまくいく、というものでもありません。自動実行は便利な反面、指示のわずかな取り違えが、誰も見ていない時間に静かに積み重なる怖さがあります。ここでは設定手順とあわせて、無人で動かし続けるために実運用で身についた勘所を添えていきます。
定期・ワンタイム・手動の3パターン
スケジュールタスクは、指定した時刻になると自動的に Claude のセッションを起動し、設定したプロンプトを実行する機能です。実行のされ方は3種類あります。
定期実行(Recurring)。 cron 式で指定した間隔で繰り返し実行されます。毎日9時、毎週月曜、毎月1日のように設定できます。
ワンタイム実行(One-time)。 特定の日時に1回だけ実行されます。「明日の15時にリマインドして」のような使い方で、実行後は自動的に無効化されます。
手動実行(Ad-hoc)。 スケジュールを設定せず、必要なときに手で起動します。テンプレート化した作業を、好きなタイミングで流したいときに便利です。
最初に決めるべきは「これは繰り返すのか、一度きりなのか」です。ここを取り違えると、一度で終わってほしい通知が毎日届く、といった事故になります。
cron 式の書き方
定期実行には cron 式を使います。5つのフィールドで構成され、左から「分 時 日 月 曜日」を表します。
┌───── 分 (0-59)
│ ┌───── 時 (0-23)
│ │ ┌───── 日 (1-31)
│ │ │ ┌───── 月 (1-12)
│ │ │ │ ┌───── 曜日 (0-7, 0と7は日曜)
│ │ │ │ │
* * * * *
よく使うパターンを挙げます。0 9 * * * は毎日9時。0 9 * * 1-5 は平日(月〜金)の9時。30 8 * * 1 は毎週月曜8時30分。0 0 1 * * は毎月1日の0時。0 */3 * * * は3時間ごとです。
ひとつ注意したいのが曜日フィールドです。0 と 7 がどちらも日曜を指すため、* * * * 0-6 のつもりで * * * * 1-7 と書くと、日曜が二重に含まれて月曜が抜ける、という取り違えが起きます。この曜日の落とし穴は、登録直後にテスト実行で発火日を一度確かめるだけで回避できます。意図した曜日で動くかは、必ず確認してください。
cron 式は ローカルタイムゾーン で評価されます。日本時間9時に動かしたければ 0 9 * * * と書けば済み、UTC 変換は不要です。
ユースケース1:朝の情報収集
毎朝9時に、関心のある技術トピックの最新情報を集めて要約するタスクです。タスク名は morning-tech-digest、説明は「毎朝の技術ニュースダイジェスト生成」としましょう。
以下のトピックについて、過去24時間の最新情報を Web 検索で収集してください。
トピック:
- Claude / Anthropic の最新アップデート
- AI エージェントの新しいツールやフレームワーク
- Apple / Google の開発者向け最新ニュース
収集した情報を、以下の形式でマークダウンファイルにまとめてください。
ファイル名: tech-digest-{今日の日付}.md
形式:
# テックダイジェスト {今日の日付}
## 主要ニュース
(各ニュースを2-3文で要約)
## 注目ポイント
(全体を通して特に重要だと思う動向を1段落で)
ファイルはワークスペースフォルダに保存してください。
cron 式は 0 9 * * *(毎日9時)に設定します。
プロンプト設計のコツ
スケジュールタスクのプロンプトは、対話と違って「一発で意図が伝わる」必要があります。Claude は毎回まっさらなセッションで起動するため、前回の文脈は引き継がれません。
出力形式は具体的に指定してください。ファイル名のパターン、保存場所、見出し構成まで書きます。曖昧な語も避けます。「最近のニュース」ではなく「過去24時間」、「いくつか」ではなく「最大5件」と、定量的に書くだけで出力が安定します。
エラー時の振る舞いも書いておきましょう。「検索結果が見つからない場合は、その旨をファイルに記載してください」と一行添えるだけで、空振りした朝に空ファイルだけが残る事態を避けられます。
ユースケース2:週次レポート自動生成
毎週金曜17時に、その週のワークスペース内の変更をまとめるタスクです。
ワークスペースフォルダ内のファイルを確認し、
過去7日間に作成または更新されたファイルの一覧を取得してください。
以下の形式で週次レポートを .md ファイルとして作成してください。
ファイル名: weekly-report-{今週の金曜日の日付}.md
# 週次レポート({月曜日} 〜 {金曜日})
## 今週の成果物
- 新規作成: {ファイル一覧}
- 更新: {ファイル一覧}
## 作業サマリー
(ファイルの内容から推測できる今週の主な作業内容を3-5文で)
## 来週に向けて
(未完了と思われる作業や、次のステップの提案を箇条書きで)
cron 式は 0 17 * * 5(毎週金曜17時)です。
ユースケース3:リマインダー
ワンタイム実行を使ったリマインダーです。会話の中で「明日の14時にリマインドして」と言えば、Claude が自動的にワンタイムタスクを作成します。内部的には fireAt パラメータに 2026-03-20T14:00:00+09:00 のような ISO 8601 形式のタイムスタンプが設定されます。
リマインダーのプロンプトは簡潔で構いません。
以下の内容をユーザーにリマインドしてください。
リマインド内容: 15時からのデザインレビュー会議の準備
Figma のプロトタイプを最終確認すること
ワークスペースにリマインドの内容を .md ファイルとして保存してください。
ファイル整理を任せるとき——取り返しのつく形にしてから自動化する
ここまでの3つは、出力が文章やメッセージでした。取り違えがあっても、読み飛ばして書き直せます。ところがダウンロードフォルダの整理や古いファイルのアーカイブのように、ファイルを動かす作業を任せる段になると、話が変わります。誰も見ていない深夜に一度だけ判断を誤ると、翌朝には戻せないものが消えています。
個人開発で素材や書き出しファイルを長く抱えていると、整理はいつでも後回しになります。だからこそ任せたいのですが、私はファイルを動かすタスクだけは「取り返しのつく形」に直してから登録するようにしています。手順は三段です。
第一段は、削除をやめて隔離に置き換える。 消すのではなく、日付ごとの隔離フォルダへ移すだけにします。判断を誤っても、フォルダを覗けば元のファイルがそのまま残っています。
第二段は、動かす前に候補一覧だけを出させる。 いきなり実行させず、まず「何を・どこへ動かすつもりか」を一覧で出力させて目で確かめます。
第三段は、移動の記録を一行ずつ残す。 移動元と移動先の対応表があれば、あとから機械的に戻せます。
プロンプトは次のように、確認と実行を分けて書きます。
~/Downloads を整理してください。ただし削除は行わないでください。
1. 最終更新が14日以上前のファイルを列挙し、移動候補として表示する
2. 各ファイルを ~/Archive/{今日の日付}/ へ移動する
3. 移動元と移動先を1行1件の TSV で ~/Archive/{今日の日付}/manifest.tsv に記録する
4. 移動先に同名ファイルがある場合は上書きせず、その1件をスキップして理由を記録する
実際に走らせる処理は、こう書けます。既定では列挙だけを行い、出力を確かめてから本実行に切り替えます。
#!/usr/bin/env bash
set -euo pipefail
SRC="$HOME/Downloads"
DEST="$HOME/Archive/$(date +%Y-%m-%d)"
MANIFEST="$DEST/manifest.tsv"
DRY_RUN="${DRY_RUN:-1}" # 既定は列挙のみ。DRY_RUN=0 で実際に移動する
mkdir -p "$DEST"
: > "$MANIFEST"
find "$SRC" -maxdepth 1 -type f -mtime +14 -print0 |
while IFS= read -r -d '' f; do
target="$DEST/$(basename "$f")"
if [ -e "$target" ]; then
printf '%s\t%s\tskipped-exists\n' "$f" "$target" >> "$MANIFEST"
continue
fi
if [ "$DRY_RUN" = "1" ]; then
printf '%s\t%s\twould-move\n' "$f" "$target" >> "$MANIFEST"
else
mv -n "$f" "$target"
printf '%s\t%s\tmoved\n' "$f" "$target" >> "$MANIFEST"
fi
done
echo "対象 $(wc -l < "$MANIFEST") 件 (DRY_RUN=$DRY_RUN)"
-mtime +14 は最終更新が14日より前という条件、mv -n は移動先に同名ファイルがあるとき上書きせず何もしない指定です。移動先を日付フォルダにしてあるため、同じ日に二度走っても二度目は skipped-exists が並ぶだけで、ファイルが二重に散らばることはありません。先ほどの冪等性が、ファイル操作では「上書きしない」という形で現れます。
戻したくなったときは、マニフェストを逆向きに読むだけです。
awk -F'\t' '$3=="moved" { print $2 "\t" $1 }' "$HOME/Archive/2026-03-19/manifest.tsv" |
while IFS=$'\t' read -r from to; do mv -n "$from" "$to"; done
隔離フォルダを空にする工程だけは、自動化せず手元に残しています。判断の要らない作業は機械に、取り返しのつかない作業は人間に。この線を引いておくと、自動化の範囲を広げていっても夜が静かです。
MCP コネクターとの組み合わせ
スケジュールタスクは、MCP コネクターと組み合わせるとさらに用途が広がります。Slack コネクターが接続されていれば、朝のダイジェストを Slack チャンネルへ投稿できますし、Google Drive コネクターがあれば、週次レポートをそのままスプレッドシートに追記する、といった使い方もできます。
タスクのプロンプトに「Slack の #general チャンネルに投稿してください」と書くだけで、接続済みのコネクター経由で実行されます。出力先を画面から人が確認しに行かなくても、ふだん見ている場所に結果が届くのは、無人運用では地味に効いてきます。
タスクの管理と運用
定期実行タスクは enabled フラグで一時停止・再開できます。休暇中に朝のダイジェストを止めたり、プロジェクトの区切りで週次レポートを休ませたりできます。
タスク完了時に現在のセッションへ通知を出すかどうかは notifyOnCompletion で制御します。バックグラウンドで静かに回したいタスクは、通知を切っておくと画面が騒がしくなりません。
実行タイミングにはひとつ癖があります。定期実行タスクは、サーバー負荷分散のために数分のランダム遅延が入るため、「ちょうど9時0分0秒」には動きません。秒単位の正確さが要る用途には向かない、と覚えておいてください。ワンタイムタスクにこの遅延はありません。また、Mac のスリープ中やアプリが閉じている間は実行されず、次回起動時にスキップ分が動くことがあります。
無人で回し続けるための3つの勘所
個人開発で複数の定期タスクを長く回す中で、公式ドキュメントには載っていない勘所がいくつか見えてきました。私自身が何度も助けられた、三つの習慣として整理します。
1. 実行時刻をオフピークに散らす
いちばん効いたのは「時間をずらす」ことです。複数の定期タスクを同じ時間帯にまとめて置くと、処理が重なって互いに足を引っ張り合います。実行時刻は意図的にオフピーク帯——朝7〜9時の通勤帯、昼12〜13時、夜18〜23時の利用ピークを避けた時間——へ散らすことをおすすめします。深夜から早朝にかけて30〜45分ずつ間隔を空けて並べるだけで、取りこぼしが目に見えて減りました。タスクが増えてきたら、まず「いつ動かすか」を設計するだけで安定度がぐっと上がります。
2. 最初の1回は手動で空打ちする
次に、最初の1回は必ず手動で“空打ち”してから定期化することを強く推奨します。新しいタスクを登録する前に一度だけ手で動かし、出力を一行ずつ確かめる。あわせて、実行ごとに「何を・なぜ・どう変えたか」を短いログに残しておくと、後から経緯を追えて安心できます。誰も見ていない時間に静かに壊れていた、という事態は、この一手間でほとんど回避できます。私自身、この空打ちとログの習慣に何度も救われてきました。
3. 何度動いても壊れない(冪等性)
三つめは、何度動いても結果が壊れない書き方——冪等性を意識することです。たとえば「ファイルを追記する」より「その日付のファイルを上書き生成する」、「件数をカウントして足す」より「現在の全件から作り直す」と指示しておくと、遅延で同じタスクが二度走っても出力が二重になる罠を避けられます。無人運用では、同じことを何度やっても同じ結果になる、という性質が効いてきます。
タスクが動かないときの確認
タスクが実行されない場合は、まず Cowork が起動しているか、Mac がスリープしていないかを確認します。enabled が true か、cron 式の曜日指定が意図どおりか(0と7が両方とも日曜である点に注意)も見ておきましょう。
プロンプトが長すぎたり複雑すぎたりすると、タスクが途中で止まることがあります。1つのタスクには1つの明確な目標を置き、複雑な処理は素直に分割するのが安定への近道です。
次の一歩
まずは朝のダイジェストを1本だけ登録し、明日の朝に届く出力を一行ずつ読んでみてください。そこで「ここはこう書けばよかった」と感じた点をプロンプトに反映できれば、自動化を広げていく感覚がつかめます。お読みいただきありがとうございました。