HN 日本語サマリー

← 一覧へ戻る
Web開発

RSSフィードのベストプラクティス (2022年)

RSS Feed Best Practices (2022) (kevincox.ca)

23 pointsby KomoD5 コメント

要約

この記事は、ブログコンテンツの共有方法に関する技術的なベストプラクティスを解説しています。RSS 2またはAtom形式の使用を推奨し、特にAtomは互換性の問題が少なく、仕様も明確であるため、新規にフィードを作成する場合に推奨されています。フィードの提供形式は一つに絞り、Content-Typeヘッダーを正しく設定し、すべてのURLを絶対URLにすること、そしてHTMLの<link>タグやHTTPヘッダーでフィードの発見可能性を高めることが重要です。さらに、フィードはHTTPSで提供し、記事の全文を含めること、Entry IDは変更せず、公開日と最終更新日を正確に扱うことが推奨されています。

全文翻訳

RSSフィードのベストプラクティス 投稿日: 2022-05-06 最終更新日: 2024-03-13 これはブログを公開するための技術的なヒントです。良いコンテンツとは関係なく、そのコンテンツをどのように共有するかについてのものです。推奨事項は重要度のおおよその順に並んでおり、なぜそれが重要なのかという理由も添えられています。 フォーマット 人々は一般的にフィードを「RSSフィード」と呼びますが、通常は具体的にRSSを指しているわけではありません。RSSは唯一の、あるいは最良のフォーマットでもありません。標準化されたフォーマットを使用することは、フィードが最も幅広い読者や検索エンジンに理解されるために不可欠です。RSS 2またはAtomを使用すべきです。これらのフォーマットは非常に広くサポートされています。その他の一般的なフォーマットには、古いRSS規格やJSON Feed、Microformats h-feedがあります。これら、あるいはさらに一般的でないフォーマットは、サポートが少ないため避けるべきです。 まだフィードがない場合は、Atomを強くお勧めします。仕様には曖昧さが少なく、使用されている多種多様なクライアントとの互換性の問題が発生する可能性が低くなります。仕様は全体的にもよりシンプルで明確です。すでにRSS 2フィードがある場合は、アップグレードする理由はほとんどありません。 以下に最小限のAtomテンプレートを示します。詳細については仕様を参照してください。例が必要な場合は、私のフィードを参照してください。 <?xml version="1.0" encoding="UTF-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> <title>{{FEED_NAME}}</title> <id>{{HOMEPAGE_URL}}</id> <link rel="alternate" href="{{HOMEPAGE_URL}}"/> <link rel="self" href="{{FEED_URL}}"/> <updated>{{RFC3339形式のLAST_UPDATE_TIME}}</updated> <author> <name>{{AUTHOR_NAME}}</name> </author> <entry> <title>{{ENTRY.TITLE}}</title> <link rel="alternate" type="text/html" href="{{ENTRY.HTML_URL}}"/> <id>{{ENTRY.PERMALINK}}</id> <published>{{RFC3339形式のENTRY.FIRST_POST_TIME}}</published> <updated>{{RFC3339形式のENTRY.LAST_UPDATE_TIME}}</updated> <content type="html">{{ENTRY.HTML}}</content> </entry> </feed> 複数のフォーマットでフィードを提供することにほとんど意味はありません。Atomフィードがある場合、RSSフィードを別途提供する必要はありません。フィードフォーマットの変更は安全です。フィードがAtomとRSSの間で切り替わっても混乱する読者はほとんどいません。これは、同じURLでフィードを変更するか、新しいURLにリダイレクトすることで行うことができます。(コンテンツタイプを更新することを忘れないでください) コンテンツタイプ Content-Typeヘッダーを正しく設定してください。Atom: Content-Type: application/atom+xml RSS: Content-Type: application/rss+xml JSON Feed: Content-Type: application/feed+json 実際には他の値が使用されているのを見るかもしれませんが、これらが標準値であり、最も広くサポートされています。 絶対URL フィード内のすべてのURLは絶対URLであるべきです。Atomは相対URLの解決方法を明確に指定していますが、正しく実装されることはめったにありません。フィードがすべての読者に理解されるようにするには、絶対URL(https://で始まるもの)のみを使用してください。これには、すべての<link>要素と、投稿の要約および本文(HTML内を含む)が含まれます。 発見可能性 ブログのすべてのページ、おそらくサイトのすべてのページに、フィードを宣伝するためのメタデータを記載すべきです。これにより、読者や検索エンジンが購読し、新しいコンテンツに気づくことができます。これは、HTMLに以下を提供するだけで簡単です。 <link rel=alternate title="Blog Posts" type=application/atom+xml href="/feed.atom"> 複数のフィードを提供している場合は、適切なタイトルを付けてすべてを宣伝できます。 <link rel=alternate title="All Posts" type=application/atom+xml href="/feed.atom"> <link rel=alternate title='Posts in the "Social" category' type=application/atom+xml href="/feeds/social.atom"> <link rel=alternate title="Comments on this Post" type=application/atom+xml href="/post/hello-world/comments.atom"> フィードの正しいタイプを使用していることを確認してください。提供されている例はAtomフィード用です。「最も重要な」フィードを上に配置することを優先してください。多くのクライアントは、ユーザーにフィードを提示する際に順序を保持します。これは主観的ですが、通常はサイト全体のフィード、次にカテゴリフィード、次に特定のページのコメントフィードになります。複数のフォーマットでフィードを提供している場合、1つだけ(AtomまたはRSS 2)を宣伝することをお勧めします。複数のフォーマットで同じコンテンツへのリンクを含めると、潜在的な購読者を混乱させたり、分析麻痺に陥らせたりする可能性があります。(コンテンツが同じであることをどうやって知るのでしょうか?) W3C Feed Validation ServiceにウェブサイトのURLを入力することで、これが正しく機能していることを検証できます。リンクが正しく設定されていれば、フィードを検出し検証できるはずです。発見可能性がどこでも機能していることを確認するために、いくつかの異なるページを試してみてください。ホームページ、投稿リストページ、個々の投稿ページを試してください。 HTMLを変更するのが難しい場合は、HTTPレスポンスのLinkヘッダーを使用できます。ただし、これは広くサポートされていません。HTML <link>タグの使用は、より広い互換性のために推奨されます。 Link: /feed.atom; rel="alternate"; type="application/atom+xml" また、別のフィードインジケーターがないユーザーのために、RSSロゴ付きのリンクを含めるべきです。 HTTPS HTTPSは、インターネット上のセキュリティとプライバシーの鍵です。HTTPS経由でフィードを提供することで、ユーザーのプライバシーが保証され、フィードが悪意のあるアクターによって改変されないことが保証されます。埋め込みメディア(画像など)はすべてHTTPS経由で参照してください。多くのリーダーはセキュアなコンテキストで実行され、HTTPリクエストは許可されません。HTTPS経由でフィードを提供してください。セルフリンクがHTTPSであることを確認してください。HTTPリクエストをHTTPSにリダイレクトしてください。Strict-Transport-Securityの使用を検討してください。 全文 フィードに投稿の全文を含めることが一般的に推奨されます。これがほとんどの読者が好むものです。RSSとAtomの場合、<content>要素には記事全体を含めるべきです。Atomには、より短い要約を好む読者のために含めるための<summary>要素もあります。 もちろん、これらのビューの収益化の難しさから、フィードで全文を共有することは一部の出版物にとって受け入れがたいことです。まず、フィードリーダーで全文を表示できない読者が離れる可能性があることを考慮してください。広告が表示されなくても、友人にコンテンツを共有したり、ニュースアグリゲーターに共有したりする可能性があります。おそらく、読者を失うよりも、その読者を持つことの方があなたにとって価値があるでしょう。コンテンツが有料の場合は、認証トークンを提供することで、ユーザーがプライベートリンクを生成できるようにすることを検討してください。例えば /feed.atom?user=peruserauthtoken のようなものです。basic auth(例: https://fred:peruserauthtoken@blog.example/feed.atom)も使用できますが、これはURLパスまたはクエリ文字列にトークンを提供するよりも、サポートするリーダーが少ないです。 エントリーID エントリーIDは、フィード内のエントリーを識別し、区別するための主な方法です。エントリーIDが変更されたり繰り返されたりすると、読者は重複を受け取ったり、エントリーを見逃したりします。既存の記事のIDを変更しないでください。IDスキームを変更した場合は、新しいエントリーにのみ適用されるようにしてください。異なる記事にエントリーIDを再利用しないでください。エントリーIDには記事のパーマリンクを使用することを推奨します。エントリーIDは、存在するすべてのフィード間でグローバルに一意にすることをお勧めします。一部のリーダーはフィードをマージするため、一意のIDは問題がないことを保証するのに役立ちます。最も簡単な方法は、自分で管理しているドメインのURLを使用することです。それが不可能な場合は、UUID(例: urn:uuid:f4a3ca5b-5799-44e8-aaaa-e40728f037d3)を使用できます。 日付 AtomとRSSはどちらも、公開時間(エントリーがフィードに最初に表示された時間)と最終更新時間(エントリーが変更された最後の時間)を区別します。これらを正しく処理してください。公開時間を含めてください。公開時間は決して変更されるべきではありません。エントリーは一度しか公開できません。公開時間は、エントリーがフィードに表示された時期とおおよそ一致させることを推奨します。一部のリーダーは、遠い過去に公開されたエントリーを無視します。公開時間の順序とは異なる順序でフィードにエントリーが表示され始めることを強く避けてください。(例えば、14:00に公開されたアイテムが14:00にフィードに表示され始め、その後13:00に公開されたアイテムが13:00に表示され始めるような状況を避けてください)