自社サイトのSEO対策でRSSフィード作成を担当したのでその方法をメモしておきます。
なんでSEO対策にRSSなのか?
その前にサイトマップについておさらい。
サイトマップとは「クローラーにページを見つけてもらいやすくするためにサーバーに置くファイル」
サイトマップには以下の種類がある。
XMLサイトマップ
- クロール・インデックスさせたいURLをすべて記述する。
- その分サイズが大きい。
- そのためクローラーがあんまり見に来てくれないらしい。ぴえん
RSS/Atomフィード
- 最近の変更のみ記述する。
- そのためサイズが小さい。
- だからXMLサイトマップよりもクローラーが見に来てくれる頻度が高い。
私が開発を担当しているサイトは、イベント情報を載せて集客をするサイトなので、
1日に新規ページが何ページも増える
→新しい増えたページをできるだけ早くクロールしてもらいたい
→サイトマップだけではなく、RSS/Atomフィードを設置することにした。
RSSフィード作成
標準ライブラリ
RailsにはRSSを扱うための標準ライブラリ(https://docs.ruby-lang.org/ja/latest/library/rss.html) が用意されていてrequireするだけで使える。
require 'rss'
フィード作成処理
あとはRSSフィードを作りたいところで
##
# [param] event_list : フィードに載せるエントリのリスト
#
def create_rss_feed(event_list)
# 今回はAtom1.0フォーマットで作成
feed = RSS::Maker.make('atom') do |maker|
maker.channel.about = 'tag:sample.com:feed' # フィードを一意に示すID。多分一意ならなんでもいい。
maker.channel.title = "新着イベント" # フィードのタイトル
maker.channel.description = "イベントの最新情報をご紹介します。" # フィードの説明文
maker.channel.link = 'https://sample.com/' # サイトURL
maker.channel.author = 'イベント事務局' # フィードの作成者
maker.channel.date = Time.now.strftime('%Y-%m-%d %H:%M:%S') # フィードの最終更新日時
event_list.each_with_index do |event|
maker.items.new_item do |item|
item.link = event.url # 詳細ページのURL
item.title = event.title # 詳細ページのタイトル
item.date = event.start_time.strftime('%Y-%m-%d %H:%M:%S') # イベントなら開催日、記事なら公開日など
end
end
end
render xml: feed.to_xml
end
このような処理を書いて実行すると
このようにブラウザ上でRSSフィードが表示されました!
今回はAtomというフォーマットで作成しましたが、違うフォーマットで作成するときは
RSS::Maker.make('atom')
この「atom」の箇所を例えばRSS2.0であれば「2.0」に変えればよいそう。
おわりに
標準ライブラリが用意されていたのであっという間にできてしまいました。
Railsってすごい〜〜と思うことばかりです。