Edit Skill
👤 Nick
Edit Skill: website-seo
Name
Category
Description
website-seo workspace skill
Skill Instructions
saved to SKILL.md
--- name: website-seo version: 1.0.0 description: Complete on-page SEO system for any website — page optimization, schema markup, technical SEO checklist, internal linking strategy, Core Web Vitals guidance, and AI-driven content gap analysis. Works for any CMS (WordPress, Webflow, Squarespace, custom). tags: [seo, on-page-seo, technical-seo, schema-markup, core-web-vitals, wordpress, content-optimization] author: contentai-suite license: MIT --- # Website SEO — Universal On-Page Optimization System ## What This Skill Does Guides you through a complete website SEO audit and optimization process. Covers on-page elements, technical fundamentals, schema markup, and an ongoing optimization strategy that compounds over time. ## How to Use This Skill **Input format:** ``` WEBSITE URL: [Your website] CMS: [WordPress / Webflow / Squarespace / Shopify / Custom] NICHE: [Your industry] TARGET LOCATION: [Local / National / Global] PRIORITY PAGES: [Homepage / Service pages / Blog / Product pages] CURRENT ISSUES: [Known issues or "unknown — need full audit"] GOAL: [Rank for specific keywords / Improve existing rankings / Fix technical issues] ``` --- ## Phase 1: Page-Level Optimization ### Title Tag Optimization **Formula:** `Primary Keyword — Secondary Keyword | Brand Name` ``` Rules: - 50-60 characters maximum - Primary keyword as close to the beginning as possible - Each page must have a UNIQUE title - Make it compelling for humans, not just crawlers Bad: "Home | Company Name" Good: "Personal Training Rotterdam — 1-on-1 Coaching | Brand Name" ``` ### Meta Description Optimization **Formula:** `[Benefit] + [Primary keyword] + [CTA]` ``` Rules: - 150-160 characters - Include primary keyword naturally - Include a call-to-action - Each page must have a UNIQUE meta description - Think of it as a micro-ad for your page in search results Prompt to generate: "Write a meta description for a [PAGE TYPE] page about [TOPIC] for [BRAND NAME]. Primary keyword: [KEYWORD]. Audience: [AUDIENCE]. Max 155 characters. Include a benefit + soft CTA." ``` ### Header Structure (H1-H6) ``` Rules: - ONE H1 per page — contains primary keyword - H2s: section headers — contain secondary/LSI keywords - H3s: subsections - Never skip levels (don't go H1 → H3) - Headers should describe the content below them accurately Audit prompt: "Review the heading structure of this page: [paste page content] Identify: missing H1, keyword opportunities in headers, hierarchy issues." ``` ### Content Optimization ``` On-Page Content Checklist: - [ ] Primary keyword in first 100 words - [ ] Primary keyword appears naturally throughout (1-2% density) - [ ] LSI keywords (related terms) used throughout - [ ] Minimum 300 words for service pages, 800+ for blog posts - [ ] Content answers the search intent (informational/commercial/navigational) - [ ] Internal links to 2-3 relevant pages on your site - [ ] External link to 1 authoritative source - [ ] All images have descriptive alt text Content optimization prompt: "Optimize this content for the keyword [KEYWORD]: [Paste your existing content] Suggest: where to add the keyword naturally, missing LSI terms, structural improvements, and any thin content sections to expand." ``` --- ## Phase 2: Technical SEO Essentials ### Core Technical Checklist ``` INDEXABILITY: - [ ] robots.txt exists and doesn't block important pages - [ ] XML sitemap submitted to Google Search Console - [ ] No important pages with noindex tag - [ ] Canonical tags set correctly PERFORMANCE: - [ ] Page loads under 3 seconds (test: PageSpeed Insights) - [ ] Images compressed and in WebP format where possible - [ ] Minified CSS and JavaScript - [ ] Browser caching enabled MOBILE: - [ ] Mobile-responsive design - [ ] No intrusive interstitials on mobile - [ ] Tap targets large enough (48×48px minimum) - [ ] Text readable without zooming CRAWLABILITY: - [ ] Clean URL structure (yoursite.com/service-name not yoursite.com/p=123) - [ ] No broken internal links - [ ] No redirect chains (A→B→C, should be A→C directly) - [ ] HTTPS enabled on all pages CORE WEB VITALS: - [ ] LCP (Largest Contentful Paint) < 2.5 seconds - [ ] CLS (Cumulative Layout Shift) < 0.1 - [ ] FID/INP (Interaction to Next Paint) < 200ms ``` ### URL Structure Best Practices ``` Good URL structure: yoursite.com/service/keyword-based-page-name yoursite.com/blog/topic-keyword-post-title Bad URL structure: yoursite.com/page?id=123 yoursite.com/2024/01/01/blog/post yoursite.com/my-awesome-service-page-click-here Rules: - Use hyphens (-) not underscores (_) - Lowercase only - Include primary keyword - Remove stop words (the, a, and, or) where possible - Keep it short — under 60 characters ideal ``` --- ## Phase 3: Schema Markup Schema markup tells search engines exactly what your content means, enabling rich snippets. ### Most Valuable Schema Types **Local Business (for location-based businesses):** ```json { "@context": "https://schema.org", "@type": "LocalBusiness", "name": "[Business Name]", "address": { "@type": "PostalAddress", "streetAddress": "[Street]", "addressLocality": "[City]", "postalCode": "[Code]", "addressCountry": "[Country Code]" }, "telephone": "[Phone]", "url": "[Website URL]", "openingHours": ["Mo-Fr 09:00-17:00"], "priceRange": "$$" } ``` **Article/Blog Post:** ```json { "@context": "https://schema.org", "@type": "Article", "headline": "[Post Title]", "author": {"@type": "Person", "name": "[Author Name]"}, "datePublished": "[ISO Date]", "description": "[Meta Description]" } ``` **FAQ (for Q&A sections):** ```json { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{ "@type": "Question", "name": "[Question text]", "acceptedAnswer": { "@type": "Answer", "text": "[Answer text]" } }] } ``` **Schema generation prompt:** ``` Generate [SCHEMA TYPE] schema markup for [BUSINESS NAME]. Details: [provide business details, page content, or FAQ content] Output: valid JSON-LD format ready to add to the page <head> ``` --- ## Phase 4: Internal Linking Strategy Internal links distribute page authority and help users navigate your site. **Hub and Spoke Model:** ``` PILLAR PAGE (broad topic) → linked to by all related pages CLUSTER PAGES (specific subtopics) → each links back to pillar page Example: Pillar: "Ultimate Guide to [Your Service]" Clusters: - "[Specific aspect 1] Explained" - "How to [specific task] — Step by Step" - "[Topic] for Beginners" - "[Advanced topic] Guide" ``` **Internal linking rules:** - Link from high-traffic pages to pages you want to rank - Use descriptive anchor text (not "click here" or "read more") - Add 2-3 internal links per new page or post - Audit broken internal links quarterly --- ## Phase 5: Ongoing SEO Monitoring ### Monthly SEO Audit Checklist ``` RANKING: - [ ] Check Google Search Console for position changes - [ ] Identify keywords dropped — investigate why - [ ] Find new keyword opportunities from "Queries" report TECHNICAL: - [ ] Check for new crawl errors in GSC - [ ] Review Core Web Vitals report - [ ] Check any new 404 errors CONTENT: - [ ] Update any outdated statistics or information - [ ] Add internal links from new content to older pages - [ ] Identify thin pages (under 300 words) for expansion ``` ### SEO Audit Prompt ``` I'm auditing [WEBSITE URL] for [NICHE] targeting [KEYWORDS]. Based on SEO best practices, identify the top 10 issues to fix. Priority order: technical issues → on-page → content gaps → link opportunities. Format: Issue | Impact (High/Medium/Low) | Recommended fix ``` --- ## SEO Plugin API Fields (WordPress) If the site uses **RankMath**, set these fields via the WordPress REST API for **standard posts and pages**. They are not set automatically — you must write them explicitly via `meta` in your PATCH/POST request: - `rank_math_focus_keyword` — primary target keyword - `rank_math_title` — SEO title shown in Google results (distinct from post title) - `rank_math_description` — meta description (150-160 chars, includes keyword, ends with CTA) ⚠️ **Elementor CPT exception (e.g., Ironwood `service-areas` pages):** RankMath meta fields on Elementor custom post types are NOT accessible via the REST API. Use WP-CLI instead: ```bash wp post meta update POST_ID rank_math_focus_keyword "tree removal Tulsa" wp post meta update POST_ID rank_math_title "Tree Removal Tulsa | Ironwood Tree Co" wp post meta update POST_ID rank_math_description "Professional tree removal in Tulsa. Licensed, insured. Free estimates. Call 918-201-1987." ``` See WORDPRESS-REFERENCE.md for the full list of required meta fields on Elementor service-area pages. If the site uses **Yoast SEO**, the equivalent fields are: - `_yoast_wpseo_focuskw` - `_yoast_wpseo_title` - `_yoast_wpseo_metadesc` Always check which SEO plugin is active before writing meta fields.
Cancel