К основному содержанию
скилл Claude Code CX Codex Cursor GitHub Copilot

seo-review — скилл для Claude Code: что делает и как установить

Проводит SEO-аудит обучающих страниц по JavaScript и проверяет шансы попасть в блоки с ответами поисковиков.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add leonardomso/33-js-concepts --skill seo-review -a claude-code
Открыть на GitHub

Что делает seo-review

Скилл запускает аудит документации по пяти шагам. Сначала он формирует кластер поисковых запросов под конкретную тему — от базовых определений до вопросов для собеседований. Затем агент проверяет онпейдж-элементы, сниппеты и готовит итоговый отчёт.

В репозитории есть готовые матрицы ключевых фраз для тем вроде Call Stack, Event Loop и промисов. Скилл жёстко привязан к структуре проекта 33 JavaScript Concepts. По этой причине для обычных блогов шаблоны запросов придётся составлять вручную.

Какие задачи решает

  • составить кластер поисковых запросов для темы по JavaScript
  • проверить готовность статьи к получению featured snippet
  • найти пробелы во внутренней перелинковке страниц концепций
  • сформировать отчёт по онпейдж-SEO перед публикацией материала

Примеры запросов агенту

  • Проведи seo-review для новой статьи о Promise в JavaScript
  • Сделай аудит страницы про Event Loop по шагам seo-review
  • Собери ключевые слова и проверь сниппеты для темы closures

Как установить seo-review

1Через Skills CLI (Vercel)

npx skills add leonardomso/33-js-concepts --skill seo-review -a claude-code

2Вручную: положить файлы

~/.claude/skills/seo-review/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/seo-review/

Из того же набора6

Весь набор →
test-writer leonardomso Генерирует тесты Vitest для примеров кода из страниц документации по JavaScript. Помогает проверить точность примеров перед публикацией. Claude Code CX Codex Cursor +1 352установок fact-check leonardomso Проверяет техническую точность обучающих статей по JavaScript: сверяет примеры кода, документацию MDN и спецификацию ECMAScript. Claude Code CX Codex Cursor +1 331установок concept-workflow leonardomso Скилл координирует создание обучающих страниц по JavaScript от подбора материалов до тестов и проверки фактов. Пригодится для наполнения базы знаний или репозитория 33-js-concepts. Claude Code CX Codex Cursor +1 322установок resource-curator leonardomso Скилл находит, проверяет и упорядочивает учебные материалы для справочников по JavaScript. Пригодится при наполнении страниц тем или чистке старых ссылок. Claude Code CX Codex Cursor +1 319установок write-concept leonardomso Пишет и проверяет страницы понятий JavaScript для 33 JavaScript Concepts. Нужен при создании, переработке и редактуре материалов в /docs/concepts/. Claude Code CX Codex Cursor +1 305установок

Похожие

