hexo-oembedを公開しました
HexoにYouTubeなどのサイトを記事に埋め込むためのプラグインを作成して、npmに公開しました。この記事はそのプラグインの紹介記事です。
プラグイン制作記事は以下に書きました。興味があればそちらも読んで頂けると嬉しいです。
hexo-oembedについて
hexo-oembedはブログ構築ツールHexoのプラグインで、投稿にYouTubeやSlideShareやSpeaker Deckやインスタグラム等さまざまなメディアをパーマリンクを指定するだけで埋め込むためのタグを提供します。埋め込みのための業界標準としてoEmbedというものがありますが、この仕様を利用しているためhexo-oembed
という名前になっています。特徴は以下です。
- oEmbed Discoveryのサポート
- YouTube, Vimeo, Twitter, SlideShare, Speaker Deck, CodePen, TED, pixiv等、oEmbed Discoveryに対応している様々なメディアを埋め込むことができます
- パーマリンクがoEmbed Discoveryに対応しているかどうかは、oEmbed Testerでしらべることができます
- oEmbedのエンドポイントを設定ファイルで指定可能
- oEmbed Discoveryに対応していないサイトでも、oEmbedに対応していればoEmbedのエンドポイントを個別に設定ファイル(_config.yml)に指定することで埋め込めます
- Instagram, Gyazo, FlickrなどはoEmbedに対応しています
- エンドポイントはoEmbedのサイトから入手可能です
インストール
npmコマンドでインストールしてください。
1 |
|
使い方
埋め込みたいページのパーマリンクを指定するだけです。[maxwidth]と[maxheight]は埋め込みのオブジェクトに期待する最大幅と最大高を数値(ピクセル)で指定します。サイトが対応していればこの値を超えない埋め込みコンテンツを返してくれます。
1 |
|
デモ
貼ろうと思えば楽しくていくらでも貼れる感じですが重くなるので3つにしておきます。
もっと見たい方は デモページをご覧ください。
YouTube
ちょうどこれを書いているときに3億再生いきました。マトリョシカの頃から応援してたけどまさかここまで人気になるとは・・・
1 |
|
1 |
|
Speaker Deck
1 |
|
設定
Hexoの設定ファイル(_config.yml)に以下の設定が可能です。
className
埋め込まれたコンテンツに付与されるCSSクラスのベース名を指定できます。
(デフォルト: oembed
)
endpoints
oEmbedプロバイダのエンドポイントを指定できます。
(デフォルト: なし)
oEmbedプロバイダは以下から取得できます。
oEmbedプロバイダのエンドポイントとしてmatch
とurl
が定義できます。パーマリンクのホスト名がmatch
を含んでいた場合、そのエンドポイントが選択され,url
のアドレスでプロバイダに問い合わせます。
もしエンドポイントの定義にマッチしなかった場合は oEmbed Discoveryを利用してエンドポイントを探します。
例えばYouTubeはoEmbed Discoveryに対応しているのでendpoints
にYouTubeの定義は必要ありません。
embedlyKey
もし、embedlyKey
を指定すればEmbed.lyにフォールバックします。
Embed.lyはoEmbedに対応していないサイトのoEmbed情報の提供も行っています。利用したい場合はサインアップして、APIキーの設定してください。
設定サンプル
1 |
|
リポジトリ
以下のリポジトリで開発しています。バグ報告、ご要望はIssuesへどうぞ。プルリクエストも歓迎です。