AIデジマ研究所

孤立URLとパーマリンク衝突を潰す|台帳の外で記事が暴れないようにする

2026-10-17 ・ 大規模修正

AIにサイトの修正を任せても、AIが見ている台帳の外にURLが存在していると、そのURLは誰からも直されません。順位は落ちていて、クリックは流れているのに、誰も気づかない状態です。

結論から書きます。AIにサイトを任せる前に、台帳と現実のURLがずれていないかを機械で検査します。検査するのは次の2つです。

  1. 孤立URL:Search Console には記録があるのに、記事の台帳に無いURL
  2. パーマリンク衝突:同じURLで配信されるはずの記事が、サイトの中に2本以上あること

この2つが残っていると、AIの判断の基準そのものが崩れます。台帳を根拠に「どの記事から直すか」を決めても、台帳の外の記事はいつまでも直りません。同じURLで記事が2本あれば、どちらが配信されるかはプラグイン任せになり、修正を当てた記事が表に出ているとは限りません。

この記事は、散らかったサイトをAIで作り変えるマニュアルの「大規模修正」の作業です。構造を作り直す前に、台帳と現実をそろえます。


この作業で決まること

この作業が終わると、AIがサイトの修正を回す土台となる台帳が、現実と一致した状態になります。

この3つが揃うまでは、台帳を根拠にしたAIの修正は、サイトの一部にしか届きません。


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


AIに渡すもの

AIに書かせるのは、検査するプログラムと、検査の結果を読んで判断するルールです。

  1. 孤立URLの検査プログラム:Search Console の上位ページを読み、台帳に無いURLを拾う。拾ったURLはHTTPステータスを取り、404・リダイレクト先が台帳に無いもの・HTTP 200なのに台帳に無いもの、を原因別に分類する
  2. パーマリンク衝突の検査プログラム:全ステータス(publish・future・draft・pending・private)の記事を取得し、同じパーマリンクを持つ記事を束ねる。公開が2本以上絡む衝突は critical として分ける
  3. パーマリンクを持たずに公開されている記事の検査:パーマリンクが空のまま publish または future になっている記事を拾う。例外は「このIDは /archives/{id} で運用する理由がある」とソースに理由付きで明示したものだけ

3番は忘れがちです。「衝突を解消する」で片方のパーマリンクを外しただけでは、記事は公開状態のまま残り、/archives/{id} の形でひっそり配信され続けます。


手順

  1. 台帳と、Search Console のCSV(16か月分と28日分の2本)を同じディレクトリにそろえる
  2. 孤立URLの検査を実行する。出力はレポート1枚(原因別の件数と、URLごとのHTTPステータス・リダイレクト先)
  3. 原因別に対応を決める:
  1. パーマリンク衝突の検査を実行する。critical(公開2本以上)を先に処理する
  2. 衝突の解消は「1パーマリンク=1記事」に統合する。残す1本以外は、下書き化とパーマリンクの除去をセットで行う
  3. パーマリンクを持たずに公開されている記事を一覧し、下書き化するか、理由付きで例外リストに入れる
  4. 検査を日次パイプラインに組み込み、終了コードが0以外ならその日の自動修正を止める

変更は少ない件数で試します。孤立URLを一度に大量にリダイレクトすると、どのリダイレクトが原因で挙動が変わったか切り分けられなくなります。1日10件を上限にして、翌日に Search Console の表示回数の変化を見てから次を触ります。


完了条件


実際に起きた失敗

新規公開のキューが同じパーマリンクを5週連続で消費した

自分のサイトで、1本のまとめ記事が5週連続で新規公開レーンに乗り、同じパーマリンクを持つ記事が5本並ぶ状態になりました。原因は、新規公開のキューを作る側が、過去に同じパーマリンクで公開した記事があるかを確認していなかったことです。

同じパーマリンクを持つ記事が2本以上あると、どの記事がそのURLで配信されるかはプラグインの再解決のたびに入れ替わります。表示が日によって変わり、AIが修正を当てた記事が表に出ているとは限らなくなります。

対処として、新規公開の側に「同じパーマリンクで公開済みの記事があるなら新規を止める」ゲートを追加しました。ただしこのゲートは発生源を塞ぐだけで、過去の衝突や手動投稿で生まれた衝突は検出できません。発生源に依存しない検査として、全ステータス横断のパーマリンク衝突の検査を日次で回すようにしました。

パーマリンクを外しただけで下書き化を忘れ、監視外で3週間配信され続けた

衝突を解消したときに、残さない側の記事からパーマリンクを外しました。これで衝突はゼロになったのですが、記事そのものは公開状態のまま残っていました。パーマリンクを持たない記事は、WordPress の既定の /archives/{id} の形で配信されます。

このURLはパーマリンクを持たないので、パーマリンク衝突の検査の視野から消えます。結果として、残した正典と同じクエリに露出し、月4クリック・100表示・平均10.3位で3週間、監視外で配信され続けました。発覚は人手の監査でした。

直したのは、プログラムではなく手順です。「パーマリンクを外す」と「下書きに戻す」は必ずセットで行うことにし、片方だけで終わらないように、パーマリンクを持たずに公開されている記事を拾う検査を追加しました。片手落ちを機械で見張る側の問題として扱います。


よくある質問

Q. 孤立URLは全部リダイレクトすればいいですか?
A. いいえ。404のまま削除依頼を出すほうがよいケース(内容が古く寄せ先も無い、など)と、301で寄せるケースを分けます。原因別に分類してから、1件ずつ寄せ先を決めます。

Q. パーマリンク衝突の検査は、公開済みの記事だけでいいですか?
A. いいえ。下書き・予約・非公開・レビュー待ちを含めた全ステータスで検査します。下書きに同じパーマリンクが眠っていると、ステータスを公開に変えた瞬間に critical の衝突に変わります。

Q. 日次で検査が失敗したら、どこまで止めますか?
A. その日の自動修正(メタ・内部リンク・FAQ などの外科手術型の修正)を全部止めます。土台の台帳が現実とずれている状態で修正を当てても、どの記事に当てているかが曖昧になります。


関連記事

次の作業