本文へスキップ
開発風景

全ページが「私はトップの複製です」と検索エンジンに申告していた

全ページが「私はトップの複製です」と検索エンジンに申告していた

SEOは足し算だと思っていた。実際にやることになったのは、間違って書いた1行を消す作業だった。

自分のサイトのSEOを点検しました。作った人間が自分で見ても抜けは見つからないので、ページごと・観点ごとに分けて機械的に洗いました。

結果は、思っていたより悪かったです。

1出てきた4つ

点検で出てきた致命傷(すべて実測で確認)

症状原因影響
12ページのcanonicalがトップを指すルートlayoutに書いたcanonicalが全ページに継承されていた作ったページが「トップの複製」扱い
60ページ超のSNSカードが画像なしrobots.txt の Disallow が動的OG画像ごと塞いでいた貼っても画像が出ない
作品ページのOG画像が汎用画像に劣化実行時のファイル存在チェックが、配信設定と噛み合っていなかった全部同じ絵になる
作品ページ120本のH1がHTMLに無い見出しを描くコンポーネントをサーバー描画から外していた作品名が検索エンジンから見えない

とくに最後の1つは、ブラウザで見ている限りまったく分かりません。ページを開けば作品名は表示されている。でもHTMLを取ってくると、その文字がどこにも無い。編集モード用のコンポーネントをブラウザ側でしか動かない設定にしていて、閲覧時もそれを通していたためでした。

120ページ分の作品名が、1年近く検索エンジンには存在していなかったことになります。

2canonicalの話

一番効くのに、直すのは一番簡単でした。ルートのレイアウトに1行、サイトのURLを正規URLとして書いていた。Next.jsのメタデータは子ページに継承されるので、それが全ページに配られていました。

つまり /works/about/contact も、揃って「自分はトップページの複製です」と申告していたわけです。sitemapでは「見に来てください」と言いながら。

直し方は、その1行を消して、各ページに自分自身のURLを書く。ただ、"use client" を付けたページはメタデータを書けないので、同じ階層に layout.tsx を足して、そこで宣言しました。

3robots.txtが自分の首を絞めていた

Disallow: /api/ と書いていました。管理用APIをクロールされたくなかったからです。

ところがSNSカードの画像は /api/og で動的に作っていました。60ページ超のカードが、クローラーから取れない場所に置かれていたことになります。

許可を1行足すだけで直りました。長く一致するほうが勝つので、/api/og だけ通して残りは塞いだままにできます。

4直したあとに、測る仕組みを残した

こういうのは一度直しても、次にページを足したときにまた壊れます。なので、sitemapに載っている全URLを実際に叩いて、canonical・og:image・twitterカードが正しいか、画像が本当に200で返るかを確認するスクリプトを書いて置きました。

いま流すと234URLで問題ゼロです。ページを足したら流す。これだけで、同じ失敗は繰り返しません。

点検の前と後(実測値)

項目
自己参照canonical12ページが不正234URL すべて正しい
OG画像が取得できるページ60ページ超が遮断全ページ取得可
作品ページのH1HTMLに存在しないサーバー描画で出力
/contact のフォント先読み124ファイル・3.7MB3ファイル
sitemapの他ドメイン混入118件0件

5正直に言うと

SEOというと記事を増やすとか、キーワードを入れるとか、足す作業だと思っていました。今回やったことは、ほぼ全部が「間違って書いた1行を消す」でした。

しかも4つのうち3つは、画面を見ているだけでは絶対に気づけません。ブラウザで正常に見えているものが、検索エンジンから見えていないことがある。この2つは別物なんだと、頭では分かっていたつもりで分かっていなかった。

まだ残している宿題もあります。19件の店舗事例がクエリ付きURLのままで、正規URLが1本に潰れている件。これは実体のページを作らないと直りません。近いうちに手を付けます。

作ったものは制作実績に並べています。中身が検索エンジンからも見えるようになったのは、今週からです。

この記事を書いた人

NextCode(沖縄県宜野湾市)は、iOSアプリ・ホームページ/LP・NFCデジタル名刺・AI業務自動化を作っている開発スタジオです。 ここで書いているのは、実際に作って公開したものと、その過程で詰まったことだけです。

お電話でも大丈夫です → 098-959-6119

この記事が役に立ったらシェアしてください