記事本文の要素

Cuerda-Feed-total が出力する RSS において、<content:encoded> は記事本文をほぼそのまま配信先へ渡すための中核となる要素です。 しかし、実際には WordPress の投稿本文をそのまま流し込んでいるわけではなく、 各配信先の仕様に沿うように、多段階の整形と是正処理を行ったうえで出力しています。 ここでは、記事本文をどのような手順で加工し、どのような観点で「配信仕様に合わせて整える」のかを詳しく説明します。

本文整形の全体像

Cuerda-Feed-total が <content:encoded> を生成する際の流れは、おおまかに次のような段階に分かれます。

  1. WordPress の投稿本文を取得し、「通常の画面表示」と同等の状態まで展開する。
  2. 配信先を問わず共通で行う、基本的なクレンジング・整形処理を適用する。
  3. 配信先ごとに定められた許可タグ・禁止タグ、仕様上のルールに基づいて、要素や属性を調整する。
  4. 設定で有効化されているオプション(アイキャッチの先頭配置、YouTube 埋め込みの扱いなど)に従って、必要な変換を加える。

このように、本文整形は「共通の土台」と「配信先ごとの調整」が積み重なったプロセスとして設計されています。

WordPress 本文の展開:ブロック・ショートコード・埋め込み

最初の段階では、WordPress の投稿本文を、そのまま管理画面に記録されているテキストではなく、 実際に閲覧ページに表示されるのに近い形にまで展開します。

  • ブロックエディターで作成された内容を HTML にレンダリングする。
  • ショートコードを展開し、ギャラリーや埋め込みコンテンツを実際の HTML に変換する。
  • 標準の自動整形(段落付けなど)を適用し、テキストだけの部分にも適切に <p> タグを与える。

この段階の目的は、「配信先ごとに調整する前に、まず WordPress としての完成形をきちんと出す」ことです。 ここで得られた HTML を出発点として、以降の是正処理が行われます。

共通のクレンジング・整形処理

配信先を問わず、次のようなクレンジングや整形処理が共通して行われます。

  • JavaScript、フォーム、オブジェクト埋め込みなど、ニュース本文としては不要または不適切な要素の除去。
  • インラインスタイルやイベント属性など、配信先の仕様にそぐわない属性の削除。
  • 連続する空行や不要な <br> の整理、空の段落タグの除去。
  • 相対パスの画像・リンクを絶対 URL に補完し、配信先からアクセスしても破綻しないようにする。
  • 不完全なタグや入れ子構造の乱れを補正し、XML として破綻しない構造に整える。

これらは、「どの配信先であっても満たしておきたい最低限の条件」として扱われます。 本文を読みやすく保つことはもちろん、配信先側の解析・表示処理に支障が出ないよう、静かに足場を固める工程です。

配信先ごとの許可タグ・禁止タグの制御

次に、配信先ごとに定められた「使ってよい HTML」と「避けるべき HTML」の一覧に基づいて、本文をさらに調整します。 Yahoo!ニュース、dmenu ニュース、LINE NEWS、SmartNews など、それぞれの仕様書では、 許可されるタグや推奨される構造が微妙に異なります。

Cuerda-Feed-total は内部に「配信先ごとの許可タグリスト」を持ち、 これをもとに次のような処理を行います。

  • 配信先で許可されていないタグは、内容を残したまま上位のテキストに統合するか、必要に応じて安全に削除する。
  • 意味が重複するタグ(たとえば一部の見出しタグ)は、<strong> などのより単純な形に変換する。
  • テーブル要素が禁止されている配信先では、表の内容をテキストや箇条書きに近い形へ変換する。
  • 定義リストや複雑なレイアウト用 HTML は、段落やリストへと単純化する。

この過程で、配信元のページと完全に同じ見た目を再現することは目指さず、 「ニュースとして読めるテキスト構造に正しく落とし込む」ことを優先しています。

画像とキャプションの扱い

記事本文中の画像は、多くの配信先で重要な要素として扱われますが、その置き方やキャプションの表現には細かなルールがあります。 Cuerda-Feed-total では、次のような基本方針で画像を整えます。

  • WordPress のアイキャッチ画像を、設定に応じて本文冒頭に <figure> として自動挿入する。
  • キャプションやクレジット表記を、配信先の仕様に沿ったテキスト形式に整形する。
  • 本文中の画像についても、サイズ指定やレイアウト情報を取り除き、シンプルな <img> として扱う。
  • 代替テキスト(alt)が空の場合、必要に応じてキャプションやタイトルから補完する。

