Technical SEO Improvements for scripts.lukeleigh.com
Technical SEO Improvements for scripts.lukeleigh.com
Checklist Summary
| Item | Before | After | Notes |
| — | — | — | — |
| Robots.txt | Allowed all crawling without sitemap guarantee | Explicitly allows crawling, references sitemap | Updated robots.txt
to match Google guidance. |
| Sitemap | Plugin enabled but unchecked | jekyll-sitemap
confirmed and validated in CI | seo-checks.rb
fails build if sitemap missing. |
| Titles & Descriptions | Several navigation pages used lowercase titles shared with H1 | Descriptive titles with separate navigation labels and headings | Added nav_title
/heading
to avoid nav regressions while improving SEO titles. |
| Canonical Tags | Managed by jekyll-seo-tag
without verification | Local HTTP validation for every canonical URL | build/seo-checks.rb
serves _site
locally and checks for HTTP 200. |
| Status Codes | Manual spot checks only | Automated crawl of built site | CI runs Lychee plus canonical validation and records results in seo-checks.json
. |
| Structured Data | WebSite markup emitted but missing organization context | WebSite + Organization + BlogPosting JSON-LD with accurate profile data | Added organization metadata and live search target URL. |
| Performance Hints | No resource preloads or asset sizing | Preload hero CSS/image, logo sized, lazy loading applied | Reduces layout shift and speeds first render. |
Discovery & Crawlability
robots.txt
now follows Google’s recommended syntax and advertiseshttps://scripts.lukeleigh.com/sitemap.xml
.jekyll-sitemap
remains enabled; CI verifies_site/sitemap.xml
is generated and extracts 834 canonical URLs.- Added a reusable
build/seo-checks.rb
script that spins up a local WEBrick server to confirm all canonical URLs resolve with HTTP 200 and that no meta refresh directives ship.
Indexability & Rendering
- Navigation and landing pages received descriptive titles (
PowerShell Scripts | Maintenance Scripts
, etc.) plus dedicatedheading
/nav_title
front matter so templates keep short labels. - 404 page and private HTML embeds (
assets/*Home.html
) setrobots: noindex
to prevent soft-404s in search results. - Template page
_pages/content/New-Topic.md
is unpublished and excluded from the sitemap. - Updated
_includes/head.html
to preload the primary stylesheet and hero teasers when available.
Structured Data Coverage
_includes/structured-data.html
now receivesorganization
details from_config.yml
, enabling bothWebSite
andOrganization
JSON-LD. Posts continue to emitBlogPosting
entities.- Configured
search_url
to point at a Google site search query so theSearchAction
target is valid.
Pages with Adjusted Indexing
| URL | Action | Reason |
| — | — | — |
| /404.html
| noindex,follow
| Avoid indexing error page. |
| /assets/KarenHome.html
| noindex,nofollow
| Embedded Google Map not intended for search. |
| /assets/LukeHome.html
| noindex,nofollow
| Embedded Google Map not intended for search. |
| /assets/MarkHome.html
| noindex,nofollow
| Embedded Google Map not intended for search. |
| _pages/content/New-Topic.md
| published: false
, noindex
| Editorial template only. |
The sitemap continues to list canonical, indexable URLs only (834 entries in the latest build).
Internal Linking & URL Hygiene
- Sidebar navigation now prefers
nav_title
values so we can use richer document titles without bloating anchor text. - All automatically generated links run through
relative_url
to avoid protocol or host mismatches.
Automation & CI
.github/workflows/jekyll-build.yml
now instructs Lychee to output JSON, runsbundle exec ruby build/seo-checks.rb
, and uploads bothlychee-report.json
andseo-checks.json
artifacts for review.build/seo-checks.rb
records sitemap presence, canonical status codes, meta robot rules, and any warnings in machine-readable form. Run locally with:bundle exec jekyll build --future bundle exec ruby build/seo-checks.rb cat seo-checks.json
Remaining Follow-Ups
- Many legacy posts rely on automatically generated excerpts for descriptions. They render well, but adding hand-written summaries would further improve CTR.
- Large hero media (GIF/MP4) could be compressed in a future pass to shave additional kilobytes.
Google Search Console Recommendations
- Verify the property for
https://scripts.lukeleigh.com/
(Domain property if available). - Navigate to Index → Sitemaps and submit
https://scripts.lukeleigh.com/sitemap.xml
. Confirm Google reports the submission as “Success”. - Use URL Inspection on key templates:
https://scripts.lukeleigh.com/
https://scripts.lukeleigh.com/menu/_pages/scripts.html
https://scripts.lukeleigh.com/scripts/active-directory-information/
(sample post)
- For each, click View Crawled Page to confirm Google sees the canonical you expect and that structured data is detected.
- Spot-check
https://scripts.lukeleigh.com/404.html
to ensure Search Console confirms thenoindex
directive.
Validation Snapshot
- Latest local run: 834 URLs in sitemap, 832 HTML documents scanned, 0 canonical HTTP errors, and 0 unexpected
noindex
pages (seeseo-checks.json
). - CI artifacts
seo-reports/seo-checks.json
andseo-reports/lychee-report.json
retain machine-readable outputs for each build.