Agent skill

JavaScript Concept Page SEO Audit

by leonardomso in leonardomso/33-js-concepts

Runs a five-step SEO audit on JavaScript concept pages: keyword clusters, on-page checks, featured snippets, internal links and a written report.

MITAuto-check passedMarketing & SEO

Install JavaScript Concept Page SEO Audit

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

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install leonardomso/33-js-concepts seo-review --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/leonardomso/33-js-concepts.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/seo-review .claude/skills/seo-review && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
seo-review
GitHub stars
67k
Token cost
~8.8k tokens
SKILL.md length
2,460 words
Files
1
Skills in repo
6
Repo updated
First seen
Licence
MIT

At a glance

Runs a five-step SEO audit on JavaScript concept pages: keyword clusters, on-page checks, featured snippets, internal links and a written report.

  • Works in 5 steps: Identify Target Keywords → On-Page SEO Audit → Featured Snippet Optimization → …
  • Before publishing a new JavaScript concept page
  • SKILL.md covers When to Use, Goal, SEO Audit Methodology and Keyword Clusters by Concept, plus 5 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Built for the 33 JavaScript Concepts documentation, this skill audits one concept page at a time to improve its search visibility. The five steps are identifying the target keyword cluster, an on-page SEO check, featured snippet optimization, an internal linking audit and a report written from a template. Each page should rank for searches such as what a concept is in JavaScript, how it works, explanations, tutorials and examples.

A keyword cluster template covers the primary term plus what-is, how-does, how-to, why, examples, versus and interview patterns, shown with a closures example. Pre-built clusters are supplied for individual concepts such as the call stack, including error searches like maximum call stack size exceeded. The skill suits pre-publication checks, underperforming pages, periodic audits, content updates and targeting new keywords.

When your agent uses it

  • Before publishing a new JavaScript concept page
  • Improving a concept page that ranks poorly
  • Running a periodic content audit after major updates
  • Choosing keywords for a new page

Example prompts

  • “Run an SEO review on the closures page before we publish it.”
  • “Audit the call stack page for featured snippet readiness.”
  • “Which keywords should the primitive types page target, and does the page cover them?”

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Identify Target Keywords
  2. On-Page SEO Audit
  3. Featured Snippet Optimization
  4. Internal Linking Audit
  5. Generate Report

What it can do on your machine

Read from SKILL.md and the folder at commit 16d0d95. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

JavaScript Concept Page SEO Audit loads about 8.8k tokens when it runs. Until then it costs about 38 tokens; SKILL.md has 2,460 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~38
When it runs · the whole SKILL.md, loaded when a task matches
~8.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from leonardomso/33-js-concepts at commit 16d0d95, republished under its MIT licence (© leonardomso). 2,460 words, ~8,776 tokens.

Download SKILL.mdSave it as .claude/skills/seo-review/SKILL.md (or your agent's skills folder).
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
TypePatternExample (Closures)
Primary[concept] JavaScriptclosures JavaScript
What iswhat is [concept] in JavaScriptwhat is a closure in JavaScript
How doeshow does [concept] workhow do closures work
How tohow to use/create [concept]how to use closures
Whywhy use [concept]why use closures JavaScript
Examples[concept] examplesclosure examples JavaScript
vs[concept] vs [related]closures vs scope
Interview[concept] interview questionsclosure interview questions
Step 2: On-Page SEO Audit

Check all on-page SEO elements systematically.

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)
#CheckPointsHow to Verify
1Length 50-60 characters1Count characters in title frontmatter
2Primary keyword in first half1Concept name appears early
3Ends with "in JavaScript"1Check title ending
4Contains compelling hook1Promises 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:

ConceptTitle (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:

IssueBad TitleBetter 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)
#CheckPointsHow to Verify
1Length 150-160 characters1Count characters in description frontmatter
2Starts with action word1"Learn", "Understand", "Discover" (NOT "Master")
3Contains primary keyword1Concept name + "JavaScript" present
4Promises specific value1Lists 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:

