目次
はじめに
AI関連ニュースを追うために、RSSを毎日自動で取得する小さなリポジトリを作ってみました。
RSS取得系のGitHub Actionsは実践している人がそれなりにいます。
ただ、自分ではGitHub Actionsをほとんど触ったことがなかったので、「どういう仕組みで動いているのか」「どんなファイル構成にすると扱いやすいのか」を知りたくなりました。
そこで今回はRSSフィードを読み取り、日付ごとのMarkdownファイルとして保存するリポジトリを作りました。
この記事では、完成したリポジトリの中身を見ながら、GitHub Actionsで何をしているのかを初心者目線で整理します。
この記事でわかること
・GitHub Actionsで定期実行する基本の考え方
・RSS取得リポジトリのシンプルな構成
・取得結果をMarkdownとして保存する流れ
今回作ったもの
今回作ったのは、AI関連ニュースのRSSを毎日集めるためのリポジトリです。
リポジトリの主な役割は、次のようなものです。
・feeds.txt に書いたRSS/Atomフィードを読む
・RSSから記事タイトル、リンク、公開日を取得する
・取得した記事を data/YYYY-MM-DD.md に保存する
・保存済みリンクを data/seen-links.json に記録する
・GitHub Actionsで毎日自動実行する
・変更があれば自動でcommitしてpushする
リポジトリの構成
今回のリポジトリでは、主に次のファイルを使っています。
・feeds.txt: 取得したいRSS/AtomフィードのURLを書く
・filters.json: 残す記事、除外する記事のキーワードを設定する
・scripts/fetch-rss.mjs: RSSを取得してMarkdownを作る
・data/YYYY-MM-DD.md: 日付ごとの取得結果
・data/seen-links.json: 保存済みリンクの記録
・.github/workflows/fetch-rss.yml: GitHub Actionsの設定
・package.json: npm run fetch で実行できるようにする設定
GitHub Actionsでは何が動いているのか
GitHub Actionsは、GitHub上で自動作業を動かせる機能です。
今回のリポジトリではGitHub Actionsに次の作業を任せています。
1. リポジトリの中身を読み込む
2. Node.jsを準備する
3. 必要なパッケージをインストールする
4. RSS取得スクリプトを実行する
5. data/ の中にMarkdownと保存済みリンクを残す
6. 変更があればcommitしてpushする
workflowファイルの中身を見る
GitHub Actionsの設定は、.github/workflows/fetch-rss.yml に書いています。
・workflow_dispatch
手動実行できるようにする設定です。Actions画面から Run workflow を押して、好きなタイミングで試せます。
・schedule
決まった時間に自動実行するための設定です。今回の例では、毎日同じ時間にRSS取得が動くようにしています。
・permissions: contents: write
GitHub Actionsがリポジトリ内のファイルを更新してpushできるようにするための権限です。今回のように、Actionsの実行結果をリポジトリへ保存したい場合に必要になります。
・npm run fetch
実際にRSSを取得するスクリプトを実行している部分です。package.json 側で、npm run fetch が node scripts/fetch-rss.mjs を呼ぶようにしています。
・Commit and push changes
RSS取得によって data/ の中身が変わった場合だけ、commitしてpushします。変化がない場合は No changes to commit. として処理を終えるようにしています。
手動実行で動作を確認する
定期実行だけにすると、最初は動いたかどうかを確認しづらいです。
そのため、まずはActions画面から手動実行できるようにしておきました。
workflow_dispatch を入れておくと、Actionsタブに Run workflow ボタンが出ます。
最初の確認では、この手動実行がかなり便利でした。workflowファイルを直したあと、時間を待たずにすぐ試せるからです。
実行後はActionsの実行結果画面で各ステップの成功状況を確認できます。
この画面では、次のような流れが順番に成功していることを見ています。
・Checkout repository
・Setup Node.js
・Install dependencies
・Fetch RSS and save Markdown
・Commit and push changes
ここまでチェックが付いていれば、RSS取得から保存までの流れは動いていると判断できます。
取得結果はMarkdownとして保存される
RSS取得が成功すると、data/ フォルダの中に日付ごとのMarkdownファイルが作られます。
今回の例では、data/2026-05-03.md のようなファイルが作られています。
中身には、RSSから取得した記事タイトル、リンク、公開日、取得元が並びます。Markdownとして保存しておくと、GitHub上でもそのまま読みやすく、あとから別のツールにも渡しやすいです。
この構成にしたことで、毎日ニュースサイトを見に行く代わりに、まずはリンク一覧を自動で残しておけるようになりました。
重複保存を避けるためのファイル
RSSには、同じ記事が何日か残り続けることがあります。
そのまま毎日取得すると、同じ記事が何度もMarkdownに入ってしまいます。そこで、今回のリポジトリでは data/seen-links.json に保存済みリンクを記録しています。
このファイルには、過去に保存した記事リンクが入ります。
RSSを取得するときに、すでに保存済みのリンクかどうかを確認し、新しいリンクだけを残しやすくしています。
このあたりは、作ってみるまであまり意識していませんでした。RSSを取得するだけなら単純ですが、毎日動かすなら「前回までに何を保存したか」を覚えておく仕組みが必要になります。
作ってみて理解できたこと
今回実際に作ってみて、GitHub Actionsについて次の点が少し整理できました。
・workflowファイルは「いつ、何を、どの順番で動かすか」を書く場所
・手動実行できるようにしておくと、最初の確認がしやすい
・定期実行は便利だが、時刻やタイムゾーンの指定は公開前に公式情報で確認したほうがよい
・ファイルを更新してpushする場合は、権限の設定も必要になる
・実行ログを見ると、どのステップで失敗したかを追いやすい
・毎日動かす仕組みでは、重複や差分をどう扱うかも大事になる
特に印象に残ったのは、GitHub Actionsが単なる「自動実行ボタン」ではなく、リポジトリの中にあるファイル構成とセットで考えるものだという点です。
さいごに
今回はGitHub Actionsを使ってRSSを毎日自動取得するリポジトリを作りました。
最初はGitHub Actions自体にもあまり慣れていませんでしたが、実際に作ってみると、workflowファイル、Actions画面、実行ログ、生成されたMarkdownの関係が少しずつ見えてきました。
いきなり大きな自動化の仕組みを作るよりもRSSを取得してMarkdownに保存するくらいの小さな題材は、GitHub Actionsを試す入口としてちょうどよかったです。








