nuxt-seo について
Nuxt 4 以降のプロジェクト向け SEO スキルです。公式 Nuxt SEO モジュールと単独モジュールの設定を扱い、サイト情報、サイトマップ、構造化データ、SNS 画像、リンク検査を解説します。
主な機能
- 01サイト SEO 設定を案内
- 02robots.txt と XML サイトマップを解説
- 03OG 画像と構造化データを生成
- 04リンク検査と問題調査のガイド
- 05移行資料とプロジェクトリソースを収録
活用シーン
- 01Nuxt プロジェクトの SEO 設定
- 02サイトマップと正規 URL の生成
- 03SNS 共有画像の作成
- 04リンク切れや構造化データの問題調査
MCP 対応
README では Nuxt SEO Pro に MCP サーバーが含まれると記載されていますが、具体的なインターフェースや機能は説明されていません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ secondsky/ claude-skills --skill nuxt-seoインストール後、Claude Code で/nuxt-seoを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/package-versions.jsonreferences/advanced-configuration.mdadvanced-seo-guides.mdai-seo-tools.mdapi-reference.mdbest-practices.mdcommon-patterns.mdinstallation-guide.mdmodule-details.mdmodules-overview.mdnitro-api-reference.mdnuxt-content-integration.mdog-image-guide.mdpro-modules.mdseo-guides.mdsitemap-advanced.mdtroubleshooting.mdv5-migration-guide.mdscripts/init-nuxt-seo.sh詳細
Nuxt SEO v5
ステータス:本番環境で利用可能 | 依存関係:Nuxt >=4.0.0
8 つの公式 Nuxt SEO モジュールとスタンドアロンモジュールを組み合わせて、SEO に最適化された Nuxt アプリケーションを構築する際に、このスキルを使用してください。
クイックスタート(5 分)
1. SEO バンドル一式をインストールする
# Recommended (v5)
npx nuxt module add @nuxtjs/seo
2. サイト設定を構成する
export default defineNuxtConfig({
modules: ['@nuxtjs/seo'],
site: {
url: 'https://example.com',
name: 'My Awesome Site',
description: 'Building amazing web experiences',
defaultLocale: 'en'
}
})
重要(v5 の破壊的変更):
site.nameはpackage.jsonから自動推測されなくなりました。明示的に設定してくださいsite.urlに本番環境の URL を設定してください(サイトマップと canonical URL に必須です)- i18n を使用する場合は、
defaultLocaleを設定してください
3. 再起動して確認する
以下の URL にアクセスして確認してください:
/robots.txt- robots ファイル/sitemap.xml- サイトマップ/__robots__/debug-production.json- デバッグ(v5)/__sitemap__/debug-production.json- デバッグ(v5)
個別モジュールのインストール
npx nuxt module add @nuxtjs/robots
npx nuxt module add @nuxtjs/sitemap
npx nuxt module add nuxt-og-image
モジュールの概要
| モジュール | バージョン | 用途 |
|---|---|---|
| @nuxtjs/seo | v5.1.0 | 主要な SEO モジュール(バンドルとして 8 つすべてをインストール) |
| @nuxtjs/robots | v6.0.6 | robots.txt とボット検出を管理 |
| @nuxtjs/sitemap | v8.0.11 | 高度な機能を備えた XML サイトマップを生成 |
| nuxt-og-image | v6.3.1 | Vue テンプレートで Open Graph 画像を作成 |
| nuxt-schema-org | v6.0.4 | Schema.org の構造化データグラフを構築 |
| nuxt-link-checker | v5.0.6 | ESLint 統合でリンク切れを検出・修正 |
| nuxt-seo-utils | v8.1.4 | SEO ユーティリティ、共有リンク、ファビコン、インライン最小化 |
| nuxt-site-config | v4.0.7 | サイト設定を一元管理 |
スタンドアロン(MIT):nuxt-ai-ready(llms.txt)、nuxt-skew-protection(バージョン安全性)
Pro(有料):Nuxt SEO Pro — Search Console、Core Web Vitals、MCP サーバー
モジュールの詳細ドキュメント: references/module-details.md を読み込んでください
重要なルール
必ず行うこと
- nuxt.config.ts で
site.urlとsite.nameを明示的に設定します(v5:name は自動推測されなくなりました) - 複数環境のセットアップでは環境変数を使用します
- 管理ページや非公開ページをブロックするよう robots.txt を設定します
- 重要なすべてのページに Schema.org の構造化データを追加します
- ソーシャル共有用の OG 画像を生成します
- サーバー側では
getSiteConfig(event)を使用します(v5:useSiteConfig(event)は削除されました) - Content v3 では
defineSitemapSchema()を使用します(v5:asSitemapCollection()は非推奨です)
絶対に行わないこと
site.urlとsite.nameの設定を忘れないでください(サイトマップ、canonical URL、タイトルが機能しなくなります)- ステージング環境のクロールを許可しないでください
- サーバー側で
useSiteConfig(event)を使用しないでください(v5 ではgetSiteConfig(event)を使用します) asSitemapCollection()を使用しないでください(v5 ではdefineSitemapSchema()を使用します)getSiteIndexable()を使用しないでください(v5 では{ indexable } = getSiteConfig(event)を使用します)
既知の問題を防ぐ
問題 #1:サイトマップが生成されない
エラー:/sitemap.xml が 404 を返す | 修正方法:nuxt.config.ts で site.url を設定します
問題 #2:robots.txt が見つからない
エラー:/robots.txt にアクセスできない | 修正方法:@nuxtjs/robots をインストールし、site.url を設定します
問題 #3:OG 画像がレンダリングされない
エラー:/__og-image__/og.png がエラーを返す | 修正方法:Satori 互換の CSS を使用するか、Chromium レンダラーに切り替えます
問題 #4:Schema の検証エラー
エラー:無効な JSON-LD | 修正方法:公式の Schema.org 型に従い、Google Rich Results Test で検証します
問題 #5:内部リンク切れ
エラー:内部リンクで 404 が発生する | 修正方法:開発中に ESLint ルールとともに nuxt-link-checker を有効にします
問題 #6:メタタグの重複
エラー:同じプロパティを持つメタタグが複数ある | 修正方法:メタタグの処理はモジュールに自動で任せます
問題 #7:Canonical URL の問題
エラー:canonical URL が間違っている | 修正方法:site.url と trailingSlash を正しく設定します
問題 #8:サイトマップインデックスのエラー
エラー:サイトマップインデックスの XML が不正 | 修正方法:chunkSize オプションを使用して、大きなサイトマップを分割します
問題 #9:ステージング環境のクロール
エラー:ステージング環境が Google にインデックス登録される | 修正方法:disallow: process.env.NUXT_PUBLIC_ENV === 'staging' ? ['/'] : []
Issue #10:ソーシャル共有画像がありません
エラー:ソーシャルメディアでプレビューが表示されない | 修正方法:重要なすべてのページで defineOgImage() を使用します
Issue #11:サイト名がありません(v5 の破壊的変更)
エラー:サイトタイトル/og:site_name がありません | 修正方法:nuxt.config.ts で site.name を設定するか、NUXT_SITE_NAME 環境変数を設定します
参照:https://nuxtseo.com/docs/nuxt-seo/migration-guide/v4-to-v5
Issue #12:サーバーサイドでの useSiteConfig エラー(v5 の破壊的変更)
エラー:サーバー上で useSiteConfig is not a function が発生します | 修正方法:サーバーサイドでは getSiteConfig(event) を使用します
参照:https://github.com/harlan-zw/nuxt-site-config/releases
Issue #13:非推奨の Content コンポーザブル(v5 の破壊的変更)
エラー:asSitemapCollection is not defined | 修正方法:defineSitemapSchema()、defineSchemaOrgSchema()、defineRobotsSchema() を使用します
参照:https://nuxtseo.com/docs/nuxt-seo/migration-guide/v4-to-v5
Issue #14:OG 画像のセキュリティエラー(v5)
エラー:OG 画像のリクエストが 403 または署名エラーを返します | 修正方法:defineOgImage() を正しく使用し、OG 画像の URL を手動で構築しないでください
参照:https://nuxtseo.com/docs/og-image/getting-started/introduction
設定例
export default defineNuxtConfig({
modules: ['@nuxtjs/seo'],
site: {
url: process.env.NUXT_PUBLIC_SITE_URL,
name: 'My Site',
defaultLocale: 'en'
},
robots: {
disallow: process.env.NUXT_PUBLIC_ENV === 'staging' ? ['/'] : []
},
sitemap: {
sitemaps: {
blog: { sources: ['/api/__sitemap__/blog'] }
}
}
})
v5 の新機能
- ソーシャル共有リンク:UTM トラッキングに対応した
useShareLinks({ title, twitter, utm }) - ファビコンの生成:
npx nuxt-seo-utils icons --source logo.svg - ESLint によるリンクチェック:
import linkChecker from 'nuxt-link-checker/eslint' - definePageMeta のサイトマップ:
definePageMeta({ sitemap: { changefreq: 'daily', priority: 0.8 } }) - インラインの最小化:
seo: { minify: true }
参照ファイルを読み込むタイミング
ユーザーの具体的なニーズに応じて、参照ファイルを読み込んでください。
| 読み込むタイミング | 参照ファイル |
|---|---|
| v4 から v5 へのアップグレード、破壊的変更 | references/v5-migration-guide.md |
| レンダリングモード、JSON-LD、正規 URL、IndexNow | references/seo-guides.md |
| AI 最適化、llms.txt、MCP ツール | references/pro-modules.md |
| I18n SEO、ルートルール、リンクチェッカールール | references/advanced-seo-guides.md |
| OG 画像テンプレート、Satori/Chromium、フォント | references/og-image-guide.md |
| Nuxt Content 統合、asSeoCollection | references/nuxt-content-integration.md |
| 動的サイトマップ、複数サイトマップ、分割 | references/sitemap-advanced.md |
| サーバーサイドフック、Nitro プラグイン | references/nitro-api-reference.md |
| llms.txt、AI クローラー、コンテンツシグナル | references/ai-seo-tools.md |
| モジュール機能の概要 | references/modules-overview.md |
| 初回セットアップ、パッケージマネージャー固有の情報 | references/installation-guide.md |
| コンポーザブル API ドキュメント、パラメーター一覧 | references/api-reference.md |
| ブログ、e コマース、多言語対応のパターン | references/common-patterns.md |
| 特定のモジュール設定 | references/module-details.md |
| 本番環境向け SEO ガイドライン | references/best-practices.md |
| エラーの解決、モジュール間の競合 | references/troubleshooting.md |
| 複数環境、高度な機能 | references/advanced-configuration.md |
同梱リソース
エージェント
| エージェント | 用途 |
|---|---|
seo-auditor.md | 包括的な SEO 監査 |
schema-generator.md | Schema.org 構造化データの生成 |
og-image-generator.md | カスタム OG 画像テンプレートの作成 |
link-checker.md | 内部/外部リンクの分析 |
sitemap-builder.md | 最適なサイトマップ戦略の設計 |
コマンド
| コマンド | 用途 |
|---|---|
/seo-audit | 包括的な SEO 監査を実行 |
/seo-setup | Nuxt SEO プロジェクトをすばやくセットアップ |
/og-preview | OG 画像の生成をプレビュー |
/check-links | リンクチェッカーによる分析を実行 |
/validate-sitemap | サイトマップ設定を検証 |
/check-schema | Schema.org の実装を検証 |
アセット
assets/package-versions.json— 検証用の現在のモジュールバージョン
パッケージバージョン(2026-08-03 に検証済み)
{
"dependencies": {
"@nuxtjs/seo": "^5.1.0",
"@nuxtjs/robots": "^6.0.6",
"@nuxtjs/sitemap": "^8.0.11",
"nuxt-og-image": "^6.3.1",
"nuxt-schema-org": "^6.0.4",
"nuxt-link-checker": "^5.0.6",
"nuxt-seo-utils": "^8.1.4",
"nuxt-site-config": "^4.0.7"
}
}
公式ドキュメント
- Nuxt SEO: https://nuxtseo.com
- v5 への移行: https://nuxtseo.com/docs/nuxt-seo/migration-guide/v4-to-v5
- @nuxtjs/robots: https://nuxtseo.com/docs/robots/getting-started/introduction
- @nuxtjs/sitemap: https://nuxtseo.com/docs/sitemap/getting-started/introduction
- nuxt-og-image: https://nuxtseo.com/docs/og-image/getting-started/introduction
- nuxt-schema-org: https://nuxtseo.com/docs/schema-org/getting-started/introduction
- nuxt-link-checker: https://nuxtseo.com/docs/link-checker/getting-started/introduction
- GitHub: https://github.com/harlan-zw
本番環境で利用可能: すべてのパターンは https://nuxtseo.com/llms-full.txt の公式ドキュメントに基づいています | 最終確認日: 2026-08-03