アニメ海外の反応サイトの各話ページSEO設計(TVSeries/TVEpisode/FAQで構造化する)
自作の「アニメ海外の反応まとめ」(anime.autoarticles.net)は、実在の人気アニメを対象に、各話への海外ファンの盛り上がりをまとめた静的サイトだ。生成器 build.js は外部依存ゼロ(Node標準モジュールだけ)で、data/anime/*.json を読んで public/ にHTMLを吐く。この記事では、各話ページを検索エンジンに正しく理解させるための構造化データ設計を、手元で試せる形で説明する。
どのスキーマを、どのページに付けるか
作品ページ・各話ページで使い分けているJSON-LDは次の通り。
- 作品ページ:
TVSeries(productionCompanyにスタジオ、分かる場合はdirector)。 - 各話:
TVEpisode(親のTVSeriesに紐づける)。 - 各話の一覧:
ItemList。 - パンくず:
BreadcrumbList(「ホーム > シーズン > 作品」)。 - Q&A:
FAQPage(本文のFAQと内容を一致させる)。
ポイントは「構造化データと画面表示の内容を必ず一致させる」ことだ。FAQPage の質問・回答は、実際にページに表示しているQ&Aと同じ文字列を使う。表示にない情報を構造化データにだけ入れるのは、Googleのガイドライン違反になり得る。
データを事実に寄せる
作品のタイトル・スタジオ・原作・放送情報などの metadata は、実在の一次情報(公式サイト・配信サイト等)で確認したものだけを入れる。一方、各話の「海外の反応」は匿名ハンドルのファン目線の感想として作成し、実在人物の発言の捏造はしない。各反応には hype/funny/moved/love/shock/angry/scared/think の感情ラベルを付け、build.js が色分けする。この「事実は検証、感想は明示的に一般化」という線引きが、サイトの信頼性を保っている。
実際に試す
依存ゼロで、各話ページに TVSeries+TVEpisode+BreadcrumbList のJSON-LDを埋め込む最小SSGをNodeで再現する。build.js として保存し node build.js を実行する(Node 18以上)。
1 | |
期待される出力と確認:
public/ep-1.htmlが生成される。grep '"@type":"TVEpisode"' public/ep-1.htmlでエピソードのスキーマが埋まっていることを確認できる。- 生成HTMLをGoogleのリッチリザルトテストに貼ると、TVEpisode・BreadcrumbList・FAQのJSON-LDがエラーなしで認識される。
- FAQの質問文がHTMLの
<dt>と JSON-LD で一致していることを確認する(不一致は避ける)。
各話ページの実物は アニメ海外の反応まとめ で確認できる。
まとめ
- 各話は
TVEpisodeを親TVSeriesに紐づけ、BreadcrumbListとFAQPageを添える。 - 構造化データと画面表示は必ず一致させる。
- metadata は一次情報で検証し、感想は一般化して明示する。