seo-image-gen AgriciDaniel Генерирует OG-картинки, обложки статей, фото товаров и инфографику через Gemini. Пригодится, когда SEO-изображение нужно создать прямо из агентной среды. Claude Code CX Codex Cursor +1 6 000установок seo-sxo AgriciDaniel Скилл сравнивает тип целевой страницы с типами страниц в топ-10 выдачи и ищет разрыв между тем, что продвигает Google, и тем, что видит пользователь. Claude Code CX Codex Cursor +1 5 600установок seo-flow AgriciDaniel Скилл интегрирует FLOW-фреймворк — структурированный подход к SEO с 41 готовым промптом. Даёт stage-specific подсказки на каждом этапе: от поиска ключевиков до конверсий. Claude Code CX Codex Cursor +1 5 400установок seo-report every-app Собирает выводы SEO-исследований в автономный HTML-отчёт и сохраняет его в проект через save_report. Пригодится для оформления аудитов и выгрузки в PDF. Claude Code CX Codex Cursor +1 1 900установок audit-website squirrelscan Запускает аудит сайта через утилиту squirrel, находит проблемы SEO, производительности и безопасности, а затем помогает пошагово править код проекта. Claude Code CX Codex Cursor +1 73 900установок gtm-positioning-strategy официальный Smit Patel (https://linkedin.com/in/smitkpatel) Скилл помогает найти отличия продукта от конкурентов и проверить, понятны ли покупателям формулировки позиционирования. Пригодится перед сменой сообщений или ребрендингом. GitHub Copilot 1 900установок seo-audit coreyhaines31 Диагностирует технические ошибки сайта, проблемы с индексацией и метатегами. Помогает понять, почему просел органический трафик в Google. Claude Code CX Codex Cursor +1 236 800установок brand claudekit Скилл держит голос бренда, визуальные правила и дизайн-токены в одном файле, а потом раздаёт их промптам агента и вашему CSS. Claude Code CX Codex Cursor +1 39 500установок

Вопросы о seo-review

Как установить seo-review в Claude Code?

Выполните в терминале команду npx skills add leonardomso/33-js-concepts --skill seo-review -a claude-code.

Для чего нужен скилл seo-review?

Он помогает проверить техническую и текстовую оптимизацию страниц перед публикацией, чтобы улучшить позиции в поиске по запросам разработчиков.

Какие шаги включает методология аудита?

Проверка состоит из пяти этапов: подбор кластера запросов, аудит онпейдж-элементов, оптимизация под сниппеты, проверка внутренних ссылок и составление отчёта.

Исходный текст

SKILL.md · MIT
---
name: seo-review
description: Perform a focused SEO audit on JavaScript concept pages to maximize search visibility, featured snippet optimization, and ranking potential
---

# Skill: SEO Audit for Concept Pages

Use this skill to perform a focused SEO audit on concept documentation pages for the 33 JavaScript Concepts project. The goal is to maximize search visibility for JavaScript developers.

## When to Use

- Before publishing a new concept page
- When optimizing underperforming pages
- Periodic content audits
- After major content updates
- When targeting new keywords

## Goal

Each concept page should rank for searches like:
- "what is [concept] in JavaScript"
- "how does [concept] work in JavaScript"
- "[concept] JavaScript explained"
- "[concept] JavaScript tutorial"
- "[concept] JavaScript example"

---

## SEO Audit Methodology

Follow these five steps for a complete SEO audit.

### Step 1: Identify Target Keywords

Before auditing, identify the keyword cluster for the concept.

#### Keyword Cluster Template

| Type | Pattern | Example (Closures) |
|------|---------|-------------------|
| **Primary** | [concept] JavaScript | closures JavaScript |
| **What is** | what is [concept] in JavaScript | what is a closure in JavaScript |
| **How does** | how does [concept] work | how do closures work |
| **How to** | how to use/create [concept] | how to use closures |
| **Why** | why use [concept] | why use closures JavaScript |
| **Examples** | [concept] examples | closure examples JavaScript |
| **vs** | [concept] vs [related] | closures vs scope |
| **Interview** | [concept] interview questions | closure interview questions |

### Step 2: On-Page SEO Audit

Check all on-page SEO elements systematically.

### Step 3: Featured Snippet Optimization

Verify content is structured to win featured snippets.

### Step 4: Internal Linking Audit

Check the internal link structure.

### Step 5: Generate Report

Document findings using the report template.

---

## Keyword Clusters by Concept

Use these pre-built keyword clusters for each concept.

<AccordionGroup>
  <Accordion title="Call Stack">
    | Type | Keywords |
    |------|----------|
    | Primary | JavaScript call stack, call stack JavaScript |
    | What is | what is the call stack in JavaScript |
    | How does | how does the call stack work |
    | Error | maximum call stack size exceeded, stack overflow JavaScript |
    | Visual | call stack visualization, call stack explained |
    | Interview | call stack interview questions JavaScript |
  </Accordion>

  <Accordion title="Primitive Types">
    | Type | Keywords |
    |------|----------|
    | Primary | JavaScript primitive types, primitives in JavaScript |
    | What are | what are primitive types in JavaScript |
    | List | JavaScript data types, types in JavaScript |
    | vs | primitives vs objects JavaScript |
    | typeof | typeof JavaScript, JavaScript typeof operator |
    | Interview | JavaScript types interview questions |
  </Accordion>

  <Accordion title="Value vs Reference Types">
    | Type | Keywords |
    |------|----------|
    | Primary | JavaScript value vs reference, pass by reference JavaScript |
    | What is | what is pass by value in JavaScript |
    | How does | how does JavaScript pass objects |
    | Comparison | value types vs reference types JavaScript |
    | Copy | how to copy objects JavaScript, deep copy JavaScript |
  </Accordion>

  <Accordion title="Type Coercion">
    | Type | Keywords |
    |------|----------|
    | Primary | JavaScript type coercion, type conversion JavaScript |
    | What is | what is type coercion in JavaScript |
    | How does | how does type coercion work |
    | Implicit | implicit type conversion JavaScript |
    | Explicit | explicit type conversion JavaScript |
    | Interview | type coercion interview questions |
  </Accordion>

  <Accordion title="Equality Operators">
    | Type | Keywords |
    |------|----------|
    | Primary | JavaScript equality, == vs === JavaScript |
    | What is | what is the difference between == and === |
    | Comparison | loose equality vs strict equality JavaScript |
    | Best practice | when to use == vs === |
    | Interview | JavaScript equality interview questions |
  </Accordion>

  <Accordion title="Scope and Closures">
    | Type | Keywords |
    |------|----------|
    | Primary | JavaScript closures, JavaScript scope |
    | What is | what is a closure in JavaScript, what is scope |
    | How does | how do closures work, how does scope work |
    | Types | types of scope JavaScript, lexical scope |
    | Use cases | closure use cases, why use closures |
    | Interview | closure interview questions JavaScript |
  </Accordion>

  <Accordion title="Event Loop">
    | Type | Keywords |
    |------|----------|
    | Primary | JavaScript event loop, event loop JavaScript |
    | What is | what is the event loop in JavaScript |
    | How does | how does the event loop work |
    | Visual | event loop visualization, event loop explained |
    | Related | call stack event loop, task queue JavaScript |
    | Interview | event loop interview questions |
  </Accordion>

  <Accordion title="Promises">
    | Type | Keywords |
    |------|----------|
    | Primary | JavaScript Promises, Promises in JavaScript |
    | What is | what is a Promise in JavaScript |
    | How to | how to use Promises, how to chain Promises |
    | Methods | Promise.all, Promise.race, Promise.allSettled |
    | Error | Promise error handling, Promise catch |
    | vs | Promises vs callbacks, Promises vs async await |
  </Accordion>

  <Accordion title="async/await">
    | Type | Keywords |
    |------|----------|
    | Primary | JavaScript async await, async await JavaScript |
    | What is | what is async await in JavaScript |
    | How to | how to use async await, async await tutorial |
    | Error | async await error handling, try catch async |
    | vs | async await vs Promises |
    | Interview | async await interview questions |
  </Accordion>

  <Accordion title="this Keyword">
    | Type | Keywords |
    |------|----------|
    | Primary | JavaScript this keyword, this in JavaScript |
    | What is | what is this in JavaScript |
    | How does | how does this work in JavaScript |
    | Binding | call apply bind JavaScript, this binding |
    | Arrow | this in arrow functions |
    | Interview | this keyword interview questions |
  </Accordion>

  <Accordion title="Prototypes">
    | Type | Keywords |
    |------|----------|
    | Primary | JavaScript prototype, prototype chain JavaScript |
    | What is | what is a prototype in JavaScript |
    | How does | how does prototype inheritance work |
    | Chain | prototype chain explained |
    | vs | prototype vs class JavaScript |
    | Interview | prototype interview questions JavaScript |
  </Accordion>

  <Accordion title="DOM">
    | Type | Keywords |
    |------|----------|
    | Primary | JavaScript DOM, DOM manipulation JavaScript |
    | What is | what is the DOM in JavaScript |
    | How to | how to manipulate DOM JavaScript |
    | Methods | getElementById, querySelector JavaScript |
    | Events | DOM events JavaScript, event listeners |
    | Performance | DOM performance, virtual DOM vs DOM |
  </Accordion>

  <Accordion title="Higher-Order Functions">
    | Type | Keywords |
    |------|----------|
    | Primary | JavaScript higher order functions, higher order functions |
    | What are | what are higher order functions |
    | Examples | map filter reduce JavaScript |
    | How to | how to use higher order functions |
    | Interview | higher order functions interview |
  </Accordion>

  <Accordion title="Recursion">
    | Type | Keywords |
    |------|----------|
    | Primary | JavaScript recursion, recursion in JavaScript |
    | What is | what is recursion in JavaScript |
    | How to | how to write recursive functions |
    | Examples | recursion examples JavaScript |
    | vs | recursion vs iteration JavaScript |
    | Interview | recursion interview questions |
  </Accordion>
</AccordionGroup>

---

## Audit Checklists

### Title Tag Checklist (4 points)

| # | Check | Points | How to Verify |
|---|-------|--------|---------------|
| 1 | Length 50-60 characters | 1 | Count characters in `title` frontmatter |
| 2 | Primary keyword in first half | 1 | Concept name appears early |
| 3 | Ends with "in JavaScript" | 1 | Check title ending |
| 4 | Contains compelling hook | 1 | Promises value/benefit to reader |

**Scoring:**
- 4/4: ✅ Excellent
- 3/4: ⚠️ Good, minor improvements possible
- 0-2/4: ❌ Needs significant work

**Title Formula:**
```
[Concept]: [What You'll Understand] in JavaScript
```

**Good Examples:**
| Concept | Title (with character count) |
|---------|------------------------------|
| Closures | "Closures: How Functions Remember Their Scope in JavaScript" (58 chars) |
| Event Loop | "Event Loop: How Async Code Actually Runs in JavaScript" (54 chars) |
| Promises | "Promises: Handling Async Operations in JavaScript" (49 chars) |
| DOM | "DOM: How Browsers Represent Web Pages in JavaScript" (51 chars) |

**Bad Examples:**
| Issue | Bad Title | Better Title |
|-------|-----------|--------------|
| Too short | "Closures" | "Closures: How Functions Remember Their Scope in JavaScript" |
| Too long | "Understanding JavaScript Closures and How They Work with Examples" (66 chars) | "Closures: How Functions Remember Their Scope in JavaScript" (58 chars) |
| No hook | "JavaScript Closures" | "Closures: How Functions Remember Their Scope in JavaScript" |
| Missing "JavaScript" | "Understanding Closures and Scope" | Add "in JavaScript" at end |

---

### Meta Description Checklist (4 points)

| # | Check | Points | How to Verify |
|---|-------|--------|---------------|
| 1 | Length 150-160 characters | 1 | Count characters in `description` frontmatter |
| 2 | Starts with action word | 1 | "Learn", "Understand", "Discover" (NOT "Master") |
| 3 | Contains primary keyword | 1 | Concept name + "JavaScript" present |
| 4 | Promises specific value | 1 | Lists what reader will learn |

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

**Good Examples:**

| Concept | Description |
|---------|-------------|
| Closures | "Learn JavaScript closures and how functions remember their scope. Covers lexical scoping, practical use cases, memory considerations, and common closure patterns." (159 chars) |
| Event Loop | "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 chars - trim!) |
| 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 chars) |

