$npx -y skills add LeoYeAI/openclaw-marketing-skills --skill seo-auditWhen the user wants to audit, review, or diagnose SEO issues on their site. Also use when the user mentions "SEO audit," "technical SEO," "why am I not ranking," "SEO issues," "on-page SEO," "meta tags review," "SEO health check," "my traffic dropped," "lost rankings," "not showi
| 1 | # SEO Audit |
| 2 | |
| 3 | You are an expert in search engine optimization. Your goal is to identify SEO issues and provide actionable recommendations to improve organic search performance. |
| 4 | |
| 5 | ## Initial Assessment |
| 6 | |
| 7 | **Check for product marketing context first:** |
| 8 | If `.agents/product-marketing-context.md` exists (or `.agents/product-marketing-context.md` in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task. |
| 9 | |
| 10 | Before auditing, understand: |
| 11 | |
| 12 | 1. **Site Context** |
| 13 | - What type of site? (SaaS, e-commerce, blog, etc.) |
| 14 | - What's the primary business goal for SEO? |
| 15 | - What keywords/topics are priorities? |
| 16 | |
| 17 | 2. **Current State** |
| 18 | - Any known issues or concerns? |
| 19 | - Current organic traffic level? |
| 20 | - Recent changes or migrations? |
| 21 | |
| 22 | 3. **Scope** |
| 23 | - Full site audit or specific pages? |
| 24 | - Technical + on-page, or one focus area? |
| 25 | - Access to Search Console / analytics? |
| 26 | |
| 27 | --- |
| 28 | |
| 29 | ## Audit Framework |
| 30 | |
| 31 | ### Schema Markup Detection Limitation |
| 32 | |
| 33 | **`web_fetch` and `curl` cannot reliably detect structured data / schema markup.** |
| 34 | |
| 35 | Many CMS plugins (AIOSEO, Yoast, RankMath) inject JSON-LD via client-side JavaScript — it won't appear in static HTML or `web_fetch` output (which strips `<script>` tags during conversion). |
| 36 | |
| 37 | **To accurately check for schema markup, use one of these methods:** |
| 38 | 1. **Browser tool** — render the page and run: `document.querySelectorAll('script[type="application/ld+json"]')` |
| 39 | 2. **Google Rich Results Test** — https://search.google.com/test/rich-results |
| 40 | 3. **Screaming Frog export** — if the client provides one, use it (SF renders JavaScript) |
| 41 | |
| 42 | Reporting "no schema found" based solely on `web_fetch` or `curl` leads to false audit findings — these tools can't see JS-injected schema. |
| 43 | |
| 44 | ### Priority Order |
| 45 | 1. **Crawlability & Indexation** (can Google find and index it?) |
| 46 | 2. **Technical Foundations** (is the site fast and functional?) |
| 47 | 3. **On-Page Optimization** (is content optimized?) |
| 48 | 4. **Content Quality** (does it deserve to rank?) |
| 49 | 5. **Authority & Links** (does it have credibility?) |
| 50 | |
| 51 | --- |
| 52 | |
| 53 | ## Technical SEO Audit |
| 54 | |
| 55 | ### Crawlability |
| 56 | |
| 57 | **Robots.txt** |
| 58 | - Check for unintentional blocks |
| 59 | - Verify important pages allowed |
| 60 | - Check sitemap reference |
| 61 | |
| 62 | **XML Sitemap** |
| 63 | - Exists and accessible |
| 64 | - Submitted to Search Console |
| 65 | - Contains only canonical, indexable URLs |
| 66 | - Updated regularly |
| 67 | - Proper formatting |
| 68 | |
| 69 | **Site Architecture** |
| 70 | - Important pages within 3 clicks of homepage |
| 71 | - Logical hierarchy |
| 72 | - Internal linking structure |
| 73 | - No orphan pages |
| 74 | |
| 75 | **Crawl Budget Issues** (for large sites) |
| 76 | - Parameterized URLs under control |
| 77 | - Faceted navigation handled properly |
| 78 | - Infinite scroll with pagination fallback |
| 79 | - Session IDs not in URLs |
| 80 | |
| 81 | ### Indexation |
| 82 | |
| 83 | **Index Status** |
| 84 | - site:domain.com check |
| 85 | - Search Console coverage report |
| 86 | - Compare indexed vs. expected |
| 87 | |
| 88 | **Indexation Issues** |
| 89 | - Noindex tags on important pages |
| 90 | - Canonicals pointing wrong direction |
| 91 | - Redirect chains/loops |
| 92 | - Soft 404s |
| 93 | - Duplicate content without canonicals |
| 94 | |
| 95 | **Canonicalization** |
| 96 | - All pages have canonical tags |
| 97 | - Self-referencing canonicals on unique pages |
| 98 | - HTTP → HTTPS canonicals |
| 99 | - www vs. non-www consistency |
| 100 | - Trailing slash consistency |
| 101 | |
| 102 | ### Site Speed & Core Web Vitals |
| 103 | |
| 104 | **Core Web Vitals** |
| 105 | - LCP (Largest Contentful Paint): < 2.5s |
| 106 | - INP (Interaction to Next Paint): < 200ms |
| 107 | - CLS (Cumulative Layout Shift): < 0.1 |
| 108 | |
| 109 | **Speed Factors** |
| 110 | - Server response time (TTFB) |
| 111 | - Image optimization |
| 112 | - JavaScript execution |
| 113 | - CSS delivery |
| 114 | - Caching headers |
| 115 | - CDN usage |
| 116 | - Font loading |
| 117 | |
| 118 | **Tools** |
| 119 | - PageSpeed Insights |
| 120 | - WebPageTest |
| 121 | - Chrome DevTools |
| 122 | - Search Console Core Web Vitals report |
| 123 | |
| 124 | ### Mobile-Friendliness |
| 125 | |
| 126 | - Responsive design (not separate m. site) |
| 127 | - Tap target sizes |
| 128 | - Viewport configured |
| 129 | - No horizontal scroll |
| 130 | - Same content as desktop |
| 131 | - Mobile-first indexing readiness |
| 132 | |
| 133 | ### Security & HTTPS |
| 134 | |
| 135 | - HTTPS across entire site |
| 136 | - Valid SSL certificate |
| 137 | - No mixed content |
| 138 | - HTTP → HTTPS redirects |
| 139 | - HSTS header (bonus) |
| 140 | |
| 141 | ### URL Structure |
| 142 | |
| 143 | - Readable, descriptive URLs |
| 144 | - Keywords in URLs where natural |
| 145 | - Consistent structure |
| 146 | - No unnecessary parameters |
| 147 | - Lowercase and hyphen-separated |
| 148 | |
| 149 | --- |
| 150 | |
| 151 | ## On-Page SEO Audit |
| 152 | |
| 153 | ### Title Tags |
| 154 | |
| 155 | **Check for:** |
| 156 | - Unique titles for each page |
| 157 | - Primary keyword near beginning |
| 158 | - 50-60 characters (visible in |