Claude Code

Claude Code で初めての自動化。ニュースを集めて Notion に貯める

Claude Code で初めての自動化として、ニュースを集めて Notion(メモやページを作って整理できるアプリ)に貯めるツールを作りました。 コードは書かずに、チャットで頼むだけで動くものができています。

今は 16 のサイトから毎時ニュースを集めて、ゲーム・AI など 6 つのジャンルに分けています。 好みの記事を、ジャンルごとに拾えるところまで来ました。

この記事では、作ったものの仕組みと、精度を上げるために Claude Code とやったことをまとめます。

ニュース収集を選んだきっかけ

題材としてほどよかったのと、あったら便利かなと思ったからです。 集めたニュースを何に使うかは、正直なんとなくでした。

作ったもの|RSS からニュースを集めて Notion に自動で足す

最初の版は 2026 年 4 月に作りました。 10 月に、ジャンルごとのページに書く今の形へ作り直しています。

集めてくるのは、各サイトの RSS です。 RSS は、サイトが新着記事の一覧を、機械で読める形で配っているものです。 ページを読みに行かなくても、新着が取れます。

流れは「集める → 選ぶ → 届ける」の 3 段です。毎時 0 分に動きます。

16 のサイトの 19 本の RSS から新着を集め、6 つのジャンルに分けて点数順に最大 3 件を選び、ジャンルごとのページに最新を上にして足す流れを、3 枚のカードで左から右に並べた図

Notion に足した分は、30 日たつと自動で消えます。

ジャンルは 6 つにしました。

ジャンル主な集め先
🎮 ゲーム(新作・ランキングなど全般)4Gamer・Game*Spark・AUTOMATON など
⚔️ LoL(League of Legends)ゲームメディアの記事・4Gamer の LoL ページ
🟡 ポケモンゲームメディアの記事
🥊 スト6(ストリートファイター6)カプコンのお知らせ・4Gamer のスト6 ページ
💜 ぶいすぽ(ぶいすぽっ!)ゲームメディアの記事・PR TIMES に出る Brave group のプレスリリース(ぶいすぽの名前が入ったものだけ)
🤖 AIClaude Code のリリース・OpenAI・Google の公式ブログ・ITmedia AI+ など

LoL とポケモンは、公式サイトの RSS が見つかりませんでした。 なので、ゲームメディアの記事をキーワードで拾っています。

使ったもの

  • Claude Code:作るのも直すのも、全部チャットで頼んでいます
  • Notion:これを作ろうと思ったときに用意しました。もともとは使っていませんでした。 Claude に「スマホでも見られるようなもの」と聞いて、Notion にしています
  • 定期実行の場所:もともと持っていたレンタルサーバーの cron(決まった時刻にプログラムを動かすサーバーの機能)を使っています

PC で動かすなら Windows のタスクスケジューラー(PC が起動している間だけ動く)、ほかに Claude のスケジュール機能も選択肢になりそうです。 自分が試したのはレンタルサーバーの cron だけです。

Notion にプログラムから書き込むには、Notion の API キー(書き込みに使う鍵)も要ります。

必要な情報に絞る|ジャンルとキーワードは設定ファイル 1 本

ジャンル・キーワード・集め先は、設定ファイル 1 本にまとめました。 サイトを足したいときも、キーワードを変えたいときも、このファイルだけを直します。

実際の設定を短くすると、こんな形です。

genres:
  game:
    label: "🎮 ゲーム"
    max: 3
    catch_all: true       # どのジャンルにも当たらなかった記事の受け皿
    exclude: ["コスプレ", "一番くじ", "グッズ", "コラボ", "フィギュア"]
    prefer: ["新作", "発売日", "ランキング", "販売本数", "配信開始"]
  sf6:
    label: "🥊 スト6"
    max: 3
    keywords: ["スト6", "ストリートファイター6", "Street Fighter 6", "SF6"]

sources:
  - name: 4Gamer
    url: https://www.4gamer.net/rss/index.xml
    lang: ja
    genres: [game, lol, pokemon, sf6, vspo]

