0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初投稿】Claude Code の routine で GitHub Trending を毎朝日本語で要約する仕組みを作った

0
Last updated at Posted at 2026-10-11

Claude Code の routine で GitHub Trending を毎朝日本語で要約する仕組みを作った

GitHub Trending に上がったリポジトリを、毎朝日本語で要約するサイト「github新聞」を作った。

要約は Claude Code の routine が毎朝書いている。Claude API は使っていない。
この記事では、Claude Code に毎日の定型タスクを割り当てて、静的サイトを更新し続ける仕組みを紹介する。

サイトの使い方や作った動機は note に書いた。

作ったもの

github新聞は、GitHub Trending(日次・週次・月次)のリポジトリを、順位どおりに日本語の要約つきで並べるサイトだ。

  • 一覧:1件ずつ一文の要約。新しく上がったもの・続けて上がっているもの・戻ってきたものに印がつく
  • 解説ページ:できること、使い方、活用できそうな場面、似ているもの、注意点、スターの推移
  • 配信:Atom フィード、Discord への通知

AI まわりのリポジトリは毎日のように出てくるが、README まで読んで追う時間はなかなかない。名前と一文の要約で「今日はこういうのが出てきた」をつかみ、気になったものだけ解説や原文を読む、という使い方を想定している。

構成

役割 使っているもの
Trending の取得・分類・材料集め GitHub Actions(Python 3.12)
要約を書く Claude Code の routine
要約の検査 JSON Schema
サイトの生成 Python(Jinja2 のテンプレート)で静的 HTML
公開 Cloudflare Pages(独自ドメイン)
通知・見張り Discord の Webhook、GitHub Actions
データ リポジトリの data/ に JSON でコミット

毎朝の流れは次のとおり。

設計の方針:判断が要る仕事だけを AI に渡す

いちばん大事にしたのは、Claude Code に渡す範囲を絞ることだ。

Trending のページの読み取り、前日との比較、HTML の生成、通知。これらは毎回同じ結果になってほしいので、スクリプトで書いた。
Claude Code に任せるのは「このリポジトリは何ができて、どう使うのか」を書くところだけにした。README だけで分からなければ、ファイル構成や examples、コードまで読みに行く必要がある。ここはスクリプトでは書けない。

範囲を絞っておくと、AI の出力がぶれても影響が要約の中に収まる。サイトの生成や通知が日によって変わることはない。

routine への指示は手順書1枚にする

routine とは、Claude Code をクラウドで定期的に、または API から起動して動かす機能だ。今のプランの使用量の中で動く。

routine のプロンプトは1行だけにした。

docs/routine.md に従って、今日の分を作って push して

手順はリポジトリの docs/routine.md に書いている。主な中身は次のとおり。

  • 材料の場所と、今日の材料かどうかの確かめ方
  • 1件ずつ調べてから書く。全件をまとめて読んでまとめて書かない(調べ方が浅くなるため)
  • 分からなければ examples やコードを追加で読む。分からないことは書かず、推測は推測と書く
  • 書いてよいファイルは data/repos/*.json と、その日の記録の errors だけ。コードは直さない
  • うまくいかないときは、コミットせずに報告して終わる

手順書をリポジトリに置くと、要約の書き方を変えたいときにコミットするだけで済み、変更の履歴も残る。

要約は JSON で書かせ、JSON Schema で検査してから push させる。

.venv/bin/python -m github_trending validate

形が崩れた要約はここで止まり、サイトには出ない。

毎朝書くのは、ここ10日で初めて上がったものだけにした。一度書いた要約は使い回し、90日以上たってまた上がってきたものだけ書き直す。

ハマったところ

routine から他のリポジトリの GitHub API が 403 になる

当初は、取得から材料集めまで routine にやらせる予定だった。
しかし routine の中から GitHub API で他のリポジトリを読むと、すべて HTTP 403 になった。

GitHub access to this repository is not enabled for this session

routine の実行環境では GitHub への通信が専用のプロキシを通り、routine に割り当てたリポジトリ以外には届かない。ネットワークの設定を Full にしても変わらなかった。

対策として、取得と材料集めは GitHub Actions に移した。Actions なら GITHUB_TOKEN で他のリポジトリを読める。
集めた材料は work ブランチに1コミットだけの状態で上書きし、routine はそれを展開して読む。材料は毎日数百 KB になるので、main には入れていない。

git fetch -q origin work && rm -rf .work && mkdir .work && git archive origin/work | tar -x -C .work

GitHub Actions の定期実行が遅れる

次に、「6:00 に Actions で材料を集め、7:00 に routine が要約する」という時刻の差で順番を作った。
しかし Actions の schedule は混み合うと大きく遅れる。6:00 の予定が 10/1 は 9:18、10/2 は 9:25 に動いた。routine は時刻どおり 7:08 に動くので、前日の材料のまま始まってしまった。

対策として、時刻に頼るのをやめ、材料集めが終わった時点で Actions から routine を API で起動するようにした。

- name: routine を起動する
  env:
    ROUTINE_TOKEN: ${{ secrets.CLAUDE_ROUTINE_TOKEN }}
  run: |
    curl -sS -X POST \
      "https://api.anthropic.com/v1/claude_code/routines/<routine の ID>/fire" \
      -H "Authorization: Bearer $ROUTINE_TOKEN" \
      -H "anthropic-beta: experimental-cc-routine-2026-04-01" \
      -H "anthropic-version: 2023-06-01" \
      -H "Content-Type: application/json" \
      -d "{\"text\": \"$TODAY の材料を work ブランチに置きました\"}"

text は routine にそのまま渡る。手順書では、材料の日付が今日でなければ5分おきに見直し、30分待っても来なければ何もせず終わるようにしている。

あわせて次のようにした。

  • schedule は混みやすい毎時0分を避け、5:47・7:17・8:47(日本時間)の3回にする。今日の分が取れていれば2回目以降は何もしない
  • 9:00 に見張りの workflow を動かし、取得の失敗や通知の漏れがあれば Discord に知らせる
  • routine の時刻での起動は外す(API での起動と二重に動かないように)

まとめ

Claude Code の routine に毎日の定型タスクを割り当てて、静的サイトを更新し続ける仕組みを作った。

  • AI に渡すのは判断が要る仕事だけにし、残りはスクリプトで固める
  • routine への指示はリポジトリの手順書1枚にし、出力は Schema で検査する
  • routine から触れるのは割り当てたリポジトリだけなので、外のデータ集めは Actions でやる
  • 順番は時刻の差ではなく、前の処理から API で起動して作る

僕はインフラエンジニアだが、github新聞を毎朝見て、今日はこういうものが出てきたのかと把握している。AI まわりの新しい OSS を追いたい人に使ってもらえたらうれしい。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?