AIにも評価される動画へ!Schema.org活用でAIOと動画SEOを強化する構造化データ設定方法

動画コンテンツの重要性が高まる中、その価値を検索エンジンやAIに正しく伝え、最大限に活用することが不可欠になっています。
しかし、時間と労力をかけて制作した動画をWebページに設置するだけでは、そのポテンシャルを十分に引き出すことは困難です。なぜなら、検索エンジンやAIは人間のように動画を「視聴」して内容を理解するわけではないため、配置されただけの動画ではその価値が伝わらないからです。
この価値を正確に伝える手段が「構造化データ」です。
構造化データによる情報提供は、従来の検索エンジン最適化(SEO)だけでなく、今後のAI検索(AIO)においてもコンテンツの露出を左右する重要な取り組みです。そしてこのアプローチは、HTMLのvideo要素で設置する動画とYouTube埋め込み動画のいずれにも有効です。
ここでは、Webページに埋め込んだ動画を最大限に活かすために、構造化データの必要性と、その具体的な実装方法についてご紹介します。
なぜ動画に構造化データが必要なのか?
Webページに動画を埋め込み、さらに構造化データを設定することは、従来のSEOと今後のAIO(AI最適化)の両面で非常に大きなメリットがあります。単に動画を埋め込むだけでは得られない、深いレベルでのコンテンツ理解と露出機会の向上が期待できます。
従来のSEO(検索エンジン最適化)へのメリット
構造化データを設定することで、Googleなどの従来の検索エンジンに対して動画の価値を最大限にアピールできます。
- 検索結果での視認性向上(リッチリザルト)
- 検索結果に動画のサムネイルや再生時間が表示される「リッチリザルト」の対象となり、テキストだけの競合よりも目立つためクリック率の向上が期待できます。
- コンテンツの正確な理解
- 動画のタイトル、説明、公開者といった情報を正確に伝えることで、検索エンジンが「どのような内容の動画か」を深く理解し、関連性の高いキーワードで適切に評価されやすくなります。
- クロールとインデックス促進
- 検索エンジンがページ上の動画コンテンツを効率的に発見し、データベースに登録(インデックス)する手助けをします。これにより、検索結果に表示されるまでの時間が短縮されます。
- E-E-A-Tの強化
- 「誰がその動画を公開したか」という情報(publisher)を明示することで、コンテンツの専門性や権威性、信頼性(E-E-A-T)を高めるシグナルとなり、サイト全体の評価向上にも繋がります。
AIO(AI最適化)へのメリット
AIが回答を生成する新しい検索体験(SGEなど)において、コンテンツが選ばれるための重要な施策となります。
- AIによるコンテンツ理解の深化
- AIは構造化データを重要な情報源として学習し、動画の文脈や意図をより深く理解します。これにより、単なるキーワード一致を超えた本質的な価値をAIに評価してもらえます。
- AI検索やレコメンドでの露出増加
- 「〇〇のやり方を教えて」といったAIへの質問に対して、回答の一部としてあなたの動画が引用されたり、YouTubeなどのプラットフォームでおすすめ動画として推薦されたりする可能性が格段に高まります。
- 新しい対話型検索への対応
- これから主流となる、AIと会話しながら答えを見つけるような「対話型検索」において、あなたの動画が最適な回答候補としてAIに認識されるようになります。これは、未来の検索トラフィックを獲得するための重要な布石です。
このように、構造化データとは、検索エンジンやAIが理解できる言葉で、動画の価値を正確に伝えるための仕組みです。これを設定しておくかどうかで、今の検索結果はもちろん、これからのAI時代にあなたの動画がチャンスを掴めるかどうかが大きく変わってきます。
動画コンテンツでの情報発信でいうと、YouTubeという動画プラットフォームを活用することが多いですが、たとえYouTube動画の運用がうまくいっていなかったとしても、従来の検索エンジンやAI検索エンジンから、ユーザーが求めている情報であることを認識してもらうことで、動画検索や動画だけでなく関連するWebページがAIに参照されやすくなり、全体として相乗効果が高まるでしょう。
YouTubeでの人気と、検索エンジンからの評価は別軸で考えられます。構造化データで動画情報を提供すると、検索エンジンやAIは「この記事には、内容を補足する有益な動画が含まれている」と認識し、これにより、動画単体だけでなく、その動画が掲載されているWebページ全体の専門性や信頼性(E-E-A-T)の評価が向上します。AI(特に生成AI)が回答を作成する際、どの情報を参照するかは「信頼性」と「網羅性」に大きく左右されます。テキスト情報に加えて、内容を裏付ける動画(構造化データ付き)も提供しているページは、AIにとって「より信頼でき、情報が豊富な参照元」と判断されやすくなります。
結果として、動画の検索順位が上がる → Webページの評価が上がる → AIにページが参照されやすくなる → サイト全体のトラフィックが増える、という好循環が生まれます。
動画の構造化データの実装方法
ここからは、実際に動画の構造化データを実装する方法を見ていきましょう。
構造化データの実装には、「JSON-LD(ジェイソン・エルディー)」という形式を用います。これは、JSONというデータ形式で動画の情報を記述する方法です。
HTMLのvideo要素での動画の埋め込みとYouTube動画の埋め込みと、2パターンご紹介します。
video要素の動画の構造化データ
まずは、HTMLのvideo要素で動画をページに置きます。
HTML
<video controls poster="https://example.com/images/thumbnail.jpg">
<source src="https://example.com/videos/your-video.mp4" type="video/mp4">
</video>
次に、動画のすぐ後にJSON-LDで構造化データを設定してます。
HTMLファイルなど、Webページのファイルにscriptタグで記述していきます。
動画の基本的な構造化データの設定は、以下のようになります。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "動画のタイトルを記述",
"description": "動画の内容を具体的に説明。キーワードを自然に含め、動画が何について語っているのか、何を解決するのかなどを詳しく記述する。”,
"uploadDate": "2025-07-26T10:00:00+09:00",
"duration": "PT5M30S",
"thumbnailUrl": "https://example.com/images/thumbnail.jpg",
"contentUrl": "https://example.com/videos/your-video.mp4",
"embedUrl": "https://example.com/videos/your-video.mp4",
"publisher": {
"@type": "Organization", // もしくは Person
"name": "会社名または個人名",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/images/logo.png",
"width": 315,
"height": 98
}
}
}
</script>
@context や @type といったプロパティを設定していきます。
動画の構造化データでありますので、@type の値は VideoObject となります。
publisherには、動画を公開・発行した組織または個人の情報を設定します。検索エンジンが「誰がこの情報の責任者か」を理解し、コンテンツの信頼性や権威性(E-E-A-T)を評価する上で非常に重要な役割を果たします。
publisherの @type には Organization または Person を設定します。Organization(組織)が一般的です。logoにはロゴ画像の情報(ImageObject)を指定、url にはロゴ画像のURLを絶対パス(フルパス)で指定します。width や height はロゴの幅と高さをピクセルで指定します(任意ですが推奨)。ただ、もし今後ロゴのデザインが変わったりサイズに若干の修正が入ると、設定した情報をすべて変更することになりますので、必須ではないため指定しなくてもいいでしょう。こちらは表示に関わるところではないので、SEOに直接的な影響はありません。
この後お話するプロパティは、各動画ごとの情報を設定していきます。
nameには、動画のタイトルを記述します。
descriptionには、動画の内容の具体的な説明を記述します。なるべくキーワードを自然に含めた文章で説明を記述しましょう。
thumbnailUrlには、動画のサムネイル画像のURLを設定。contentUrlとembedUrlは動画ファイルのURLを設定します。(同じ動画ファイル)
そして以下が、uploadDateの設定時の注意点とdurationの設定方法になります。
uploadDateのタイムゾーン付きの公開日時
uploadDateには、動画をWebサーバにアップロードした日時を、時刻とタイムゾーンを含めたISO 8601形式で記述します。
もし正確な時刻が不明であれば、以下のいずれかのように、キリの良い時間や、日中の一般的な時間帯を設定しましょう。
深夜0時: 00:00:00
正午: 12:00:00
午前中: 10:00:00
午後: 18:00:00 や 20:00:00
など
(日本時間午前10時00分00秒)
2025-05-01T10:00:00+09:00
(日本時間午後10時00分00秒)
2025-05-01T22:00:00+09:00
“2025-05-01″のようにタイムゾーン無しでも設定できますが、Google Search Consoleで「重大ではない問題」としてメッセージが届きます。重大ではないようですがタイムゾーンまでの設定をGoogleが推奨しているようなので、タイムゾーンまでしっかりと記述しておきましょう。
durationはどのように設定すればいい?
動画の再生時間は、ISO 8601という国際標準の期間(Duration)形式で記述する必要があります。
- durationの形式:ISO 8601 期間形式
- ISO 8601期間形式は、Pで始まり、その後ろに期間の各要素(年、月、日、時間、分、秒)を特定の文字と数値で記述。
P :
期間 (Period) を意味します。必ず先頭に付けます。
T :
時間の要素(時、分、秒)が続く場合に、日付の要素(年、月、日)と区切るために使用します。
よく使われるのは、動画の再生時間を示す T 以降の部分です。
各要素の表記
H : 時間 (Hours)
M : 分 (Minutes)
S : 秒 (Seconds)
設定のポイント
- 必ず P と T を含める
- 要素の順番: H → M → S の順で記述します。
- ゼロの省略: ゼロの要素は省略できます。例えば、20分0秒の場合は PT20M でOKです(PT20M0Sでも間違いではありません)。
- 正確な時間: 動画の実際の再生時間と一致させることが重要です。YouTube動画の場合、YouTube Studioで表示される再生時間を参考にしましょう。
具体的には、動画の再生時間に合わせて、以下のように設定します。
2:15(2分15秒)
PT2M17S
3:00(3分)
PT3M
1:05:30(1時間5分30秒)
PT1H5M30S
ここまでが、基本的な構造化データの設定になります。
では、実際の実装を見てみましょう。
HTML
<video controls poster="images/thumbnail.jpg">
<source src="videos/processing-circle-animation.mp4" type="video/mp4">
</video>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "Processing: Randomly Moving Circles Animation",
"description": "This Processing sketch creates an animation of 50 translucent circles that move randomly across the screen. When a circle goes off one edge, it wraps around to the opposite side, creating a continuous, looping effect.",
"uploadDate": "2025-07-02T10:00:00+09:00",
"duration": "PT1M1S",
"thumbnailUrl": "https://example.com/images/thumbnail.jpg",
"contentUrl": "https://example.com/videos/your-video.mp4",
"embedUrl": "https://example.com/videos/your-video.mp4",
"publisher": {
"@type": "Organization",
"name": "Webエンジニアのブログ",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/images/logo.png",
"width": 315,
"height": 98
}
}
}
</script>
以下、Webブラウザのデベロッパーツールでの確認です。