**Bad Examples:**

| Issue | Bad Description | Fix |
|-------|-----------------|-----|
| Too short | "Learn about closures" | Expand to 150-160 chars with specifics |
| Starts with "Master" | "Master JavaScript closures..." | "Learn JavaScript closures..." |
| Too vague | "A guide to closures" | List specific topics covered |
| Missing keyword | "Functions can remember things" | Include "closures" and "JavaScript" |

---

### Keyword Placement Checklist (5 points)

| # | Check | Points | How to Verify |
|---|-------|--------|---------------|
| 1 | Primary keyword in title | 1 | Check frontmatter `title` |
| 2 | Primary keyword in meta description | 1 | Check frontmatter `description` |
| 3 | Primary keyword in first 100 words | 1 | Check opening paragraphs |
| 4 | Keyword in at least one H2 heading | 1 | Scan all `##` headings |
| 5 | No keyword stuffing | 1 | Content reads naturally |

**Keyword Placement Map:**

```
┌─────────────────────────────────────────────────────────────────────────┐
│                         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                           │
│                                                                          │
└─────────────────────────────────────────────────────────────────────────┘
```

---

### Content Structure Checklist (6 points)

| # | Check | Points | How to Verify |
|---|-------|--------|---------------|
| 1 | Opens with question hook | 1 | First paragraph asks engaging question |
| 2 | Code example in first 200 words | 1 | Simple example appears early |
| 3 | "What you'll learn" Info box | 1 | `<Info>` component after opening |
| 4 | Short paragraphs (2-4 sentences) | 1 | Scan content for long blocks |
| 5 | 1,500+ words | 1 | Word count check |
| 6 | Key terms bolded on first mention | 1 | Important terms use `**bold**` |