ConceptDescription
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:

IssueBad DescriptionFix
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)
#CheckPointsHow to Verify
1Primary keyword in title1Check frontmatter title
2Primary keyword in meta description1Check frontmatter description
3Primary keyword in first 100 words1Check opening paragraphs
4Keyword in at least one H2 heading1Scan all ## headings
5No keyword stuffing1Content 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)
#CheckPointsHow to Verify
1Opens with question hook1First paragraph asks engaging question
2Code example in first 200 words1Simple example appears early
3"What you'll learn" Info box1<Info> component after opening
4Short paragraphs (2-4 sentences)1Scan content for long blocks
51,500+ words1Word count check
6Key terms bolded on first mention1Important 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                                 │
│                                                                          │
└─────────────────────────────────────────────────────────────────────────┘

#CheckPointsHow to Verify
1"What is X" has 40-60 word definition1Count words in first paragraph after "What is" H2
2At least one H2 is phrased as question1Check for "What is", "How does", "Why" H2s
3Numbered steps for "How to" content1Uses <Steps> component or numbered list
4Comparison tables (if applicable)1Tables 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)


Show full SKILL.md (996 more words)Show less
Internal Linking Checklist (4 points)
#CheckPointsHow to Verify
13-5 related concepts linked in body1Count /concepts/ links in prose
2Descriptive anchor text1No "click here", "here", "this"
3Prerequisites in Warning box1<Warning> with links at start
4Related Concepts section has 4 cards1<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)
#CheckPointsHow to Verify
1Single H1 per page1Only one # heading (the title)
2URL slug contains keyword1/concepts/closures not /concepts/topic-1
3No orphan pages1Page 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
CategoryMax Points
Title Tag4
Meta Description4
Keyword Placement5
Content Structure6
Featured Snippets4
Internal Linking4
Technical SEO3
Total30
Score Interpretation
ScorePercentageStatusAction
27-3090-100%✅ ExcellentReady to publish
23-2675-89%⚠️ GoodMinor optimizations needed
17-2255-74%⚠️ FairSeveral improvements needed
0-16<55%❌ PoorSignificant work required

Common SEO Issues and Fixes

Title Tag Issues
IssueCurrentFix
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
IssueCurrentFix
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
IssueFix
No question hookStart with "How does...?" or "Why...?"
Code example too lateMove simple example to first 200 words
Missing Info boxAdd <Info> with "What you'll learn"
Long paragraphsBreak into 2-4 sentence chunks
Under 1,500 wordsAdd more depth, examples, edge cases
No bolded termsBold key concepts on first mention
IssueFix
No "What is" definitionAdd 40-60 word definition paragraph
Definition too longTighten to 40-60 words
No question H2sAdd "What is X?" or "How does X work?" H2
Steps not numberedUse <Steps> or numbered markdown
No comparison tablesAdd table for "X vs Y" sections
Internal Linking Issues
IssueFix
No internal linksAdd 3-5 links to related concepts
Bad anchor textReplace "click here" with descriptive text
No prerequisitesAdd <Warning> with prerequisite links
Empty Related ConceptsAdd 4 Cards linking to related topics
Technical SEO Issues
IssueFix
Multiple H1 tagsKeep only one # heading (the title), use ## for all sections
Slug missing keywordRename file to include concept name (e.g., closures.mdx)
Orphan pageAdd links from related concept pages' body or Related Concepts section
Underscore in slugUse hyphens: event-loop.mdx not event_loop.mdx
Uppercase in slugUse lowercase only: async-await.mdx not Async-Await.mdx
Slug too longShorten 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 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"]

Quick Reference

Character Counts
ElementIdeal Length
Title50-60 characters
Meta Description150-160 characters
Definition paragraph40-60 words
Keyword Density
  • Don't exceed 3-4 mentions of exact phrase per 1,000 words
  • Use variations naturally (e.g., "closures", "closure", "JavaScript closures")
Content Length
LengthAssessment
<1,000 wordsToo thin - add depth
1,000-1,500Minimum viable
1,500-2,500Good
2,500-4,000Excellent
>4,000Consider splitting

Summary

When auditing a concept page for SEO:

  1. Identify target keywords using the keyword cluster for that concept
  2. Check title tag — 50-60 chars, keyword first, hook, ends with "JavaScript"
  3. Check meta description — 150-160 chars, action word, keyword, specific value
  4. Verify keyword placement — Title, description, first 100 words, H2
  5. Audit content structure — Question hook, early code, Info box, short paragraphs
  6. Optimize for featured snippets — 40-60 word definitions, numbered steps, tables
  7. Check internal linking — 3-5 links, good anchors, Related Concepts section
  8. Generate report — Document score, issues, and prioritized fixes

Remember: SEO isn't about gaming search engines — it's about making content easy to find for developers who need it. Every optimization should also improve the reader experience.

© leonardomso, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/seo-review of leonardomso/33-js-concepts.

Open the folder on GitHubat commit 16d0d95

Compare with similar skills

JavaScript Concept Page SEO Audit next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

JavaScript Concept Page SEO Audit compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
JavaScript Concept Page SEO Audit this skillleonardomso/33-js-concepts67k—~8.8kAutomated safety check: PassMIT
Content SEOjdevalk/skills105—~2.3kAutomated safety check: PassMIT
Business Website Setupsickn33/agentic-awesome-skills47k1 repos~6.2kAutomated safety check: PassMIT
SEO Planseranking/seo-skills161—~4.4kAutomated safety check: PassMIT
SEO Keyword ClusteringAgriciDaniel/claude-seo19k2 repos~3.3kAutomated safety check: PassMIT
SEO Content Brief GeneratorAgriciDaniel/claude-seo19k2 repos~2.6kAutomated safety check: PassMIT

Similar skills

  • Content SEO

    jdevalk/skills

    Audits a blog post draft or page copy for content-level SEO: search intent fit, focus keyphrase placement, E-E-A-T signals (experience, expertise, authoritativeness, trustworthiness), helpfulness…

    105 GitHub stars~2.3k tokensUpdated 3 mo ago
    Marketing & SEOAuto-check passed
  • Business Website Setup

    sickn33/agentic-awesome-skills

    Website page register: URL, title, meta description, search intent, NAP block, schema type, canonical, indexability and Core Web Vitals target.

    47k GitHub starsUsed in 1 repo~6.2k tokens
    Marketing & SEOAuto-check passed
  • SEO Plan

    seranking/seo-skills

    Build a phased SEO roadmap for a domain — quarter-by-quarter, tied to the site's competitive position, content gaps, technical debt, and AI Search readiness.

    161 GitHub stars~4.4k tokensUpdated 3 mo ago
    Marketing & SEOAuto-check passed
  • SEO Keyword Clustering

    AgriciDaniel/claude-seo

    Clusters keywords by how much their search results overlap and designs a hub-and-spoke content plan with an internal link matrix and an interactive cluster map.

    19k GitHub starsUsed in 2 repos~3.3k tokens
    Marketing & SEOAuto-check passed
  • SEO Content Brief Generator

    AgriciDaniel/claude-seo

    Builds research-backed SEO content briefs with competitor scoring, per-section word counts and page-type templates, for new pages or improving existing ones.

    19k GitHub starsUsed in 2 repos~2.6k tokens
    Marketing & SEOAuto-check passed
  • Local Content Strategy

    garrettjsmith/localseoskills

    Build a complete local content strategy from keyword research output.

    121 GitHub stars~2.8k tokensUpdated 1 mo ago
    Writing & ContentAuto-check passed

