Skip to content

RSSフィードを作成する

RSSフィードは、てがろぐやWordPressなどのCMSやPHPなどのスクリプトを使用せずとも、テキストエディタなどでRSSフィード用のファイルを作成し、サーバーにアップロードすることで配信することが可能です。
プログラムを使わない場合、基本的には都度自分でファイルを更新・サーバーにアップロードする必要がありますが、CMSで管理していないページやスクリプトを設置できないサーバーでも、更新情報などを配信できます。

昨今はHTMLとCSSをベタにタグ打ちで…というサイトも少ないと思いますが、本記事ではRSSフィードをテキストエディタにタグ打ちで作成する方法について解説しています。
各種SNSやてがろぐ、WordPressでRSSフィードを配信する方法については、以下記事をご参考ください。

RSSフィードの構造

サイトによって表示される要素など微妙な違いはありますが、おおむね以下のような構造をしています。ここでは現在主に利用されているRSS2.0と、RSSフィードの配信に必要最低限の要素を例に解説しています。

xml
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>[RSSフィードのタイトル]</title>
    <description>[RSSフィードの説明文]</description>
    <link>[サイトURL]</link>
    <item>
      <title>記事タイトル</title>
      <description>記事の概要文</description>
      <link>記事URL</link>
      <guid>記事URL</guid>
      <content:encoded>記事本文</content:encoded>
      <pubDate>記事の投稿日</pubDate>
    </item>
    <item>
      <title>記事タイトル</title>
      <description>記事の概要文</description>
      <link>記事URL</link>
      <guid>記事URL</guid>
      <content:encoded>記事本文</content:encoded>
      <pubDate>記事の投稿日</pubDate>
    </item>
    .
    .
    .
  </channel>
</rss>

<item></item>の中身が配信される各記事です。<item></item>の数に制限はありませんが、だいたい新着順に10〜20件ほどを配信しているところが多いようです。

RSSフィードは通常のサイトで利用されるHTML(Hyper Text Markup Language)ではなく、XML(Extensible Markup Language)という言語でマークアップします。
ファイル名はrss.xmlなどとして(拡張子は.xml)ファイルを作成し、以下の中身を記述してサーバーにアップロードします。ファイルを作成・保存する際の文字コードは「UTF-8」を使用します。

各部分の解説

RSSフィードの基礎部分です。

xml
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>[RSSフィードのタイトル]</title>
    <description>[RSSフィードの説明文]</description>
    <link>[サイトURL]</link>
    <item>
      <!-- 配信する記事の中身 -->
    </item>
  </channel>
</rss>

<?xml ~>でXML文書である旨と、<rss version="2.0">でRSSの配信バージョンを宣言します。
後述する記事本文を配信しない場合は、xmlns:content="http://purl.org/rss/1.0/modules/content/"の記述は不要です。

<channel>の中身がRSSフィードの配信内容(チャンネル情報)です。

なお、<&など一部の記号はエスケープ処理することをおすすめします(後述します)

チャンネル情報直下の要素

以下、RSSフィードの構成に必須のものを中心に解説しています。

title

RSSフィードのタイトルを指定します。必須指定。
とくに決まりはありませんが、サイト全体のRSSであれば「サイト名」、サイトの中の更新情報であれば「サイト名 更新情報」など、わかりやすい名前にするとよいです。

description

RSSフィードの説明文を指定します。必須指定。
こちらもとくに決まりはありませんが、簡潔でわかりやすいものがよいです。

配信するチャンネルのURLを指定します。必須指定。
サイト全体のRSSフィードであればサイトURL、更新情報のRSSフィードであれば更新情報ページのURLを記述します。

language

配信する言語を指定します。
必須ではないですが、多言語サイトの場合は指定しておくとよいです。

補足

languageに指定する値は以下サイトをこ参考ください。

日本語の場合は<language>ja</language>、アメリカ英語の場合は<language>en-us</language>と指定します。

item内の要素

基本は新しい配信記事が上に来るように<item></item>を足します。
以下の要素は必須項目ではないですが、一般的なRSSリーダーが情報を参照するため、RSSフィード作成の際はこれらを記載しておくとよいです。

title

記事のタイトルを指定します。

description

記事の概要文を指定します。本文から100文字程度などで抜き出して指定する場合が多いです。
HTMLタグを入れることはできますが、基本的にはテキストのみを記載します。

