Claude Cursor opencode Skill

seo-fundamentals

SEO fundamentals, E-E-A-T, Core Web Vitals, and Google algorithm principles.

LLM Mart · 0 points · 0 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download vodailocz-kilo-kit-mcp-skills_ai-media_seo-fundamentals-0448e6c.zip · 3 KB
Part of vodailocz/kilo-kit-mcp — 142 skills

Install

skills CLI npx skills add https://github.com/VoDaiLocz/kilo-kit-mcp/tree/main/skills/ai-media/seo-fundamentals
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install vodailocz-kilo-kit-mcp@llmmart
Git git clone https://github.com/VoDaiLocz/kilo-kit-mcp.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole vodailocz/kilo-kit-mcp collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

SEO Fundamentals

Principles for search engine visibility.


1. E-E-A-T Framework

Principle Signals
Experience First-hand knowledge, real examples
Expertise Credentials, depth of knowledge
Authoritativeness Backlinks, mentions, industry recognition
Trustworthiness HTTPS, transparency, accurate info

2. Core Web Vitals

Metric Target Measures
LCP < 2.5s Loading performance
INP < 200ms Interactivity
CLS < 0.1 Visual stability

3. Technical SEO Principles

Site Structure

Element Purpose
XML sitemap Help crawling
robots.txt Control access
Canonical tags Prevent duplicates
HTTPS Security signal

Performance

Factor Impact
Page speed Core Web Vital
Mobile-friendly Ranking factor
Clean URLs Crawlability

4. Content SEO Principles

Page Elements

Element Best Practice
Title tag 50-60 chars, keyword front
Meta description 150-160 chars, compelling
H1 One per page, main keyword
H2-H6 Logical hierarchy
Alt text Descriptive, not stuffed

Content Quality

Factor Importance
Depth Comprehensive coverage
Freshness Regular updates
Uniqueness Original value
Readability Clear writing

5. Schema Markup Types

Type Use
Article Blog posts, news
Organization Company info
Person Author profiles
FAQPage Q&A content
Product E-commerce
Review Ratings
BreadcrumbList Navigation

6. AI Content Guidelines

What Google Looks For

✅ Do ❌ Don't
AI draft + human edit Publish raw AI content
Add original insights Copy without value
Expert review Skip fact-checking
Follow E-E-A-T Keyword stuffing

7. Ranking Factors (Prioritized)

Priority Factor
1 Quality, relevant content
2 Backlinks from authority sites
3 Page experience (Core Web Vitals)
4 Mobile optimization
5 Technical SEO fundamentals

8. Measurement

Metric Tool
Rankings Search Console, Ahrefs
Traffic Analytics
Core Web Vitals PageSpeed Insights
Indexing Search Console
Backlinks Ahrefs, Semrush

Remember: SEO is a long-term game. Quality content + technical excellence + patience = results.

Files (kilo-kit-mcp)
  • scripts
    • seo_checker.py 6.4 KB
      #!/usr/bin/env python3
      """
      SEO Checker - Search Engine Optimization Audit
      Checks HTML/JSX/TSX pages for SEO best practices.
      
      PURPOSE:
          - Verify meta tags, titles, descriptions
          - Check Open Graph tags for social sharing
          - Validate heading hierarchy
          - Check image accessibility (alt attributes)
      
      WHAT IT CHECKS:
          - HTML files (actual web pages)
          - JSX/TSX files (React page components)
          - Only files that are likely PUBLIC pages
      
      Usage:
          python seo_checker.py <project_path>
      """
      import sys
      import json
      import re
      from pathlib import Path
      from datetime import datetime
      
      # Fix Windows console encoding
      try:
          sys.stdout.reconfigure(encoding='utf-8', errors='replace')
      except:
          pass
      
      
      # Directories to skip
      SKIP_DIRS = {
          'node_modules', '.next', 'dist', 'build', '.git', '.github',
          '__pycache__', '.vscode', '.idea', 'coverage', 'test', 'tests',
          '__tests__', 'spec', 'docs', 'documentation', 'examples'
      }
      
      # Files to skip (not pages)
      SKIP_PATTERNS = [
          'config', 'setup', 'util', 'helper', 'hook', 'context', 'store',
          'service', 'api', 'lib', 'constant', 'type', 'interface', 'mock',
          '.test.', '.spec.', '_test.', '_spec.'
      ]
      
      
      def is_page_file(file_path: Path) -> bool:
          """Check if this file is likely a public-facing page."""
          name = file_path.name.lower()
          stem = file_path.stem.lower()
          
          # Skip utility/config files
          if any(skip in name for skip in SKIP_PATTERNS):
              return False
          
          # Check path - pages in specific directories are likely pages
          parts = [p.lower() for p in file_path.parts]
          page_dirs = ['pages', 'app', 'routes', 'views', 'screens']
          
          if any(d in parts for d in page_dirs):
              return True
          
          # Filename indicators for pages
          page_names = ['page', 'index', 'home', 'about', 'contact', 'blog', 
                        'post', 'article', 'product', 'landing', 'layout']
          
          if any(p in stem for p in page_names):
              return True
          
          # HTML files are usually pages
          if file_path.suffix.lower() in ['.html', '.htm']:
              return True
          
          return False
      
      
      def find_pages(project_path: Path) -> list:
          """Find page files to check."""
          patterns = ['**/*.html', '**/*.htm', '**/*.jsx', '**/*.tsx']
          
          files = []
          for pattern in patterns:
              for f in project_path.glob(pattern):
                  # Skip excluded directories
                  if any(skip in f.parts for skip in SKIP_DIRS):
                      continue
                  
                  # Check if it's likely a page
                  if is_page_file(f):
                      files.append(f)
          
          return files[:50]  # Limit to 50 files
      
      
      def check_page(file_path: Path) -> dict:
          """Check a single page for SEO issues."""
          issues = []
          
          try:
              content = file_path.read_text(encoding='utf-8', errors='ignore')
          except Exception as e:
              return {"file": str(file_path.name), "issues": [f"Error: {e}"]}
          
          # Detect if this is a layout/template file (has Head component)
          is_layout = 'Head>' in content or '<head' in content.lower()
          
          # 1. Title tag
          has_title = '<title' in content.lower() or 'title=' in content or 'Head>' in content
          if not has_title and is_layout:
              issues.append("Missing <title> tag")
          
          # 2. Meta description
          has_description = 'name="description"' in content.lower() or 'name=\'description\'' in content.lower()
          if not has_description and is_layout:
              issues.append("Missing meta description")
          
          # 3. Open Graph tags
          has_og = 'og:' in content or 'property="og:' in content.lower()
          if not has_og and is_layout:
              issues.append("Missing Open Graph tags")
          
          # 4. Heading hierarchy - multiple H1s
          h1_matches = re.findall(r'<h1[^>]*>', content, re.I)
          if len(h1_matches) > 1:
              issues.append(f"Multiple H1 tags ({len(h1_matches)})")
          
          # 5. Images without alt
          img_pattern = r'<img[^>]+>'
          imgs = re.findall(img_pattern, content, re.I)
          for img in imgs:
              if 'alt=' not in img.lower():
                  issues.append("Image missing alt attribute")
                  break
              if 'alt=""' in img or "alt=''" in img:
                  issues.append("Image has empty alt attribute")
                  break
          
          # 6. Check for canonical link (nice to have)
          # has_canonical = 'rel="canonical"' in content.lower()
          
          return {
              "file": str(file_path.name),
              "issues": issues
          }
      
      
      def main():
          project_path = Path(sys.argv[1] if len(sys.argv) > 1 else ".").resolve()
          
          print(f"\n{'='*60}")
          print(f"  SEO CHECKER - Search Engine Optimization Audit")
          print(f"{'='*60}")
          print(f"Project: {project_path}")
          print(f"Time: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
          print("-"*60)
          
          # Find pages
          pages = find_pages(project_path)
          
          if not pages:
              print("\n[!] No page files found.")
              print("    Looking for: HTML, JSX, TSX in pages/app/routes directories")
              output = {"script": "seo_checker", "files_checked": 0, "passed": True}
              print("\n" + json.dumps(output, indent=2))
              sys.exit(0)
          
          print(f"Found {len(pages)} page files to analyze\n")
          
          # Check each page
          all_issues = []
          for f in pages:
              result = check_page(f)
              if result["issues"]:
                  all_issues.append(result)
          
          # Summary
          print("=" * 60)
          print("SEO ANALYSIS RESULTS")
          print("=" * 60)
          
          if all_issues:
              # Group by issue type
              issue_counts = {}
              for item in all_issues:
                  for issue in item["issues"]:
                      issue_counts[issue] = issue_counts.get(issue, 0) + 1
              
              print("\nIssue Summary:")
              for issue, count in sorted(issue_counts.items(), key=lambda x: -x[1]):
                  print(f"  [{count}] {issue}")
              
              print(f"\nAffected files ({len(all_issues)}):")
              for item in all_issues[:5]:
                  print(f"  - {item['file']}")
              if len(all_issues) > 5:
                  print(f"  ... and {len(all_issues) - 5} more")
          else:
              print("\n[OK] No SEO issues found!")
          
          total_issues = sum(len(item["issues"]) for item in all_issues)
          passed = total_issues == 0
          
          output = {
              "script": "seo_checker",
              "project": str(project_path),
              "files_checked": len(pages),
              "files_with_issues": len(all_issues),
              "issues_found": total_issues,
              "passed": passed
          }
          
          print("\n" + json.dumps(output, indent=2))
          
          sys.exit(0 if passed else 1)
      
      
      if __name__ == "__main__":
          main()
      
  • SKILL.md 2.7 KB
    ---
    name: seo-fundamentals
    description: SEO fundamentals, E-E-A-T, Core Web Vitals, and Google algorithm principles.
    allowed-tools: Read, Glob, Grep
    ---
    
    # SEO Fundamentals
    
    > Principles for search engine visibility.
    
    ---
    
    ## 1. E-E-A-T Framework
    
    | Principle | Signals |
    |-----------|---------|
    | **Experience** | First-hand knowledge, real examples |
    | **Expertise** | Credentials, depth of knowledge |
    | **Authoritativeness** | Backlinks, mentions, industry recognition |
    | **Trustworthiness** | HTTPS, transparency, accurate info |
    
    ---
    
    ## 2. Core Web Vitals
    
    | Metric | Target | Measures |
    |--------|--------|----------|
    | **LCP** | < 2.5s | Loading performance |
    | **INP** | < 200ms | Interactivity |
    | **CLS** | < 0.1 | Visual stability |
    
    ---
    
    ## 3. Technical SEO Principles
    
    ### Site Structure
    
    | Element | Purpose |
    |---------|---------|
    | XML sitemap | Help crawling |
    | robots.txt | Control access |
    | Canonical tags | Prevent duplicates |
    | HTTPS | Security signal |
    
    ### Performance
    
    | Factor | Impact |
    |--------|--------|
    | Page speed | Core Web Vital |
    | Mobile-friendly | Ranking factor |
    | Clean URLs | Crawlability |
    
    ---
    
    ## 4. Content SEO Principles
    
    ### Page Elements
    
    | Element | Best Practice |
    |---------|---------------|
    | Title tag | 50-60 chars, keyword front |
    | Meta description | 150-160 chars, compelling |
    | H1 | One per page, main keyword |
    | H2-H6 | Logical hierarchy |
    | Alt text | Descriptive, not stuffed |
    
    ### Content Quality
    
    | Factor | Importance |
    |--------|------------|
    | Depth | Comprehensive coverage |
    | Freshness | Regular updates |
    | Uniqueness | Original value |
    | Readability | Clear writing |
    
    ---
    
    ## 5. Schema Markup Types
    
    | Type | Use |
    |------|-----|
    | Article | Blog posts, news |
    | Organization | Company info |
    | Person | Author profiles |
    | FAQPage | Q&A content |
    | Product | E-commerce |
    | Review | Ratings |
    | BreadcrumbList | Navigation |
    
    ---
    
    ## 6. AI Content Guidelines
    
    ### What Google Looks For
    
    | ✅ Do | ❌ Don't |
    |-------|----------|
    | AI draft + human edit | Publish raw AI content |
    | Add original insights | Copy without value |
    | Expert review | Skip fact-checking |
    | Follow E-E-A-T | Keyword stuffing |
    
    ---
    
    ## 7. Ranking Factors (Prioritized)
    
    | Priority | Factor |
    |----------|--------|
    | 1 | Quality, relevant content |
    | 2 | Backlinks from authority sites |
    | 3 | Page experience (Core Web Vitals) |
    | 4 | Mobile optimization |
    | 5 | Technical SEO fundamentals |
    
    ---
    
    ## 8. Measurement
    
    | Metric | Tool |
    |--------|------|
    | Rankings | Search Console, Ahrefs |
    | Traffic | Analytics |
    | Core Web Vitals | PageSpeed Insights |
    | Indexing | Search Console |
    | Backlinks | Ahrefs, Semrush |
    
    ---
    
    > **Remember:** SEO is a long-term game. Quality content + technical excellence + patience = results.
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related