Skills · Content & docs

SEO Content Audit

Unverified30/40

Originally by zubair-trabzada · MIT

Claude Code·UnknownFrontmatter could not be read
Cursor·UnknownWe have not crawled the repo tree, so we will not guess
Codex·UnknownWe have not crawled the repo tree, so we will not guess
Gemini CLI·UnknownThe spec defines no detection rule for Gemini
Copilot·UnknownWe have not crawled the repo tree, so we will not guess
npx agentalley add market-seo

This command does not work yet — the CLI is still being built. Until then, use Raw in the reader below to take the file.

Who is stuck, and on what

The whole source

No sign-in, no blur, nothing truncated
market-seo/SKILL.md483 lines17.7 KBRawView on GitHub
Frontmatter: no frontmatter — costs points on criterion B3.
1# SEO Content AuditA5No allowed-tools declared — no way to tell what this skill may touchB3Frontmatter: no frontmatter
2 
3## Skill Purpose
4Perform a comprehensive SEO audit of a webpage or website, covering on-page SEO, content quality (E-E-A-T), keyword analysis, technical SEO, and content strategy. This skill combines automated analysis via `scripts/analyze_page.py` with expert-level manual review to produce an actionable SEO audit document.
5 
6## When to Use
7- User provides a URL and asks for SEO analysis, audit, or recommendations
8- User wants to improve organic search rankings and traffic
9- User asks about on-page SEO, meta tags, content quality, or technical SEO
10- User wants a content gap analysis or content strategy recommendations
11- Triggered by `/market seo <url>` or `/market seo`
12 
13## How to Execute
14 
15### Step 1: Run Automated Analysis
16Use the Python analysis script to gather baseline data:
17 
18```bash
19python3 scripts/analyze_page.py <url>
20```
21 
22This script extracts:
23- Title tag and meta description
24- Open Graph tags
25- Heading hierarchy (H1-H6)
26- Links (internal and external)
27- Images and alt text status
28- Forms and CTAs
29- Schema/structured data
30- Social links
31- Tracking scripts
32- Viewport meta tag (mobile-friendliness indicator)
33- Canonical tag
34- Robots meta directives
35 
36Capture the JSON output and use it as the foundation for the manual analysis.
37 
38### Step 2: On-Page SEO Checklist
39Evaluate each element and score it as Pass, Needs Work, or Fail.
40 
41#### Title Tag
42| Criteria | Best Practice | Check |
43|---|---|---|
44| Exists | Every page must have a unique title tag | Pass/Fail |
45| Length | 50-60 characters (displays fully in SERPs) | Pass/Needs Work/Fail |
46| Primary keyword | Contains the primary target keyword | Pass/Needs Work/Fail |
47| Keyword position | Primary keyword appears near the beginning | Pass/Needs Work/Fail |
48| Brand name | Includes brand name (typically at the end, separated by pipe or dash) | Pass/Needs Work/Fail |
49| Uniqueness | Different from other pages on the site | Pass/Fail |
50| Compelling | Would a searcher want to click this? | Pass/Needs Work/Fail |
51 
52**Common title tag mistakes:**
53- Too long (truncated in search results)
54- Missing primary keyword
55- Keyword stuffing ("Best SEO Tool | Top SEO Tool | SEO Software | SEO Platform")
56- Using the same title across multiple pages
57- Generic titles ("Home", "Welcome", "Page 1")
58- Missing brand name
59 
60#### Meta Description
61| Criteria | Best Practice | Check |
62|---|---|---|
63| Exists | Every page should have a meta description | Pass/Fail |
64| Length | 150-160 characters | Pass/Needs Work/Fail |
65| Primary keyword | Naturally includes the target keyword | Pass/Needs Work/Fail |
66| Call to action | Includes a reason to click | Pass/Needs Work/Fail |
67| Unique | Different from other pages | Pass/Fail |
68| Compelling | Acts as ad copy for the search result | Pass/Needs Work/Fail |
69 
70#### Heading Hierarchy (H1-H6)
71| Criteria | Best Practice | Check |
72|---|---|---|
73| H1 exists | Exactly one H1 per page | Pass/Fail |
74| H1 contains keyword | Primary keyword in the H1 | Pass/Needs Work/Fail |
75| H1 differs from title | H1 and title tag are different (but related) | Pass/Needs Work/Fail |
76| Logical hierarchy | H2 under H1, H3 under H2 (no skipping levels) | Pass/Needs Work/Fail |
77| Descriptive subheadings | H2s and H3s describe content sections clearly | Pass/Needs Work/Fail |
78| Keywords in subheadings | Secondary keywords appear naturally in H2s/H3s | Pass/Needs Work/Fail |
79| Not overused | Headers used for structure, not styling | Pass/Needs Work/Fail |
80 
81#### Image Optimization
82| Criteria | Best Practice | Check |
83|---|---|---|
84| Alt text | Every image has descriptive alt text | Pass/Needs Work/Fail |
85| Alt text quality | Alt text describes the image and includes keywords naturally | Pass/Needs Work/Fail |
86| File names | Descriptive filenames (not IMG_001.jpg) | Pass/Needs Work/Fail |
87| File size | Images optimized for web (WebP preferred, compressed) | Pass/Needs Work/Fail |
88| Lazy loading | Below-fold images use lazy loading | Pass/Needs Work/Fail |
89| Responsive images | Uses srcset or picture element for different sizes | Pass/Needs Work/Fail |
90| Decorative images | Decorative images have empty alt="" (not missing alt) | Pass/Needs Work/Fail |
91 
92#### Internal Linking
93| Criteria | Best Practice | Check |
94|---|---|---|
95| Internal links present | Page links to other relevant pages on the site | Pass/Needs Work/Fail |
96| Anchor text | Internal link anchor text is descriptive (not "click here") | Pass/Needs Work/Fail |
97| Deep linking | Links go to specific pages, not just homepage | Pass/Needs Work/Fail |
98| Relevant context | Links are contextually relevant to surrounding content | Pass/Needs Work/Fail |
99| Reasonable count | 3-10 internal links per 1,000 words of content | Pass/Needs Work/Fail |
100| Broken links | No broken internal links (404s) | Pass/Fail |
101 
102#### URL Structure
103| Criteria | Best Practice | Check |
104|---|---|---|
105| Readable | URL is human-readable and descriptive | Pass/Needs Work/Fail |
106| Keywords | URL contains relevant keywords | Pass/Needs Work/Fail |
107| Length | Under 75 characters (ideally under 60) | Pass/Needs Work/Fail |
108| Hyphens | Words separated by hyphens (not underscores) | Pass/Fail |
109| Lowercase | All lowercase characters | Pass/Fail |
110| No parameters | Clean URLs without unnecessary query parameters | Pass/Needs Work/Fail |
111| Trailing slashes | Consistent use (either always or never) | Pass/Needs Work/Fail |
112 
113### Step 3: Content Quality Assessment (E-E-A-T)
114 
115Evaluate the content against Google's E-E-A-T framework:
116 
117#### Experience
118Does the content demonstrate first-hand experience with the topic?
119 
120**Check for:**
121- Personal anecdotes, case studies, or real-world examples
122- Screenshots, photos, or evidence of hands-on experience
123- Specific details that only someone with experience would know
124- "I did X and here's what happened" type content
125 
126**Score:** Strong / Present / Weak / Missing
127 
128#### Expertise
129Does the author have demonstrated knowledge in this subject?
130 
131**Check for:**
132- Author bio with relevant credentials
133- Depth of content (not superficial)
134- Accurate information and data
135- Proper use of industry terminology
136- Links to authoritative sources
137 
138**Score:** Strong / Present / Weak / Missing
139 
140#### Authoritativeness
141Is the website and author recognized as an authority on this topic?
142 
143**Check for:**
144- Author bylines with real names and bios
145- About page with company background
146- Industry awards or certifications
147- Backlinks from authoritative sites
148- Media mentions or press coverage
149- Guest posts on industry publications
150 
151**Score:** Strong / Present / Weak / Missing
152 
153#### Trustworthiness
154Can users trust this content and this website?
155 
156**Check for:**
157- HTTPS (SSL certificate)
158- Privacy policy and terms of service
159- Physical address and contact information
160- Customer reviews and testimonials
161- Security badges and certifications
162- Transparent business practices
163- Accurate, up-to-date information
164- Properly sourced claims and statistics
165 
166**Score:** Strong / Present / Weak / Missing
167 
168### Step 4: Keyword Analysis
169 
170#### Primary Keyword Assessment
171| Element | Evaluation |
172|---|---|
173| Primary keyword identified | What keyword is this page targeting? |
174| Search intent alignment | Does the content match what searchers expect? (informational, commercial, transactional, navigational) |
175| Keyword in title | Present, position, natural usage |
176| Keyword in H1 | Present, natural usage |
177| Keyword in first 100 words | Appears early in the content |
178| Keyword in subheadings | Appears in at least one H2 or H3 |
179| Keyword in meta description | Present and natural |
180| Keyword in URL | Present |
181| Keyword density | 1-2% is ideal. Over 3% is keyword stuffing. |
182 
183#### Secondary Keywords
184Identify 5-10 related keywords that should be naturally included in the content:
185- Synonyms and variations of the primary keyword
186- Long-tail variations
187- Related questions (People Also Ask)
188- LSI (Latent Semantic Indexing) keywords
189 
190#### Search Intent Analysis
191Determine the search intent behind the target keyword and evaluate if the content matches:
192 
193| Intent Type | User Goal | Content Should Be |
194|---|---|---|
195| Informational | Learn something | Blog post, guide, tutorial, FAQ |
196| Commercial | Compare options | Comparison page, review, list |
197| Transactional | Buy something | Product page, pricing page, checkout |
198| Navigational | Find a specific page | Homepage, login page, specific tool |
199 
200**Misalignment is a ranking killer.** If the user searches "how to do X" (informational) and lands on a sales page (transactional), they bounce -- and Google notices.
201 
202### Step 5: Technical SEO Quick Check
203 
204#### Robots.txt
205```
206Check: Does /robots.txt exist and is it properly configured?
207```
208- [ ] robots.txt is accessible
209- [ ] Not blocking important pages or resources
210- [ ] Points to sitemap.xml
211- [ ] Not blocking CSS/JS (needed for rendering)
212 
213#### XML Sitemap
214```
215Check: Does /sitemap.xml exist?
216```
217- [ ] Sitemap exists and is accessible
218- [ ] Contains all important pages
219- [ ] No broken URLs in sitemap
220- [ ] Submitted to Google Search Console
221- [ ] Last modified dates are accurate
222 
223#### Canonical Tags
224- [ ] Canonical tag present on the page
225- [ ] Points to the correct URL (self-referencing or to the canonical version)
226- [ ] Consistent with robots.txt and sitemap
227 
228#### Page Speed
229Reference benchmarks:
230 
231| Metric | Good | Needs Work | Poor |
232|---|---|---|---|
233| Largest Contentful Paint (LCP) | Under 2.5s | 2.5-4.0s | Over 4.0s |
234| First Input Delay (FID) | Under 100ms | 100-300ms | Over 300ms |
235| Cumulative Layout Shift (CLS) | Under 0.1 | 0.1-0.25 | Over 0.25 |
236| Time to First Byte (TTFB) | Under 200ms | 200-500ms | Over 500ms |
237| First Contentful Paint (FCP) | Under 1.8s | 1.8-3.0s | Over 3.0s |
238 
239**Common speed issues to flag:**
240- Unoptimized images (recommend WebP format, compression)
241- Render-blocking JavaScript or CSS
242- No browser caching headers
243- No CDN detected
244- Excessive third-party scripts (tracking, widgets, fonts)
245- Unminified CSS and JavaScript
246- Missing compression (gzip or brotli)
247 
248#### Mobile-Friendliness
249- [ ] Viewport meta tag present (`<meta name="viewport" content="width=device-width, initial-scale=1">`)
250- [ ] Text readable without zooming (minimum 16px body text)
251- [ ] Tap targets adequately sized and spaced (minimum 48x48px)
252- [ ] No horizontal scrolling required
253- [ ] Responsive images
254- [ ] Forms usable on mobile
255 
256### Step 6: Content Gap Analysis
257 
258Methodology for identifying content gaps:
259 
2601. **Identify the topic cluster:** What is the main topic this page/site covers?
2612. **Map existing content:** What subtopics are already covered?
2623. **Identify missing subtopics:** What related topics are competitors covering that this site is not?
2634. **Analyze People Also Ask:** What questions do searchers have about this topic?
2645. **Check related searches:** What does Google suggest at the bottom of the SERP?
265 
266**Content Gap Template:**
267| Missing Topic | Search Volume Potential | Competition | Content Type Needed | Priority |
268|---|---|---|---|---|
269| [Topic] | High/Med/Low | High/Med/Low | Blog/Guide/Tool/Page | 1-5 |
270 
271### Step 7: Featured Snippet Optimization
272 
273Identify opportunities to capture featured snippets:
274 
275**Types of featured snippets:**
2761. **Paragraph snippet** -- Answer in 40-60 words. Use a clear question as H2/H3 followed by a concise answer.
2772. **List snippet** -- Use ordered or unordered lists with H2 containing the target query.
2783. **Table snippet** -- Use HTML tables with clear headers.
2794. **Video snippet** -- Include video with descriptive title and timestamps.
280 
281**Optimization checklist:**
282- [ ] Target question-based queries ("how to", "what is", "why does")
283- [ ] Place answer immediately after the question heading
284- [ ] Keep paragraph answers between 40-60 words
285- [ ] Use structured lists and tables where appropriate
286- [ ] Include the target query in an H2 or H3
287 
288### Step 8: Schema Markup Audit
289 
290Check for structured data implementation:
291 
292| Schema Type | Applicable To | Status |
293|---|---|---|
294| Organization | Homepage, About page | Present/Missing |
295| LocalBusiness | Local businesses | Present/Missing/N/A |
296| Product | Product pages | Present/Missing/N/A |
297| Article | Blog posts, news | Present/Missing/N/A |
298| FAQ | FAQ sections | Present/Missing |
299| HowTo | Tutorial content | Present/Missing/N/A |
300| Review/AggregateRating | Reviews, testimonials | Present/Missing/N/A |
301| BreadcrumbList | All pages with breadcrumbs | Present/Missing |
302| WebSite/SearchAction | Homepage (sitelinks search box) | Present/Missing |
303| Event | Event pages | Present/Missing/N/A |
304 
305**Implementation guidance:**
306- Use JSON-LD format (Google's preferred format)
307- Validate with Google's Rich Results Test
308- Don't mark up content that isn't visible on the page
309- Keep schema data consistent with on-page content
310 
311### Step 9: Internal Linking Opportunities
312 
313Identify specific internal linking improvements:
314 
3151. **Orphan pages** -- Pages with no internal links pointing to them
3162. **Hub pages** -- High-authority pages that should link to related content
3173. **Topical clusters** -- Group related content and create linking structures
3184. **CTA links** -- Blog content should link to relevant product/service pages
3195. **Footer/sidebar links** -- Sitewide links to important pages
320 
321**Linking Architecture Assessment:**
322```
323Homepage
324 |-- Category/Service Pages (Pillar Content)
325 |-- Individual Blog Posts/Articles (Cluster Content)
326 |-- Back-links to Pillar Content
327 |-- Key Conversion Pages (Pricing, Signup, Contact)
328 |-- Linked from relevant content
329```
330 
331### Step 10: Core Web Vitals Impact Assessment
332 
333Evaluate the revenue impact of Core Web Vitals performance:
334 
335**Research-backed impacts:**
336- Sites passing all Core Web Vitals see 24% fewer page abandonments
337- A 100ms decrease in LCP correlates with a 1.1% increase in conversion rates
338- Reducing CLS by 0.1 corresponds to a 15% decrease in bounce rate
339- Pages loading within 2 seconds have an average bounce rate of 9%, while pages loading in 5 seconds have a 38% bounce rate
340 
341**Recommendations by metric:**
342| Metric | If Failing | Typical Fixes |
343|---|---|---|
344| LCP | Over 2.5s | Optimize hero image, preload critical resources, use CDN, reduce server response time |
345| FID/INP | Over 100ms | Reduce JavaScript execution, defer non-critical scripts, use web workers |
346| CLS | Over 0.1 | Set image dimensions, reserve space for ads/embeds, avoid inserting content above existing content |
347 
348### Step 11: Blog and Content Strategy Recommendations
349 
350Based on the audit findings, recommend:
351 
3521. **Publishing cadence** -- How often to publish based on competition and resources
3532. **Content types** -- Blog posts, guides, tools, videos, infographics
3543. **Keyword targeting strategy** -- Balance between high-volume and long-tail
3554. **Content length** -- Benchmark against top-ranking content for target keywords
3565. **Content update strategy** -- How often to refresh existing content
3576. **Distribution plan** -- How to promote content beyond organic search
358 
359**Content Prioritization Matrix:**
360| Content Idea | Search Volume | Competition | Business Value | Priority Score |
361|---|---|---|---|---|
362| [Topic] | High/Med/Low | High/Med/Low | High/Med/Low | 1-10 |
363 
364Scoring: High volume + Low competition + High business value = Highest priority
365 
366## Output Format
367 
368Generate a file called `SEO-AUDIT.md` with:
369 
370```markdown
371# SEO Content Audit
372## [URL]
373### Date: [Date]
374 
375---
376 
377## SEO Health Score: [X/100]
378 
379---
380 
381## On-Page SEO Checklist
382 
383### Title Tag
384- Status: [Pass/Needs Work/Fail]
385- Current: "[current title]"
386- Recommended: "[improved title]"
387- Issues: [list issues]
388 
389### Meta Description
390- Status: [Pass/Needs Work/Fail]
391- Current: "[current meta]"
392- Recommended: "[improved meta]"
393 
394### Heading Hierarchy
395[H1-H6 structure analysis]
396 
397### Image Optimization
398[Alt text audit results]
399 
400### Internal Linking
401[Link analysis]
402 
403### URL Structure
404[URL assessment]
405 
406---
407 
408## Content Quality (E-E-A-T)
409| Dimension | Score | Evidence |
410|---|---|---|
411| Experience | [Strong/Present/Weak/Missing] | [details] |
412| Expertise | [Strong/Present/Weak/Missing] | [details] |
413| Authoritativeness | [Strong/Present/Weak/Missing] | [details] |
414| Trustworthiness | [Strong/Present/Weak/Missing] | [details] |
415 
416---
417 
418## Keyword Analysis
419- Primary Keyword: [keyword]
420- Search Intent: [type]
421- Keyword Placement: [checklist results]
422- Secondary Keywords: [list]
423 
424---
425 
426## Technical SEO
427[Quick check results]
428 
429---
430 
431## Content Gap Analysis
432[Missing topics table]
433 
434---
435 
436## Featured Snippet Opportunities
437[Specific opportunities]
438 
439---
440 
441## Schema Markup
442[Current vs recommended]
443 
444---
445 
446## Internal Linking Opportunities
447[Specific recommendations]
448 
449---
450 
451## Core Web Vitals
452[Performance assessment with revenue impact]
453 
454---
455 
456## Content Strategy Recommendations
457[Publishing plan, content priorities]
458 
459---
460 
461## Prioritized Recommendations
462 
463### Critical (Fix Immediately)
4641. [recommendation with expected impact]
465 
466### High Priority (This Month)
4671. [recommendation]
468 
469### Medium Priority (This Quarter)
4701. [recommendation]
471 
472### Low Priority (When Resources Allow)
4731. [recommendation]
474```
475 
476## Key Principles
477- SEO audits should be educational, not just diagnostic. Explain WHY each element matters so the client understands the value.
478- Always provide the "before" (current state) and "after" (recommended change) so the client can see exactly what needs to change.
479- Tie SEO improvements to business outcomes. "Optimizing your title tag" means nothing to a business owner. "Optimizing your title tag could increase your click-through rate by 20-35%, bringing an estimated 500 more visitors per month to this page" is actionable.
480- Use the automated script data as a starting point, but add expert analysis on top. The script finds the data; the skill interprets what it means.
481- Prioritize recommendations by effort-to-impact ratio. A title tag change takes 5 minutes but can impact every search impression. A full content rewrite takes weeks.
482- If the user has run `/market audit` or `/market landing` previously, cross-reference those findings with the SEO audit for a more complete picture.
483 

Reviews

Installed this one?Write the first review and take the Trailblazer badge.

Reviews only open after a real install, so this is empty — and we leave it empty rather than invent one.

Alternatives

Also in Content & docs