video要素の動画の埋め込みURLは、Webページからの相対パスでも表示には問題ありませんが、正確に構造化データを共有できるよう、構造化データの情報のURLは絶対パス(フルパス)で指定しておきましょう。
またその他にも、必須ではないが以下のようなプロパティもあります。
"interactionStatistic": {
"@type": "InteractionCounter",
"interactionType": { "@type": "http://schema.org/WatchAction" },
"userInteractionCount": 12345 // 推定視聴回数または実際の視聴回数
},
"potentialAction": {
"@type": "SeekToAction",
"target": "https://example.com/videos/your-video-filename.mp4={seek_to_npt}",
"description": "動画内検索を有効にするためのURIテンプレート"
},
"regionsAllowed": "JP,US,GB" // 動画の視聴が許可されている国コード (オプション)
動画の視聴回数など、ユーザーとのやり取りの統計情報を示すためのプロパティの interactionStatistic (インタラクション統計)、動画内の特定時間へのシーク(頭出し)機能を有効にして、検索結果から動画のハイライト部分(キーモーメント)へ直接ジャンプさせることが可能にすることができる potentialAction (潜在的なアクション)、
動画コンテンツの視聴が許可されている国や地域を指定する regionsAllowed (許可された地域) などがあります。
YouTube動画の場合は、チャプター設定を行っていれば、動画のハイライト部分(キーモーメント)が自動的に設定されます。
YouTube動画の埋め込みと構造化データの設定
YouTube動画の埋め込みもHTMLのvideo要素の動画と全体の構成は同じで、YouTube動画では、動画IDの情報が必要になります。以下のサンプルでいくと、iframe要素のsrc属性の動画URLの末尾「4-qi4qBHsVA」になります。
必須のプロパティを設定した最小限の構造化データでご紹介します。
YouTubeの埋め込みコード(iframe要素)の後に、scriptタグで構造化データを設定します。
HTML
<iframe width="560" height="315" src="https://www.youtube.com/embed/4-qi4qBHsVA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "YouTube動画のタイトルを記述",
"description": "YouTube動画の内容を具体的に説明。キーワードを自然に含め、動画が何について語っているのか、何を解決するのかなどを詳しく記述。",
"uploadDate": "2025-05-01T10:00:00+09:00",
"duration": "PT2M17S",
"thumbnailUrl": "https://i.ytimg.com/vi/VIDEO_ID/maxresdefault.jpg",
"contentUrl": "https://www.youtube.com/watch?VIDEO_ID",
"embedUrl": "https://www.youtube.com/embed/VIDEO_ID",
"publisher": {
"@type": "Organization",
"name": "Webエンジニアのブログ",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/images/logo.png"
}
}
}
</script>
動画の構造化データでありますので、@type の値は VideoObject となります。
nameには、YouTube動画のタイトルを記述します。
descriptionには、動画の内容の具体的な説明を記述。なるべくキーワードを自然に含めた文章で説明を記述します。uploadDateには、動画の公開日を指定。durationには、動画の再生時間を指定します。(先ほど説明したISO 8601形式)
thumbnailUrlには、YouTube動画に設定したあるサムネイル画像のURLを設定します。VIDEO_ID の部分を動画IDにしていただくだけでサムネイル画像のURLが完成します。
contentUrlとembedUrlも、VIDEO_ID の部分を動画IDを指定するだけで動画コンテンツや埋め込みのURLになるようにテンプレートでは設定しています。こちらは、対象の動画ページでURLをコピーしてきたり、シェアアイコンから埋め込み用のURLをコピーしてきてもOKです。
以下、Webブラウザのデベロッパーツールでの確認です。

