SEO 技術監査チェックリスト: 100 点ガイド
技術的な SEO 監査は、メタ タグやキーワードの密度に関するものではありません。サイトが検索エンジンとどの程度うまく通信しているかについての体系的なエンジニアリング レビューです。クロール可能性、インデックス付け、Core Web Vitals、構造化データ、正規化、および国際シグナルはすべて、単一のコンテンツが評価される前の順位に影響します。 2026 年には、AI を活用した検索エンジンと AEO (Answer Engine Optimization) が従来の SEO と同じくらい重要になるため、技術的基盤がこれまで以上に重要になります。
この 100 ポイントのチェックリストはカテゴリごとに構成されています。体系的に作業を進め、結果をスプレッドシートで追跡します。他の最適化作業を行う前に、重要な項目 (C とマーク) を修正します。これにより、残りの部分が影響を受けるのを防ぐことができます。
重要なポイント
- クロール可能性が最初の関門 — Googlebot がページにアクセスできない場合は、他に何も問題はありません
- Core Web Vitals (LCP、INP、CLS) はランキングシグナルであることが確認されています。ターゲット LCP < 2.5 秒、INP < 200ms、CLS < 0.1
- Canonical タグは重複コンテンツの希薄化を防ぎます - すべてのページにはそれ自体を指すタグが必要です
- hreflang は多言語サイトには必須です。 x-default は URL グループごとに設定する必要があります
- 構造化データ (JSON-LD) はリッチな結果を可能にし、AI/LLM ソースの帰属に不可欠です
- HTTPS は 2026 年の重要な要素です。混合コンテンツが影響を受けるページのインデックスをブロックする
- モバイル ファースト インデックスとは、モバイル エクスペリエンスが Google によって評価されることを意味します
- 説明的なアンカー テキストを使用した内部リンクにより、PageRank が配布され、トピックの関連性が示されます。
セクション 1: クロール可能性とインデックス作成 (C = クリティカル)
robots.txt
- (C)
robots.txtは/robots.txtでアクセス可能であり、200 を返します - (C) 宣言されたサイトマップ URL:
Sitemap: https://example.com/sitemap.xml - キー ページが
Disallowによって誤ってブロックされない - 攻撃的なボット用の個別のクロール速度ディレクティブ
- AI クローラーはポリシーごとに明示的に許可または禁止されます (GPTBot、ClaudeBot、OAI-SearchBot)
User-agent: *
Allow: /
Disallow: /admin/
Disallow: /api/
Disallow: /auth/
Sitemap: https://ecosire.com/sitemap.xml
# Allow AI indexers
User-agent: GPTBot
Allow: /
User-agent: ClaudeBot
Allow: /
XML サイトマップ
- (C) サイトマップは正しい
Content-Type: application/xmlで 200 を返します - (C) すべての正規 URL が含まれます。 robots.txt または noindex によってブロックされた URL はありません
-
<lastmod>の日付は正確です (すべてが同じ静的な日付ではありません) -
<priority>および<changefreq>はページ タイプごとに適切に設定されます - URL が 50,000 を超えるサイトのサイトマップはインデックスとサブサイトマップに分割されます
- Google Search Console と Bing ウェブマスター ツールに送信されたサイトマップ
- 画像の多いページには画像サイトマップが含まれています
- サイトマップ内の代替言語 URL (hreflang)
// Next.js sitemap.ts — programmatic with correct lastmod
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
const posts = await getAllBlogPosts();
return [
{
url: 'https://ecosire.com',
lastModified: new Date(),
changeFrequency: 'daily',
priority: 1.0,
},
...posts.map((post) => ({
url: `https://ecosire.com/blog/${post.slug}`,
lastModified: new Date(post.updatedAt),
changeFrequency: 'weekly' as const,
priority: 0.8,
})),
];
}
クロールの予算
- ページネーション ページでは
rel="next"/rel="prev"(または SSR の無限スクロール) を使用します。 - ファセット ナビゲーション URL は正規化されているか、インデックスが付けられていません。
- インデックス付き URL から除外されるセッション ID と追跡パラメータ
- 1 ホップに制限されたリダイレクト チェーン (A から B から C ではなく、A から B)
- ソフト 404 なし — 404 ページは 200 ではなく HTTP 404 を返します。
セクション 2: HTTPS とセキュリティ
- (C) 有効な証明書を使用して HTTPS 経由で提供されるすべてのページ
- (C) HTTP は HTTPS にリダイレクトします (302 ではなく 301)
- (C) 混合コンテンツ警告なし (HTTPS ページ上の HTTP リソース)
- HSTS は
max-age=31536000; includeSubDomains; preloadで有効になります - SSL 証明書の有効期限が 90 日以上残っています
- 証明書は www および非 www のバリアントをカバーします
- 証明書チェーンが完了しました (中間 CA が欠落していません)
# Nginx HTTPS configuration
server {
listen 443 ssl http2;
server_name ecosire.com;
ssl_certificate /etc/letsencrypt/live/ecosire.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ecosire.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
}
セクション 3: 主要な Web 重要事項
最大コンテンツフル ペイント (LCP) — ターゲット: 2.5 秒未満
- (C) CrUX/PageSpeed Insights で特定された LCP 要素
-
<link rel="preload" as="image">がプリロードされたヒーロー画像/ビデオ - LCP イメージが正しい
fetchpriority="high"属性で提供される - WebP または AVIF 形式の画像(可能な場合は PNG/JPEG ではない)
- 画像は適切なサイズに設定されています (4000px の画像は 800px で表示されません)
- エッジ キャッシュを使用して静的アセットを提供する CDN
- サーバー TTFB が 800 ミリ秒未満 (LCP ウィンドウが減少します)
// Next.js: priority prop preloads the hero image
<Image
src="/hero.webp"
alt="Hero image"
width={1200}
height={630}
priority
sizes="100vw"
/>
次のペイントへのインタラクション (INP) — 目標: 200 ミリ秒未満
- 長いタスク (50 ミリ秒以上) が特定され、分割されました
- 重い JavaScript が遅延または遅延ロードされる
- イベント ハンドラーは効率的で、レイアウトの再計算を引き起こしません。
-
asyncまたはdeferでロードされたサードパーティ スクリプト
累積レイアウト シフト (CLS) — 目標: 0.1 未満
- (C) すべての画像とビデオには明示的な
widthおよびheight属性があります - Web フォントは、サイズ調整フォールバックを備えた
font-display: optionalまたはswapを使用します - 広告スロットには予約されたサイズがあります
- スクロールせずに見える部分にコンテンツを動的に挿入することは回避されます
- アニメーションは
transformとopacityのみを使用します (top、left、widthは使用しません)
セクション 4: URL 構造と正規化
- (C) すべてのページには自己参照の正規タグがあります
- (C) 正規タグの URL は実際に提供される URL と一致します (末尾のスラッシュの一貫性)
- www および非 www は正規バージョンにリダイレクトされます
- URL は小文字で、単語の区切り文字としてハイフンが使用され、アンダースコアは使用されません
- 重要なページの URL の深さはルートから最大 4 レベルです
- 正規化せずに重複コンテンツを作成する URL パラメーターはありません
- ページ分割されたシリーズは最初のページに正規化されます (または各ページが自己正規化されます)。
// Next.js generateMetadata with canonical
export async function generateMetadata({ params }: Props): Promise<Metadata> {
const { locale, slug } = await params;
const base = locale === 'en' ? '' : `/${locale}`;
const canonicalUrl = `https://ecosire.com${base}/blog/${slug}`;
return {
alternates: {
canonical: canonicalUrl,
languages: buildHreflangUrls(slug), // all 11 locales
},
};
}
セクション 5: メタデータとオンページ SEO
- (C) 各ページには固有の
<title>タグ (50 ~ 60 文字) があります。 - (C) 各ページには一意の
<meta name="description">(150 ~ 160 文字) があります。 - タイトルは次のパターンに従います:
Primary Keyword | Brand Name - サイト全体でタイトル タグが重複しないようにする
- オープングラフタグ:
og:title、og:description、og:image、og:url、og:type - Twitter/X カード タグ:
twitter:card、twitter:title、twitter:image - OG 画像は 1200x630 ピクセル、8MB 未満で、CDN から提供されます
-
<meta name="robots">は制限するためにのみ使用されます (冗長なindex,followではありません) -
<html lang="en">がすべてのページに正しく設定されています
セクション 6: 構造化データ (JSON-LD)
- (C) Microdata/RDFa よりも JSON-LD が優先されます (保守が容易で、パーサーに優しい)
-
sameAsソーシャル プロファイル URL を含むホームページ上の組織スキーマ - サイトリンク検索ボックスの
SearchActionを含む Web サイト スキーマ - ホームページの下のすべてのページの BreadcrumbList スキーマ
-
datePublished、dateModified、authorを含むブログ投稿の記事スキーマ - FAQ セクションのあるページの FAQPage スキーマ
-
offers、aggregateRatingを含む製品ページの製品スキーマ -
areaServed、serviceTypeを含むサービス ページのサービス スキーマ - 多言語 AI アトリビューションのすべてのスキーマの [ ]
inLanguageプロパティ - Google のリッチリザルト テストで検証された構造化データ
// JSON-LD with XSS protection
// The .replace() encodes the less-than sign to prevent </script> breakout,
// making this safe for use in a script tag (no untrusted HTML rendered)
export function JsonLd({ data }: { data: Record<string, unknown> }) {
const safeJson = JSON.stringify(data).replace(/</g, '\\u003c');
return (
<script
type="application/ld+json"
// Safe: safeJson is a sanitized JSON string, not HTML
dangerouslySetInnerHTML={{ __html: safeJson }}
/>
);
}
// Usage
const schema = {
'@context': 'https://schema.org',
'@type': 'FAQPage',
inLanguage: locale,
mainEntity: faqs.map((faq) => ({
'@type': 'Question',
name: faq.question,
acceptedAnswer: { '@type': 'Answer', text: faq.answer },
})),
};
<JsonLd data={schema} />
セクション 7: 国際的な SEO
- (C) 言語バリアントを含むすべてのページの hreflang タグ
- (C)
x-defaulthreflangをURLグループごとに設定 - hreflang 属性は双方向です (/en/ が /fr/ にリンクしている場合、/fr/ は /en/ にリンクしなければなりません)
- ロケール URL は、必要に応じて ISO 639-1 言語コード + ISO 3166-1 地域コードを使用します。
-
<html lang="xx">はそのページの hreflang ロケールと一致します - RTL 言語 (アラビア語、ヘブライ語、ウルドゥー語) は
<html>でdir="rtl"を使用します - コンテンツはレビューなしで自動翻訳されるだけでなく、翻訳されます。
- ロケールのサブディレクトリごとに Google Search Console で設定された地域ターゲティング
// Next.js hreflang via generateMetadata
const locales = ['en', 'zh', 'es', 'ar', 'pt', 'fr', 'de', 'ja', 'tr', 'hi', 'ur'];
// In generateMetadata:
// alternates.languages keys must be BCP 47 language tags
alternates: {
languages: Object.fromEntries([
['x-default', `https://ecosire.com/blog/${slug}`],
['en', `https://ecosire.com/blog/${slug}`],
['zh', `https://ecosire.com/zh/blog/${slug}`],
['ar', `https://ecosire.com/ar/blog/${slug}`],
// ... all 11 locales
]),
},
セクション 8: パフォーマンスとインフラストラクチャ
- CDN (CloudFront、Cloudflare、Fastly) から提供される静的アセット
- ブラウザ キャッシュ: ハッシュされたアセットの場合は
Cache-Control: public, max-age=31536000, immutable - サーバーで Gzip または Brotli 圧縮が有効になっています
- HTTP/2 または HTTP/3 が有効です
- アジャイルフェイルオーバーのための DNS TTL 3600 以下
- HTML のサーバー応答時間は 200 ミリ秒未満 (TTFB を測定)
- 初期ロード 250KB 未満の JavaScript バンドル (gzip 圧縮)
- 未使用の JavaScript を削除 (ツリーシェイキング、コード分割)
- CSS は運用環境で使用されていないルールをパージしました
# Nginx compression + caching headers
gzip on;
gzip_types text/html text/css application/javascript application/json image/svg+xml;
gzip_min_length 1024;
location /_next/static/ {
expires max;
add_header Cache-Control "public, max-age=31536000, immutable";
}
セクション 9: モバイルとユーザー エクスペリエンス
- (C) ビューポートメタタグ:
<meta name="viewport" content="width=device-width, initial-scale=1"> - すべてのインタラクティブ要素には少なくとも 48x48 ピクセルのタッチ ターゲットがあります
- モバイルでは水平スクロールなし (最大幅: 100vw)
- 本文テキストのフォント サイズは少なくとも 16 ピクセル (入力フォーカスでの iOS 自動ズームを防止)
- モバイル ナビゲーションは実際のデバイスでテスト済み (iOS Safari、Chrome Android)
- ポップアップとインタースティシャルはモバイルのメイン コンテンツをカバーしません
- モバイル訪問者向けの電話番号へのタップツーコール
セクション 10: AEO (応答エンジンの最適化)
AI 検索エンジンと音声アシスタントにとって、次のことがますます重要になっています。
-
data-speakable属性で囲まれた主要な回答 -
<details>/<summary>は、折りたたみ可能な FAQ コンテンツ (クロール可能、セマンティック) に使用されます。 - AI クローラー用に
/llms.txtおよび/.well-known/llms.txtが公開されました - 重要なセクションの先頭に簡潔で事実に基づいた回答の段落を配置 (強調スニペットの最適化)
- 構造化データで明確なエンティティ関係 (組織、サービス、製品)
- すべてのページ、ソーシャル プロフィール、ディレクトリにわたって一貫したブランド名
- 新しいコンテンツの公開後のインスタント URL 送信に IndexNow API が使用される
よくある質問
技術的な SEO 監査はどのくらいの頻度で実行する必要がありますか?
完全な監査を四半期ごとに実行し、軽量のクロール (Screaming Frog または Sitebulb) を毎月実行します。新しい技術スタック、移行、国際的なコンテンツの追加、大規模な再設計など、サイトに大きな変更があった場合は、即時の監査が必要です。 Google Search Console 経由で継続的なモニタリングを設定し、インデックス登録されたページの突然の減少やクロール エラーを警告します。
技術的な SEO 監査にはどのようなツールが必要ですか?
少なくとも: Google Search Console (無料、正規)、Screaming Frog または Sitebulb (クロール分析)、PageSpeed Insights (Core Web Vitals)、Google リッチリザルト テスト (構造化データ)、WebAIM Contrast Checker (アクセシビリティ/UX)、および Ahrefs または Semrush (バックリンク、キーワード ランキング)。 JavaScript を多用するサイトの場合は、レンダリングされたクロール用に Rendertron または Botify を追加します。
監査で見つかった最も一般的な重大な SEO 問題は何ですか?
正規タグの構成ミスは、最も一般的な重大な発見です。完全に欠落しているか、間違った URL (多くの場合、運用環境に残された開発ドメインまたはステージング ドメイン) を指しているか、末尾のスラッシュの使用法が一致していません。 2 番目に多いのは、CMS プラグインからの偶発的な noindex ディレクティブ、または運用ビルドに残されたステージング構成です。
Next.js App Router は技術的な SEO に役立ちますか?
はい、かなりです。サーバー側レンダリングでは、すべてのコンテンツが最初の HTML 応答に含まれることを意味します (クロールに JavaScript は必要ありません)。 generateMetadata() ページごとのメタデータは、グローバルな静的メタデータの間違いを防ぎます。 sitemap.ts および robots.ts 規則により、これらのファイルをプログラムで簡単に保守できるようになります。組み込みの画像コンポーネントは、CLS 防止のために幅と高さを強制し、WebP/AVIF バリアントを自動的に生成します。
ページ分割されたコンテンツの SEO をどのように処理すればよいですか?
ページ分割されたブログ アーカイブまたは製品リストの場合、各ページには自己参照の正規 (ページ 1 までの正規ではない)、ページ番号を示す説明的なタイトルが必要です。コンテンツが充実している場合は、インデックス付けを許可します。ページ分割が薄いページの場合は、ページ 3 以降のページで noindex を検討してください。Google は 2019 年に rel="next"/rel="prev" を非推奨にしましたが、他の検索エンジンでは依然として使用されています。
次のステップ
技術的な SEO 監査は、すべてのコンテンツとマーケティング作業の ROI を倍増させる 1 回限りの投資です。このチェックリストの 100 ポイントは、検索エンジンがコンテンツをランク付けする前に評価する内容の全範囲をカバーしています。
ECOSIRE は、11 のロケールのプログラム サイトマップや hreflang から構造化データ、Core Web Vitals の最適化、IndexNow API 統合に至るまで、技術的な SEO のベスト プラクティスをすべての Next.js プロジェクトの標準部分として実装しています。 当社の Web 開発サービスをご覧ください して、初日から検索の可視性を構築する方法を学びましょう。
執筆者
ECOSIRE Research and Development Team
ECOSIREでエンタープライズグレードのデジタル製品を開発。Odoo統合、eコマース自動化、AI搭載ビジネスソリューションに関するインサイトを共有しています。
関連記事
Audit Preparation Checklist: Getting Your Books Ready
Complete audit preparation checklist covering financial statement readiness, supporting documentation, internal controls documentation, auditor PBC lists, and common audit findings.
Industry-Specific Compliance Checklist: Healthcare, Finance, Retail, Manufacturing
Comprehensive compliance checklists for healthcare, financial services, retail, and manufacturing sectors covering key regulations, technical controls, and implementation priorities.
Content Marketing Strategy for Shopify Stores
Build a high-converting content marketing strategy for your Shopify store with SEO-driven blog posts, buying guides, and product content that ranks.