コンテンツにスキップ
LinkedInX

記事のフロントマター設計とlearning_time自動正規化:AIが量産する記事の品質管理の仕組み

はじめに

フロントマターとは、記事ファイルの先頭に書く設定情報のことです。記事のタイトル、公開日、タグ、読了予定時間などを定義します。AIが記事を生成するとき、この設定情報も同時に書きますが、記事の実際の長さと合わない値が入ることがあります。この記事では、learning_time(記事の読了予定時間)フィールドの自動正規化を導入した経緯と、その仕組みを説明します。

問題:learning_timeが記事の実態と合わなかった

このサイトでは、ドキュメント記事に learning_time というフィールドを設定しています。「この記事を読むのにおよそ何分かかるか」を示す情報で、読者がどのくらいの時間を確保すればよいかを判断するための目安です。

AIが記事を生成するとき、この値は設定してくれますが、実際の記事の文字数と一致しないことがありました。具体的には、記事の内容が増えてフロントマターの learning_time: 3分 が残ったままになるケースや、短い記事に learning_time: 15分 が設定されるケースが発生しました。

この状態では、読者が示された時間を目安に記事を読み始めると、実際の読了時間と大きくずれることがあります。

解決策:文字数に基づく自動正規化

この問題に対して、記事の文字数を計算し、適切な learning_time の値を自動で設定するスクリプトを導入しました。

仕組みは次のとおりです。

  1. 記事ファイルを読み込む
  2. 本文の文字数を計算する(フロントマター部分を除く)
  3. 日本語の読書速度(おおよそ400〜500字/分)をもとに読了時間を計算する
  4. 計算した値を learning_time フィールドに書き込む

この処理を、node scripts/ensure-slugs.js などの既存スクリプトと同じタイミングで実行できるようにしました。

自動化で得られる一貫性

手動で learning_time を設定する方法では、記事を書くたびに文字数を数え、計算し、値を入力する必要があります。記事数が少ないうちは問題になりませんが、記事が増えると更新もれが起きやすくなります。記事を改稿して文字数が変わったとき、learning_time の更新を忘れることもあります。

自動正規化スクリプトを導入することで、記事の内容が変わっても learning_time は次回スクリプト実行時に自動的に正しい値に更新されます。設定ミスや更新もれが原因で、記事の長さと読了時間の表示がずれることがなくなりました。

「人が毎回手動で設定するより、自動化した方が一貫性が保てる」というのは、設定情報の管理全般に当てはまる考え方です。変動する値(文字数に依存する読了時間など)は自動化の対象として適しています。

フロントマターの設計における自動化の範囲

すべてのフロントマターフィールドを自動化すればよいわけではありません。タイトル・説明文・タグは記事の内容を理解して設定する必要があるため、人が確認すべきフィールドです。

一方、文字数・読了時間・スラッグ(URLパス)のように計算や変換で決まるフィールドは、自動化に適しています。「このフィールドの値は記事の別の要素から機械的に計算できるか」という基準で、自動化の対象を選ぶと設計しやすくなります。

まとめ

フロントマターはAIが記事を生成するときに同時に設定しますが、記事の実際の内容と合わない値が入ることがあります。learning_time のように文字数から計算できるフィールドは、自動正規化スクリプトで管理することで一貫性を保てます。設定情報の管理で「変動する値は自動化する」という原則を持つと、記事数が増えても品質を維持しやすくなります。