0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

毎朝のQiita巡回をやめたら快適になった。GitHub ActionsでテックニュースをLINE/Discordに自動配信

0
Last updated at Posted at 2026-04-06

はじめに

毎朝、Qiita、Zenn、はてなブックマーク、Redditを開いていませんか?

私はずっとそうしていました。
でも、これを毎日続けるのは正直かなり面倒でした。

そこで、GitHub ActionsとNode.jsを使って、
毎朝テックニュースをLINE/Discordへ自動で届ける仕組み を作りました。

この仕組みでできることはシンプルです。

  • Qiita
  • Zenn
  • はてなブックマーク
  • Reddit

これらの人気記事や新着記事をまとめて取得し、毎朝通知します。
朝はLINEかDiscordを開くだけで、その日の技術トレンドをざっと把握できます。

Before

今まではiPhoneのショートカットを作成し、
はてなブログのURLを毎朝指定時間に通知するような仕組みを作っていました。

このような感じです。
IMG_1422.jpg

これはこれで便利だったのですが、問題がありました。

  • 通知できる情報が限定的
  • QiitaやZennは結局自分で見に行く必要がある
  • 複数サービスを横断してチェックするのが大変
  • 一覧でざっと見るには向いていない

つまり、一部の作業は自動化できても、情報収集そのものは自動化できていませんでした。

After

今は、毎朝何もしなくてもテックニュースがLINEまたはDiscordに届きます。

  • Qiita
  • Zenn
  • はてなブックマーク
  • Reddit

複数サービスの記事をまとめて受け取れるので、
朝は通知を開くだけで主要な技術トピックを確認できます。

↓このような感じです。
LINE
IMG_1461.jpg

Discord
スクリーンショット 2026-03-30 12.38.05.png

技術構成

今回の構成はできるだけシンプルにしました。

  • 実行基盤: 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を作成することが可能です。
あとはそれをコピーするだけ。
image.png

secretの設定

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

そこに先ほど取得した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ショートカットで始めた小さな自動化でしたが、
最終的にはしっかりした仕組みに発展しました。

「ちょっと面倒だな」と思ったことを自動化するだけで、
日々の体験はかなり良くなります。

同じように情報収集を効率化したい方は、ぜひ試してみてください

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?