YouTubeやXの投稿をURLから埋め込めるようになりました(埋め込みブロック)


Ver. 3.2.36から、ブロックエディターに埋め込みブロックが加わり、YouTubeの動画やXの投稿をURLを貼るだけで本文に入れられるようになりました。

埋め込みコードをサービスの画面で探してコピーする手間はありません。動画のページや投稿のURLをそのまま貼ると、a-blog cmsがサービスから埋め込み用のHTMLを取ってきて、ブロックの中に動画や投稿を表示します。埋め込みに対応していないページのURLなら、タイトルと画像の付いたリンクカードになります。

次の画像は、YouTubeの動画を埋め込み、キャプションを付けて公開側で表示したところです。

公開側のページに、a-blog cms 操作ビデオのYouTube動画が表示され、下にキャプションが付いている
完成形

YouTubeの動画を埋め込む

  1. エントリー編集画面で、本文の空の行にカーソルを置き、行の左に出る「+」を押します。メニューの「挿入」にある「埋め込み」を選ぶと、URLの入力欄が付いたブロックが入ります。本文で「/embed」や「/youtube」と入力して、出てきた「埋め込み」を選んでも同じです。

「埋め込み」の見出しの下に、URLの入力欄と「埋め込む」ボタンがある
追加した直後の埋め込みブロック
  1. 入力欄に動画のページのURLを貼り、「埋め込む」を押します。今回はhttps://www.youtube.com/watch?v=L61p2uyiMSoを貼りました。数秒で、ブロックの中に動画のプレビューが出ます。

ブロックの中にYouTubeの動画のプレビューが表示され、右上に「URLを編集」ボタンがある
動画のプレビュー
  1. ブロックを選ぶと、上にツールバーが出ます。左から、キャプション、配置、通常のリンクに戻すボタン、表示サイズの順に並んでいます。

ツールバーに、キャプション、配置、リンクを外すアイコン、「1/1 (100%)」の表示サイズが並んでいる
埋め込みブロックのツールバー
  1. キャプションのボタンを押し、文字を入れて「適用」を押すと、動画の下にキャプションが付きます。表示サイズは1/1 (100%)から1/4 (25%)までの6段階で、今回は3/4 (75%)にしました。

動画の幅が狭くなり、下に「a-blog cms の操作ビデオ(公式 YouTube チャンネル)」のキャプションが付いている
キャプションと表示サイズを設定したところ
  1. エントリーを保存し、公開側のページで動画が出ることを確かめます。

公開側では、YouTubeの<iframe>は幅いっぱいに広がり、高さは動画の縦横比に合わせて決まります。YouTubeが返す埋め込みコードは幅と高さが固定ですが、a-blog cmsがwidthとheightを外し、aspect-ratioの指定に置き換えて出力しています。

URLを差し替えたいときは、ブロックの右上の「URLを編集」を押します。

Xの投稿を埋め込む

手順は動画と同じで、投稿のURLを貼ります。今回は@ablogcmsの投稿https://x.com/ablogcms/status/1963429310376939950を貼りました。編集画面のブロックの中にも、公開側にも、Xのページで見るのと同じ形で投稿が表示されました。

公開側のページに、@ablogcmsの新バージョンリリースの投稿が画像付きで表示されている
公開側に表示したXの投稿

Xの投稿は、<iframe>ではなく、Xが配信するJavaScriptで表示する形式です。表示されるまでに数秒かかるので、検証では12秒待ってから撮影しました。

埋め込みに対応していないページはリンクカードになる

ブログ記事のように、埋め込み用のHTMLを返さないページのURLを貼ると、ページのタイトル、画像、説明文を使ったリンクカードになります。次の画像は、developer.a-blogcms.jpの記事のURLを貼ったものです。

公開側のページに、ブロックエディターの記事のサムネイル画像、タイトル、サイト名、説明文が並んだカードが表示されている
公開側のリンクカード

