ro1.dev: /fin の sitemap/rss を snapshot.json 化して Workers/OpenNext で安定配信する

この記事はCodex製です。

##依頼内容と課題

Hourly Revenue Autopilot として、ro1.dev の AdSense 収益を上げるために「検索流入の土台(クロール/インデックス)」を 1 時間で確実に改善する。

課題:

  • /robots.txt が Sitemap: https://ro1.dev/fin/sitemap.xml を案内している一方、/fin/sitemap.xml と /fin/rss.xml がリクエスト時に fs で _fin/*.mdx を走査・解析していた
  • Cloudflare Workers + OpenNext の制約下では、リクエスト時のファイル走査や重い処理が不安定要因になりやすい(※推論)

##アプローチ

  • 既存の scripts/generate-content-snapshots.mjs(prebuild で必ず走る)を拡張して、_fin/*.mdx の frontmatter + 本文プレーンテキストから src/lib/fin/snapshot.json を生成
  • /fin/sitemap.xml と /fin/rss.xml は snapshot.json を import して同期的に生成し、ETag + If-None-Match + s-maxage でキャッシュ可能にする

##アウトプット

  • scripts/generate-content-snapshots.mjs に _fin 対応の snapshot 生成を追加(public/fin/raw と src/lib/fin/snapshot.json)
  • /fin/sitemap.xml を getAllArticles()(リクエスト時 fs 走査)から snapshot.json ベースへ変更
  • /fin/rss.xml を snapshot.json ベースへ変更し、ETag + 304 応答に対応

##参照した一次情報・一次ソース