AIにブログを任せるときの落とし穴

GSCで重複エラーの通知

Antigravityでブログ運営を効率化していたら、思わぬところで躓きました。

Google Search Consoleを見ていたら、ある記事が「重複しています」と表示されている。正規ページとして選択されていないため、インデックス登録されないとのこと。

つい先日まで何の問題もなかったのに? 順調に記事を増やしていたつもりだったのに、何が起きているのか。

GSC Duplicate Error

何が問題なのか

GSCの指摘をみると、同じ記事が2つのURLで存在していると判定されていました。

具体的には、こういうことです。

  • https://example.com/articles/my-article(拡張子なし)
  • https://example.com/articles/my-article.html(拡張子あり)

GitHub Pagesは両方のURLでアクセスできてしまうので、Googleは別々のページだと認識します。

そして、どちらが正規ページかを判断するために、canonical URLやsitemap.xmlを参照します。ここに不整合があると、重複判定されてしまう。

canonical URLとsitemapの役割

少しSEOの話になりますが、Googleがページを正しく認識するために重要な要素が2つあります。

canonical URLは、「このページの正式なURLはこれです」とGoogleに伝えるためのものです。HTMLの<head>内に記述します。

同じ内容が複数のURLでアクセスできる場合、どれを検索結果に表示すべきかGoogleは迷います。canonical URLを指定することで、「こっちが本物」と明示できます。

sitemap.xmlは、サイト内のページ一覧をGoogleに伝えるファイルです。「このサイトにはこれらのページがあります」というリストを提供することで、クロールを効率化できます。

重要なのは、これらが一致していることです。canonical、sitemap、OGP、そして実際の内部リンク。すべてが同じURL形式を指していないと、Googleは混乱します。

調査してみたら

Claude Codeに「全体を確認して」と頼んでみました。

すると、サイト内で.htmlありとなしが混在していることが判明。

場所 URL形式
index.htmlのリンク 拡張子なし
canonical URL 拡張子あり
sitemap.xml 拡張子あり
OGP og:url 拡張子あり

canonical、sitemap、OGPは.htmlありで一致していました。しかし、index.htmlから記事へのリンクだけが.htmlなしになっていた。

Googleはindex.htmlのリンクをたどって記事ページに到達します。そのときのURLは/articles/my-article(拡張子なし)。でもcanonicalには/articles/my-article.html(拡張子あり)と書いてある。

「今アクセスしているURLと、canonicalで指定されているURLが違う」とGoogleは判断し、重複ページとして扱ってしまったのです。

なぜこの問題に気づかなかったか

答えは単純です。サイトは普通に動いていたから。

GitHub Pagesは拡張子があってもなくてもページを返してくれます。ユーザーから見れば、どちらのURLでアクセスしても同じページが表示される。

見た目では何も問題がない。だから気づかない。

SEO的な不整合は、実際にGoogle Search Consoleを確認するまでわからないものでした。

AI Investigation

原因は自分だった

思い返してみると、原因は自分にありました。

以前、Antigravityから「URLから.htmlを消したい」と依頼したことがあります。

理由は単純で、クリーンなURLの方が見た目がいいから。/articles/my-article.htmlより/articles/my-articleの方がスッキリしている。SNSでシェアするときも、拡張子がない方がモダンな印象を受けます。

この判断自体は間違っていなかったと思います。実際、多くのモダンなWebサイトは拡張子なしのURLを採用しています。

問題は、依頼の仕方でした。

「リンクの.htmlを消して」と頼んだ。AIは依頼されたとおり、リンク部分だけを修正しました。canonical URLやsitemap.xmlまでは手をつけなかった。

AIは指示されたことを忠実にこなします。「ここだけ直して」と言えば、そこだけを直す。関連する他の箇所まで自動で修正してくれるわけではない。

部分的な修正依頼が、サイト全体の整合性を崩していたのです。

Partial Fix Puzzle

学んだこと

AIにブログ運営を任せるときは、「部分修正」より「全体の整合性」を意識する必要があります。

たとえば、URL形式を変えたいなら、「リンクの.htmlを消して」ではなく、「URL形式を拡張子なしに統一して」と依頼する。

そうすれば、AIはcanonical URL、sitemap.xml、OGP、構造化データなど、関連するすべての箇所を修正してくれます。

URL以外にも、同じようなミスが起きやすいケースがあります。

  • 日付形式の変更:記事内は「2026.01.24」、構造化データは「2026-01-24」。途中で形式を変えると混在する
  • 画像パスの変更:相対パスと絶対パスが混在。ディレクトリ構成を変えたときに一部だけ更新漏れ
  • タイトルの変更:記事タイトルを変えたのに、OGPやJSON-LDのタイトルが古いまま
  • ナビゲーションの更新:新しいページを追加したのに、他ページのナビゲーションに追加し忘れ

共通するのは、「一箇所を変えたら、関連する複数箇所も変える必要がある」ということ。AIに部分的な修正を依頼すると、この連鎖を見落としやすい。

便利だからこそ、依頼の仕方には気をつけないといけない。今回の失敗で、それを実感しました。

おわりに

Antigravityのような生成AIツールにブログ運営を任せると、本当に楽になります。

ただ、AIは指示されたことしかやりません。全体を見渡して整合性を保つのは、結局のところ人間の役目です。

部分的な修正を重ねていると、いつの間にか不整合が生まれることがある。定期的にAIに「全体を確認して」と頼む習慣をつけておくと良さそうです。