一部の配信先では、「画像の出典」と「キャプション」の扱いを分けて制御できる設定を設けています。 Cuerda-Feed-total は、管理画面での設定値に応じて、それぞれを出力するかどうかを切り替えられるように設計されています。

YouTube など埋め込みコンテンツの扱い

近年は、記事本文に YouTube などの動画埋め込みを含むケースが増えていますが、 配信先の中には iframe やスクリプトによる埋め込みを許可していない仕様も存在します。

Cuerda-Feed-total は、設定に応じて次のような振る舞いを選択できます。

  • YouTube 埋め込みを検出し、配信先が推奨する代替形式(サムネイル画像+リンク形式など)に変換する。
  • 埋め込み部分を記事本文から取り除き、その代わりに動画への URL をテキストとして残す。
  • 配信先が iframe を許容している場合には、仕様の範囲内でそのまま保持する。

こうした変換は、配信先ごとの仕様と、管理画面で有効化したオプションの両方を踏まえて行われます。 編集部としては、「この配信先ではどのように動画を見せたいか」を設定で選ぶことができ、 その背後の HTML 変換はプラグイン側に任せることができます。

リンクとテキストの整理

本文中のハイパーリンクについても、配信先仕様に則った整形が行われます。

  • JavaScript ベースのリンクや、クリック追跡専用の URL は取り除き、純粋な遷移先 URL のみに整理する。
  • 許可されていない属性(target や一部のクラス名など)を削除する。
  • 配信先がリンクを厳しく制限している場合には、リンクタグを外し、テキストとして URL だけを残す。

これにより、配信先側の表示仕様を損なうことなく、本文として必要な情報だけを残すことを目指しています。 読者にとっても、「本文中に何が書かれているか」という本質的な情報が保たれるよう配慮しています。

文章構造の補正と読みやすさ

HTML としての正しさだけでなく、ニュース記事としての読みやすさも本文整形の重要なテーマです。 Cuerda-Feed-total は、次のような細かな補正を通じて、文章構造を整えます。

  • タイトルや小見出しに対応する部分を、適切な段落や強調に変換し、本文との境界を明確にする。
  • 箇条書きがバラバラの段落として記録されている場合、<ul><ol> として再構成する。
  • 余分な改行や、視覚的なスペース調整のためだけに挿入されたタグを整理し、テキストのリズムを整える。

これらの処理は、見た目だけを整えるものではなく、配信先側が本文を解析する際にも役立ちます。 構造化されたテキストは、レコメンドや要約といった後段の処理にとっても重要な土台となります。

配信先ごとの微調整と拡張

Yahoo!ニュース、dmenu ニュース、LINE NEWS、SmartNews など、 各配信先はそれぞれ固有の注意点や推奨事項を持っています。 Cuerda-Feed-total では、これらを「本文変換のルールセット」として整理し、 配信先ごとに次のような微調整を行います。

  • 特定の配信先だけで許可されるタグを追加で残す、あるいは別の配信先では削除する。
  • 本文末尾に付与する注記やコピーライト表示を、配信先ごとの規定に合わせて整える。
  • 一部配信先向けにのみ必要な補足テキスト(例:出典表示の形式)を追加する。

このように、本質的なニュース本文は共通でありながら、 配信先ごとに求められる細かなニュアンスを保つための調整が重ねられています。

本文整形が支えるもの

<content:encoded> は、表向きには単に「記事本文」を収める要素に見えますが、 その背後には、配信先仕様への適合、読者の読みやすさ、将来的な機械処理のしやすさといった複数の要請があります。

Cuerda-Feed-total は、元の投稿本文を尊重しながら、 各配信先が期待する形式に静かに寄り添うことで、 媒体側の編集意図をできるだけ損なうことなく、技術的な要件を満たすことを目指しています。 媒体は通常どおり記事を作成し、必要な場合にいくつかの設定を行うだけで、 その裏側にある本文整形の複雑さを意識することなく、安定した配信を続けることができます。

技術者向けの情報に戻る

©cuerda™