RSSとは何か、使い方、WordPressとAstroでの扱い

  • RSS
  • Web
  • WordPress
  • Astro

RSS(と Atom)は何か

RSS(Really Simple Syndication など)や Atom は、サイトの更新エントリを XML で配る仕組みです。HTML を人が読むように並べるのではなく、フィードリーダーが定期的に取得して、新着一覧として見せる用途向きです。

サイトマップ(sitemap)が「検索エンジン向けの URL 一覧」なのに対し、RSS は新着の追跡向きで、過去の全ページ一覧には向かないことが多い、という整理ができる。

実際に「使う」ときの方法

代表的には次のような使い方があります。

  1. フィードリーダーに URL を登録する … Feedly、Inoreader、NetNewsWire、Reeder など。サイトが提示している https://example.com/feed/https://example.com/rss.xml を追加する。
  2. ブラウザ拡張 … ページにフィードがあるときに通知したり一覧化したりする。
  3. 自前のサービスから取得 … サーバーやバッチで HTTP GET して XML をパースし、別の画面に新着を出す(キャッシュ・取得間隔・相手サーバーへの負荷には配慮する)。
  4. Podcast … 音声配信の多くは RSS(または拡張)を本体として配信する、という別レイヤの話になる。

サイト側で「RSS 対応」と言うときの要件

実務ではだいたい次を満たします。

  1. フィード XML を、安定した URL で配信する(例: /rss.xml/feed.xml)。形式は RSS 2.0Atom が一般的。
  2. 各エントリに タイトル・記事へのリンク・更新日時が入る(本文や抜粋は任意)。
  3. (推奨)全ページの <head> rel="alternate"type="application/rss+xml" でフィード URL を指す。購読アプリやクローラが見つけやすくなる。

サイトマップとフィードの役割の違いは、早見表にしておくと見積もりや調査の説明に使いやすい。

WordPress の場合

WordPress コアにはフィード機能が含まれており、パーマリンク設定に応じて URL は変わるが、多くの環境では次のようなパスで投稿フィードが配信される。

  • 例: /feed/(サイトの投稿一覧のフィード)

コメント用・カテゴリ・タグ別のフィード URL も用意される。テーマやプラグインでフィードの出力を変えたり、意図的に無効化したりすることもある点には注意する。

なお、名前に「Feed」が付くプラグイン(例: SNS の投稿をサイトに埋め込む系)は、ブログの RSS とは別目的のことが多い。混同しない。

このブログ(Astro)での実装

このサイトでは次のようにしている。

@astrojs/rss/rss.xml を生成

Content Collection の blog を読み、@astrojs/rssrss() で XML を返すエンドポイントを src/pages/rss.xml.js に置いている。

import { getCollection } from 'astro:content';
import rss from '@astrojs/rss';
import { SITE_DESCRIPTION, SITE_TITLE } from '../consts';

export async function GET(context) {
	const posts = await getCollection('blog');
	return rss({
		title: SITE_TITLE,
		description: SITE_DESCRIPTION,
		site: context.site,
		items: posts.map((post) => ({
			...post.data,
			link: `/blog/${post.id}/`,
		})),
	});
}

context.siteastro.config.mjssite(サイトの絶対 URL)と対応しており、フィード内のリンク解決に使われる。

<head>alternate を宣言

共通ヘッダ BaseHead.astro で、サイトマップに加えて RSS への link を出している。

<link rel="sitemap" href="/sitemap-index.xml" />
<link
	rel="alternate"
	type="application/rss+xml"
	title={SITE_TITLE}
	href={new URL('rss.xml', Astro.site)}
/>

これで購読者は /rss.xml を登録でき、ページを開いたときもフィードの存在が機械可読になる。

まとめ

観点内容
RSS の役割更新エントリの配信(新着追跡向き)
サイト側安定 URL の XML + 推奨で rel="alternate"
WordPressコアの /feed/ 等(環境・設定で要確認)
本サイト(Astro)rss.xml.js + BaseHeadalternate + @astrojs/sitemap

参考: Astro RSSWordPress Feeds(公式の英語ドキュメント)。