はじめに
隙間時間にQiitaの記事を効率よくチェックしたいと思い、
人気記事を自動で取得して通知する仕組みを作成しました。
今回は、n8nを使ってQiitaの人気記事をLINEに自動通知する方法を紹介します。
完成イメージ
毎朝こんな感じでLINEに届きます
昨日のQiita人気記事 TOP5
- 記事タイトル
👍 10 / 📌 5
👤 author
URL
使用技術
- n8n
- Qiita API
- LINE Messaging API
全体構成
今回のワークフローはこんな感じ👇
スケジュール → Qiita API取得 → データ加工 → LINE送信

n8nワークフロー
① スケジュールトリガー
n8nの「Schedule Trigger」を使用し、毎日7時にワークフローが実行されるように設定します。
② Qiita APIで記事取得
QiitaのAPIを使用して、記事データを取得します。
Qiita APIの詳細については、以下の公式ドキュメントを参照してください。
公式ドキュメント
今回は以下のエンドポイントを使用し、JavaScriptタグの記事を100件取得します。
GET https://qiita.com/api/v2/tags/javascript/items?per_page=100
- タグを指定(今回は「javascript」)
- 最大100件取得し、後続処理で必要なデータに絞り込みます
③ 昨日の記事だけ抽出 + 人気順にソート
ここでは、取得した記事データの中から昨日投稿された記事だけを抽出し、いいね数順に並び替えて上位5件を取り出します。
// JSTで昨日の範囲を作成
const now = new Date();
const jstNow = new Date(
now.toLocaleString("en-US", { timeZone: "Asia/Tokyo" })
);
const start = new Date(jstNow);
start.setDate(start.getDate() - 1);
start.setHours(0, 0, 0, 0);
const end = new Date(jstNow);
end.setDate(end.getDate() - 1);
end.setHours(23, 59, 59, 999);
// 昨日の記事だけ抽出
const filtered = rows.filter(row => {
if (!row.created_at) return false;
const createdAt = new Date(row.created_at);
return createdAt >= start && createdAt <= end;
});
// いいね順でソート
filtered.sort((a, b) => (b.likes_count || 0) - (a.likes_count || 0));
// 上位5件取得
const top5 = filtered.slice(0, 5);
ポイント
- 日付の判定は JST(Asia/Tokyo) で行っている
- likes_count を使って人気順に並び替えている
- slice(0, 5) で上位5件に絞っている
Qiita APIからは複数日の記事が返ってくるため、このように後続処理で対象期間を絞り込むようにしています。
④ LINE用メッセージ生成
次に、抽出した記事データをLINEで送信しやすい形式に整形します。
lines.push("昨日のQiita人気記事 TOP5");
top5.forEach((row, index) => {
const author = row.user?.id || "unknown";
lines.push("");
lines.push(`${index + 1}. ${row.title}`);
lines.push(`👍 ${row.likes_count ?? 0} / 📌 ${row.stocks_count ?? 0}`);
lines.push(`👤 ${author}`);
lines.push(row.url);
});
const message = lines.join("\n");
ポイント
- 配列(
lines)に1行ずつ追加し、最後にjoin("\n")で1つの文字列にまとめています - 記事タイトル・いいね数・ストック数・投稿者・URLを見やすく整形しています
- 空行を挿入することで、LINE上での視認性を向上させています
このように整形することで、LINE APIでそのまま利用できる形式になり、LINEに送信した際にも一覧として見やすく表示されます。
⑤ LINEに送信
最後に、作成したメッセージをLINE Messaging APIを使って送信します。
以下のエンドポイントにPOSTリクエストを送ることで、指定したユーザーにメッセージをプッシュ送信できます。
POST https://api.line.me/v2/bot/message/push
{
"to": "ユーザーID",
"messages": [
{
"type": "text",
"text": "メッセージ内容"
}
]
}
実装してみて良かった点
- 朝の情報収集を自動化できる
- 人気記事だけを効率よくチェックできる
- n8nだけで完結するため、構築や運用がシンプル
まとめ
今回の仕組みによって、隙間時間を有効的に使えるようになりました。
ただ、もう少しこういう改善もできそうだなと感じました。
- タグを複数対応(Java / AWS / React など)
- ChatGPTで記事の要約をつける
少し工夫するだけで、さらに便利な情報収集ツールにできそうです。
気になる方はぜひ試してみてください。

