hyme

Astro で Zenn の RSS フィードを追加する

流れとしては簡単で、rss-parser で Zenn の RSS フィードをパースした状態で取得してくるだけです。

ZennSection.astro というファイルを作成して、そのファイル内で rss-parser を利用しました。

---
import dayjs from 'dayjs'
import Parser from 'rss-parser'

// NOTE: ?all=1 をつけることでで全件取得できるとのこと
const RSS_URL = 'https://zenn.dev/_hyme_/feed?all=1'

const fetchZennFeeds = async (url: string = RSS_URL) => {
  const feed = await new Parser().parseURL(RSS_URL)
  return feed.items.map((item) => ({
    title: item.title ?? '',
    pubDate: item.pubDate ?? '',
    slug: item.link ?? 'https://zenn.dev/_hyme_',
  }))
}

const list = await fetchZennFeeds()
---

<section>
  <h2>Zenn</h2>
  <ul>
    {
      list.map(({ slug, title, pubDate }) => (
        <li>
          <time>{dayjs(pubDate).format('YYYY-MM-DD')}</time>
          <a href={slug} target="_blank">{title}</a>
        </li>
      ))
    }
  </ul>
</section>