mcpField
S
seo-review

seo-review

github.com/leonardomsoマーケティング・グロース66.5k645 回インストール21 週間前に更新
リポジトリ

seo-review について

33 JavaScript Conceptsプロジェクトの概念解説ページを対象とするSEO監査エージェントスキルです。キーワード計画、ページ要素やコンテンツ構成のチェック項目、レポート手順を提供します。

主な機能

  1. 01概念別キーワード群の計画
  2. 02ページ内SEO要素の確認
  3. 03強調スニペット向け構成の評価
  4. 04内部リンクの確認
  5. 05レポートテンプレートで所見を記録

活用シーン

  1. 01概念ページ公開前のSEO監査
  2. 02検索実績が低いページの改善
  3. 03大幅なコンテンツ更新後の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/leonardomso/33-js-concepts --skill seo-review

インストール後、Claude Code で/seo-reviewを入力して読み込まれたか確認します。

詳細

スキル:概念ページの SEO 監査

このスキルを使って、33 JavaScript Concepts プロジェクトの概念ドキュメントページに対する、対象を絞った SEO 監査を実施します。目標は、JavaScript 開発者が検索したときの表示順位を最大化することです。

使用するタイミング

  • 新しい概念ページを公開する前
  • パフォーマンスが低いページを最適化するとき
  • 定期的なコンテンツ監査
  • 大幅なコンテンツ更新の後
  • 新しいキーワードをターゲットにするとき

目標

各概念ページは、次のような検索で上位に表示されることを目指します。

  • 「JavaScript の [概念] とは」
  • 「JavaScript では [概念] はどのように機能するか」
  • 「[概念] の JavaScript での解説」
  • 「[概念] の JavaScript チュートリアル」
  • 「[概念] の JavaScript の例」

SEO 監査の方法

完全な SEO 監査を実施するには、次の 5 つのステップに従います。

ステップ 1:ターゲットキーワードを特定する

監査の前に、その概念のキーワードクラスターを特定します。

キーワードクラスターのテンプレート
種類パターン例(クロージャ)
主要[概念] JavaScriptclosures JavaScript
とはwhat is [concept] in JavaScriptwhat is a closure in JavaScript
どのように機能するかhow does [concept] workhow do closures work
使い方how to use/create [concept]how to use closures
理由why use [concept]why use closures JavaScript
例[concept] examplesclosure examples JavaScript
比較[concept] vs [related]closures vs scope
面接[concept] interview questionsclosure interview questions
ステップ 2:ページ内 SEO 監査

ページ内の SEO 要素をすべて体系的に確認します。

ステップ 3:強調スニペット向けに最適化する

強調スニペットの獲得につながるように、コンテンツが構成されていることを確認します。

ステップ 4:内部リンクを監査する

内部リンクの構造を確認します。

ステップ 5:レポートを作成する

レポートテンプレートを使って、調査結果を記録します。


概念別のキーワードクラスター

各概念向けにあらかじめ用意された、次のキーワードクラスターを使用します。