**Content Structure Template:**

```
┌─────────────────────────────────────────────────────────────────────────┐
│                       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                                 │
│                                                                          │
└─────────────────────────────────────────────────────────────────────────┘
```

---

### Featured Snippet Checklist (4 points)

| # | Check | Points | How to Verify |
|---|-------|--------|---------------|
| 1 | "What is X" has 40-60 word definition | 1 | Count words in first paragraph after "What is" H2 |
| 2 | At least one H2 is phrased as question | 1 | Check for "What is", "How does", "Why" H2s |
| 3 | Numbered steps for "How to" content | 1 | Uses `<Steps>` component or numbered list |
| 4 | Comparison tables (if applicable) | 1 | Tables for "X vs Y" content |

**Featured Snippet Patterns:**

```
┌─────────────────────────────────────────────────────────────────────────┐
│                     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           │
│                                                                          │
└─────────────────────────────────────────────────────────────────────────┘
```

**Definition Paragraph Example (40-60 words):**

```markdown
## 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.
```

(This is 52 words - perfect for a featured snippet)

---

### Internal Linking Checklist (4 points)

| # | Check | Points | How to Verify |
|---|-------|--------|---------------|
| 1 | 3-5 related concepts linked in body | 1 | Count `/concepts/` links in prose |
| 2 | Descriptive anchor text | 1 | No "click here", "here", "this" |
| 3 | Prerequisites in Warning box | 1 | `<Warning>` with links at start |
| 4 | Related Concepts section has 4 cards | 1 | `<CardGroup>` at end with 4 Cards |

