CloudflareJavaScriptSaaS / FaaSTypeScript

Cloudflare WorkersでRSS Feedを読み込む方法

Cloudflare WorkersはNode.jsそのものではありません。(2023/04時点) そのため、fsなど一部のAPIが利用できず、npmに公開されているライブラリにもWorkersで動かないものがあります。 […]

広告ここから
広告ここまで

Cloudflare WorkersはNode.jsそのものではありません。(2023/04時点)

そのため、fsなど一部のAPIが利用できず、npmに公開されているライブラリにもWorkersで動かないものがあります。

RSSフィードを読む場合は、htmlparser2が使えそう

RSSフィードを読む場合、fetchで取得してからhtmlparser2でパースする方法が良さそうです。

import { parseFeed } from "htmlparser2";

export default {
    async fetch(
        controller: ScheduledController,
        env: Env,
        ctx: ExecutionContext
    ) {
        const response = await fetch('https://qiita.com/motchi0214/feed.atom')
        if (!response.ok) {
            return new Response(JSON.stringify([]))
        }
        const htmlString = await response.text()
        const feed = parseFeed(htmlString)
        if (!feed) {
            return new Response(JSON.stringify([]))
        }
        const items = feed.items.map((data: any)  => {
            return {
              title: data.title,
              description: data.content,
              datetime: data.isoDate,
              href: data.link,
            }
          })
          return new Response(JSON.stringify(items))
    },
};

関連: Discordなどに通知する方法について

取得した内容から、新着情報だけDiscordやSlackに通知するケースを下の記事で紹介しています。

https://wp-kyoto.net/create-a-new-discord-bot-to-share-the-connpass-event-information-on-cloudflare/

この場合、「KVを利用して通知ずみの記事データを管理する」「DiscordのWebhook APIを利用して投稿を行う」の2点を追加で実装しましょう。

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts