Files
craig 6eff12e8ac Initial commit — SEO Guidelines & SmartCrawl reference
SmartCrawl plugin reference (11 docs):
- Overview, configuration, titles & meta, schema, sitemaps,
  social/OG, redirects, breadcrumbs, content analysis,
  hooks/filters, known issues

SEO strategy playbook (6 docs):
- Keyword research, per-page-type selection, on-page optimization,
  local SEO, technical SEO, content strategy

Reusable templates (3):
- Site audit checklist, keyword research worksheet,
  page optimization checklist

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-17 13:32:17 -05:00

195 lines
6.4 KiB
Markdown

# Technical SEO
Technical foundations that must be in place for any SEO effort to succeed. These affect how Google crawls, indexes, and ranks your site.
## Core Web Vitals
Google's page experience signals. Content relevance is still more important, but poor performance can hold you back.
### Metrics
| Metric | Target | What It Measures |
|--------|--------|-----------------|
| **LCP** (Largest Contentful Paint) | Under 2.5s | How fast the main content loads |
| **INP** (Interaction to Next Paint) | Under 200ms | How responsive the page is to input |
| **CLS** (Cumulative Layout Shift) | Under 0.1 | How much the layout shifts during load |
### How to Improve
**LCP:**
- Optimize images (WebP/AVIF, proper sizing, lazy loading for below-fold)
- Reduce server response time (caching, CDN)
- Preload critical resources (fonts, hero images)
- Minimize render-blocking CSS/JS
**INP:**
- Minimize JavaScript execution time
- Break up long tasks
- Optimize event handlers
- Defer non-critical JavaScript
**CLS:**
- Set explicit width/height on images and embeds
- Don't insert content above existing content dynamically
- Use `font-display: swap` or preload web fonts
- Reserve space for ads/embeds
### WordPress Specifics
- Use server-level caching (EA-Nginx proxy cache is already configured on our server)
- Optimize images on upload (Smush or similar)
- Minimize plugin count — each plugin adds overhead
- Use Hummingbird or LiteSpeed Cache for asset optimization
- Purge Nginx cache after changes: `rm -rf /var/cache/ea-nginx/proxy/<account>/*`
## Mobile-First Indexing
Google uses the **mobile version** of your site for indexing and ranking. There is no separate desktop index.
### Requirements
- [ ] All desktop content is also visible on mobile
- [ ] Viewport meta tag present: `<meta name="viewport" content="width=device-width, initial-scale=1">`
- [ ] Font size minimum 16px body text
- [ ] Tap targets minimum 48x48px with 8px spacing
- [ ] No horizontal scrolling
- [ ] Content hidden in accordions/tabs is fine (as long as it's in the HTML)
### Testing
- Google's Mobile-Friendly Test
- Search Console > Mobile Usability report
- Chrome DevTools device emulator
## Crawlability and Indexability
### XML Sitemap
- Submit to Google Search Console
- SmartCrawl generates this automatically
- Verify at `yoursite.com/sitemap.xml`
- Include all important pages, exclude thin/duplicate content
### Robots.txt
Recommended content:
```
User-agent: *
Allow: /
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://yoursite.com/sitemap.xml
```
**Do NOT block CSS/JS files** — Google needs them for mobile-first rendering.
### Crawl Budget
For small sites (<500 pages), crawl budget is rarely an issue. For larger sites:
- Don't waste budget on filter pages, parameter URLs, or thin pagination
- Use `noindex` on pages with no SEO value
- Keep the sitemap clean (only valuable URLs)
### Index Status
Check Search Console > Pages report for:
| Status | Meaning | Action |
|--------|---------|--------|
| Indexed | Page is in Google | Good |
| Discovered — not indexed | Google knows about it but hasn't indexed it | Improve content quality, add internal links |
| Crawled — not indexed | Google crawled it but chose not to index | Content isn't valuable enough — improve or noindex |
| Excluded by noindex | You set noindex | Intentional? If not, fix it |
### What to Noindex
- Thank you / confirmation pages
- Internal search results
- Tag archives with thin content
- Author archives on single-author sites
- Admin/login pages
- Paginated archives
- Media attachment pages
## Canonical URLs
### Self-Referencing Canonicals
Every page should have: `<link rel="canonical" href="https://example.com/current-page/">`
SmartCrawl handles this automatically for most cases.
### Choose One Format
Pick one and redirect all variations to it:
| Decision | Options |
|----------|---------|
| www vs non-www | `example.com` or `www.example.com` |
| HTTP vs HTTPS | Always HTTPS |
| Trailing slash | `/page/` or `/page` — pick one |
Redirect the other variations via `.htaccess` or server config (not SmartCrawl — this is a server-level concern).
## Structured Data
See [Schema Markup](../smartcrawl/schema-markup.md) for SmartCrawl implementation.
### Priority Order
| Schema Type | Rich Result | Priority |
|-------------|-------------|----------|
| **LocalBusiness** | Knowledge panel, maps | Every local business |
| **FAQ** | Expandable Q&A in SERPs | Pages with Q&A content |
| **BreadcrumbList** | Breadcrumb trail in SERPs | All pages (via Breadcrumbs module) |
| **Event** | Date/time/location in SERPs | Event listings |
| **Course** | Course listing | Educational offerings |
| **Article** | Article metadata | Blog posts |
| **Product** | Price, availability, rating | WooCommerce products |
| **Review / AggregateRating** | Stars in results | Review pages (genuine reviews only) |
### Validation
Always validate after deployment:
1. [Google Rich Results Test](https://search.google.com/test/rich-results)
2. [Schema.org Validator](https://validator.schema.org/)
3. Google Search Console > Enhancements (ongoing monitoring)
## HTTPS
- **Required.** No exceptions. Google uses HTTPS as a ranking signal.
- All HTTP URLs should 301 redirect to HTTPS
- Mixed content (HTTP resources on HTTPS pages) must be fixed
- SSL certificates are managed via cPanel on our server
## Page Speed Quick Wins
| Action | Impact | Effort |
|--------|--------|--------|
| Enable server-level caching | High | Already done (EA-Nginx) |
| Optimize images (WebP, compression) | High | Low |
| Lazy load below-fold images | Medium | Low |
| Minimize active plugins | Medium | Low |
| Preload critical fonts | Medium | Low |
| Defer non-critical JavaScript | Medium | Medium |
| Use a CDN | Medium | Medium |
| Inline critical CSS | Low | High |
## Technical SEO Audit Checklist
- [ ] Site loads over HTTPS (no mixed content)
- [ ] XML sitemap exists and is submitted to Search Console
- [ ] Robots.txt is correct (not blocking important resources)
- [ ] All pages have self-referencing canonical tags
- [ ] One URL format (www/non-www, slash/no-slash) with redirects for the rest
- [ ] No orphan pages (every page has internal links)
- [ ] Core Web Vitals pass (LCP < 2.5s, INP < 200ms, CLS < 0.1)
- [ ] Mobile-friendly test passes
- [ ] No 404 errors on important pages (check Search Console)
- [ ] Structured data validates without errors
- [ ] No duplicate title tags or meta descriptions
- [ ] Images have alt text and are optimized