こんにちは、ショウです!
先日、このブログをWordPressからAstroへと移行しました。サイトの爆速化に成功して意気揚々としていたのですが、Google Analytics(GA4)を覗いてみると、衝撃の結果が待っていました。
「……アクセス、減ってない?」
今回は、移行前後(約3週間ずつ)のデータを徹底的に比較し、何が起きていたのか、そしてどう対策したのかを赤裸々に公開します。
1. 衝撃のデータ:移行後に起きた「2つの異変」
まずは、移行前後(WordPress:1/20〜2/12 vs Astro:2/14〜3/5)の主要指標の比較表をご覧ください。
| 指標 | 移行前 (WordPress) | 移行後 (Astro) | 変化(1日平均) |
|---|---|---|---|
| セッション数 | 17.6/日 | 13.6/日 | -22% |
| ページビュー数 | 21.1/日 | 15.0/日 | -29% |
| 直帰率 | 32.9% | 46.9% | +14pt (悪化) |
| 平均滞在時間 | 151秒 | 134秒 | -11% |
全体的に数字が落ち込んでいます。特に直帰率の14ポイント上昇は、ブログ運営者として無視できないレベルです。
2. 原因の深掘り:犯人は「エースの失速」と「スマホの迷子」
なぜここまで数字が悪化したのか? 詳細を調べると、3つの真実が見えてきました。
① エース記事「Google AI Plus」のトレンド終了
移行直前に公開した「Google AI Plusの比較記事」が爆発的にヒットしていたのですが、そのトレンドが2月後半にかけて落ち着きました。 1日平均 7.4 PV → 1.4 PV への激減。これがPV減少の約半分を占めていました。
② モバイル直帰率の急増(26% → 46%)
デバイス別に分析したところ、PCよりもモバイル(スマホ)ユーザーの直帰率が20ポイントも悪化していました。Astro化したことで表示は早くなったはずなのに、なぜ……?
③ 回遊導線(関連記事)の喪失
ここで気づいたのが、**「テーマ(AstroPaper)の初期状態には関連記事がない」**という事実です。 WordPress時代はプラグインなどで「この記事もおすすめ」と出していたのが、Astro移行で消えてしまいました。スマホユーザーは記事を読み終えた後、次に読むものがなく、そのまま離脱(直帰)してしまっていたのです。
3. Gemini × MCP:AIと挑む「データ駆動」の改善
今回の分析と対策には、僕の頼れる相棒である Gemini(AI) と MCP(Model Context Protocol) をフル活用しました。
具体的には、以下のようなプロセスで進めました:
- データ抽出: MCPツールを通じてGA4のAPIを叩き、移行前後の生データをGeminiに読み込ませる。
- 多角的な分析: Geminiが「モバイル直帰率の急増」や「特定記事のPV減衰」といった、自分一人では見落としがちな変化を瞬時に特定。
- コードの自動生成・修正: 分析結果から「関連記事が必要だ」という結論に至り、GeminiがAstro用の選出ロジックを生成。MCP経由で直接プロジェクトのソースコードを書き換え。
「データを見て、原因を突き止め、コードを直す」という一連の流れをAIと二人三脚で行うことで、気づきから実装完了までわずか数十分で終えることができました。まさにAI時代の開発スタイルです!
4. 即効対策:関連記事(Related Posts)の実装
原因が「回遊性の低さ」にあるなら、やることは一つ。関連記事機能の実装です。
現在のタグ情報を活用して、関連度の高い記事を自動で選出し、記事末尾に表示するロジックを組み込みました。
実装したロジック(Astroフロントマター):
同じタグを持つ記事をカウントし、多い順(+新しい順)に最大3件ピックアップします。
const relatedPosts = posts
.filter(p => p.id !== post.id && !p.data.draft)
.map(p => {
// 現在の記事と共通のタグ数をカウント
const commonTags = p.data.tags.filter(t => tags.includes(t)).length;
return { ...p, commonTags };
})
.filter(p => p.commonTags > 0)
.sort((a, b) => {
if (a.commonTags !== b.commonTags) return b.commonTags - a.commonTags;
return new Date(b.data.pubDatetime).getTime() - new Date(a.data.pubDatetime).getTime();
})
.slice(0, 3);
これを PostDetails.astro に追加し、記事の最後(SNSシェアボタンの下)に配置しました。
4. まとめ:技術も大事だが「おもてなし」も大事
今回の教訓は、**「サイトを高速化(Astro化)しても、読者を次に導く導線がなければ離脱される」**ということです。
「爆速」はあくまで土台。その上で、WordPress時代には当たり前だった「関連記事」や「サイドバー」といった**回遊のための“おもてなし”**を、Astroでも一つずつ丁寧に実装していく必要があります。
今後の課題:
- モバイルメニューの改善: スマホユーザーがさらに回遊しやすい工夫。
- 正確な計測:
astro:page-load時のGA4計測が二重になっていないかの微調整。
もし、これからAstroへ移行する方がいたら、「スピード」の影に隠れた「回遊性」にもぜひ注目してみてください!
まだまだ移行したてでアクセス数も少ないですが、これから少しずつ改善を重ねて、皆さんに役立つ情報を届けていきたいと思っています。他の記事もぜひ読んでいただけると、泣いて喜びます!笑
それでは、また!