
Google News RSS × GitHub Releases × AI要約でClaudeアップデートページを自動化した
Claudeのアップデートを追うのが地味につらい。
AWS公式のWhat's Newと違って、Anthropicは公式のRSSを持っていない。Claude CodeのリリースノートはGitHub Releasesで流れてくるし、Claude本体のニュースはWeb上に散らばっている。
AWSアップデートのAI要約ページ(/aws/)はすでに作っていた。同じ仕組みでClaudeのアップデートも自動収集・日本語要約して表示できれば、毎日追いかける手間が省ける。
なぜ作ったか
Claudeは進化が速い。Claude Code単体でも週に数回マイナーアップデートが出るし、Anthropic本体のアナウンスや外部報道を合わせると情報量がかなり多い。
でも追いかけ方が難しい。
- Claude CodeはGitHub Releasesで更新されるが、リリースノートは英語でそのまま読むのが手間
- Anthropicのブログはアップデートのたびに確認しに行く必要がある
- ニュース記事は複数のメディアで同じ内容が流れることも多い
毎日人力でチェックするより、自動収集して日本語要約をまとめて見られる場所があった方がいい。AWSの自動要約ページで実感したことをClaudeにも適用した。
データソースの選定
最初に検討したのはAnthropicの公式RSS。試してみたが anthropic.com/rss.xml は存在せず404が返った。
代わりに2つのソースを組み合わせることにした。
Google News RSS(英語)
https://news.google.com/rss/search?q=Anthropic+Claude&hl=en&gl=US&ceid=US:en
Google Newsのクエリ検索をRSSで取得する方法。日本語版と英語版の両方を試したが、日本語版は海外のニュースが翻訳されて同じ内容が倍になりやすい。英語版に絞ることで重複を減らした。
フィードには数十件の記事が含まれるが、24時間フィルターをかけると実際に処理する記事は2〜5件程度に絞られる。
GitHub Releases Atom
https://github.com/anthropics/claude-code/releases.atom
Claude CodeのリリースノートはGitHub Releasesで公開されている。AtomフィードをXMLパースして取得した。こちらはリリースノート本文も含まれるので情報量が多い。
実装のポイント
scripts/fetch_claude_updates.py を新たに書いた。AWSの fetch_updates.py を参考にしつつ、ソースの特性に合わせて変えた部分がいくつかある。
24時間フィルター
前回実行時から24時間以内に公開された記事だけを処理対象にする。GitHub ActionsでAM9:00(JST)に毎日実行するので、実質「昨日分」だけを拾う形になる。
cutoff = datetime.now(timezone.utc) - timedelta(hours=24)
# pub_dateがcutoffより前ならスキップ
初回実行時はフィード内の全記事が対象になってしまうので、初日だけ大量処理になるリスクがある。それを防ぐために1日あたりの処理数に上限を設けた。
MAX_NEW_PER_DAY = 15
1回の実行で新規追加する件数の上限。Claude Haiku 4.5で要約するとコストは1記事あたり約¥0.3。15件/日 × ¥0.3 = ¥4.5/日 が最大コスト。月約135円の計算になる。
MAX_NEW_PER_DAY = 15
new_count = 0
for item in feed_items:
if new_count >= MAX_NEW_PER_DAY:
break
# 要約処理
new_count += 1
ソース別プロンプト
Google NewsとGitHub Releasesでは提供される情報量が全然違う。Google Newsはdescriptionフィールドに100〜200文字程度の概要しかない。GitHub Releasesはリリースノート本文がそのまま取れる。
同じプロンプトを使うと、Google News記事は薄い要約になり、GitHub Releasesは情報を削りすぎる。ソースごとにプロンプトを分けた。
def build_prompt_github(item):
# リリースノート全文を渡す(文字数制限なし)
# 変更点リスト・影響範囲・使用者への推奨を重点的に出力
...
def build_prompt_news(item):
# descriptionの概要から最大限の情報を引き出す
# 「何が変わったか」より「なぜ注目されているか」に焦点
...
GitHub Releasesの場合、当初はリリースノートを500文字でカットしていたが撤廃した。v2.1.80のリリースノートはかなりの量があり、カットすると重要な変更が抜け落ちる。
Next.jsへの組み込み
データは data/claude_updates.json に保存する。AWSの data/updates.json と同じ構造で設計したため、ほとんどのUIコンポーネントが流用できた。
ページ構成
app/claude/
├── (updates)/
│ ├── layout.tsx # ClaudeHeader(AWS用とは別)
│ ├── page.tsx # アップデート一覧
│ ├── updates/[id]/ # 詳細ページ
│ └── service/[service]/ # サービスフィルター
└── ...
サービスフィルター
Claude Codeのリリース、AnthropicのAPIアップデート、ニュース記事など、更新のカテゴリーをserviceフィールドで区別してフィルタリングできるようにした。URLは /claude/service/claude-code のような形。
ページネーション
一覧は30件/ページ。AWSページと同じ PaginatedUpdateGrid コンポーネントを使い回した。フィルター後も30件単位でページが分かれる。
SEO
各詳細ページは静的生成(generateStaticParams)。JSON-LDでArticleスキーマを埋め込んでいる。Claudeのアップデートは検索ボリュームがあるキーワードが多いので、記事ページが増えるほどインデックスされる量が増える。
実際に動かして見えたこと
初回分は手動で要約した
GitHub ActionsにセットするAPIキーが環境変数に入っていない状態だったため、初回の15件はClaude Code上で直接要約してJSONに書き込んだ。スクリプトをそのまま書き換えるより、データ構造を確認しながら作れたので結果的には良かった。
GitHubリリースノートの詳細度が高い
Claude Code v2.1.80など最新リリースのノートは、バグ修正・新機能・Breaking Changesが箇条書きで整理されている。本文をそのままプロンプトに渡すと、whatChangedフィールドに変更点を10件以上リストアップできた。Google Newsの記事とは情報密度がまったく違う。
Google Newsの記事は概要止まりになりやすい
descriptionが短いため、どうしても要約が薄くなる。記事ページのUI的には「元記事を読む」ボタンへの誘導と割り切った。本文スクレイピングも検討したが、サイトごとにHTMLが違うメンテコストが高いため保留にしている。
まとめ
Google News RSS(英語)+ GitHub Releases Atom → Claude Haiku 4.5で要約 → JSON保存 → Next.js静的ページで表示、という流れで1ページ完結の自動更新サイトができた。
運用コストは最大でも月135円程度。GitHub ActionsのYAMLを1本書いてsecretsにAPIキーを設定すれば、あとは毎朝9時に自動で回る。
Claudeの情報を追いたい人に使ってもらえれば嬉しい。→ Claudeアップデート & ニュース要約