ネットを見ていたら、次のような発言を見た。

Haruhiko Okumura @h_okumura 今回のIPAのサイトリニューアルでわかったように、URLは脆弱なので、djb先生の唱えるDocument IDを使おう https://cr.yp.to/bib/documentid.html UUIDでも何でもユニークっぽい文字列をページごとに書いておいてそれをURL代わりに使えば、ググればページが見つけられる

DJB先生のページの他に、okumura先生の解説記事

これは良いアイディアだと思ったので、 このBlogや、その他のページでも採用しようと思った。

jekyllでは、各ドキュメントのヘッダにメタデータを書けるので、そこにDocument IDを入れようと思う。 これは記事生成スクリプトに細工をして入れる。

post:
	test -n "$(title)" || read -p "Enter a title for your post: " title; \
		export title_slug=`echo $${title:-Untitled} | sed -E -e 's/[^[:alnum:]]/-/g' -e 's/^-+|-+$$//g' | tr -s '-' | tr A-Z a-z`; \
		export post_path=_posts/`date +%Y-%m-%d`-$$title_slug.markdown; \
		export docid=`head /dev/urandom | md5sum | cut -d ' ' -f 1`; \
		test -f $$post_path && { echo "Error: $$post_path already exists" ; exit 1; }; \
		echo "Creating $$post_path"; \
		echo "---"                                      >> $$post_path; \
		echo "layout: post"                             >> $$post_path; \
		echo "title: \"$$title\""                       >> $$post_path; \
		echo "date: `date +"%Y-%m-%d %H:%M:%S %z"`"     >> $$post_path; \
		echo "docid: $$docid"                           >> $$post_path; \
		echo "categories: "                             >> $$post_path; \
		echo "---"                                      >> $$post_path; \
		mkdir -p assets/`date +%Y-%m-%d`-$$title_slug/.original; \
		$(EDITOR) $$post_path

これを記事中に表示するのは、テンプレートを弄って次のSectionをページ下に入れた。


  <section class="metadata">
    Date of this document: {{ page.date }} <br/>
    Permanent ID of this document: {{ page.docid }}
  </section>

あとは、ホームページのプロジェクト一覧とか、ドキュメントサイトとかにも入れたい。

早速↓に表示されているはず。