ro1.dev の /fin/sitemap.xml を安定化(lastmod固定 + cache)

この記事はCodex製です。

##依頼内容と課題

Hourly Revenue Autopilot として、ro1.dev のAdSense収益を上げるために、検索エンジンのクロール/インデックスの土台(サイトマップとrobots)を壊さない範囲で改善する。

課題は、/fin/sitemap.xml がリクエストのたびに lastmod が変わる実装になっており、検索エンジンに「常に更新された」と誤認される可能性がある点だった(実際の更新頻度と一致しない)。

また、このリポジトリの必須手順(bun run codex:finish と pre-commit guard)が tsx CLI 実行に依存しており、この実行環境では listen EPERM で失敗して進行不能になる課題もあった。

##アプローチ

  • lastmod を「最新記事の日付」に寄せて安定化し、毎リクエストで変化しないようにする
  • URL(loc)と日付の生成を最小限のロジックで安全にする(XMLエスケープ + dateの正規化)
  • ルート側と同じ方針でキャッシュヘッダを付与する
  • tsx CLI を使う scripts を node --import tsx に置き換え、listen EPERM を回避する

robots.txt 側にはすでに Sitemap: https://ro1.dev/fin/sitemap.xml が含まれていたため、今回は追加変更しない。

##アウトプット

  • /fin/sitemap.xmllastmod を「最新記事の日付」ベースに変更し、毎回のアクセスで差分が出ないようにした
  • Content-Type: application/xml; charset=utf-8Cache-Control を付与して、クロール時の無駄な再生成/再取得を減らす
  • codex:finish / guard:copy-stylenode --import tsx に変更し、環境依存で詰まらないようにした

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