記事の説明文の抽出

記事の説明文を抽出する処理について。

記事の説明文というのは、ここではSNSに貼り付けたときにカードに表示されたりする文字列のことを指している。具体的には、meta要素のdescriptionやog:descriptionに使う文字列。この記事であれば、一文目の「記事の説明文を抽出する処理について。」という文字列をこの記事の説明文として利用することにしている。

このウェブサイトの記事原稿は、すべてfront-matter付きのMarkdown形式のファイル。これがremarkでHTMLに変換されている。その処理過程で、remarkのプラグイン機構を利用し、先頭の要素に含まれるテキストを結合させ、「。」が含まれていればそれより前の部分を説明文とするようにしている。念のため、最大で140文字に制限している。

これはかなり雑な実装で、日本語で丁寧に書かれていないと抽出できないし、記事の先頭に画像が置かれていたりしても勿論抽出できない。ただ、説明文の抽出ぐらいある程度失敗しても良いだろうと思っているし、そのように書き出すように統一したいという気持ちもあるので、それなりに上手くいっている。

ソースコードで言うとこの辺り。

https://github.com/r7kamura/r7n/blob/3070f339755d44b01ad214a6c4b15321a8760b4f/lib/remarkPlugins.ts#L14-L29