Misskeyの埋め込みをHugoで利用する
Table of Contents
Misskeyのv2024.9.0リリースから待望の埋め込み機能が使えるようになっていたので、HugoのShortcodeから利用できるようにしてみる
概要

ウェブサイトへの埋め込み | Misskey Hub
Misskeyで新しく追加されたウェブサイトへのノート埋め込み機能を、Hugoで利用するための方法を考える。
埋め込みのやり方は以下のコードスニペットを挿入するだけ。
ここで、プレースホルダに入れる値はそれぞれ以下の通り。
- HOST: Misskeyのホスト名。自分の場合は
misskey.4nm1tsu.com
- NOTE_ID: 該当のノートのID
- RANDOM: embed.jsで利用するための、同一ページ内で一意なランダム文字列。
misskeyのwebクライアントから特定のノートを指定することで上記埋め込みコードを生成することもできるが、 どちらかというと事前にshortcodeを作成しておいて、
みたいな感じで利用したい。
UUIDを自動生成することも考えたが、
- seed値として記事の内容をもとに生成→そもそも同一ページ内のUUIDが一致してしまう
- seed値として時刻をもとに生成→記事のビルド毎に違うUUIDが生成されてしまう(コンテンツに変更を加えていないのにUUIDが変わるのは気持ち悪い)
上記の理由から、以下のキーマップを設定して、UUIDは都度挿入することにした。
参考:(neo)vimでUUIDを生成・挿入するkeymap
記事の内容+カウンタ変数を使ってUUIDを自動生成する実装も考えたが、面倒臭くてやめた。
ノートの埋め込み
コード
layouts/shortcodes/misskey.html
assets/sass/misskey.scss
(おまけ)タイムラインの埋め込み
タイムラインも同様にして埋め込めるらしいので、Aboutページに以下を入れてみることにした。
Misskey Hubでの説明にある通り、user_idは@から始まるユーザ名とは違うので、「コントロールパネル」→「ユーザー」のRawデータなどから持ってくると良いと思う。
記事中で使うことはないと思うので、こちらに関してはshortcodeは作らない。
コード
index.html
assets/sass/index.scss
おわりに
一度作ってしまえば、あとはmisskeyからnote_idだけコピペすればスタイルは適用されるので、 Hugoでノート埋め込み機能を利用する場合はShortcodeを使ったほうが絶対楽だと思う。
参考記事

Insert UUIDs in Vim / Neovim – Grailbox

Creating a unique id for repeated custom shortcode
Read other posts