【設定・環境構築】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に置き換え:
// 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:
rules: [
{ userAgent: '*', allow: '/', disallow: ['/searches'] },
{ userAgent: 'GPTBot', allow: '/' },
{ userAgent: 'ClaudeBot', allow: '/' },
{ userAgent: 'PerplexityBot', allow: '/' },
]3. llms.txt
LLM向けのサイト説明ファイル。robots.txtのAI版:
# 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 の更新を通知していました。
- 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 する
参考リンク
- Next.js Metadata - Sitemap
- llms.txt Specification
- Search Console API
- IndexNow
- Search Consoleの「検出 - インデックス未登録」を18記事分解消した全手順(別記事)
まとめ
- sitemap を 7 件 → 61 件に URL 数増加
- AI クローラーを明示的に許可 + llms.txt 追加
- Search Console API でインデックス状況を監視
- sitemap の ping 通知は廃止済み。robots.txt に sitemap を書いておけばよい
更新履歴
- CI に入っていた Google / Bing への sitemap ping について、Google は 2023 年 6 月に廃止済みであることを警告として追加し、robots.txt に sitemap を書く方式と IndexNow を代替として提示。まとめの記述も合わせて修正。llms.txt のコードブロックの言語指定を javascript から text に修正し、ファイルパスをキャプションに追加。Indexing API の対象タイプを補足。箸条書きの Tips を callout に統一。自動目次と関連記事へのリンクを追加。「この記事でわかること」「対象読者」を概要プロパティへ移動。