**Good Anchor Text:**

| ❌ Bad | ✓ Good |
|--------|--------|
| "click here" | "event loop concept" |
| "here" | "JavaScript closures" |
| "this article" | "our Promises guide" |
| "read more" | "understanding the call stack" |

**Link Placement Strategy:**

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

<!-- In Body Content (natural context) -->
When the callback finishes, it's added to the task queue — managed by 
the [event loop](/concepts/event-loop).

<!-- In Related Concepts Section -->
<CardGroup cols={2}>
  <Card title="Promises" icon="handshake" href="/concepts/promises">
    async/await is built on top of Promises
  </Card>
</CardGroup>
```

---

### Technical SEO Checklist (3 points)

| # | Check | Points | How to Verify |
|---|-------|--------|---------------|
| 1 | Single H1 per page | 1 | Only one `#` heading (the title) |
| 2 | URL slug contains keyword | 1 | `/concepts/closures` not `/concepts/topic-1` |
| 3 | No orphan pages | 1 | Page is linked from at least one other page |

**H1 Rule:**

Every page should have exactly ONE H1 (your main title). This is critical for SEO:
- The H1 tells Google what the page is about
- Multiple H1s confuse search engines about page hierarchy
- All other headings should be H2 (`##`) and below
- The H1 should contain your primary keyword

