6eff12e8ac
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>
195 lines
6.4 KiB
Markdown
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
|