meta タグ用にプレインテキストを出力した

  • diary
  • tech

HTML の meta タグには descriptionog:descriptionが用意されていて、これを埋めておくと OGP が展開された際にブログの冒頭部分などを表示させることが出来る。このブログの今までの実装だと HTML しか渡していないため description を埋めることが出来なかったが、 unified を使ってプラインテキストも返すようにした。
このブログは markdown で書いた原文を unified というライブラリで HTML に変換してこのブログは表示している。unified には remark, rehype, retext の3つの処理系統があり組み合わせることで、markdown と HTML と plainText を相互変換できる。retext は主に plainText の処理系で自然言語の文法チェックなどの機能を追加するために用意されている。残念ながら日本語の文法チェックはわかち書きするだけでも大変なので、retext のプラグインにはない。今回はプレインテキストが欲しいだけなので、何もプラグインを通さずにテキスト出力するために利用させてもらった。

retextjs/retext: natural language processor powered by plugins part of the @unifiedjs collective

export const markdownToText = async (markdown: string) => {
  const result = await unified()
    .use(remarkParse)
    .use(retextStringify)
    .process(markdown);
  return result.toString();
};