seo-freshness について
seo-freshness は、ページの日付とコンテンツの鮮度を確認する SEO 監査スキルです。表示日付、Article 構造化データ、トピックの変化速度を評価し、鮮度を確実なランキング向上とは扱わず、限定的な日付修正を提案または適用します。
主な機能
- 01表示日付とスキーマ日付の確認
- 02日付の不一致と解析問題の検出
- 03トピックの変化速度に応じた陳腐化評価
- 04スキーマへの dateModified 追加
- 05ページとヘッダーによる日付検証
活用シーン
- 01表示日付とスキーマ日付が食い違う記事の監査
- 02変化の速い分野で古くなったページの特定
- 03Article スキーマへの検証可能な更新日の追加
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ hainrixz/ claude-seo-ai --skill seo-freshnessインストール後、Claude Code で/seo-freshnessを入力して読み込まれたか確認します。
詳細
seo-freshness(M13)
鮮度は、従来のランキングシステム(Query Deserves Freshness)とAI回答エンジンの両方が重視する新しさのシグナルです。特にPerplexityは、引用元として最近更新された情報源を優先します。日付フィールドはArticleスキーマに直接関係します(M5と照合してください)。日付のルールについては、references/schema-tier1.mdを参照してください。
入力
ディスパッチエンベロープで指定されたPageSnapshotを使用します。<run_dir>/pages/<slug>.jsonのparsed(jsonld[]、article:published_time/modified_timeのmetas[])と、headers.last-modifiedを読み込みます。逐語的な根拠はpages/<slug>.htmlをGrepして確認します。サイトのアーティファクトは<run_dir>/site/{robots.json,sitemaps.json,discovery.json}にあります。audit.mjsがすでに出力した決定論的な指摘は<run_dir>/findings.deterministic.jsonに記載されています。これらのIDを再出力せず、モデル判定による指摘のみを追加してください。スナップショットなしでURL/パスを指定して直接呼び出された場合は、まずnode "${CLAUDE_PLUGIN_ROOT}/scripts/snapshot.mjs" <target> --out "${CLAUDE_PLUGIN_DATA}/runs"を実行し、出力されたスナップショットのパスを使用してください。
監査
PageSnapshot(render.usedがnoneでない場合はparsed_rendered、それ以外はparsed)を使用して、次の監査を行います。
- 表示される日付:「Published」/「Updated on」/「Last reviewed」などのパターンと、その値(ISO形式または人が読み取れる形式)をページ上で検出します。
- スキーマの日付:JSON-LDの
Article/BlogPosting/NewsArticleからdatePublished/dateModifiedを解析します。 - 一致確認:表示される日付とスキーマの日付が一致している必要があります。不一致、および対応する表示日付のないスキーマ日付にフラグを立てます(AIエンジンは非表示の日付のみを信頼しません)。
- 古さ:コンテンツの経過期間(最も新しい信頼性の高い日付)を、トピックの変化の速さと照らして推定します。変化の速いトピック(価格、ツール、「2026年のおすすめX」、規制)は、常緑の参考コンテンツよりも早く古くなります。単に古いだけでなく、陳腐化している場合に報告します。
- パターンの健全性:実質的な内容変更がないのに「updated on」と表示するのは鮮度に関するアンチパターンです。指摘はしますが、決して推奨してはいけません。
修正
- AUTO(
fixable: auto):既存のArticleスキーマに欠けているdateModifiedを、fix用の追加差分として挿入します。決して誤った日付に遡って設定しないでください。検証可能な最終変更日(例:Last-Modifiedヘッダー/リポジトリのmtime/今日)を使用するか、ユーザーが確認する明確なTODOプレースホルダーを残してください。 - PROPOSED(
fixable: proposed):表示日付とスキーマの日付の不一致について、修正値を下書きとして提示し、項目ごとの承認を求めます。ユーザーによる確認が必要な日付を自動で書き換えてはいけません。 - ADVISORY(
fixable: advisory):変化の速いトピックを扱うページが陳腐化している場合、実質的なコンテンツ更新を推奨します。このツールが編集コンテンツを書き込むことはありません。日付を決して捏造せず、実際には行われていない更新を作り上げないでください。
検証
dom_assert:表示日付の文字列が存在し、解析可能で、スキーマの値と一致します。schema_validator:datePublished/dateModifiedが存在し、有効なISO 8601形式で、dateModified >= datePublishedを満たします。header_check:HTTPのLast-Modifiedヘッダーが、申告された変更日を裏付けます。- ライブティア(ヘッダー取得/バリデーター)が利用できない場合、ステータスは
passではなく、必ずneeds_apiになります。
検出結果
検出結果は schema/finding.schema.json に準拠します。軸は both、確信度はすべて directional です。重大度ポリシー:5 は、サイト/テンプレートの範囲で適格性を損なう壊滅的な事実に限ります。4 は重大、3 は中程度、2 は軽微、1 は表面的、0 は情報提供のみです。また、スコアを上限設定できるのは、有効なカテゴリーにおける established の重大度 5 の fail のみです(references/scoring-model.md)。鮮度によって上限が設定されることはありません。
M13.datemodified.missing—datePublishedはあるもののdateModifiedがない記事スキーマ(fail、重大度 3、fixable: auto)。M13.dates.visible_schema_mismatch— 表示上の「Updated May 2025」と、スキーマのdateModified: 2023-01-10が一致しないケース(warn、重大度 3、fixable: proposed)。M13.content.stale_volatile— 変化の速いトピックを扱う「best X 2024」ページが 2 年間更新されていないケース(warn、重大度 2、fixable: advisory)。M13.schema.date_unparseable— 日付フィールドは存在するものの ISO 8601 として解析できないケース、またはdateModifiedの値が複数あるページ(最新の値が採用され、競合が報告されます)(warn、重大度 2、fixable: proposed)。不一致ではなく、こちらを出力します。読み取れない日付は解析上の不足であり、日付が食い違っている証拠ではありません。 各検出結果では、evidence.observedにページからの引用(日時文字列とセレクター)を記載します。verification.reproduceは実行可能なアサーションです(例:node "${CLAUDE_PLUGIN_ROOT}/scripts/check-freshness.mjs" --snapshot <pages/<slug>.json> [--lang en|es|auto](または--url <u>))。expected_impactは区分と確信度タグを付け、公開されている数値を記載する場合は、引用とともにrationaleのみに含めます。
誠実性
- 鮮度は文脈に応じたシグナルであり、普遍的なランキング向上要因ではありません。エバーグリーンコンテンツを更新してもランキングが上がることはほとんどなく、実際のコンテンツ変更を伴わない
dateModifiedの更新は検出される可能性があり、長期的な価値もありません。ここでの確信度は方向性を示すものであり、establishedにはなりません。日付の編集をランキング向上が保証されるかのように示したり、最近更新されたように見せるために日付を遡らせたりしてはいけません。 - 日付の解析は言語に依存します。スペイン語の月名と
article:published_time/article:modified_timeは読み取られますが、認識されない形式の場合は、不一致を捏造せずM13.schema.date_unparseableを出力します。