記事のURLを指定します。
記事ごとのURLが存在しない場合はチャンネルのURLでも構いませんが、末尾に#[個別のID番号]をつけるなどして、各記事を区別しておくとよいです。

xml
<!-- IDを記載する例 -->
<link>https://parts-tips.com/#1</link>

guid

基本的にはひとつ上のlinkと同じものを指定します。
プログラムの処理などなんらかの理由でlinkとURLが違う場合に、以下のように指定します。

xml
<link>https://parts-tips.com/record/20250322</link>
<guid isPermaLink="false">n0n5osdc</guid>

linkとURLが同じ場合は、isPermaLinkの記載は不要です(linkとURLが同じ場合の値はtrueです)

content:encoded

記事本文を指定します。<content:encoded></content:encoded>の中ではHTMLタグを記述できますが、以下どちらかの対応が必要です。

  • <&など一部の記号をエスケープ処理する
  • 本文のHTML全体を<![CDATA[(記事本文)]]>で囲う

以下、記述例です。

html
<!-- 以下のHTMLを配信する場合 -->
<p>当サイトでは、主に個人サイト制作者の方へ向けて、HTML/CSSのコードサンプルやサイト制作に関する情報などを取り扱っています。<br>更新情報はサイトの履歴や<a href="/rss.xml">RSS</a>のほか、<a href="https://bsky.app/profile/parts-tips.com" target="_blank" rel="noreferrer">Blueskyのアカウント</a>でも随時お知らせしています。</p>
xml
<!-- 以下どちらかで記載する -->

<content:encoded>&gt;p&lt;当サイトでは、主に個人サイト制作者の方へ向けて、HTML/CSSのコードサンプルやサイト制作に関する情報などを取り扱っています。&gt;br /&lt;更新情報はサイトの履歴や&gt;a href=&quot;/rss.xml&quot;&lt;RSS&gt;/a&lt;のほか、&gt;a href=&quot;https://bsky.app/profile/parts-tips.com&quot; target=&quot;_blank&quot; rel=&quot;noreferrer&quot;&lt;Blueskyのアカウント&gt;/a&lt;でも随時お知らせしています。&gt;/p&lt;</content:encoded>

<!-- または -->

<content:encoded><![CDATA[<p>当サイトでは、主に個人サイト制作者の方へ向けて、HTML/CSSのコードサンプルやサイト制作に関する情報などを取り扱っています。<br />更新情報はサイトの履歴や<a href="/rss.xml">RSS</a>のほか、<a href="https://bsky.app/profile/parts-tips.com" target="_blank" rel="noreferrer">Blueskyのアカウント</a>でも随時お知らせしています。</p>]]></content:encoded>

エスケープ処理が結構大変なので、HTMLタグをそのまま使える<![CDATA[]]>で囲う方法をおすすめします。

なお、XML文書は<br><img>など閉じタグのないHTMLタグは/(スラッシュ)で閉じる必要があります。

  • <br> →  <br />
  • <img ~> →  <img ~ />

<item></item>内にdescriptioncontent:encoded両方が記述されている場合、一般的なRSSリーダーはcontent:encodedの内容を優先的に取得して表示します。

content:encodedそのものの要素はなくても構いません。この場合、<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">xmlns:content="http://purl.org/rss/1.0/modules/content/"部分は記述不要です。

pubDate

記事の投稿日を記載します。以下のように記載フォーマットが決まっています。

xml
Sat, 22 Mar 2025 09:30:40 GMT

英語表記(曜日と月は短縮形)です。
GMTの部分は国際的な基準時刻のひとつでいわゆる時差を表しています。日本時間であれば、+0900という表記でRSSフィードを配信しているものもあります。

以上がRSSフィードの中身です。

エスケープ処理について

RSSフィードを作成する際、以下の記号についてはエスケープ処理が必要です(これ以外にもありますが、HTMLタグに使用される主なものを記載しています)
なお、content:encodedにおいて<![CDATA[]]>を利用する場合は、エスケープ処理は不要です。

記号エスケープ処理
>&gt;
<&lt;
&&amp;
"&quot;
'&#39;

以上です。

補足

RSS2.0の仕様について、海外のサイトですが以下詳しく載っています。