絞り込みに効くのは 3 つです。

  • keywords:このどれかに当たった記事だけが、そのジャンルに入る
  • exclude:当たったら入れない(グッズやコスプレの記事を落とす)
  • prefer:入る条件にはせず、点数だけ足す(ゲーム全般で、新作やランキングの記事を上に出す)

点数は、タイトルにキーワードがあれば 3 点、要約にあれば 1 点です。 そのジャンル専用のフィード(公式のブログなど)には 5 点を上乗せし、話題になっている記事にも点数を足しています(下の「話題の記事の点数で気をつけたこと」)。

キーワードの照合で気をつけたこと

最初の版は、キーワードを文字列の部分一致で見ていました。 すると「iPhone Air」の「Air」の先頭の「Ai」が「AI」に当たって、iPhone の記事が AI のジャンルに入っていました。

今は、英数字だけの語は単語の切れ目で見ています。 「AI」は「生成AI」には当たりますが、「iPhone Air」や「xAI」には当たりません。 全角の「AI」も同じ語として扱います。

話題の記事の点数で気をつけたこと

話題の記事を上に出すために、日本語の記事は、はてなブックマーク(Web ページをブックマークして共有できるサービス)の数を点数に足しています。 ブックマークした人の数が、話題になっているかの目安になるからです。 最初の版は、ブックマーク 1 件で 10 点でした。

すると、AI のジャンルに『ギャンブルの「公平性」が確率論の「期待値」を生み出した』という記事が入っていました。キーワードの点数は 0 点で、ブックマーク 2 件だけで 20 点です。 最初の版は、振り分けでは要約の全文を見て、点数では要約の先頭 200 字だけを見ていたので、こういうずれが起きていました。 今は 1 件 1 点にして、上限を 5 点にしています。

選ばれる記事を、書き込む前に見る

Notion に書かずに、選ばれる記事だけを表示するモードも作りました。 今の形にしたとき、これで出してみたら、LoL にコスプレの記事、ポケモンにしまむらで売るグッズの記事が混ざっていました。 それで exclude に足しています。

実際の表示の抜粋です(タイトルは途中を省略)。

🎮 ゲーム(3 件)
    3点 [Game*Spark] 今週発売の新作ゲーム『Call of Duty: Modern Warfare 4』『ファイナルファンタジー レゾナンス』…
    3点 [Game*Spark] 人数無制限協力マルチ対応の新作ゾンビサバイバル『Never Be Alone』デモ版が10月20日から配信…

🤖 AI(3 件)
    9点 [TechCrunch AI] Replit makes OpenAI its default over Anthropic, CEO says
    8点 [Zenn(Claude Code)] AIの「あとで自動でやっておきます」は、実際には動かなかった。…

Notion 連携の仕組み|ジャンルごとのページに最新を上に積む

Notion には、親ページの下にジャンルごとのページを 1 枚ずつ置いています。

🗞️ ジャンル別ニュース(親ページ)
├── 🎮 ゲーム
├── ⚔️ LoL
├── 🟡 ポケモン
├── 🥊 スト6
├── 💜 ぶいすぽ
└── 🤖 AI

ジャンルのページを開くと、いちばん上に最新の取得分が並びます。 ページが無ければ、初めて記事が入ったときに自動で作られます。

最新を上に出すための「目印」

Notion の API(プログラムから Notion を操作する窓口)では、ページの中身をブロック(段落や見出しなど、1 つ 1 つの部品)の単位で足します。 足す場所を指定しないと、ページの末尾に付きます。 これだと、新しいニュースほど下に溜まっていきます。

そこで、ページを作るときに先頭へ空の段落を 1 つ置いておき、追記はいつもその直後に差し込むようにしました。 目印の直後に入れ続けるので、最新の回がいつもいちばん上に来ます。

(空の段落=目印)
🕐 10/18 19:37 取得(3件)   ← 2 回目に足した分
・…
───
🕐 10/18 19:36 取得(3件)   ← 1 回目に足した分
・…

応答に、後ろのブロックまで入っていた

30 日より古い分を消すために、足したブロックの ID を覚えておく作りにしています。 ID は、Notion が返してくる応答から取ります。

