毎週自動で動かす|GitHub Actions の決まった時刻と、手で動かすボタン
いまは無料で公開中です
このレッスンの要点
- 毎週の自動実行は、GitHub Actions の
scheduleで書きます。時刻は、はじめの設定では UTC(日本時間より9時間前)です workflow_dispatchも足しておくと、GitHub の画面のボタンで、いつでも手で動かせます- APIキーは、リポジトリの Secrets に入れて使います。ファイルには書きません
GitHub Actions で、決まった時刻に動かす
GitHub の上で、決まった時刻やボタンを押したときに、手順(ワークフロー)を自動で動かすしくみ。
くわしく見る は、GitHub の上で、決まった時刻やボタンを押したときに手順を動かすしくみです。手順は、リポジトリの .github/workflows/ に置く YAML のファイルに書きます。
いちばん上の「いつ動くか(on)」に、schedule(決まった時刻)と workflow_dispatch(手で動かすボタン)を書きます。時刻は cron という形で、「分 時 日 月 曜日」の5つを空白で区切って書きます。
公式によると、混んでいるときは schedule が遅れることがあり、とても混んだときは動かないこともあります。毎時0分ちょうどは特に混みやすいので、分をずらすようすすめています。上の例で「17分」にしているのはそのためです。動かなかった週は、あとで「Run workflow」で手で動かします。schedule が動くのは、既定のブランチ(ふつうは main)に置いたファイルだけです。
時刻は、はじめの設定では UTC です。公式によると、タイムゾーンを指定して、日本時間で書くこともできます。UTC に直すのがむずかしければ、依頼文に「日本時間の月曜 6:17 で、タイムゾーンを指定して書いて」と頼んでもかまいません。
APIキーは Secrets に入れる
ワークフローで Claude API を使うには APIキーが要ります。キーはファイルに書かず、リポジトリの Secrets に入れます。Settings → Secrets and variables → Actions →「New repository secret」で、名前と値を入れます。
キーをこの用途専用に分けておくと、漏れたときに止めるのも、使った量を見分けるのもかんたんです。もう使わなくなったら、Secrets から消すだけでなく、Console でキーも削除します。
中身は Claude Code に書いてもらう
ワークフローの中でやることは、先週の CSV があるかを確かめてから、これまでのレッスンで作った3つのプログラムを順に動かして、できたファイルをリポジトリに保存(コミットして push)することです。この中身も、Claude Code に書いてもらいます(下の「やってみよう」の依頼文)。
コミットするのは、下書きの md だけではありません。順位の JSON(data/ranking/)と紹介文の JSON(data/draft/)も入れます。ワークフローは毎回まっさらな場所で動くので、push しなかったファイルは、次に動く公開のワークフロー(レッスン10)からは見えないからです。
同じコミットを preview という同じリポジトリの中で、作業を枝分かれさせたもの。本番用のブランチ(main など)とは別に、ためしの作業を進められます。
くわしく見るにも push すると、Cloudflare Pages がそのブランチ用の確認用のページを作ります。レッスン8の作りで、このページにだけ下書きが出ます。
できたら GitHub の Actions の画面で「Run workflow」を押し、手で1回動かして確かめます。公開リポジトリでは、60日間リポジトリに動きがないと schedule のワークフローが自動で止まります。止まっていたら、同じ画面の「Enable workflow」で戻します。
サイトの作り直しを確かめる
Cloudflare Pages を GitHub とつないでいれば、ふつうは push で自動で作り直されます。ただし公式によると、ワークフローの中の標準の鍵(GITHUB_TOKEN)で push したときは、ほかのワークフローは動きません。Cloudflare Pages がどう反応するかは公式に書かれていないので、はじめて動かしたら、Cloudflare のデプロイの一覧で作り直されたかを確かめましょう。
「時刻を書けば、その時刻ぴったりに動く」とはかぎりません
やってみよう
- Claude Console で、この自動のしくみ専用の APIキーを作ります(レッスン2。名前は cat-ranking-weekly など)
- GitHub のリポジトリの Settings → Secrets and variables → Actions → New repository secret で、名前
ANTHROPIC_API_KEYにキーを入れます - 下の依頼文を Claude Code に送って、ワークフローのファイルを作ってもらいます
- 先週の CSV(レッスン6)が
data/views/に push されていることを確かめます(レッスン6の見本の CSV で練習するときは、ファイル名を先週の月曜の日付に変えてから push します。日付が先週でないと、ワークフローは止まります) - push したら、GitHub の Actions の画面で、そのワークフローの「Run workflow」を押して、手で1回動かします
- 下書きのファイルができたこと、Cloudflare Pages のデプロイの一覧で main と preview の2つが作り直されたことを確かめます
確認問題
自分が「毎週この時刻に更新したい」と思う時刻を決めて、UTC に直して cron の形で書いてみましょう。
この記事の用語
コース6 API編の目次
- 1APIとは?アプリ版との違い✓ できた
- 2APIキーの作り方と守り方✓ できた
- 3料金の考え方と、使いすぎを防ぐ上限設定✓ できた
- 4はじめての呼び出し✓ できた
- 5全体像✓ できた
- 6データを集める✓ できた
- 7Claude に文章を書かせる✓ できた
- 8記事ファイルにしてサイトに載せる✓ できた
- 9毎週自動で動かす✓ できた
- 10公開前のチェック✓ できた
- 11メール配信とつなぐ✓ できた
- 12料金と、失敗したときの備え✓ できた
- 13実例:週次レポートの裏側✓ できた