Claude Codeで作った便利なスクリプト、手動で動かすのは正直面倒だよね。毎日決まった時間に自動で動かしたい、そう思わない?
結論から言うと、Cloudflare Workersのcronトリガーを使えば、Claude Codeで書いたスクリプトを全自動で動かせるんだ。しかも監視までバッチリ。
一番雑な投げ方
まずは一番シンプルに、Claude Codeにこんな感じでお願いしてみて。
Cloudflare Workersで、毎日UTC 22:00 (JST 07:00) に動く定期実行スクリプトを作って。
ログには「定期実行したよ!」と出力してね。
`wrangler.toml` のcron設定も忘れずに含めて。
これだけで、src/index.ts と wrangler.toml が出力されて、Cloudflare Workersの定期実行のひな形ができるはずだよ。あとはデプロイすれば動いちゃう。
もうちょい具体的に投げるパターン
もうちょっと凝ったことを自動化したいなら、環境とやりたいことを具体的に伝えるのがポイント。
パターン1: 外部情報の定期チェックと通知
Cloudflare Workersで、毎日JST 07:00に、特定のGitHubリポジトリの最新セキュリティアドバイザリ情報をチェックするスクリプトを作って。
もし新しい情報があったら、指定したDiscord Webhook URLに通知を飛ばして。
`wrangler.toml`のcron設定と、`GH_TOKEN`、`DISCORD_WEBHOOK_URL` をSecretsとして扱う設定もお願い。
パターン2: 複数の外部APIからのデータ収集とKV保存
Cloudflare Workersで、毎週月曜のJST 09:00に、複数の外部API (例: 気象情報API, 株価情報API) からデータを収集する定期実行スクリプトを作って。
収集したデータはJSON形式でCloudflare KVに保存してほしい。
エラーが起きたら、Cloudflare Workersのログに出力するだけじゃなくて、指定したSlack Webhookに通知を送るようにして。
`wrangler.toml`と必要なSecrets設定も生成してね。
パターン3: Webサイトの定期スクレイピングと差分通知
Cloudflare Workersで、毎日JST 10:00に、特定のWebサイトから情報をスクレイピングして、前回取得時との差分を比較するスクリプトを書いて。
差分があれば、その内容をまとめたHTMLを生成してCloudflare KVに保存し、同時に指定のDiscordチャンネルに通知してほしい。
`wrangler.toml`のcron設定、およびKVとSecretsの設定も含めてね。
実践例 / 実録
実際にうちでは、Claude Codeが作ったスクリプトをCloudflare Workersで毎日動かしてるんだ。
例えば、オープンソースプロジェクトのセキュリティ脆弱性情報を自動でチェックするシステムがあるんだけど、これ全部Claude Codeで作らせて自動運用してる。
具体的にはこんな感じだよ。
- 毎朝7時(JST)に自動起動: Cloudflare Workersのcronトリガーで毎日定時にスクリプトが動く。Macの電源とか関係なく、Cloudflareのエッジで動いてくれるのが最高だよ。
- 情報収集: 特定のGitHubリポジトリのセキュリティアドバイザリと、依存ライブラリの脆弱性情報を複数のAPI(GitHub API、OSV.devなど)から集めてくるんだ。
- 差分チェックと通知: 新しい脆弱性が見つかったら、社内Discordに「新しいのが出たよ!」って通知してくれる。これで常に最新情報を追えるんだ。
- Webページ公開: その日のチェック結果は、Basic認証付きの専用Webページにいつでもアクセスして確認できるようにしてる。これもWorkersがKVストアからHTMLを引っ張ってきて配信してるんだ。
投げたらこうなった
Claude Codeに「Cloudflare Workersで、GitHubとOSV.devのAPIを叩いて、特定のOSSの脆弱性情報を毎日収集してDiscordに通知、結果をHTMLでKVに保存して公開するシステムを作って」って投げたら、以下のようなものが生えてきたよ。
-
src/index.ts: Workersのエントリーポイント。scheduled関数で定期実行ロジック、fetch関数でWebページ配信ロジックが書かれてた。 -
wrangler.toml: Workersの設定ファイル。[triggers]セクションにcron設定が書かれてて、22 0 * * *(UTC 22:00 = JST 07:00) ってしっかり設定されてた。KVのバインディングも書いてくれたよ。 -
APIキーなどの秘匿情報は、Cloudflare WorkersのSecretsで管理する仕組みも提案してくれた。デプロイ後にこんなコマンドを叩けば設定できる。
echo "your_github_token" | npx --yes wrangler@latest secret put GH_TOKEN
動いてるか心配? wrangler tail コマンドを叩くと、本番Workersのログがリアルタイムで見れるんだ。
npx --yes wrangler@latest tail
あと、デバッグや初期データ投入用に、URL経由で手動実行できるエンドポイント(/__run)も作ってくれたから、こんな感じで動かせる。
curl -u "user:pass" https://your-domain.com/__run
いやー、まじで便利だよ。
つまずきポイント
いくつかハマりやすいポイントがあるから、気をつけてね。
Workersのリソース制限
Cloudflare Workersは無料枠でもかなり動くけど、実行時間やサブクエストの数には制限があるんだ。
例えば、うちの脆弱性チェッカーでは、依存ライブラリが50個以上あって、それぞれOSV.devのAPIを叩く必要があったんだ。最初はライブラリごとにAPIを叩いてたんだけど、Workersの「50サブクエスト制限」に引っかかってエラーになったことがあるよ。
Claude Codeは賢いから、こういうときに「querybatch という一括でAPIを叩けるエンドポイントがあるよ」って教えてくれて、1リクエストにまとめる修正を提案してくれたりする。もしエラーになったら、リソース制限を疑ってみるのも手だよ。
エラー通知は必須
定期実行スクリプトは裏で動くから、エラーが起きても気づきにくいことが多いんだ。だから、必ずエラーが発生したらDiscordやSlackに通知する仕組みを組み込んどこう。
Claude Codeにお願いするときに「エラーが発生したらDiscordに通知してね」って一言添えるだけで、ちゃんと組み込んでくれるから楽だよ。
デバッグの難しさ
ローカル環境で動くスクリプトが、そのままWorkers環境で動くとは限らないんだ。Node.js環境とPython環境の違いとか、Workers特有のAPIとかね。
さっき紹介したみたいに、特定のURLにアクセスすると手動で実行できるエンドポイントを作っておくと、デバッグがめちゃくちゃ捗るよ。本番環境で実際に動かしてみて、ログ (wrangler tail) を見ながら調整するのが一番確実だね。