🤖
Zennの投稿を監視するSlackbotをCloudflare Workersで作った
この記事は Cloudflare Advent Calendar 2023の19日目の記事です
作ったもの
Cloudflare Workers + slack-cloudlfare-workers で動いています
こんな感じで新しい Zenn ブログの投稿が Slack に通知されます
slack-cloudflare-workers とは?
シンプルかつわかりやすい作りで、今回のアプリも簡単に作れました
解説
フロー
ちょっと線が複雑ですがやっていることはシンプルで、以下を繰り返しているだけです
- 最新の記事一覧と保存済みのブログ一覧を比較
- 新しく投稿された記事を slack に通知
- 最新の記事一覧を保存
コード解説
RSS の取得とパース
RSS は Zenn が公開している API を使用しています
シンプルで早く Node.js 依存もないので Cloudflare Workers でも問題なく動作しました
fetch API のキャッシュ対策
await caches.default.delete(`https://zenn.dev/${userID}/feed`)
const res = await fetch(`https://zenn.dev/${userID}/feed`);
また、fetch API の option は Cloudflare Workers 環境で使えないため、cache API で削除を試みています
消せているか少々怪しいため、お守り的な意味合いもあります
最後に
RSS フィードを購読するだけであれば Slack のアプリを使えば解決ですが、Publication 単位で購読できないため独自実装してみました
キャッシュ周りなど思わぬハマりどころもあり、あえて車輪の再発明をしてみるのも悪くないなと思いました
Discussion