SEO 機能
検索エンジン向けの構造化データ出力と、見出し階層の細かな制御をショートコード属性ひとつで切り替えられます。動画コンテンツを含むページの SEO スコア改善に直結する 2 つの機能です。
JSON-LD 構造化データ出力
ショートコードに jsonld="yes" を指定すると、表示している動画のメタ情報を schema.org の ItemList + VideoObject 形式で JSON-LD として出力します。Google の動画リッチリザルトの候補として認識される可能性が高まります。
[ks_tubelist channel="UCxxxx" count="12" cols="3" mode="loadmore" per_page="6" jsonld="yes"]
出力される JSON-LD の構造
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "ItemList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"item": {
"@type": "VideoObject",
"name": "動画タイトル",
"thumbnailUrl": "https://i.ytimg.com/vi/.../maxresdefault.jpg",
"contentUrl": "https://www.youtube.com/watch?v=...",
"embedUrl": "https://www.youtube.com/embed/...",
"uploadDate": "2026-04-01T09:00:00Z",
"description": "動画の説明 (最大 5000 文字)",
"duration": "PT12M34S",
"interactionStatistic": {
"@type": "InteractionCounter",
"interactionType": { "@type": "WatchAction" },
"userInteractionCount": 12345
}
}
},
// ... 他の動画
]
}
</script>
含まれるプロパティ
| プロパティ | 取得元 | 備考 |
|---|---|---|
name | snippet.title | 動画タイトル |
thumbnailUrl | snippet.thumbnails | maxres → standard → high → medium → default の順で最高解像度を選択 |
contentUrl | video ID から組立 | youtube.com/watch?v=... |
embedUrl | video ID から組立 | youtube.com/embed/... |
uploadDate | snippet.publishedAt | ISO 8601 形式 (例: 2026-05-19T12:34:56Z) |
description | snippet.description | mb_substr で最大 5000 文字に切り詰め |
duration | contentDetails.duration | ISO 8601 期間形式 (例: PT12M34S) |
interactionStatistic | statistics.viewCount | WatchAction の累計再生数 |
JSON-LD は HTML 末尾に追加されるため、ページの見た目には一切影響しません。Google の リッチリザルトテスト で出力結果を確認できます。
JSON-LD を出力するかどうかはページ単位で選んでください。すべてのページで全件出力すると、別ページに同じ VideoObject が重複登録されるため、検索エンジンにとってノイズになります。
見出しレベル (heading_level) 制御
動画タイトルは既定で <h3> として出力されますが、heading_level 属性で h2〜h6 を選べます。ページの見出し階層や、目次プラグインの拾われ方に応じて調整できます。
[ks_tubelist channel="UCxxxx" count="12" cols="3" heading_level="4"]
ユースケース
| 状況 | 推奨 heading_level | 理由 |
|---|---|---|
| ページ全体のメインコンテンツ | 2 または 3 | 見出し階層の上位として SEO 評価に貢献 |
| サイドバーや関連動画ウィジェット | 4 または 5 | ページのメイン階層に影響しない |
| 目次プラグインから除外したい | 5 または 6 | 多くの目次プラグインは h2-h3 のみを対象にする |
見出しレベルのジャンプは避ける。 ページに h2 しかない箇所の直後に h5 を出すと階層が飛んで a11y / SEO ともに減点。直前の見出しレベル + 1 を目安に設定してください。
その他の SEO 寄与要素
img 属性の最適化
- 初回
per_page件のサムネにloading="eager"+fetchpriority="high"→ LCP (Largest Contentful Paint) 改善 - それ以降は
loading="lazy"+decoding="async"→ ページ初期表示を高速化 alt属性に動画タイトルを設定 → 画像検索でのインデックス対象に
セマンティックな HTML 構造
- 外側 wrapper:
<div role="region" aria-label="動画一覧"> - 動画リスト:
<ul class="kstls-grid"><li class="kstls-item"> - 動画タイトル:
<h2>〜<h6>(heading_level 属性で制御) - 公開日:
<time datetime="YYYY-MM-DD"> - ページネーション:
<nav aria-label="ページ送り">
キャッシュとレスポンス時間
- YouTube API レスポンスを transient で保持 (デフォルト 3600 秒)
- 同一ショートコード呼び出しは DB 1 クエリで完結 → サーバー応答時間 (TTFB) を短縮
- API キー変更時はキャッシュを自動全消去 → 表示不整合を防止
JSON-LD 出力サンプルの検証
テスト用のページを用意
固定ページに jsonld="yes" 付きのショートコードを設置して保存。
リッチリザルトテストにかける
https://search.google.com/test/rich-results にページ URL を入力して「URL をテスト」。
「動画」が検出されることを確認
結果ページの「検出されたアイテム」欄に「動画」(VideoObject) が表示されれば OK。エラーや警告があれば JSON-LD の内容を確認してください。