はじめに
毎日 Claude(AI)を使って仕事をしていると、「今日何をやったか」が後から振り返りにくくなる問題があります。チャット履歴はあるものの、セッションをまたいでいたり、内容が散漫だったりして、サマリとして整理するのが面倒です。
そこで「Claude 自身に自分の作業ログを読ませて、毎朝自動でYAMLサマリを生成させる」という仕組みを構築しました。最終的には Claude Cowork のスケジュールタスク + Windows タスクスケジューラの二段構えで完全自動化に成功しましたが、そこに至るまでにいくつかのトラブルを踏み抜きました。この記事では試行錯誤の経緯ごと紹介します。
本記事について
本記事の内容は2026年4月時点の実機検証・実行ログ観測に基づいています。
request_cowork_directory、/sessions/...配下のパス構造など、内部挙動に関わる情報は公式ドキュメント未記載です。将来的に仕様変更・挙動変更の可能性があります。
前提知識
スケジュールタスク実行時に発生する「承認ダイアログによる停止」問題とその解決方法については、前編で詳しく解説しています。本記事ではその解決策を適用済みの状態から始めます。
👉 前編:Claude Coworkのスケジュールタスクを止めない:承認ダイアログを回避してセッションディレクトリを確実にマウントする方法
全体アーキテクチャ
[毎日 9:00指定(実行は数分程度の遅延あり)]
Claude Cowork スケジュールタスク(daily-ai-work-summary)
│
├─ ~/.claude/ を読む(セッションログ)
├─ local-agent-mode-sessions/ を読む(Cowork作業ログ)
├─ 作業内容を解析・まとめ
└─ YAML ファイルとしてワークフォルダに保存
↓
[毎日 10:00]
Windows タスクスケジューラ(AI-Summary-Copy-to-GDrive)
└─ copy-to-gdrive.ps1 を実行
└─ YAML ファイルを Google Drive 共有フォルダへコピー
ポイントは以下の2段階になっている点です。
- Claude Cowork → AI作業ログの読み取り・YAML生成・ローカル保存
- Windows タスクスケジューラ → ローカル保存済みのYAMLをGoogle Driveへコピー
なぜ分けているのかは後述しますが、Coworkの実行環境からは、環境によってはWindowsのネットワークドライブに直接アクセスできない場合があるため、本構成ではファイル転送を分離しています。
使用技術・ツール
| コンポーネント | 役割 |
|---|---|
| Claude Desktop(Cowork) | スケジュールタスクの実行エンジン |
daily-ai-work-summary スキル |
作業ログの解析・YAML生成ロジック |
Python(extract_sessions.py) |
セッションログのパース |
| Windows タスクスケジューラ | Google Driveへのファイルコピーを定期実行 |
PowerShell(copy-to-gdrive.ps1) |
ローカルフォルダ → Google Drive のコピー処理 |
| Google Drive Desktop | ローカルフォルダとクラウドの同期 |
スケジュールタスクの設定
Claude Cowork のスケジュール機能(Scheduled Tasks)を使います。タスクのプロンプトは以下の形式で設定しました。
daily-ai-work-summary スキルを使って、本日分の作業まとめを生成してワークフォルダに保存してください。
設定情報:
- 対象日付: 今日(当日)の日付を使用すること
- .claudeディレクトリのマウント:
まず `ls -d /sessions/*/mnt/.claude/projects 2>/dev/null | head -1` でマウント済みか確認し、
存在すればそのパスを使用する。
存在しない場合のみ request_cowork_directory で C:\Users\xxx\.claude をマウントする。
- Coworkセッションディレクトリのマウント:
まず `ls -d /sessions/*/mnt/local-agent-mode-sessions 2>/dev/null | head -1` でマウント済みか確認し、
存在すればそのパスを使用する。
存在しない場合のみ request_cowork_directory でマウントする。
- 保存先: ワークフォルダ(/sessions/.../mnt/agent-skills/YYYY/YYYYMMDD.yaml)
- 処理後は --mark-done で処理済みマークを実施すること
- Google Drive へのコピーは Windows タスクスケジューラが毎日 10:00 に自動実施
cron式は 0 9 * * *(9:00指定)。スケジュール実行時刻には数分程度の遅延が発生する場合があり、実測では約6分(389秒)の遅延で9:06頃に起動しました。
⚠️
/sessions/...配下のパス構造はログ上で観測されたものであり、公式に保証された仕様ではありません。
⚠️request_cowork_directoryはログ上で確認された内部ツール呼び出しであり、公開APIではない可能性があります。
⚠️--mark-doneは本スキル内で実装している独自フラグです。
生成されるYAMLの例
date: 2026-03-30
sessions:
- title: スケジュールタスク自動実行の修正
summary: |
スケジュールタスク自動実行時にフォルダが未マウントとなり
request_cowork_directory が呼ばれてしまう問題を調査・修正。
プロンプトにマウント確認ロジックを追加し自動化を完遂。
tools_used:
- Bash
- Read
- mcp__session_info__read_transcript
outcome: success
- title: Google Driveコピー先パスの修正
summary: |
Google Driveのコピー先パスが oguri-yusuke フォルダを含まない
誤パスになっていた問題を修正。copy-config.json の userFolder を
修正し、setup-auto-copy.ps1 を再実行してタスクスケジューラへ反映。
tools_used:
- Edit
- Bash
outcome: success
total_sessions: 2
highlights: 完全自動化達成(スケジュールタスク + Windows タスクスケジューラ連携)
⚠️ セッションタイトルは生成AIが出力するため英語になる場合があります。スキルのプロンプトで日本語出力を明示的に指定することで制御できます。
Windows タスクスケジューラ側の設定
Google Drive Desktop を使ってGドライブをローカルフォルダとしてマウントし、PowerShellでコピーする構成です。
copy-to-gdrive.ps1
# 設定ファイルからユーザーフォルダ名を読み込む
$configPath = "$PSScriptRoot\copy-config.json"
if (Test-Path $configPath) {
$config = Get-Content $configPath | ConvertFrom-Json
$userFolder = $config.userFolder
} else {
# 初回実行時は対話的に入力(スケジューラ実行時は非対話のため空になることに注意)
$userFolder = Read-Host "Google Drive ユーザーフォルダ名を入力"
@{ userFolder = $userFolder } | ConvertTo-Json | Set-Content $configPath
}
$year = (Get-Date).Year
$source = "$env:USERPROFILE\Documents\agent-skills\$year"
$destination = "G:\共有ドライブ\AI活用\$userFolder\$year"
# コピー実行(上書きあり・ログ出力あり)
robocopy $source $destination *.yaml /Z /LOG:"$PSScriptRoot\copy.log"
copy-config.json
{
"userFolder": "oguri-yusuke"
}
setup-auto-copy.ps1(タスクスケジューラへの登録)
$action = New-ScheduledTaskAction `
-Execute "powershell.exe" `
-Argument "-ExecutionPolicy Bypass -File `"$PSScriptRoot\copy-to-gdrive.ps1`""
$trigger = New-ScheduledTaskTrigger -Daily -At "10:00"
Register-ScheduledTask `
-TaskName "AI-Summary-Copy-to-GDrive" `
-Action $action `
-Trigger $trigger `
-RunLevel Highest `
-Force
Write-Host "Task registered: AI-Summary-Copy-to-GDrive"
Write-Host "Schedule: daily at 10:00"
Write-Host "Script: $PSScriptRoot\copy-to-gdrive.ps1"
Write-Host "Done. Check Task Scheduler to confirm."
踏み抜いたトラブルたち
⚠️ トラブル①:自動実行時にフォルダマウントがブロックされる
症状: 手動実行では成功するのに、スケジュール自動実行だと途中で止まる。
原因: スキルのロジックが最初から request_cowork_directory を呼んでいたため、自動実行時(ユーザー不在)に承認待ちになっていた。
解決策: マウント確認を先に行い、すでにマウント済みの場合は承認を求めないようにプロンプトを修正。
# マウント済み確認(-d でディレクトリのみ、head -1 で複数マッチを防ぐ)
ls -d /sessions/*/mnt/.claude/projects 2>/dev/null | head -1
ls -d /sessions/*/mnt/local-agent-mode-sessions 2>/dev/null | head -1
👉 詳細な仕組みと設定方法は前編で解説しています。
⚠️ トラブル②:Google Driveへの直接出力ができない
症状: Cowork から直接 G:\共有ドライブ\... に書き込もうとしてもアクセスエラー。
原因: CoworkはLinuxのサンドボックス環境で動作しており、WindowsのGドライブ(ネットワークドライブ)に直接アクセスできない場合がある。
解決策: Coworkはローカルフォルダへの書き出しのみ担当し、Google Driveへのコピーは別途Windowsタスクスケジューラ + PowerShellに担わせる二段構えに変更。
⚠️ トラブル③:コピー先パスが誤っていた
症状: Google Driveにファイルが届いているが、oguri-yusuke フォルダを経由せず直接 AI活用\2026\ に保存されていた。
原因: copy-config.json が存在しない初回実行時、タスクスケジューラ(非対話型セッション)では Read-Host の入力が空文字列になり、$userFolder が空のまま実行されていた。
解決策: 初回は手動で copy-to-gdrive.ps1 を実行して copy-config.json を生成しておく。以降の実行はファイルから読み込むため問題なし。WinMergeで誤フォルダと正フォルダを比較したところ完全一致だったため、データ欠損はなし。
⚠️ トラブル④:実行時刻の設定ミス(19:15 → 10:00)
症状: スケジュールタスクの設定では「10:00にコピー」を意図していたが、実際には19:15に設定されていた。
原因: setup-auto-copy.ps1 の -At "19:15" を修正し忘れたまま登録してしまっていた。
解決策: setup-auto-copy.ps1 の -At を "10:00" に修正し、PowerShellで再実行してタスクスケジューラへ上書き登録。
完全自動化後の動作フロー(2026-03-30 達成)
09:06 Claude Cowork が自動起動(cron: 0 9 * * *、数分の遅延込みで約9:06)
↓
~/.claude/ と local-agent-mode-sessions/ のセッションログを読み込み
↓
当日分の作業を解析・YAML形式でまとめ
↓
ワークフォルダ(/sessions/.../mnt/agent-skills/2026/20260330.yaml)に保存
↓
10:00 Windows タスクスケジューラが copy-to-gdrive.ps1 を起動
↓
G:\共有ドライブ\AI活用\oguri-yusuke\2026\ へコピー完了
ユーザーの介入ゼロで、毎日の作業サマリがGoogle Driveに届くようになりました。
やってみて感じたこと
👍 よかった点:
- 翌朝には「昨日何をやったか」がYAMLで整理されており、振り返りが楽になった
- Coworkのスケジュール機能は設定が比較的シンプルで、プロンプトさえ書ければ動く
- 自動化に失敗しても、セッション履歴から「どのタイミングで何に失敗したか」が追えるのでデバッグがしやすかった
😓 苦労した点:
- Coworkのサンドボックス制約(ネットワークドライブへのアクセス制限)は最初に把握しておくべきだった
- 「ユーザー不在の自動実行」と「ユーザーあり手動実行」でロジックを分岐させる必要があり、プロンプト設計が少し複雑になった
- タスクスケジューラのデバッグはログを見ないと何が起きているかわかりにくい
まとめ
| フェーズ | 手法 |
|---|---|
| AI作業ログの収集・整理 | Claude Cowork スケジュールタスク(cron: 0 9 * * *) |
| Google Driveへの転送 | Windows タスクスケジューラ + PowerShell(10:00実行) |
| 重複実行の防止 |
--mark-done フラグ(本記事で使用しているスキル内の独自実装フラグ) |
| フォルダマウントの冪等性 |
ls /sessions/*/mnt/... で事前確認(観測ベース) |
「AIに自分の作業を記録させる」という発想自体はシンプルですが、完全自動化するには環境制約(サンドボックス、非対話実行、ネットワークドライブ)を一つひとつ潰していく必要がありました。同じ構成を試みる方の参考になれば幸いです。
シリーズ記事
- 前編:Claude Coworkのスケジュールタスクを止めない:承認ダイアログを回避してセッションディレクトリを確実にマウントする方法
- 本記事(後編):完全自動化アーキテクチャと踏み抜いたトラブル