メインコンテンツへスキップ
kt-tech.blog

【設定・環境構築】SEO完全対策 — sitemap動的生成からAI検索対応まで

設定・環境構築4分で読めます

この記事でわかること

  • next-sitemap だと Edge Runtime の動的ルートが sitemap に入らない問題と、sitemap.ts への置き換え
  • AI クローラーを robots.txt で明示的に扱う書き方と llms.txt
  • sitemap の ping 通知が廃止されているということ(代わりに何をするか)
  • Indexing API が一般ブログでは使えないという前提

Next.js App Router のブログを運用していること。Search Console にサイトを登録済みだと進めやすいです。

概要: ブログのSEOを全面的に改善。sitemap動的生成、robots.txt、JSON-LD構造化データ、RSSフィード、OGP動的生成、llms.txtによるAI検索対応、Search Console API連携まで。

はじめに

Search Consoleを確認したら、sitemapに記事URLが1件も含まれていなかった。TOPのog:titleが「TOPページ」という無意味なものだった。一つずつ改善した記録。

1. sitemapの問題と対策

next-sitemapはビルド時の静的ページしか拾わない。Edge Runtimeの動的ルートは対象外。App Router標準のsitemap.tsに置き換え:

TypeScript
// src/app/sitemap.ts
export default async function sitemap() {
  const { contents } = await getList();
  return [
    { url: siteUrl, priority: 1.0 },
    ...contents.map(blog => ({
      url: `${siteUrl}/blogs/${blog.id}`,
      lastModified: new Date(blog.updatedAt),
      priority: 0.8,
    })),
  ];
}

結果: 7件→61件のURLがsitemapに含まれるように。

2. robots.txtとAIクローラー

robots.ts/searchesをdisallow、AIクローラーを明示的にAllow:

TypeScript
rules: [
  { userAgent: '*', allow: '/', disallow: ['/searches'] },
  { userAgent: 'GPTBot', allow: '/' },
  { userAgent: 'ClaudeBot', allow: '/' },
  { userAgent: 'PerplexityBot', allow: '/' },
]

3. llms.txt

LLM向けのサイト説明ファイル。robots.txtのAI版:

JavaScript
# kt-tech.blog
> 実践的な技術記事とエンジニアリングの知見を発信
## Topics
- Next.js / React / TypeScript
- Cloudflare Pages / Workers
...

4. Search Console API連携

GCPサービスアカウントでSearch Console APIに接続。検索パフォーマンスとインデックス状況をAPI経由で取得。sitemapの再送信もAPIで実行。

5. CI/CDに組み込み

デプロイ後に検索エンジンへ sitemap の更新を通知していました。

YAML
- name: Notify search engines
  run: |
    curl -s "https://www.google.com/ping?sitemap=https://kt-tech.blog/sitemap.xml"
    curl -s "https://www.bing.com/ping?sitemap=https://kt-tech.blog/sitemap.xml"
重要
この ping はもう効きません。Google は 2023 年 6 月に sitemap の ping エンドポイントを廃止しました(「使われ方の大半がスパムだった」という理由です)。Bing も同様に非推奨です。今は robots.txt に sitemap の URL を書いておけば十分で、クローラは自分で取りに来ます。早く知らせたい場合は Search Console で手動送信するか、Bing 系なら IndexNow を使います。

Tips

Tips
next-sitemap は Edge Runtime の動的ルートを拾わない。App Router の sitemap.ts が正解
Tips
Indexing API は一般ブログでは使えない(JobPosting / BroadcastEvent 専用)。sitemap を置いて待つのが正道
Tips
AI クローラーの許可は明示的に書く。逆に学習に使われたくないなら、ここで disallow する

参考リンク

まとめ

  • sitemap を 7 件 → 61 件に URL 数増加
  • AI クローラーを明示的に許可 + llms.txt 追加
  • Search Console API でインデックス状況を監視
  • sitemap の ping 通知は廃止済み。robots.txt に sitemap を書いておけばよい

更新履歴

  1. CI に入っていた Google / Bing への sitemap ping について、Google は 2023 年 6 月に廃止済みであることを警告として追加し、robots.txt に sitemap を書く方式と IndexNow を代替として提示。まとめの記述も合わせて修正。llms.txt のコードブロックの言語指定を javascript から text に修正し、ファイルパスをキャプションに追加。Indexing API の対象タイプを補足。箸条書きの Tips を callout に統一。自動目次と関連記事へのリンクを追加。「この記事でわかること」「対象読者」を概要プロパティへ移動。