カードのタイトルはリンクになっていて、最初は新しいタブで開きます。同じタブで開きたいときは、ブロックを選んでツールバーの「新しいタブで開く」を切り替えます。このボタンは、リンクカードになったブロックにだけ出ます。

カードの見た目は、テーマのCSSで決まります。検証に使ったblogテーマでは、上の画像のように背景色の付いたカードになりました。独自のテーマを使っているサイトでは、.embed-block-cardなどのクラスにCSSを用意します。

埋め込めなかったとき

存在しないドメインのURLを貼ったときのように、埋め込み用のHTMLもタイトルや画像も取れなかったときは、ブロックに「このURLは埋め込めませんでした。」と出ます。

「このURLは埋め込めませんでした。」の下に、貼ったURLと「再試行」「リンクに変換」「URLを変更」のボタンが並んでいる
取得できなかったときの表示

相手のサイトが一時的に応答しなかっただけなら「再試行」、URLを間違えたなら「URLを変更」を押します。それでも取れないページは、「リンクに変換」で、URLをリンクにした普通の段落に戻せます。

貼れるサービスと注意点

埋め込み用のHTMLは、URLを入れたときに一度だけ取りにいき、ブロックに保存します。公開側のページを開くたびにサービスへ問い合わせることはありません。

取ってきたHTMLは、そのまま出力されるわけではありません。HTMLブロックと同じく、コンフィグのhtml_purifier_iframe_allowed_hostsで許可したホストの<iframe>だけが残ります。Xのように<script>で表示するサービスは、html_purifier_script_allowed_hostsで許可したものだけです。検証では、次のサービスのURLを貼ると、編集画面と公開側の両方で埋め込みになりました。

形式

サービス

<iframe>

YouTube、Vimeo、SoundCloud

<script>

X、Bluesky

表は2026-10-09に確認した結果です。対応状況や返される埋め込みの形式は、各サービス側の仕様変更により変わることがあります。

許可していないホストのHTMLは、取ってきた時点で取り除かれ、そのブロックはリンクカードになります。公開側のページを出力するときも、同じ許可ホストでもう一度確かめます。あとからホストを許可から外すと、すでに埋め込んだブロックもリンクカードに変わります。

使いたいサービスがリンクカードになってしまうときは、private/config.system.yamlのextends_html_purifier_iframe_allowed_hosts(<script>の形式ならextends_html_purifier_script_allowed_hosts)にホストを足します。書き方はHTMLPurifier による HTML サニタイズにあります。

ホストを足しても、すでにリンクカードになったブロックは埋め込みに戻りません。取ってきた時点で埋め込み用のHTMLを取り除いて保存しているためで、ブロックの「URLを編集」からURLを入れ直します。ただし、取ってきた結果は同じURLごとにサーバーへキャッシュされ、既定では1日残ります。入れ直してもリンクカードのままなら、管理画面のダッシュボードにあるキャッシュ削除で「カスタムフィールド キャッシュ」を消してから入れ直します。今回の検証では、ホストを足す操作も、入れ直す操作も試していません。

編集画面のプレビューで動くJavaScriptは、公開側よりさらに絞られています(コンフィグのblock_editor_embed_preview_script_allowed_hosts)。この一覧にないサービスは、プレビューの代わりに「この埋め込みはエディター上でプレビューできません。公開側の表示で確認してください。」と出ます。その場合は、保存してから公開側のページで表示を確かめてください。

HTMLブロックとの使い分け

同じVer. 3.2.36で入ったHTMLブロックでも、埋め込みコードを貼れば動画や地図を出せます。URLだけで済むサービスなら、埋め込みブロックのほうが手間がかかりません。あとから直す人もURLを差し替えるだけで済みます。

HTMLブロックを使うのは、Googleマップのように、URLではなく埋め込みコードをコピーして使うサービスです。埋め込みコードに付いている幅や高さの指定を、そのまま使いたいときもHTMLブロックにします。

参考

検証環境

Ver. 3.2.36で、2026-10-09に確認しました。管理画面の表示は、お使いのバージョンによって異なる場合があります。

同じタグ付けがされている記事