はじめに
毎朝、Qiita、Zenn、はてなブックマーク、Redditを開いていませんか?
私はずっとそうしていました。
でも、これを毎日続けるのは正直かなり面倒でした。
そこで、GitHub ActionsとNode.jsを使って、
毎朝テックニュースをLINE/Discordへ自動で届ける仕組み を作りました。
この仕組みでできることはシンプルです。
- Qiita
- Zenn
- はてなブックマーク
これらの人気記事や新着記事をまとめて取得し、毎朝通知します。
朝はLINEかDiscordを開くだけで、その日の技術トレンドをざっと把握できます。
Before
今まではiPhoneのショートカットを作成し、
はてなブログのURLを毎朝指定時間に通知するような仕組みを作っていました。
これはこれで便利だったのですが、問題がありました。
- 通知できる情報が限定的
- QiitaやZennは結局自分で見に行く必要がある
- 複数サービスを横断してチェックするのが大変
- 一覧でざっと見るには向いていない
つまり、一部の作業は自動化できても、情報収集そのものは自動化できていませんでした。
After
今は、毎朝何もしなくてもテックニュースがLINEまたはDiscordに届きます。
- Qiita
- Zenn
- はてなブックマーク
複数サービスの記事をまとめて受け取れるので、
朝は通知を開くだけで主要な技術トピックを確認できます。
技術構成
今回の構成はできるだけシンプルにしました。
- 実行基盤: GitHub Actions
- 取得処理: Node.js
- データ取得: RSS / API
- 保存: Markdown
- 通知: Discord Webhook / LINE Messaging API
この構成にした理由は次の通りです。
- サーバーを用意しなくてよい
- GitHubに置くだけで動く
- RSSを使えるサービスは安定して取得しやすい
- 通知先をLINEとDiscordの両方に広げやすい
処理の流れ
処理の流れとしては以下です。
仕組み
大まかには以下の5ステップで動いています。
① GitHub Actionsで定期実行
自動化の中心はGitHub Actionsです。
毎朝決まった時間にNode.jsのスクリプトを実行します。
例:.github/workflows/hoge.yaml
on:
schedule:
- cron: '30 22 * * *'
これは UTC の 22:30、つまり JST では 07:30 です。
本当は朝9時ちょうどに送りたかったのですが、GitHub Actionsのscheduleはぴったりの時間に動かないことがあります。
実際に運用すると10時台にずれることがあったため、少し早めに起動するようにしました。
結果実運用では朝7時半前後に届くように調整。(通勤時間等にちょうど見れる)
② 各サービスから記事を取得
スクリプト内で、各テックブログサービスからRSSやAPIを使って記事を取得します。
スクレイピングではなく、公開されているRSSやAPIを使っているため、比較的安全かつ安定して取得できます。
③ データを整形
取得したデータはサービスごとに形式が異なるため、扱いやすい形に統一します。
{
title: "記事タイトル",
url: "https://example.com",
source: "Qiita"
}
こうしておくと、通知用メッセージやMarkdownの生成がかなり楽になります。
④ Markdownを生成
取得した記事は、その日の記録としてMarkdownにも保存しています。
# 📰 今日のテックニュース
## Qiita
- 記事タイトル
https://example.com
あとから見返せるようにしておくと、
「昨日どんな記事があったか」を追いやすいです。
⑤ 各アプリに通知
最後に、LINE、DiscordのWebhookを使って生成した内容を送信します。
await fetch(WEBHOOK_URL, {
method: "POST",
body: JSON.stringify({
content: message
})
});
Discordのwebhook取得方法
Discordのwebページにログインし、通知を受信したいチャンネルの設定を開きます。
連携サービス>新しいウェブフックからwebhookを作成することが可能です。
あとはそれをコピーするだけ。

secretの設定
リポジトリ内のsetting>secrets and variables>Actions>New repository secret
で設定することができます。

そこに先ほど取得したDiscordのwebhookを設定すれば連携され自動的に通知が届くようになります。
LINEのwebhook設定
以下の記事を参考に設定を行いました。
https://qiita.com/specialman9999/items/6f1d593c3a05f354eb27
実装してハマったポイント
- GitHub Actionsのcronはぴったりには動かない
最初は朝9時ちょうどに届けるつもりでした。
でも実際に動かしてみると、10時台に届くことがありました。
そのため、少し早めの時間でscheduleし、実際の到着時間が朝7時半前後になるよう調整しました。
- LINEはDiscordのようなWebhookでは送れない
最初は同じ感覚で実装しようとしたのですが、LINEはMessaging APIのBroadcast APIを使う必要がありました。
作ってみてよかったこと
この仕組みを作ってから、朝にQiitaやZennを何個も開くことがかなり減りました。
特に良かったのは次の3点です。
- 情報収集の入口が1つにまとまった
- 毎日のルーティンが減った
- 「読む」ことに集中できるようになった
情報収集は大事ですが、巡回作業そのものはできれば自動化したいです。
毎日なんとなくやっている面倒なルーティンほど、自動化の効果が大きいと感じました。
おわりに
最初はiPhoneショートカットで始めた小さな自動化でしたが、
最終的にはしっかりした仕組みに発展しました。
「ちょっと面倒だな」と思ったことを自動化するだけで、
日々の体験はかなり良くなります。
同じように情報収集を効率化したい方は、ぜひ試してみてください