| 種類 | キーワード | |------|----------| | 主要 | JavaScript call stack、call stack JavaScript | | とは | what is the call stack in JavaScript | | どのように機能するか | how does the call stack work | | エラー | maximum call stack size exceeded、stack overflow JavaScript | | 視覚化 | call stack visualization、call stack explained | | 面接 | call stack interview questions JavaScript | | 種類 | キーワード | |------|----------| | 主要 | JavaScript primitive types、primitives in JavaScript | | とは | what are primitive types in JavaScript | | 一覧 | JavaScript data types、types in JavaScript | | 比較 | primitives vs objects JavaScript | | typeof | typeof JavaScript、JavaScript typeof operator | | 面接 | JavaScript types interview questions | | 種類 | キーワード | |------|----------| | 主要 | JavaScript value vs reference、pass by reference JavaScript | | とは | what is pass by value in JavaScript | | どのように機能するか | how does JavaScript pass objects | | 比較 | value types vs reference types JavaScript | | コピー | how to copy objects JavaScript、deep copy JavaScript | | 種類 | キーワード | |------|----------| | 主要 | JavaScript type coercion、type conversion JavaScript | | とは | what is type coercion in JavaScript | | どのように機能するか | how does type coercion work | | 暗黙的 | implicit type conversion JavaScript | | 明示的 | explicit type conversion JavaScript | | 面接 | type coercion interview questions | | 種類 | キーワード | |------|----------| | 主なキーワード | JavaScript の等価性、JavaScript の == と === | | とは | == と === の違いとは | | 比較 | JavaScript における緩い等価性と厳密な等価性 | | ベストプラクティス | == と === はいつ使うべきか | | 面接 | JavaScript の等価性に関する面接の質問 | | 種類 | キーワード | |------|----------| | 主なキーワード | JavaScript のクロージャ、JavaScript のスコープ | | とは | JavaScript のクロージャとは、スコープとは | | 仕組み | クロージャの仕組み、スコープの仕組み | | 種類 | JavaScript のスコープの種類、レキシカルスコープ | | 用途 | クロージャの用途、クロージャを使う理由 | | 面接 | JavaScript のクロージャに関する面接の質問 | | 種類 | キーワード | |------|----------| | 主なキーワード | JavaScript のイベントループ、JavaScript のイベントループ | | とは | JavaScript のイベントループとは | | 仕組み | イベントループの仕組み | | 図解 | イベントループの視覚化、イベントループの解説 | | 関連 | コールスタックとイベントループ、JavaScript のタスクキュー | | 面接 | イベントループに関する面接の質問 | | 種類 | キーワード | |------|----------| | 主なキーワード | JavaScript の Promise、JavaScript における Promise | | とは | JavaScript の Promise とは | | 方法 | Promise の使い方、Promise のチェーン方法 | | メソッド | Promise.all、Promise.race、Promise.allSettled | | エラー | Promise のエラー処理、Promise の catch | | 比較 | Promise とコールバック、Promise と async await | | 種類 | キーワード | |------|----------| | 主なキーワード | JavaScript の async await、JavaScript の async await | | とは | JavaScript の async await とは | | 方法 | async await の使い方、async await のチュートリアル | | エラー | async await のエラー処理、async の try catch | | 比較 | async await と Promise | | 面接 | async await に関する面接の質問 | | 種類 | キーワード | |------|----------| | 主なキーワード | JavaScript の this キーワード、JavaScript の this | | とは | JavaScript の this とは | | 仕組み | JavaScript における this の仕組み | | バインディング | JavaScript の call、apply、bind、this のバインディング | | アロー関数 | アロー関数における this | | 面接 | this キーワードに関する面接の質問 | | 種類 | キーワード | |------|----------| | 主なキーワード | JavaScript のプロトタイプ、JavaScript のプロトタイプチェーン | | とは | JavaScript のプロトタイプとは | | 仕組み | プロトタイプ継承の仕組み | | チェーン | プロトタイプチェーンの解説 | | 比較 | JavaScript のプロトタイプとクラス | | 面接 | JavaScript のプロトタイプに関する面接の質問 | | 種類 | キーワード | |------|----------| | 主なキーワード | JavaScript の DOM、JavaScript の DOM 操作 | | とは | JavaScript の DOM とは | | 方法 | JavaScript で DOM を操作する方法 | | メソッド | getElementById、JavaScript の querySelector | | イベント | JavaScript の DOM イベント、イベントリスナー | | パフォーマンス | DOM のパフォーマンス、仮想 DOM と DOM | | 種類 | キーワード | |------|----------| | 主なキーワード | JavaScript の高階関数、高階関数 | | とは | 高階関数とは | | 例 | JavaScript の map、filter、reduce | | 方法 | 高階関数の使い方 | | 面接 | 高階関数に関する面接 | | 種類 | キーワード | |------|----------| | 主なキーワード | JavaScript の再帰、JavaScript における再帰 | | とは | JavaScript における再帰とは | | 方法 | 再帰関数の書き方 | | 例 | JavaScript の再帰の例 | | 比較 | JavaScript の再帰と反復の比較 | | 面接 | 再帰に関する面接の質問 |

監査チェックリスト

タイトルタグのチェックリスト(4 点)
#チェック項目点数確認方法
150~60 文字1title フロントマターの文字数を数えます
2前半に主要キーワードがある1概念名が前半にあることを確認します
3「in JavaScript」で終わる1タイトルの末尾を確認します
4魅力的なフックが含まれている1読者に価値やメリットを提示していることを確認します

