Skill

Seo Review

Perform a focused SEO audit on JavaScript concept pages to maximize search visibility, featured snippet optimization, and ranking potential

Freerisk: low
seoreviewjavascriptmarkdown

The full skill

— 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 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 | Element | Ideal Length | |———|————–| | Title | 50-60 characters | | Meta Description | 150-160 characters | | Definition paragraph | 40-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 | Length | Assessment | |——–|————| | <1,000 words | Too thin – add depth | | 1,000-1,500 | Minimum viable | | 1,500-2,500 | Good | | 2,500-4,000 | Excellent | | >4,000 | Consider 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.