この部分は、作り直したときのレビューで「応答を確かめずに、消す対象として記録している」と指摘されました。 そこで本物の Notion にテスト用のページを作って試すと、応答には、足したブロックの後ろにある既存のブロックまで入っていました。 後ろに 5 つブロックがあるページへ 3 つ足すと、応答は 8 件でした。

応答をそのまま記録していたら、30 日後に、別の回の記事まで消していたところです。 今は、応答の先頭から足した数だけを取り、ブロックの種類の並びが送ったものと同じかを確かめてから記録しています。

この確認は、Claude Code から Notion を直接操作して行いました。 テスト用のページを作って、差し込んで、応答を見て、消すところまで、チャットの中で済んでいます。

Claude Code とどう進めたか|初めてのツールは、頼むだけで作れた

初めて作るツールだったので、チャットでのやり取りで依頼するだけで作りました。 自分で決めたのは、何を集めたいかと、Notion でどう見たいかです。

  • ジャンルはゲーム・AI・ぶいすぽに絞る(ゲームは全般と LoL・ポケモン・スト6 に分ける)
  • Notion はジャンルごとにページを分け、そのページにずっと足していく
  • ぶいすぽは、公式の発表とメディアの記事だけでいい(YouTube の動画は別で拾っている)

設定ファイル 1 本にまとめる案や、コードの中身は Claude Code が出してきました。

サブエージェントのレビューで、壊れ方の穴を直した

今の形に作り直したときは、書いたコードを Claude Code のサブエージェント(Claude Code が別の会話として立ち上げる AI。今回はレビュー役にした)に読ませました。 コードを書いた Claude Code とは別の会話で読むので、書いた側が気づかない穴が出てきます。

レビューは 3 回まわしました。 見つかったのは、記事を選ぶ精度というより、壊れ方の穴です。

見つかった穴放っておくと
Notion への書き込みが途中で失敗すると、書けた分の記録まで消える次の回に、同じ記事をもう一度投稿する
一時的なエラーでも「ページが無い」と判断して作り直すジャンルのページが二重にできる
Notion の応答を確かめずに、消す対象として記録する30 日後に別の回の記事まで消す(前の節の件)
設定で親ページやページ名を変えても、覚えているページが優先される設定を直しても効かない

最後は、テスト(コードが思いどおり動くかを自動で確かめるプログラム)を 44 本用意して、全部通る状態にしています。

使ってみて|好みの記事は拾える、精度はこれから

複数のサイトの中から、自分の好みのものを拾えていい感じです。 精度は、これからもっと上げていきたいところです。

Claude Code からも直接 Notion につなげるので、今後、時事ネタ関連の何かをするのにも使えるかもしれません。

まとめ

  • Claude Code での初めての自動化に、ニュース収集を選んだ。チャットで頼むだけで作れた
  • 今は、好みの記事をジャンルごとに拾えている。精度はこれから
  • ジャンル・キーワード・集め先は、設定ファイル 1 本にまとめた
  • Notion は「目印の直後に差し込む」で、最新を上に積める
  • 本物の API で試すと、思っていない応答が返ってくることがある
  • サブエージェントのレビューで、二重投稿や誤削除の穴を、作り直した版を動かし始める前に直せた

よくある質問

Q. プログラミングができなくても作れますか? 自分の場合は、チャットで頼むだけで作れました。 決めたのは「何を集めたいか」と「どう見たいか」で、コードは Claude Code が書いています。 要ったのは、Notion(と、書き込みに使う API キー)と、決まった時刻に動かす場所(自分はもともと持っていたレンタルサーバー)です。

Q. RSS が無いサイトのニュースも集められますか? 今の仕組みでは、RSS(と、似た形式の Atom)を出しているサイトだけです。 RSS が無いサイトは、設定ではなくコードを足す必要があります。

Claude Code の基本から読みたい人は、入門記事の「Claude Code とは何か?VSCodeで使う初心者向け完全入門ガイド」から始められます。

X(@kanalyzelab)でも発信してるので、気が向いたらフォローしてもらえると嬉しいです。

この記事は役に立ちましたか?