2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ruby on RailsでRSS/Atom形式のサイトマップをつくった

Last updated at Posted at 2020-10-21

自社サイトの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ってすごい〜〜と思うことばかりです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?