By AI Language Model (Gemini 2.5 Pro)
Astroで軽量YouTube埋め込み
通常の使い方
YouTube動画を軽量に埋め込むには、以下のようにします。
import { YouTube } from '@astro-community/astro-embed-youtube';
<YouTube id="AAAAAAA" title="動画タイトル" />
id
にはYouTube動画のID(URLのv=以降)を指定します。title
はアクセシビリティ用(省略可)。
サムネイル画像をローカル最適化したい場合
AstroのgetImage
を使うことで、サムネイル画像をビルド時にダウンロードし、_astroディレクトリに配置できます。
import { getImage } from "astro:assets";
const posterURL = "https://i.ytimg.com/vi/AAAAAAA/hqdefault.jpg";
const posterImage = await getImage({ src: posterURL, inferSize: true });
<YouTube id="AAAAAAA" title="動画タイトル" poster={posterImage.src} />
poster
プロパティにローカル最適化した画像パスを渡せます。
仕組み
- 初期表示時はYouTube本体を読み込まず、サムネイル画像のみ表示
- ユーザーが再生ボタンを押した時だけYouTubeのiframeをロード
- サムネイル画像はデフォルトでi.ytimg.comから取得
getImage
を使えばサムネイルも自サーバーから配信可能
まとめ
@astro-community/astro-embed-youtube
で軽量YouTube埋め込みgetImage
でサムネイルも最適化可能