採点:

  • 4/4:✅ 優秀
  • 3/4:⚠️ 良好。多少の改善が可能です
  • 0-2/4:❌ 大幅な改善が必要です

タイトルの形式:

[Concept]: [What You'll Understand] in JavaScript

良い例:

概念タイトル(文字数)
クロージャ"Closures: How Functions Remember Their Scope in JavaScript"(58 文字)
イベントループ"Event Loop: How Async Code Actually Runs in JavaScript"(54 文字)
Promise"Promises: Handling Async Operations in JavaScript"(49 文字)
DOM"DOM: How Browsers Represent Web Pages in JavaScript"(51 文字)

悪い例:

問題悪いタイトルより良いタイトル
短すぎる"Closures""Closures: How Functions Remember Their Scope in JavaScript"
長すぎる"Understanding JavaScript Closures and How They Work with Examples"(66 文字)"Closures: How Functions Remember Their Scope in JavaScript"(58 文字)
フックがない"JavaScript Closures""Closures: How Functions Remember Their Scope in JavaScript"
"JavaScript" がない"Understanding Closures and Scope"末尾に "in JavaScript" を追加します

メタディスクリプションのチェックリスト(4 点)
#チェック項目点数確認方法
1150~160 文字1description フロントマターの文字数を数えます
2行動を表す語で始まる1「Learn」「Understand」「Discover」(「Master」は不可)
3主要キーワードを含む1概念名と「JavaScript」が含まれていることを確認します
4具体的な価値を提示している1読者が学べる内容を列挙します

ディスクリプションの形式:

[Action word] [what it is] in JavaScript. [Specific things they'll learn]: [topic 1], [topic 2], and [topic 3].

良い例:

概念ディスクリプション
クロージャ"Learn JavaScript closures and how functions remember their scope. Covers lexical scoping, practical use cases, memory considerations, and common closure patterns."(159 文字)
イベントループ"Discover how the JavaScript event loop manages async code execution. Understand the call stack, task queue, microtasks, and why JavaScript is single-threaded but non-blocking."(176 文字。短くしてください!)
DOM"Learn how the DOM works in JavaScript. Understand how browsers represent HTML as a tree, select and manipulate elements, traverse nodes, and optimize rendering."(162 文字)

悪い例:

問題悪いディスクリプション修正方法
短すぎる"Learn about closures"具体的な内容を加えて150~160文字にします
「Master」で始まる"Master JavaScript closures...""Learn JavaScript closures..."
抽象的すぎる"A guide to closures"扱う具体的なトピックを列挙します
キーワードがない"Functions can remember things"「closures」と「JavaScript」を含めます

キーワード配置チェックリスト(5ポイント)
#チェック項目ポイント確認方法
1タイトルに主要キーワードが含まれている1フロントマターの title を確認
2メタディスクリプションに主要キーワードが含まれている1フロントマターの description を確認
3最初の100語以内に主要キーワードが含まれている1冒頭の段落を確認
4少なくとも1つのH2見出しにキーワードが含まれている1すべての ## 見出しを確認
5キーワードを不自然に詰め込んでいない1コンテンツが自然に読めることを確認

キーワード配置マップ:

┌─────────────────────────────────────────────────────────────────────────┐
│                         KEYWORD PLACEMENT                                │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                          │
│  🔴 CRITICAL (Must have keyword)                                         │
│  ─────────────────────────────────                                       │
│  • title frontmatter                                                     │
│  • description frontmatter                                               │
│  • First paragraph (within 100 words)                                    │
│  • At least one H2 heading                                               │
│                                                                          │
│  🟡 RECOMMENDED (Include naturally)                                      │
│  ──────────────────────────────────                                      │
│  • "What you'll learn" Info box                                          │
│  • H3 subheadings                                                        │
│  • Key Takeaways section                                                 │
│  • First sentence after major H2s                                        │
│                                                                          │
│  ⚠️ AVOID                                                                │
│  ─────────                                                               │
│  • Same phrase >4 times per 1000 words                                   │
│  • Forcing keywords where pronouns work better                           │
│  • Awkward sentence structures to fit keywords                           │
│                                                                          │
└─────────────────────────────────────────────────────────────────────────┘

コンテンツ構成チェックリスト(6ポイント)
#チェック項目ポイント確認方法
1問いかけで始まっている1最初の段落で読者の関心を引く質問をしている
2最初の200語以内にコード例がある1冒頭に簡単な例がある
3「学べること」の情報ボックスがある1冒頭の後に <Info> コンポーネントがある
4段落が短い(2〜4文)1長いブロックがないかコンテンツを確認
51,500語以上ある1語数を確認
6重要な用語が初出時に太字になっている1重要な用語に **bold** を使用

コンテンツ構成テンプレート:

┌─────────────────────────────────────────────────────────────────────────┐
│                       IDEAL PAGE STRUCTURE                               │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                          │
│  1. QUESTION HOOK (First 50 words)                                       │
│     "How does JavaScript...? Why do...?"                                 │
│                                                                          │
│  2. BRIEF ANSWER + CODE EXAMPLE (Words 50-200)                           │
│     Quick explanation + simple code demo                                 │
│                                                                          │
│  3. "WHAT YOU'LL LEARN" INFO BOX                                         │
│     5-7 bullet points                                                    │
│                                                                          │
│  4. PREREQUISITES WARNING (if applicable)                                │
│     Link to required prior concepts                                      │
│                                                                          │
│  5. MAIN CONTENT SECTIONS (H2s)                                          │
│     Each H2 answers a question or teaches a concept                      │
│     Include code examples, diagrams, tables                              │
│                                                                          │
│  6. COMMON MISTAKES / GOTCHAS SECTION                                    │
│     What trips people up                                                 │
│                                                                          │
│  7. KEY TAKEAWAYS                                                        │
│     8-10 numbered points summarizing everything                          │
│                                                                          │
│  8. TEST YOUR KNOWLEDGE                                                  │
│     5-6 Q&A accordions                                                   │
│                                                                          │
│  9. RELATED CONCEPTS                                                     │
│     4 cards linking to related topics                                    │
│                                                                          │
│  10. RESOURCES (Reference, Articles, Videos)                             │
│      MDN links, curated articles, videos                                 │
│                                                                          │
└─────────────────────────────────────────────────────────────────────────┘

フィーチャードスニペットチェックリスト(4ポイント)
#チェック項目ポイント確認方法
1「Xとは何か」に40〜60語の定義がある1「What is」H2の後に続く最初の段落の語数を数える
2質問形式のH2見出しが少なくとも1つある1「What is」「How does」「Why」のH2見出しがあるか確認
3「方法」のコンテンツに番号付きの手順がある1<Steps> コンポーネントまたは番号付きリストを使用
4比較表がある(該当する場合)1「X vs Y」のコンテンツに表がある

フィーチャードスニペットのパターン:

┌─────────────────────────────────────────────────────────────────────────┐
│                     FEATURED SNIPPET FORMATS                             │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                          │
│  QUERY TYPE             WINNING FORMAT         YOUR CONTENT              │
│  ───────────            ──────────────         ────────────              │
│                                                                          │
│  "What is X"            Paragraph              40-60 word definition     │
│                                                after H2, bold keyword    │
│                                                                          │
│  "How to X"             Numbered list          <Steps> component or      │
│                                                1. 2. 3. markdown         │
│                                                                          │
│  "X vs Y"               Table                  | Feature | X | Y |       │
│                                                comparison table          │
│                                                                          │
│  "Types of X"           Bullet list            - **Type 1** — desc       │
│                                                - **Type 2** — desc       │
│                                                                          │
│  "[X] examples"         Code block             ```javascript             │
│                         + explanation          // example code           │
│                                                                          │
└─────────────────────────────────────────────────────────────────────────┘

定義段落の例(40〜60語):

## What is a Closure in JavaScript?

A **closure** is a function that retains access to variables from its outer 
(enclosing) scope, even after that outer function has finished executing. 
Closures are created every time a function is created in JavaScript, allowing 
inner functions to "remember" and access their lexical environment.

(これは52語です。フィーチャードスニペットに最適です)


内部リンクチェックリスト(4ポイント)
#チェック項目ポイント確認方法
1本文内で関連する概念に3〜5件リンクしている1本文中の /concepts/ リンク数を数える
2内容がわかるアンカーテキストを使用している1「ここをクリック」「ここ」「これ」を使っていない
3警告ボックスに前提条件が記載されている1冒頭にリンク付きの <Warning> がある
4関連する概念のセクションにカードが4枚ある1最後に4枚のカードを含む <CardGroup> がある

適切なアンカーテキスト:

❌ 不適切✓ 適切
「ここをクリック」「イベントループの概念」
「ここ」「JavaScriptのクロージャ」
「この記事」「Promisesのガイド」
「続きを読む」「コールスタックを理解する」

リンク配置の戦略:


<Warning>
**Prerequisite:** This guide assumes you understand [Promises](/concepts/promises) 
and the [Event Loop](/concepts/event-loop). Read those first if needed.
</Warning>


When the callback finishes, it's added to the task queue — managed by 
the [event loop](/concepts/event-loop).


<CardGroup cols={2}>
  <Card title="Promises" icon="handshake" href="/concepts/promises">
    async/await is built on top of Promises
  </Card>
</CardGroup>

テクニカル SEO チェックリスト(3 点)
#チェック項目点数確認方法
11 ページにつき H1 は 1 つ1# 見出し(タイトル)が 1 つだけであること
2URL スラッグにキーワードが含まれている1/concepts/topic-1 ではなく /concepts/closures
3孤立ページがない1少なくとも 1 つの他のページからリンクされていること

H1 のルール:

すべてのページには、H1(メインタイトル)が必ず 1 つだけ存在する必要があります。これは SEO にとって極めて重要です:

  • H1 は、そのページが何について書かれているかを Google に伝えます
  • H1 が複数あると、検索エンジンがページ階層を誤解します
  • その他の見出しはすべて H2(##)以下にする必要があります
  • H1 には主要キーワードを含める必要があります
# Closures in JavaScript     ← This is your H1 (only one!)

## What is a Closure?        ← H2 for sections
### Lexical Scope            ← H3 for subsections
## How Closures Work         ← Another H2

URL/スラッグのベストプラクティス:

✅ 良い❌ 悪い
/concepts/closures/concepts/c1
/concepts/event-loop/concepts/topic-7
/concepts/type-coercion/concepts/abc123
/concepts/async-await/concepts/async_await

スラッグのルール:

  • 主要キーワードを含める — URL に概念名を含める必要があります
  • アンダースコアではなくハイフンを使用する — event_loop ではなく event-loop
  • スラッグは短く読みやすく保つ — 50 文字以内
  • UUID、データベース ID、ランダムな文字列は使用しない
  • 小文字のみ — /concepts/Event-Loop ではなく /concepts/event-loop

孤立ページの検出:

孤立ページとは、他のページから内部リンクが 1 つも張られていないページです。これは以下の理由で SEO に悪影響を与えます:

  • Google がそのページを頻繁に発見・クロールできない可能性があります
  • サイト構造にとってそのページが重要でないというシグナルになります
  • ユーザーが自然にそのページへ移動できません
  • リンクエクイティがそのページに流れません

孤立ページを確認する方法:

  1. コードベースでこの概念へのリンクを検索します: grep -r "/concepts/[slug]" docs/
  2. 少なくとも 1 つの他の概念の「Related Concepts」セクションに掲載されていることを確認します
  3. このページを前提条件として挙げているページが、適切にリンクを張り返していることを確認します
  4. ナビゲーション(docs.json)に含まれていることを確認します

孤立ページの修正:

  • 関連ページの「Related Concepts」CardGroup にこの概念を追加します
  • 関連する概念の本文コンテンツ内で自然にリンクします
  • 双方向リンクを確保します(A が B にリンクしている場合、関連する箇所で B からも A にリンクを張り返す必要があります)

スコアリングシステム

合計点数の上限: 30
カテゴリ最大点数
タイトルタグ4
メタディスクリプション4
キーワードの配置5
コンテンツ構造6
強調スニペット4
内部リンク4
テクニカル SEO3
合計30
スコアの解釈
スコア割合ステータス対応
27-3090-100%✅ 優秀公開可能
23-2675-89%⚠️ 良好軽微な最適化が必要
17-2255-74%⚠️ 普通いくつかの改善が必要
0-16<55%❌ 不良大幅な作業が必要

よくある SEO の問題と修正方法

タイトルタグの問題
問題現状修正
短すぎる(50 文字未満)「Closures」(8)「Closures: How Functions Remember Their Scope in JavaScript」(58)
長すぎる(60 文字超)「Understanding JavaScript Closures and How They Work with Examples」(66)「Closures: How Functions Remember Their Scope in JavaScript」(58)
キーワードが欠けている「Understanding Scope」概念名を追加: 「Closures: Understanding Scope in JavaScript」
フックがない「JavaScript Closures」ベネフィットを追加: 「Closures: How Functions Remember Their Scope in JavaScript」
「JavaScript」が欠けている「Closures Explained」末尾に追加: 「Closures Explained in JavaScript」
メタディスクリプションの問題
問題現在の内容修正方法
短すぎる(<120 文字)"Learn about closures"(20)具体的な内容を加えて、150~160 文字にします
長すぎる(>160 文字)[途中で切り捨てられる]必要な情報に絞り、思い切って編集します
「Master」で始まる"Master JavaScript closures...""Learn JavaScript closures..."
キーワードがない"Functions that remember""closures" と "JavaScript" を含めます
曖昧すぎる"A guide to closures"「X、Y、Z を解説」のように具体的なトピックを挙げます
コンテンツ構成の問題
問題修正方法
質問形式の導入がない「How does...?」または「Why...?」で始めます
コード例が後半にある簡単な例を最初の 200 語以内に移動します
Info ボックスがない「学べる内容」を記載した <Info> を追加します
段落が長い2~4 文のまとまりに分割します
1,500 語未満詳細、例、エッジケースを追加します
太字の用語がない重要な概念が初めて登場する箇所で太字にします
強調スニペットの問題
問題修正方法
「What is」の定義がない40~60 語の定義段落を追加します
定義が長すぎる40~60 語に簡潔化します
質問形式の H2 がない「What is X?」または「How does X work?」の H2 を追加します
手順に番号がない<Steps> または番号付き Markdown を使います
比較表がない「X vs Y」のセクションに表を追加します
内部リンクの問題
問題修正方法
内部リンクがない関連する概念へのリンクを 3~5 件追加します
アンカーテキストが不適切「click here」を説明的なテキストに置き換えます
前提条件がない前提条件へのリンクを含む <Warning> を追加します
Related Concepts が空関連トピックにリンクする Cards を 4 つ追加します
技術的な SEO の問題
問題修正方法
H1 タグが複数ある# 見出しはタイトルの 1 つだけにし、すべてのセクションには ## を使います
スラッグにキーワードがない概念名を含むファイル名に変更します(例:closures.mdx)
孤立ページになっている関連する概念ページの本文または Related Concepts セクションからリンクを追加します
スラッグにアンダースコアがあるevent_loop.mdx ではなく、event-loop.mdx のようにハイフンを使います
スラッグに大文字があるAsync-Await.mdx ではなく、async-await.mdx のように小文字のみを使います
スラッグが長すぎるunderstanding-javascript-closures-and-scope.mdx ではなく、closures.mdx のように主要なキーワードに短縮します

SEO 監査レポートのテンプレート

このテンプレートを使用して、調査結果を記録します。

# SEO Audit Report: [Concept Name]

**File:** `/docs/concepts/[slug].mdx`
**Date:** YYYY-MM-DD
**Auditor:** [Name/Claude]
**Overall Score:** XX/30 (XX%)
**Status:** ✅ Excellent | ⚠️ Needs Work | ❌ Poor

---

## Score Summary

| Category | Score | Status |
|----------|-------|--------|
| Title Tag | X/4 | ✅/⚠️/❌ |
| Meta Description | X/4 | ✅/⚠️/❌ |
| Keyword Placement | X/5 | ✅/⚠️/❌ |
| Content Structure | X/6 | ✅/⚠️/❌ |
| Featured Snippets | X/4 | ✅/⚠️/❌ |
| Internal Linking | X/4 | ✅/⚠️/❌ |
| Technical SEO | X/3 | ✅/⚠️/❌ |
| **Total** | **X/30** | **STATUS** |

---

## Target Keywords

**Primary Keyword:** [e.g., "JavaScript closures"]
**Secondary Keywords:**
- [keyword 1]
- [keyword 2]
- [keyword 3]

**Search Intent:** Informational / How-to / Comparison

---

## Title Tag Analysis

**Current Title:** "[current title from frontmatter]"
**Character Count:** XX characters
**Score:** X/4

| Check | Status | Notes |
|-------|--------|-------|
| Length 50-60 chars | ✅/❌ | XX characters |
| Primary keyword in first half | ✅/❌ | [notes] |
| Ends with "in JavaScript" | ✅/❌ | [notes] |
| Contains compelling hook | ✅/❌ | [notes] |

**Issues Found:** [if any]

**Recommended Title:** "[suggested title]" (XX chars)

---

## Meta Description Analysis

**Current Description:** "[current description from frontmatter]"
**Character Count:** XX characters
**Score:** X/4

| Check | Status | Notes |
|-------|--------|-------|
| Length 150-160 chars | ✅/❌ | XX characters |
| Starts with action word | ✅/❌ | Starts with "[word]" |
| Contains primary keyword | ✅/❌ | [notes] |
| Promises specific value | ✅/❌ | [notes] |

**Issues Found:** [if any]

**Recommended Description:** "[suggested description]" (XX chars)

---

## Keyword Placement Analysis

**Score:** X/5

| Location | Present | Notes |
|----------|---------|-------|
| Title | ✅/❌ | [notes] |
| Meta description | ✅/❌ | [notes] |
| First 100 words | ✅/❌ | Found at word XX |
| H2 heading | ✅/❌ | Found in: "[H2 text]" |
| Natural reading | ✅/❌ | [no stuffing / stuffing detected] |

**Missing Keyword Placements:**
- [ ] [Location where keyword should be added]

---

## Content Structure Analysis

**Word Count:** X,XXX words
**Score:** X/6

| Check | Status | Notes |
|-------|--------|-------|
| Question hook opening | ✅/❌ | [notes] |
| Code in first 200 words | ✅/❌ | Code appears at word XX |
| "What you'll learn" box | ✅/❌ | [present/missing] |
| Short paragraphs | ✅/❌ | [notes on paragraph length] |
| 1,500+ words | ✅/❌ | X,XXX words |
| Bolded key terms | ✅/❌ | [notes] |

**Structure Issues:**
- [ ] [Issue and recommendation]

---

## Featured Snippet Analysis

**Score:** X/4

| Check | Status | Notes |
|-------|--------|-------|
| 40-60 word definition | ✅/❌ | Currently XX words |
| Question-format H2 | ✅/❌ | Found: "[H2]" / Not found |
| Numbered steps | ✅/❌ | [notes] |
| Comparison tables | ✅/❌/N/A | [notes] |

**Snippet Opportunities:**

1. **"What is [concept]" snippet:**
   - Current definition: XX words
   - Action: [Expand to/Trim to] 40-60 words

2. **"How to [action]" snippet:**
   - Action: [Add Steps component / Already present]

---

## Internal Linking Analysis

**Score:** X/4

| Check | Status | Notes |
|-------|--------|-------|
| 3-5 internal links in body | ✅/❌ | Found X links |
| Descriptive anchor text | ✅/❌ | [notes] |
| Prerequisites in Warning | ✅/❌ | [present/missing] |
| Related Concepts section | ✅/❌ | X cards present |

**Current Internal Links:**
1. [Anchor text] → `/concepts/[slug]`
2. [Anchor text] → `/concepts/[slug]`

**Recommended Links to Add:**
- Link to [concept] in [section/context]
- Link to [concept] in [section/context]

**Bad Anchor Text Found:**
- Line XX: "click here" → change to "[descriptive text]"

---

## Technical SEO Analysis

**Score:** X/3

| Check | Status | Notes |
|-------|--------|-------|
| Single H1 per page | ✅/❌ | [Found X H1 tags] |
| URL slug contains keyword | ✅/❌ | Current: `/concepts/[slug]` |
| Not an orphan page | ✅/❌ | Linked from X other pages |

**H1 Tags Found:**
- Line XX: `# [H1 text]` ← Should be the only one
- [List any additional H1s that need to be changed to H2]

**Slug Analysis:**
- Current slug: `[slug].mdx`
- Contains keyword: ✅/❌
- Format correct: ✅/❌ (lowercase, hyphens, no special chars)

**Incoming Links Found:**
1. `/concepts/[other-concept]` → Links to this page in [section]
2. `/concepts/[other-concept]` → Links in Related Concepts

**If orphan page, add links from:**
- [Suggested concept page] in [section]
- [Suggested concept page] in Related Concepts

---

## Priority Fixes

### High Priority (Do First)

1. **[Issue]**
   - Current: [what it is now]
   - Recommended: [what it should be]
   - Impact: [why this matters]

2. **[Issue]**
   - Current: [what it is now]
   - Recommended: [what it should be]
   - Impact: [why this matters]

### Medium Priority

1. **[Issue]**
   - Recommendation: [fix]

### Low Priority (Nice to Have)

1. **[Issue]**
   - Recommendation: [fix]

---

## Competitive Analysis (Optional)

**Top-Ranking Pages for "[primary keyword]":**

1. **[Competitor 1 - URL]**
   - What they do well: [observation]
   - Word count: ~X,XXX

2. **[Competitor 2 - URL]**
   - What they do well: [observation]
   - Word count: ~X,XXX

**Our Advantages:**
- [What we do better]

**Gaps to Fill:**
- [What we're missing that competitors have]

---

## Implementation Checklist

After making fixes, verify:

- [ ] Title is 50-60 characters with keyword and hook
- [ ] Description is 150-160 characters with action word and value
- [ ] Primary keyword in title, description, first 100 words, and H2
- [ ] Opens with question hook
- [ ] Code example in first 200 words
- [ ] "What you'll learn" Info box present
- [ ] Paragraphs are 2-4 sentences
- [ ] 1,500+ words total
- [ ] Key terms bolded on first mention
- [ ] 40-60 word definition for featured snippet
- [ ] At least one question-format H2
- [ ] 3-5 internal links with descriptive anchor text
- [ ] Prerequisites in Warning box (if applicable)
- [ ] Related Concepts section has 4 cards
- [ ] Single H1 per page (title only)
- [ ] URL slug contains primary keyword
- [ ] Page linked from at least one other concept page
- [ ] All fixes implemented and verified

---

## Final Recommendation

**Ready to Publish:** ✅ Yes / ❌ No - [reason]

**Next Review Date:** [When to re-audit, e.g., "3 months" or "after major update"]

クイックリファレンス

文字数
要素理想的な長さ
タイトル50~60 文字
メタディスクリプション150~160 文字
定義段落40~60 語
キーワード密度
  • 1,000 語あたり、完全一致するフレーズの使用は 3~4 回までにします
  • バリエーションを自然に使います(例:「closures」「closure」「JavaScript closures」)
コンテンツの長さ
長さ評価
<1,000 語内容が薄すぎます — 詳細を追加します
1,000~1,500最低限の実用水準
1,500~2,500良好
2,500~4,000非常に優れている
>4,000分割を検討します

まとめ

SEO のために概念ページを監査する際は、次の手順に従います。

  1. ターゲットキーワードを特定する — その概念のキーワードクラスターを使用します
  2. タイトルタグを確認する — 50~60 文字、キーワードを先頭に置き、関心を引く内容にして、「JavaScript」で終わらせます
  3. メタディスクリプションを確認する — 150~160 文字、行動を促す語句、キーワード、具体的な価値を含めます
  4. キーワードの配置を確認する — タイトル、説明文、最初の 100 語、H2 を確認します
  5. コンテンツ構成を監査する — 質問形式の導入、早めのコード例、Info ボックス、短い段落を確認します
  6. 強調スニペット向けに最適化する — 40~60 語の定義、番号付き手順、表を用意します
  7. 内部リンクを確認する — 3~5 件のリンク、適切なアンカーテキスト、Related Concepts セクションを確認します
  8. レポートを作成する — スコア、問題、優先順位を付けた修正内容を記録します

覚えておいてください: SEO は検索エンジンの攻略ではなく、必要な開発者がコンテンツを見つけやすくすることです。最適化のすべてが、読者にとっての使いやすさも向上させるようにしましょう。

コメント