More from leonardomso/33-js-concepts

  • JavaScript Concept Fact Checker

    leonardomso/33-js-concepts

    Verifies the technical accuracy of JavaScript concept pages by checking code examples, MDN and ECMAScript claims and external links through a five-phase method.

    67k GitHub starsUsed in 1 repo~5k tokens
    Auto-check passed
  • JavaScript Concept Page Workflow

    leonardomso/33-js-concepts

    Orchestrates five skills to produce a complete JavaScript concept documentation page, from resource curation through writing, tests, fact-checking and SEO.

    67k GitHub stars~3.9k tokensUpdated 1 mo ago
    Auto-check passed
  • JS Concept Resource Curator

    leonardomso/33-js-concepts

    Finds, vets, writes up and maintains external articles, videos and courses for JavaScript concept pages, including audits for broken and outdated links.

    67k GitHub stars~4.9k tokensUpdated 1 mo ago
    Auto-check passed
  • Concept Page Test Writer

    leonardomso/33-js-concepts

    Generates Vitest tests for every runnable code example on a JavaScript concept documentation page, following a four-phase extraction and conversion process.

    67k GitHub stars~5.5k tokensUpdated 1 mo ago
    Auto-check passed
  • JavaScript Concept Page Writer

    leonardomso/33-js-concepts

    Writes or reviews documentation pages for the 33 JavaScript Concepts project, following its structure, a beginner-friendly voice and rules against AI-sounding language.

    67k GitHub stars~14k tokensUpdated 1 mo ago
    Auto-check passed

Works with

Questions about JavaScript Concept Page SEO Audit

What does JavaScript Concept Page SEO Audit do?

Runs a five-step SEO audit on JavaScript concept pages: keyword clusters, on-page checks, featured snippets, internal links and a written report. Built for the 33 JavaScript Concepts documentation, this skill audits one concept page at a time to improve its search visibility. The five steps are identifying the target keyword cluster, an on-page SEO check, featured snippet optimization, an internal linking audit and a report written from a template.

When should I use JavaScript Concept Page SEO Audit?

JavaScript Concept Page SEO Audit fits situations like: before publishing a new JavaScript concept page; improving a concept page that ranks poorly; running a periodic content audit after major updates; choosing keywords for a new page.

How do I install JavaScript Concept Page SEO Audit in Claude Code?

Run `npx skills add leonardomso/33-js-concepts --skill seo-review -a claude-code`. Or copy the skill folder (.claude/skills/seo-review in leonardomso/33-js-concepts) into .claude/skills/seo-review in your project. Claude Code loads it when a task matches its description.

How do I install JavaScript Concept Page SEO Audit in Codex?

Run `npx skills add leonardomso/33-js-concepts --skill seo-review -a codex`. Or copy the skill folder (.claude/skills/seo-review in leonardomso/33-js-concepts) into .agents/skills/seo-review in your project. Codex loads it when a task matches its description.

Can I use JavaScript Concept Page SEO Audit in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add leonardomso/33-js-concepts --skill seo-review -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/seo-review, .gemini/skills/seo-review, .github/skills/seo-review and .opencode/skills/seo-review in your project.

What does JavaScript Concept Page SEO Audit need to run?

SKILL.md names no scripts, command-line tools or credentials: JavaScript Concept Page SEO Audit is instructions for the agent only.

Does JavaScript Concept Page SEO Audit access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is JavaScript Concept Page SEO Audit safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does JavaScript Concept Page SEO Audit use?

JavaScript Concept Page SEO Audit is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does JavaScript Concept Page SEO Audit use?

About 8.8k tokens (SKILL.md is roughly 35k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to JavaScript Concept Page SEO Audit?

Skills that share tags, products or a category with JavaScript Concept Page SEO Audit: Content SEO (jdevalk/skills, 105 stars), Business Website Setup (sickn33/agentic-awesome-skills, 47k stars), SEO Plan (seranking/seo-skills, 161 stars) and SEO Keyword Clustering (AgriciDaniel/claude-seo, 19k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains JavaScript Concept Page SEO Audit?

leonardomso (a GitHub user) maintains it in leonardomso/33-js-concepts, which has 66,530 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on September 10, 2026.

Source: leonardomso/33-js-concepts on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.