💎
Obsidian Publish で作った公開ノートにユニークな permalink を埋め込むテンプレート
問題
Obsidian Publish を使って公開ノート を作っているのですが、デフォルトだとページタイトルがURLになってしまうため、日本語タイトルのURLが長い&タイトルを変更するたびにURLが変わってしまうという問題があります。
permalinkプロパティを使えば Obsidian Publish のURLを固定できますが、これを毎回手動で設定するのも大変です。
そこで、
- 新規ノート作成時にUUIDを生成
- 上位何bitかをhex形式でpermalinkとして設定
- Templater プラグインに登録して公開記事に対して実行
という方法で解決したので紹介します。
インストール
- Templater コミュニティプラグインを Obsidian にインストール
- 「新規ノートテンプレート」を作成
- 中身を以下のように記述。
---
permalink: <%*
const hex = crypto.randomUUID().replace(/-/g, "");
let num = BigInt('0x' + hex);
let fullHex = num.toString(16);
const shortHex = fullHex.slice(0, 14);
tR += shortHex;
%>
---
使い方
- 「新規ノートテンプレート」を作成したページに対して実行する(コマンドパレットから
TEmplater: Open insert template modalまたはAlt-E)とUUIDを元にしたユニークIDが permalink に設定されます。(例:126a58f97de14a) - これでpublish時のURLは固定した状態でページタイトルを自由に変更できるようになります。 (https://publish.obsidian.md/ongaeshi/126a58f97de14a)
考察
UUID を何bitまで含めて URL を生成しているかは各サイトによって違っていて興味深かったです。
- https://note.com 12文字(48bit)
- https://zenn.dev 14文字(56bit)
- https://qiita.com 20文字(80bit)
URLは短い方が基本的によい、個人用途なら80bitは不要だと判断して、LLMと相談しながら14文字に決めました。(それぞれの文字数の衝突確率計算してもらったりするときは本当に便利。)
Discussion