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>
This commit is contained in:
2026-04-17 13:32:17 -05:00
commit 6eff12e8ac
21 changed files with 3301 additions and 0 deletions
+147
View File
@@ -0,0 +1,147 @@
# Content Strategy
How to plan, prioritize, and organize content for maximum SEO impact.
## Topic Clusters and Pillar Pages
The modern approach to building topical authority.
### Structure
- **Pillar page:** A comprehensive page covering a broad topic. Targets a competitive short-tail keyword.
- **Cluster pages:** 5-15 supporting pages each covering a subtopic in depth. Each targets a specific long-tail keyword.
- **Internal links:** Every cluster page links to the pillar page and vice versa. Cluster pages also link to each other.
### Example: Motorcycle Safety School
**Pillar page:** "Complete Guide to Getting Your Motorcycle License in Alaska"
- Targets: "motorcycle license Alaska"
**Cluster pages:**
- "What to Expect at a Basic Rider Course" → links to pillar
- "Motorcycle Gear Checklist for Beginners" → links to pillar
- "Alaska Motorcycle Laws and Requirements" → links to pillar
- "How to Choose the Right Motorcycle Safety Course" → links to pillar
- "MSF Certification: What It Means and Why It Matters" → links to pillar
- "Riding in Alaska: Weather, Roads, and Safety Tips" → links to pillar
**Why this works:** Google sees concentrated topical authority. The pillar page gets authority from all cluster pages. Cluster pages get authority from the pillar. The whole cluster ranks better than isolated pages would.
## Content Gap Analysis
Find topics competitors cover that you don't.
### Process
1. Search your primary keywords and study the top 5 results
2. List every subtopic, question, and section they cover
3. Compare against your own content
4. Prioritize gaps by: search intent match → search volume → difficulty
### Format Gaps
If competitors only have text and you create a video, infographic, or interactive tool — you can rank with a differentiated asset.
## Seasonal Keyword Opportunities
### Plan Ahead
Create seasonal content **2-3 months before peak** to give Google time to index and rank it.
| Business Type | Peak Season | Content Should Be Live By |
|--------------|-------------|--------------------------|
| Motorcycle training (Alaska) | Spring (March-May) | January-February |
| Event-based businesses | Season start | 2-3 months ahead |
| Portfolio/hiring | Q4 (hiring season) | September-October |
| General services | January (new year planning) | November-December |
### Seasonal Content Types
- "[Season] [Year] [Service] Schedule" pages
- Seasonal preparation guides
- Event announcements and previews
- Year-in-review or seasonal recap posts
### Reuse Strategy
Don't create new seasonal URLs each year. Update the same page:
- `/spring-motorcycle-courses/` (update content annually)
- NOT `/spring-2026-motorcycle-courses/` (dead URL next year)
## Prioritization Framework
### Tier 1 — Immediate (Highest ROI)
| Action | Why |
|--------|-----|
| Pages ranking positions 5-20 | "Striking distance" — small improvements = big gains |
| Service pages with transactional intent | Closest to revenue |
| Pages with high impressions but low CTR | Fix title/description for quick win |
### Tier 2 — Soon
| Action | Why |
|--------|-----|
| Homepage optimization | Highest-authority page |
| Core location pages | Foundation for local SEO |
| Top blog posts that could rank higher | Already have some authority |
### Tier 3 — Ongoing
| Action | Why |
|--------|-----|
| New blog content (topic clusters) | Builds topical authority over time |
| Portfolio/case study pages | Supports E-E-A-T |
| About/contact optimization | Supports local SEO |
| Content for identified gaps | Fills missing coverage |
### Golden Rule
**Optimize existing content before creating new content.** A page that already exists with some authority responds to improvements faster than a brand new page.
## Content Quality Standards
### Every Published Page Should Have
- [ ] One primary keyword targeted
- [ ] Clear search intent match
- [ ] Title tag optimized (50-60 chars, keyword near start)
- [ ] Meta description hand-crafted (150-160 chars)
- [ ] H1 with primary keyword
- [ ] Structured subheadings (H2/H3)
- [ ] Internal links to/from related pages
- [ ] At least one image with descriptive alt text
- [ ] Clear CTA (for commercial/transactional pages)
- [ ] SmartCrawl focus keyword set and analysis reviewed
### Content Types and Minimum Quality
| Type | Minimum Length | Key Elements |
|------|---------------|-------------|
| Service page | 500+ words | Pricing/CTA, features, FAQ, testimonials |
| Blog post | 800+ words | Answer the query thoroughly, internal links |
| Pillar page | 2,000+ words | Comprehensive coverage, links to all clusters |
| Location page | 500+ words | Unique local content, NAP, map |
| Portfolio piece | 300+ words | Project summary, skills, outcomes |
**Length is a guideline, not a rule.** A 400-word service page that perfectly answers the query will outrank a 2,000-word page that buries the answer.
## Content Calendar
### Monthly Rhythm
| Week | Activity |
|------|----------|
| Week 1 | Publish 1 new blog post (from topic cluster plan) |
| Week 2 | Optimize 2 existing pages (striking distance keywords) |
| Week 3 | Publish 1 new blog post or update an old one |
| Week 4 | Review Search Console data, plan next month |
### Quarterly Activities
- Review and update all service page content
- Audit internal links (find orphan pages, fix broken links)
- Check keyword rankings and adjust strategy
- Update seasonal content
This cadence is sustainable for small business sites and compounds over time.
+149
View File
@@ -0,0 +1,149 @@
# Keyword Research
How to find the right keywords for any site, with an emphasis on free tools and methods applicable to small business WordPress sites.
## Fundamentals
### Primary vs Secondary Keywords
**Primary keyword:** The single most important search term a page should rank for. Every page gets exactly one. It should appear in the title tag, H1, URL slug, and first 100 words.
**Secondary keywords:** 3-5 closely related terms or synonyms that support the primary keyword. These go in H2/H3 headings, body content, and image alt text.
Google's NLP (BERT, MUM) understands synonyms and related concepts, so exact-match repetition is unnecessary — semantic relevance matters more.
**Example for a motorcycle safety course in Alaska:**
- Primary: "motorcycle safety course Anchorage"
- Secondary: "MSF basic rider course Alaska", "learn to ride motorcycle Anchorage", "motorcycle license training Alaska", "beginner motorcycle class near me"
### Long-Tail vs Short-Tail
| Aspect | Short-tail (1-2 words) | Long-tail (3+ words) |
|--------|----------------------|---------------------|
| Example | "motorcycle course" | "weekend motorcycle safety course Anchorage AK" |
| Search volume | High | Low |
| Competition | Very high | Low to moderate |
| Conversion rate | Low (vague intent) | High (specific intent) |
| Best for | Brand awareness, pillar pages | Service pages, blog posts, local pages |
**For small business sites, long-tail keywords are the priority.** You won't outrank national brands for "motorcycle course" but you can rank #1 for "motorcycle safety course Anchorage Alaska."
### Search Intent Types
Google categorizes every query by intent. **Matching intent is more important than keyword density or backlinks for ranking.**
| Intent | Signals | Content Type | Example |
|--------|---------|-------------|---------|
| **Informational** | "how to", "what is", "guide", questions | Blog posts, guides, FAQs | "how to prepare for a motorcycle safety course" |
| **Navigational** | Brand names, specific products | Homepage, branded pages | "Alaska Safe Riders" |
| **Commercial** | "best", "vs", "review", "top" | Comparison pages, service pages | "best motorcycle training courses in Alaska" |
| **Transactional** | "buy", "register", "near me", "price" | Service pages, registration, contact | "register motorcycle safety course Anchorage" |
**Check the current SERP for your target keyword** to see what Google considers the correct intent. If the top results are all blog posts, Google expects informational content — don't try to rank a service page there.
### Keyword Difficulty vs Search Volume
For small/local business sites, **ignore high-difficulty keywords at first.**
| Combination | Strategy |
|-------------|----------|
| Low difficulty + moderate volume | **Best opportunities — quick wins** |
| Low difficulty + low volume | Still valuable if commercial/transactional intent |
| High difficulty + high volume | Long-term goals only |
| High difficulty + low volume | Skip entirely |
**Quick difficulty check without paid tools:** Search your target keyword. If page 1 is dominated by Wikipedia, major publications, and government sites — too competitive. If you see other small businesses, local directories, and niche sites — achievable.
## Free Research Tools
### 1. Google Search Console (Your Best Tool)
Shows exactly what queries people use to find (or almost find) your site.
**Quick wins from Search Console:**
- **Performance > Queries > Sort by impressions:** See what Google shows your site for. High impressions + low clicks = fix your title/description or create dedicated content.
- **Position 8-20 keywords ("striking distance"):** These are queries where you're on page 1-2 but not top 5. A small content improvement or better title tag can push these up.
- **Pages report:** See which pages rank for which queries. If one page ranks for many unrelated queries, split content into separate focused pages.
- **Filter by query containing your location:** Find local search opportunities.
### 2. Google Autocomplete / People Also Ask / Related Searches
Free and directly reflects what people search for.
- **Autocomplete:** Type your service in Google and note every suggestion. Use the "alphabet soup" method: type `[service] a`, `[service] b`, etc.
- **People Also Ask (PAA):** Click on PAA questions to expand — Google loads more each time. Each question is a potential blog post or FAQ entry.
- **Related Searches:** At the bottom of the SERP. Semantically related queries Google considers relevant.
**Use incognito mode** and set location to your target area for accurate local results.
### 3. Google Trends
- **Compare seasonal patterns:** When do people search for your services most?
- **Compare keyword variations:** "motorcycle safety course" vs "motorcycle riding course" vs "motorcycle training"
- **Filter by region:** National trends may not match Alaska or Nashville patterns
- **Rising queries:** Terms growing in popularity — early opportunities
### 4. Free Tool Tiers
| Tool | Free Limit | Best For |
|------|-----------|----------|
| **Google Keyword Planner** | Unlimited (with Google Ads account) | Volume ranges, related keywords |
| **Ubersuggest** | 3 searches/day | Volume, difficulty, suggestions |
| **AnswerThePublic** | 3 searches/day | Questions people ask about a topic |
| **Keyword Surfer** (Chrome ext.) | Unlimited | Volume in Google search results |
| **AlsoAsked.com** | 3 searches/day | PAA data visualization |
| **Ahrefs Webmaster Tools** | Unlimited (site owner) | What you currently rank for |
### 5. Competitor Analysis (No Paid Tools)
- **Search your target keywords** and study who ranks on page 1:
- Their title tags and meta descriptions
- Content structure and length
- Header tags (view source)
- What topics they cover that you don't
- **Check competitor sitemaps:** `competitor.com/sitemap.xml` reveals their full content strategy
- **Google `site:competitor.com [your service]`** to see their pages targeting similar keywords
- **Ahrefs Free Backlink Checker:** Shows top backlinks for any URL
## The Keyword Matrix
For local businesses, create a grid:
| | Anchorage | Fairbanks | Wasilla | Eagle River |
|---|-----------|-----------|---------|-------------|
| motorcycle course | Target | Target | Assess | Assess |
| rider training | Target | Assess | -- | -- |
| motorcycle license | Target | Target | Assess | -- |
Each intersection with "Target" gets its own page or section. "Assess" means check volume before investing.
## Research Process
### Step 1: Seed Keywords
List everything you think your customers might search for. Include:
- Service names
- Problem descriptions ("how to get motorcycle license")
- Location variations
- Competitor brand names (for comparison content)
### Step 2: Expand with Tools
Run seed keywords through Google Autocomplete, PAA, Keyword Planner, and Ubersuggest. Note every relevant variation.
### Step 3: Classify by Intent
Tag each keyword as informational, navigational, commercial, or transactional.
### Step 4: Assess Difficulty
For each keyword, quick-check the SERP. Can you realistically compete?
### Step 5: Prioritize
Use the [Keyword Research Template](../templates/keyword-research-template.md) to organize and prioritize.
### Step 6: Map to Pages
Assign one primary keyword to each existing page. Create new pages for keywords that don't have a natural home.
+132
View File
@@ -0,0 +1,132 @@
# Keyword Selection by Page Type
Every page on the site should target one primary keyword with a clear intent match. This guide covers how to choose keywords for each common page type.
## Homepage
| Aspect | Guidance |
|--------|---------|
| **Primary keyword** | Core service + primary location |
| **Intent** | Navigational + commercial |
| **Title pattern** | `[Brand Name] \| [Primary Service] in [Location]` |
| **Example** | "Alaska Safe Riders \| Motorcycle Safety Courses in Anchorage, AK" |
**Rules:**
- Establish what you do, where, and why you're the best choice
- Don't try to rank for everything — let inner pages handle specifics
- Don't keyword-stuff the homepage
## Service / Product Pages
| Aspect | Guidance |
|--------|---------|
| **Primary keyword** | Specific service + location |
| **Intent** | Commercial or transactional |
| **Title pattern** | `[Service Name] in [City, State] \| [Brand]` |
| **Example** | "Basic Rider Course in Anchorage, AK \| Alaska Safe Riders" |
**Rules:**
- **Each distinct service gets its own page** — "Basic Rider Course" and "Advanced Rider Course" should be separate pages
- Include pricing (or "contact for pricing"), what's included, duration, schedule, FAQs, testimonials
- Clear CTA (register, contact, sign up)
- Answer the questions a buyer would have before purchasing
## Blog Posts
| Aspect | Guidance |
|--------|---------|
| **Primary keyword** | Informational long-tail query |
| **Intent** | Informational |
| **Title pattern** | `[Question/Topic] — [Brand or Category]` |
| **Example** | "What to Wear to a Motorcycle Safety Course \| Alaska Safe Riders" |
**Rules:**
- Each post targets one specific question or topic
- Use Google's "People Also Ask" to find questions your audience searches
- **Internal link every blog post to relevant service pages** — this is the primary SEO purpose of blog content
- One blog post per topic — don't split thin content across multiple posts
## Portfolio Pages
| Aspect | Guidance |
|--------|---------|
| **Primary keyword** | Descriptive + role-based |
| **Intent** | Navigational or commercial investigation |
| **Title pattern** | `[Project Name] — [Role/Skill] Portfolio \| [Brand]` |
| **Example** | "IDT 5210 Capstone — Instructional Design Portfolio \| Chelsea Paige Mann" |
**Rules:**
- Each portfolio piece: descriptive title, project summary with natural keywords, skills/tools, outcomes
- Alt text on portfolio images should describe the work shown, not just "screenshot"
- Link to related pieces and back to the portfolio index
## Contact Page
| Aspect | Guidance |
|--------|---------|
| **Primary keyword** | "contact [brand]" or "[service] [location] contact" |
| **Intent** | Navigational / transactional |
| **Title pattern** | `Contact [Brand] \| [Location]` |
| **Example** | "Contact Alaska Safe Riders \| Anchorage, AK" |
**Rules:**
- Include full NAP (Name, Address, Phone)
- Embedded Google Map
- Contact form
- Business hours
- These signals support local SEO even if the page itself doesn't rank for much
## About Page
| Aspect | Guidance |
|--------|---------|
| **Primary keyword** | "[brand name] [location]" or "about [brand name]" |
| **Intent** | Navigational |
| **Title pattern** | `About [Brand] — [Qualifier] \| [Location]` |
| **Example** | "About Alaska Safe Riders — MSF-Certified Training Since 2015" |
**Rules:**
- Credentials, experience, team info, location details
- Supports E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness)
- Natural keyword use (don't force it)
- Link to service pages and Google Business Profile
## Landing Pages
| Aspect | Guidance |
|--------|---------|
| **Primary keyword** | Highly specific transactional term |
| **Intent** | Transactional |
| **Title pattern** | `[Specific Offer] in [Location] \| [Brand]` |
| **Example** | "Spring 2026 Motorcycle Course — Register Now \| Alaska Safe Riders" |
**Rules:**
- Minimal navigation, singular CTA
- Everything on the page drives toward one action
- Seasonal landing pages capture time-specific traffic
- Can noindex after the season ends, then republish/update for the next cycle
## Location Pages (Multi-Location Businesses)
| Aspect | Guidance |
|--------|---------|
| **Primary keyword** | `[service] in [specific location]` |
| **Intent** | Commercial / transactional |
| **Title pattern** | `[Service] in [City] \| [Brand]` |
| **Example** | "Motorcycle Courses in Fairbanks, AK \| Alaska Safe Riders" |
**Rules:**
- **Each location page needs genuinely unique content** — local landmarks, directions, area-specific details, local testimonials
- **Do NOT create thin location pages** that only swap city names — Google penalizes doorway pages
- Only create if you have enough real content to differentiate each page
## Common Mistakes
| Mistake | Fix |
|---------|-----|
| Same keyword on multiple pages | One primary keyword per page. If two pages target the same term, merge them. |
| Homepage targeting specific long-tail | Let inner pages handle specifics. Homepage = broad brand + service + location. |
| Blog posts with no internal links to services | Every blog post should link to at least one relevant service page. |
| Service pages with no CTA | Every service page needs a clear next step (register, contact, buy). |
| Portfolio pages with no keywords | Add descriptive titles and summaries with natural keyword use. |
| Contact page with just a form | Add NAP, map, hours, and service area for local SEO signals. |
+201
View File
@@ -0,0 +1,201 @@
# Local SEO
For small businesses with physical locations or defined service areas, local SEO often has the highest ROI of any optimization effort. This is critical for Alaska, Nashville, and other location-specific client sites.
## Google Business Profile (GBP)
The single most important local ranking factor.
### Setup Checklist
- [ ] **Business name:** Exact legal name (no keyword stuffing)
- [ ] **Address:** Full street address (or service area if no storefront)
- [ ] **Phone:** Local number (not toll-free if possible)
- [ ] **Hours:** Complete and accurate, including holidays
- [ ] **Website URL:** Link to homepage
- [ ] **Business description:** 750 characters max, include primary keywords naturally
- [ ] **Primary category:** Choose carefully — strongest ranking signal
- [ ] **Secondary categories:** Add all that apply (less weight but still help)
- [ ] **Services/Products:** List all offerings with descriptions
- [ ] **Attributes:** Check all applicable attributes (wheelchair accessible, etc.)
- [ ] **Photos:** Add 10+ photos at setup, then monthly updates
### Ongoing GBP Activities
| Activity | Frequency | Impact |
|----------|-----------|--------|
| Google Posts | Weekly | Shows activity, appears in knowledge panel |
| Photos | Monthly | 100+ photos = 520% more calls (BrightLocal data) |
| Review responses | Within 24-48 hours | Directly impacts ranking + trust |
| Q&A | Seed with common questions | Prevents random/incorrect answers |
| Hours updates | As needed | Especially holidays and seasonal changes |
### Getting Reviews
- Ask satisfied customers directly (in person or follow-up email)
- Share a direct review link: `search.google.com/local/writereview?placeid=[YOUR_PLACE_ID]`
- Respond to **every** review (positive and negative) professionally
- Never buy or incentivize reviews — Google penalizes this
## NAP Consistency
**NAP = Name, Address, Phone number.** Must be identical everywhere.
### The Rule
Pick ONE format and use it everywhere:
- "123 Main Street" vs "123 Main St." vs "123 Main St" — choose one
- Include or exclude suite numbers consistently
- Phone format: `(907) 555-0123` or `907-555-0123` — pick one
### Where NAP Must Appear
- Website (header, footer, contact page)
- Google Business Profile
- Yelp, Facebook, Instagram
- Industry-specific directories
- Chamber of Commerce, BBB
- Apple Maps, Bing Places
- Any citation or directory listing
### Auditing Citations
- Search your business name and manually check the top 20 results
- Use Moz Local checker (free) for a broader scan
- Fix inconsistencies immediately — they confuse Google
## Local Schema Markup
Add `LocalBusiness` schema to your website. See [Schema Markup](../smartcrawl/schema-markup.md) for SmartCrawl-specific implementation.
### Minimum Required
```json
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Business Name",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St",
"addressLocality": "Anchorage",
"addressRegion": "AK",
"postalCode": "99501",
"addressCountry": "US"
},
"telephone": "+1-907-555-0123",
"url": "https://example.com"
}
```
### Recommended Additional
- `openingHoursSpecification`
- `geo` (latitude/longitude)
- `areaServed`
- `priceRange`
- `image` (logo)
- `sameAs` (social profiles, directory listings)
Choose the most specific `@type` subtype that applies (e.g., `EducationalOrganization`, `ProfessionalService`).
## Location-Based Keywords
### Keyword Patterns
| Pattern | Example |
|---------|---------|
| `[service] + [city]` | "motorcycle course Anchorage" |
| `[service] + [state]` | "motorcycle safety training Alaska" |
| `[service] + near me` | Handled by Google via GBP/location signals |
| `[service] + [neighborhood]` | "riding lessons Eagle River" |
| `[service] + [qualifier] + [location]` | "affordable motorcycle course Anchorage AK" |
### Keyword Matrix
List all services down one side and all locations across the top. Each intersection is a potential target:
| | Anchorage | Fairbanks | Wasilla |
|---|-----------|-----------|---------|
| Basic Rider Course | Primary | Secondary | Assess |
| Advanced Course | Primary | -- | -- |
| Safety Clinic | Primary | Secondary | -- |
### "Near Me" Optimization
You do **NOT** optimize for "near me" by putting "near me" on your page. Google determines "near me" results based on:
- Searcher's physical location
- Your GBP location
- Local relevance signals (NAP, citations, reviews, local content)
**Optimize for `[service] + [city/state]` instead** — this covers both explicit geo-queries and implicit "near me" intent.
## Location Pages
### When to Create Them
Only if you have genuinely unique content for each location:
- Local landmarks, directions
- Area-specific service details
- Local testimonials
- Unique offerings per location
### When NOT to Create Them
**Do not create thin location pages** that only swap city names. Google penalizes doorway pages. A page that says the same thing as another page but with "Fairbanks" instead of "Anchorage" is a doorway page.
### Template for Good Location Pages
```
# [Service] in [City], [State]
[2-3 paragraphs about the service specific to this location]
## What to Expect
[Location-specific details]
## Getting Here
[Directions, parking, landmarks]
## Local Testimonials
[Reviews from customers in this area]
## Schedule & Pricing
[Location-specific schedule if different]
[CTA to register/contact]
```
## Local Content Ideas
Content that signals local relevance to Google:
- Event coverage (local events you participate in or sponsor)
- Local partnerships and community involvement
- Area guides related to your industry
- Seasonal content specific to your region
- Local news or industry updates
- Customer success stories from the area
## Mobile Optimization
Most "near me" and local searches happen on mobile:
- Font size minimum 16px
- Tap targets minimum 48x48px
- Click-to-call phone numbers
- Embedded Google Map on contact page
- Fast load times (especially on mobile networks)
## Local SEO Checklist
- [ ] Google Business Profile fully completed and verified
- [ ] NAP consistent across all platforms
- [ ] LocalBusiness schema on website (validated)
- [ ] Location keywords in title tags and meta descriptions of key pages
- [ ] Contact page has full NAP + Google Map
- [ ] Collecting and responding to reviews
- [ ] Listed in relevant local directories
- [ ] Mobile-friendly and fast-loading
- [ ] Google Posts published weekly
- [ ] Photos updated monthly on GBP
+162
View File
@@ -0,0 +1,162 @@
# On-Page Optimization
Current best practices (2025-2026) for optimizing individual pages. These apply regardless of the SEO plugin used.
## Title Tags
### Rules
- **Length:** 50-60 characters (Google truncates at ~580px pixel width)
- **Primary keyword:** As close to the beginning as possible
- **Unique:** Every page must have a unique title
- **Brand name:** At the end (builds recognition)
- **Don't stuff:** One primary keyword is enough
### CTR Optimization
Include value propositions, numbers, or power words:
| Weak | Strong |
|------|--------|
| `Home - My Website` | `Motorcycle Safety Courses Anchorage, AK \| Alaska Safe Riders` |
| `Services` | `Basic Rider Course (MSF Certified) \| Alaska Safe Riders` |
| `Blog Post Title` | `What to Expect at a Basic Rider Course (2026 Guide)` |
## Meta Descriptions
### Rules
- **Length:** 150-160 characters
- **Include primary keyword** naturally (Google bolds matching terms)
- **Include a CTA:** "Register today", "Learn more", "Contact us"
- **Include differentiators:** Price, location, certifications
- **Hand-craft** for important pages — auto-generated descriptions rarely perform well
### Example
> Learn to ride with Alaska's most experienced MSF-certified instructors. Weekend and weekday courses in Anchorage. Register online — classes fill fast.
**Note:** Google rewrites ~60% of meta descriptions, but well-written ones are kept and significantly improve CTR.
## Header Tags
### Hierarchy
- **H1:** Exactly one per page. Contains primary keyword. Closely matches the title tag.
- **H2:** Major sections (3-8 per page). Use secondary keywords and related topics.
- **H3:** Subsections under H2s. Use long-tail variations and questions.
- **Never skip levels** (no H1 directly to H3)
### Headers are semantic, not visual
Using `<b>` or large font size is NOT the same as a proper `<h2>`. Headers tell search engines about content hierarchy.
## Content Optimization
### Keyword Density is Dead
Google's algorithms (BERT, MUM, Helpful Content System) understand topics, not word frequency. What replaces it:
**Topical coverage:** Cover the topic comprehensively. If writing about motorcycle safety courses, naturally mention gear requirements, licensing, MSF certification, course duration, prerequisites, etc.
**E-E-A-T signals:**
- **Experience:** First-person accounts, original photos, real examples
- **Expertise:** Deep knowledge, cite specifics, avoid filler
- **Authoritativeness:** Author bios, credentials, industry affiliations
- **Trustworthiness:** Accurate information, transparent business info
**Google's Helpful Content guidelines:**
- Written for humans first, not search engines?
- Demonstrates first-hand experience?
- Reader will feel they learned enough to achieve their goal?
### Practical Rules
- Put the most important information first (inverted pyramid)
- Short paragraphs (2-4 sentences)
- Answer the searcher's question within the first 100-200 words
- Use lists, tables, and structured formatting
- Content should be as long as it needs to be — a focused 500-word service page can outrank a padded 3,000-word one
## Image Optimization
### Alt Text
- **Describe what the image shows** in plain language
- **Include keywords naturally** where they genuinely describe the image
- **Keep under 125 characters** (screen readers truncate longer)
- **Decorative images** get empty alt (`alt=""`)
### File Names
`basic-rider-course-anchorage.jpg` beats `DSC00451.jpg`
### Technical
- Use WebP or AVIF format for smaller file sizes
- Set explicit width and height attributes (prevents CLS)
- Lazy load below-the-fold images
- Compress to reasonable quality (80-85% is usually sufficient)
## Internal Linking
One of the most underused and highest-ROI SEO tactics.
### Rules
- **Every page should link to and be linked from 2-3+ other pages**
- **Descriptive anchor text** — "our basic rider course" not "click here"
- **Blog posts → service pages** (primary purpose of blog content for SEO)
- **Service pages → related services** (keeps users on site)
- **Fix orphan pages** — any page with zero internal links is nearly invisible to Google
### Site Structure
```
Homepage
├── Service Page 1
│ ├── Blog Post A (links back to Service 1)
│ └── Blog Post B (links back to Service 1)
├── Service Page 2
│ ├── Blog Post C
│ └── Blog Post D
├── About
└── Contact
```
This pyramid distributes authority downward from the homepage.
## URL Slugs
### Rules
- **Short and descriptive:** `/basic-rider-course/`
- **Include primary keyword:** `/motorcycle-safety-course-anchorage/`
- **Hyphens, not underscores:** Google treats hyphens as word separators
- **Lowercase only**
- **No dates in URLs** unless truly time-bound content
- **Never change URLs without 301 redirects**
### Bad vs Good
| Bad | Good |
|-----|------|
| `/2026/04/09/blog-post/` | `/how-to-prepare-for-motorcycle-course/` |
| `/services/` | `/motorcycle-safety-courses-anchorage/` |
| `/page_about_us/` | `/about/` |
## Quick Optimization Checklist
For any page:
- [ ] Title tag: 50-60 chars, primary keyword near start, unique
- [ ] Meta description: 150-160 chars, keyword included, CTA, hand-crafted
- [ ] H1: Exactly one, contains primary keyword
- [ ] H2/H3: Use secondary keywords in subheadings
- [ ] Content: Answers the searcher's question in the first 200 words
- [ ] Images: Descriptive alt text, optimized file size, descriptive file names
- [ ] Internal links: 2-3+ links to/from related pages, descriptive anchors
- [ ] URL: Short, keyword-included, lowercase, hyphens
- [ ] Focus keyword set in SmartCrawl (up to 3)
- [ ] SmartCrawl SEO analysis: all green or justified yellow
- [ ] Readability: Flesch-Kincaid 60-70 target
+194
View File
@@ -0,0 +1,194 @@
# 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