構造化データは1ページに複数あってもいいのか?
1つのWebページに複数の<script type="application/ld+json">
タグが記述されていても問題ありません。
Googleを始めとする検索エンジンは、1つのページ内に複数の構造化データブロックが存在することを想定しています。実際に、多くのWebサイトでは、以下のような複数の構造化データが1ページ内で使用されています。
- WebPage
- ページ全体の情報
- BreadcrumbList
- パンくずリスト
- Article または BlogPosting
- 記事のコンテンツ情報
- VideoObject
- 埋め込まれた動画コンテンツの情報
- Product
- 商品情報
- Organization または Person
- サイト運営者や著者情報
- FAQPage
- FAQセクションの情報
検索エンジンは、それぞれの<script type="application/ld+json">
ブロックを個別のデータセットとして解析し、それぞれのブロックが示すエンティティ(Webページ、動画、記事など)とそのプロパティを理解します。異なる種類の情報を別々に、かつまとめて提供することで、ページのコンテンツ全体像をより正確に把握できるため、SEOにとっても好ましいです。
複数の構造化データを記述する際は、各scriptタグを別々にHTML内に配置します。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ブログ記事と動画</title>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "ブログ記事と動画",
"url": "https://example.com/article-with-video/"
// その他のWebPageプロパティ
}
</script>
</head>
<body>
<h1>素晴らしいブログ記事</h1>
<p>記事の導入部分</p>
<iframe width="640" height="360" src="https://www.youtube.com/embed/VIDEO_ID"
frameborder="0" allowfullscreen></iframe>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "YouTube動画のタイトル",
"description": "動画の説明文",
"uploadDate": "2024-07-26T10:00:00+09:00",
"duration": "PT5M30S",
"thumbnailUrl": "https://i.ytimg.com/vi/VIDEO_ID/maxresdefault.jpg",
"contentUrl": "https://www.youtube.com/embed/VIDEO_ID",
"embedUrl": "https://www.youtube.com/embed/VIDEO_ID",
"publisher": {
"@type": "Organization",
"name": "Webエンジニアのブログ",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/images/logo.png"
}
}
}
</script>
<p>記事の続き</p>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "素晴らしいブログ記事のタイトル",
"image": "https://example.com/images/article-main-image.jpg",
"author": {
"@type": "Person",
"name": "著者名”
},
"datePublished": "2024-07-26",
"dateModified": "2024-07-26",
"publisher": {
"@type": "Organization",
"name": "Webエンジニアのブログ",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/images/logo.png"
}
},
"description": "ブログ記事全体の簡単な説明文です。"
}
</script>
</body>
</html>
1つのページに複数の動画を掲載する場合も、それぞれの構造化データを記述していくことができます。
構造化データが正しく認識されているかを確認する
構造化データを記述した場合は、必ずGoogleのリッチリザルトテストツールを使用して、すべての構造化データが正しく認識され、エラーがないかを確認してください。
リッチリザルト テスト
https://search.google.com/test/rich-results
ページのURLを入力して「URLをテスト」のボタンを選択。テストしたURLに対して、有効なアイテムとして動画の構造化データが検出されます。

検出された動画の構造化データを選択して、詳細から検出されたアイテムを開くと、設定した構造化データが正しく認識されているのが確認できます。

この作業を行うことで、Webページに埋め込んでいる動画の構造化データが正しく認識されていることが確認でき、検索エンジンがWebページの情報を最大限に活用できるようになります。
私はWebページも構造化データを設定しています。
ページごとの構造化データの設定については、以下の記事でご紹介していますのでぜひ参考にしてください。
WordPressでのページごとの切り分けについても説明しています。
まとめ
ここでは、動画コンテンツのポテンシャルを最大限に引き出すための「構造化データ」について、その重要性から具体的な実装方法までを解説しました。
Webページにただ動画を設置するだけでは、その価値は検索エンジンやAIに十分に伝わりません。大切なのは、その動画が「何についての、どのような価値を持つコンテンツなのか」を、機械が理解できる言葉で伝えてあげることです。その最も強力な手段が「構造化データ」になります。
従来の検索から生成AIを活用と、検索や情報収集のあり方が大きく変わってきている今、構造化データの実装は必要不可欠と言えるでしょう。
この記事を参考に、ぜひ動画コンテンツの価値を多くのユーザーに届けていきましょう。