```markdown
# 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/Slug Best Practices:**

| ✅ Good | ❌ Bad |
|---------|--------|
| `/concepts/closures` | `/concepts/c1` |
| `/concepts/event-loop` | `/concepts/topic-7` |
| `/concepts/type-coercion` | `/concepts/abc123` |
| `/concepts/async-await` | `/concepts/async_await` |

Rules for slugs:
- **Include primary keyword** — The concept name should be in the URL
- **Use hyphens, not underscores** — `event-loop` not `event_loop`
- **Keep slugs short and readable** — Under 50 characters
- **No UUIDs, database IDs, or random strings**
- **Lowercase only** — `/concepts/Event-Loop` should be `/concepts/event-loop`

**Orphan Page Detection:**

An orphan page has no internal links pointing to it from other pages. This hurts SEO because:
- Google may not discover or crawl it frequently
- It signals the page isn't important to your site structure
- Users can't navigate to it naturally
- Link equity doesn't flow to the page

**How to check for orphan pages:**
1. Search the codebase for links to this concept: `grep -r "/concepts/[slug]" docs/`
2. Verify it appears in at least one other concept's "Related Concepts" section
3. Check that pages listing it as a prerequisite link back appropriately
4. Ensure it's included in the navigation (`docs.json`)

**Fixing orphan pages:**
- Add the concept to related pages' "Related Concepts" CardGroup
- Link to it naturally in body content of related concepts
- Ensure bidirectional linking (if A links to B, B should link back to A where relevant)

---

## Scoring System

### Total Points Available: 30

| Category | Max Points |
|----------|------------|
| Title Tag | 4 |
| Meta Description | 4 |
| Keyword Placement | 5 |
| Content Structure | 6 |
| Featured Snippets | 4 |
| Internal Linking | 4 |
| Technical SEO | 3 |
| **Total** | **30** |

### Score Interpretation

| Score | Percentage | Status | Action |
|-------|------------|--------|--------|
| 27-30 | 90-100% | ✅ Excellent | Ready to publish |
| 23-26 | 75-89% | ⚠️ Good | Minor optimizations needed |
| 17-22 | 55-74% | ⚠️ Fair | Several improvements needed |
| 0-16 | <55% | ❌ Poor | Significant work required |

---

## Common SEO Issues and Fixes

### Title Tag Issues

| Issue | Current | Fix |
|-------|---------|-----|
| Too short (<50 chars) | "Closures" (8) | "Closures: How Functions Remember Their Scope in JavaScript" (58) |
| Too long (>60 chars) | "Understanding JavaScript Closures and How They Work with Examples" (66) | "Closures: How Functions Remember Their Scope in JavaScript" (58) |
| Missing keyword | "Understanding Scope" | Add concept name: "Closures: Understanding Scope in JavaScript" |
| No hook | "JavaScript Closures" | Add benefit: "Closures: How Functions Remember Their Scope in JavaScript" |
| Missing "JavaScript" | "Closures Explained" | Add at end: "Closures Explained in JavaScript" |

### Meta Description Issues

| Issue | Current | Fix |
|-------|---------|-----|
| Too short (<120 chars) | "Learn about closures" (20) | Expand with specifics to 150-160 chars |
| Too long (>160 chars) | [Gets truncated] | Edit ruthlessly, keep key information |
| Starts with "Master" | "Master JavaScript closures..." | "Learn JavaScript closures..." |
| No keyword | "Functions that remember" | Include "closures" and "JavaScript" |
| Too vague | "A guide to closures" | List specific topics: "Covers X, Y, and Z" |

### Content Structure Issues

| Issue | Fix |
|-------|-----|
| No question hook | Start with "How does...?" or "Why...?" |
| Code example too late | Move simple example to first 200 words |
| Missing Info box | Add `<Info>` with "What you'll learn" |
| Long paragraphs | Break into 2-4 sentence chunks |
| Under 1,500 words | Add more depth, examples, edge cases |
| No bolded terms | Bold key concepts on first mention |

### Featured Snippet Issues

| Issue | Fix |
|-------|-----|
| No "What is" definition | Add 40-60 word definition paragraph |
| Definition too long | Tighten to 40-60 words |
| No question H2s | Add "What is X?" or "How does X work?" H2 |
| Steps not numbered | Use `<Steps>` or numbered markdown |
| No comparison tables | Add table for "X vs Y" sections |

### Internal Linking Issues

| Issue | Fix |
|-------|-----|
| No internal links | Add 3-5 links to related concepts |
| Bad anchor text | Replace "click here" with descriptive text |
| No prerequisites | Add `<Warning>` with prerequisite links |
| Empty Related Concepts | Add 4 Cards linking to related topics |

### Technical SEO Issues

| Issue | Fix |
|-------|-----|
| Multiple H1 tags | Keep only one `#` heading (the title), use `##` for all sections |
| Slug missing keyword | Rename file to include concept name (e.g., `closures.mdx`) |
| Orphan page | Add links from related concept pages' body or Related Concepts section |
| Underscore in slug | Use hyphens: `event-loop.mdx` not `event_loop.mdx` |
| Uppercase in slug | Use lowercase only: `async-await.mdx` not `Async-Await.mdx` |
| Slug too long | Shorten to primary keyword: `closures.mdx` not `understanding-javascript-closures-and-scope.mdx` |

---

## SEO Audit Report Template

Use this template to document your findings.

```markdown
# 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...

© leonardomso · MIT · leonardomso/33-js-concepts

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой