全記事のSEO健康診断をAIで回す|数えられる問題だけを機械で見る手順

5 min

診断の最初に、全記事に共通する「数えられる問題」を一度で洗い出します。目で見て回ると、記事が多いほど見落としが増えます。

結論から書きます。健康診断はAIに文章を書かせず、プログラムで数えられる項目だけを機械でチェックします。メタディスクリプションの長さ、SEOタイトルの重複、本文の文字数、画像のalt、内部リンクの404、年号の更新漏れ、といった「ある/ない」「長い/短い」で判定できることです。要約だけをローカルの小さなモデルに書かせます。判定の中身は固定なので、同じ基準で毎回同じ結果が出ます。

この記事は、散らかったサイトをAIで作り変えるマニュアルの「診断」の作業の1つです。大規模・中規模・小規模の判定の前段で、小規模の候補を機械で洗い出す位置にあります。


この作業で決まること

この作業が終わると、全記事のうち、機械で検出できる問題がある記事の一覧が出ます。各記事に「どの項目で引っかかったか」が付きます。

機械で検出するのは次のような項目です。

  • メタディスクリプション:未設定、短すぎる(80字未満)、長すぎる(160字超)、同じ文章を複数記事で使い回している
  • SEOタイトル:未設定、長すぎる(60字超)、同じタイトルを複数記事で使い回している
  • 本文:短すぎる(500字未満)
  • 画像:alt属性が未設定
  • 内部リンク:リンク先が404
  • アフィリエイトリンク:rel=”sponsored nofollow” が付いていない
  • E-E-A-Tの観点で避けたい語句:「完全ガイド」「厳選」「いかがでしたか」など
  • 年号の更新漏れ:去年の西暦が本文・タイトル・メタに残っている
  • リダイレクトの転送先:リダイレクト先のURLが404になっている

AIが文章を書く作業はほぼありません。判定はすべてプログラムです。結果の要約だけをローカルの小さなモデル(たとえば qwen2.5:7b)に書かせます。判定を機械で済ませておくと、要約を書くAIが結果を変えてしまう余地がなく、同じ基準で見た結果が毎回残ります。

この診断で分からないこと:記事の質、独自性、カニバリ、構造の問題。それらは別の作業で見ます。健康診断は「数えて分かる異常」だけに絞ります。


前提:この記事の前に必要なもの

ローカルのAIが用意できない場合は、要約だけスキップして、データ表だけを出す動かし方もできます。


AIに渡すもの

健康診断の処理に渡すのは3つです。

  1. 全記事のライブデータ:記事のID、公開URL、タイトル、本文(HTMLのまま)、メタディスクリプション、SEOタイトル。REST API の context=edit でメタも含めて取得します
  2. 判定の基準値:メタディスクリプションの最短・最長、タイトルの最長、本文の最短
  3. 誤検知を外すためのホワイトリスト:年号チェックで、作例や実測データとして正当にその年号を書いている記事のID

3番目は後述します。これが無いと、同じ記事を毎回「要対応」と出し続けます。


手順

  1. 全記事を1回で取得する

REST API を 100件ずつページ送りで取り、途中で止めずに最後まで集めます。本番サイトへの負荷を下げるため、1回のリクエストでメタ・本文・URLをまとめて取得します。

  1. 記事ごとに判定する

メタディスクリプションと SEO タイトルは、長さと有無をそのまま測ります。本文は HTML タグを外し、空白を詰めてから文字数を数えます。判定は正規表現と文字数だけで、AI は使いません。

  1. サイト全体でまたぐ判定をする

同じメタディスクリプションや同じ SEO タイトルが複数の記事で使われていないかを、全記事の集計で見ます。1本ずつ見ている間は気づけない重複が、ここで出ます。

  1. 技術的な項目を別のスクリプトで見る

内部リンクの 404、画像の alt、アフィリエイトリンクの rel 属性、避けたい語句、年号の更新漏れ、リダイレクト先の生死は、別の監査スクリプトに分けておきます。健康診断と監査を1つのファイルにまとめると、どちらかを直すときにもう片方が壊れます。

  1. ホワイトリストを運用する

年号チェックで「2025年3月15日に撮った写真」のような作例や、実測した年のデータを引用している記事は、誤検知として記事IDをホワイトリストに登録します。登録の理由も1行書きます。

  1. 問題のない記事はレポートから外す

健康診断のレポートには、問題がある記事だけを載せます。全記事を毎回出力すると、何が変わったかが読めなくなります。

  1. ローカルのAIに要約を書かせる

問題の一覧を Ollama に渡し、「今すぐ対応すべき項目」「今月中でよい項目」に分けた箇条書きを書かせます。文章の生成はこの要約だけで、判定の中身は触らせません。

  1. 人がパソコンから離れている時間に回す

健康診断は全記事に当てる処理です。走らせている間はほかの作業に手を回しにくいので、席を外す時間に実行して、戻ったらレポートだけを読みます。


完了条件

  • ☐ 全記事に対して、数えられる項目の判定結果が1枚のレポートにまとまっている
  • ☐ 同じメタディスクリプション・同じ SEO タイトルの重複が、サイト全体で検出できている
  • ☐ 問題のない記事はレポートに出ていない
  • ☐ 誤検知として扱う記事IDがホワイトリストに登録され、理由が書かれている
  • ☐ 席を外している時間に自動で回り、戻るとレポートが読める

実際に起きた失敗

「空のメタディスクリプション」の件数の多くが、入力欄すら無いページだった

勤務先のサイトではないほうで、同じことが設計の判断を変えました。健康診断では、「メタディスクリプション未設定」のような件数の多い警告が最初に目に入ります。そのまま作業リストにすると、タグのアーカイブやページ送りのような、そもそもメタディスクリプションを入力する欄が無いページに時間を使うことになります。

そこで、健康診断ではメタの判定を記事(posts)に絞り、ページ(pages)のうち固定の案内ページ(お問い合わせや特定商取引法のページ)は、記事IDでスキップするようにしました。件数の警告は入口の情報として読み、大規模・中規模・小規模の判定で中身を開いてから作業リストにします。放置すると、重い問題の前に軽い作業が並び、サイトが直らないまま時間だけが過ぎます。

内部リンクのチェックが、生きているアーカイブURLを404と判定した

内部リンクの404チェックを、「サイト内の全記事のURL一覧に含まれていないリンクは404とみなす」という単純な照合で作っていました。すると、/category/ や /tag/ や /author/ といったアーカイブのURLが、記事の一覧には入っていないので全部404として報告されました。

アーカイブURLは実在するので、見つけたら実際にHTTPで叩いて200系が返ればスキップし、400系が返ったものだけを404として記録するように変えました。実測の結果は同じURLが何度も出てくるのでキャッシュしておきます。この修正を入れないと、レポートがほぼアーカイブURLの誤検知で埋まり、本当に直したい記事内の404が埋もれます。

年号の更新漏れチェックが、作例の年号を毎回拾い続けた

年号の更新漏れ(去年の西暦が残っていないか)を機械でチェックすると、「2025年3月15日に撮った写真の作例」や「収録期間:2024年7月〜2025年6月」のように、その年号を正しく書いている記事も「要対応」として出続けます。

直す対象ではないのに毎回出るので、該当する記事IDをホワイトリストに登録しました。登録には理由を1行書きます(例:「作例として2025年を使用」)。理由を書かないと、1年後に見返したときに、なぜ外したか分からなくなります。誤検知を機械で止める仕組みは、ルールの文章ではなく、コードの中のリストで持たせます。

要約をクラウドの大きなモデルに任せる設計をやめた

最初は、問題一覧の要約もクラウドの大きなモデルを呼ぶ設計で書きかけていました。判定はプログラムが済ませているので、要約がどのモデルで書かれても、どの記事に何の問題があるかは変わりません。要約を書くためだけに外部のAPIを呼び続けると、判定の中身を変えない処理に通信とコストがかかります。

そこで、Ollama を使ったローカルの小さなモデルに要約を書かせる設計にしました(スクリプトのコメントにも「Claude を呼ばず Ollama が問題を日本語で要約」と明記しています)。クラウドのAIは、本文のリライトや判断が要る作業に残します。コストの使い分けの考え方はモデルの使い分けに書いています。


よくある質問

Q. 健康診断の結果を、そのまま自動でサイトに反映させてよいですか?
A. 項目によります。メタディスクリプションの新規追加、画像のalt、内部リンクの差し替えは、外科手術型のリライトの範囲で自動化できます。SEOタイトルの書き換え、本文の加筆、重複メタの統合は、人が結果を見てから進めます。

Q. 判定の基準値(80字〜160字など)はどう決めますか?
A. サイトの方針で決めます。この記事の例は自分のサイトと勤務先のサイトで共通に使っている値で、短すぎると検索結果に説明文が出ない、長すぎると途中で切られる、という理由で決めています。公式の仕様で固定された数字ではないので、必要なら方針を書いた判断の基準のファイルに記載します。

Q. 健康診断はどのくらいの頻度で回しますか?
A. 全記事を対象にする重い処理なので、毎日は回しません。構造を直したあとや、記事を一度に多く触ったあとに走らせると、変化がレポートに出ます。差分だけを見るなら、毎日の自動処理の中で、前回のレポートと比べて増えた問題だけを拾う作り方もできます。


関連記事

次の作業

ヒガシーサー

ヒガシーサー

沖縄で個人事業を複数運営。AIツール・SaaS・ガジェットを自分の運用パイプラインに実際に組み込み、動いたこと・失敗したことを一次体験のまま記録しています。

カテゴリー:
関連記事