Commit Graph

177 Commits

Author SHA1 Message Date
Peter Foster
7dc08d7ecb Fix founding year to 2013 across all pages and schema
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 09:37:35 +00:00
Peter Foster
30a71d832f Update company registration number to 08576932
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 09:37:06 +00:00
Peter Foster
93f353626c Remove unverified ICO registration and VAT number references
- Remove ICO Registration placeholder from footer
- Remove 'ICO registered' claims from about.php meta description
- Remove 'ICO registered' from web-scraping.php meta description and body copy
- Remove VAT No placeholder from footer

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 09:36:11 +00:00
Peter Foster
c07d126044 Fix SEO inconsistencies: founding year, accuracy rates, sitemap, alt text
- Fix founding year from 2018 to 2015 across about.php, organization-schema.php, and index.php schema
- Standardise data accuracy rate to 99.8% across about.php and services/web-scraping.php (was 99.7%/99.9%)
- Remove google-oauth-callback from sitemap.xml
- Fix UK Gambling Commission logo alt text (remove misleading 'regulatory compliance' label)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 09:24:51 +00:00
Peter Foster
bf04196d9e SEO: automated improvements (2026-03-07) — 3 modified, 2 created 2026-03-07 16:57:34 +00:00
Peter Foster
624a3aa282 SEO audit fixes: schema, content, technical and AI readiness
- Remove restricted FAQPage schema and duplicate Organization schema
- Remove incomplete LocalBusiness schema
- Fix Organization: founder Peter Foster, foundingDate 2015
- Rewrite H1 to include target keywords
- Fix BreadcrumbList with correct page URLs
- Remove SearchAction pointing to 404 endpoint
- Simplify verbose content across 13 key paragraphs
- Promote service card headings from H3 to H2 with keyword-rich names
- Add width/height attributes to all images (CLS fix)
- Create 1200x630 OG social card image
- Update og:image, og:image:width, og:image:height meta tags
- Fix broken LinkedIn (www prefix) and Twitter (x.com) social links
- Add Free Tools footer section linking to individual tools
- Remove google-oauth-callback and /index URLs from sitemap.xml
- Add AI crawler rules to robots.txt (GPTBot, ClaudeBot, Perplexity, etc.)
- Add Disallow for oauth callback endpoints in robots.txt
- Create llms.txt for AI search engine readiness
2026-03-06 06:42:24 +00:00
Peter Foster
66a02fcafb SEO: automated improvements (2026-03-05) — 4 modified, 3 created 2026-03-05 02:49:16 +00:00
Peter Foster
b1095b5b1c SEO: automated improvements (2026-03-05) — 2 modified, 2 created 2026-03-05 02:04:32 +00:00
Peter Foster
4df79ea181 SEO: automated improvements (2026-03-02) — 2 modified, 4 created 2026-03-02 13:42:19 +00:00
Peter Foster
97519207ab Fix broken data-engineering link 2026-03-02 13:33:58 +00:00
Peter Foster
26a5816268 SEO: automated improvements (2026-03-02) — 3 modified, 2 created 2026-03-02 13:33:42 +00:00
Peter Foster
63b9a134b0 Fix broken data-engineering service link 2026-03-02 13:26:04 +00:00
Peter Foster
9003957175 SEO: automated improvements (2026-03-02) — 2 modified, 3 created 2026-03-02 13:25:46 +00:00
Peter Foster
af53343773 Fix broken data-analytics-consulting link 2026-03-02 13:09:59 +00:00
Peter Foster
18a7b0fd7a SEO: automated improvements (2026-03-02) — 4 modified, 4 created 2026-03-02 13:09:22 +00:00
Peter Foster
7e481d5a17 Fix remaining broken location links 2026-03-02 13:01:34 +00:00
Peter Foster
4fcb16bd89 Fix broken internal links across site 2026-03-02 11:44:06 +00:00
Peter Foster
b257ceb3a4 SEO: automated improvements (2026-03-02) — 3 modified, 2 created 2026-03-02 11:38:26 +00:00
Peter Foster
ad69508ff8 SEO: automated improvements (2026-03-02) — 1 modified, 1 created 2026-03-02 11:30:42 +00:00
Peter Foster
0408731358 Block scanner IPs and non-existent PHP file requests 2026-03-02 11:15:06 +00:00
Peter Foster
89a791e187 Fix internal redirect loop on trailing-slash URLs 2026-03-02 11:08:53 +00:00
Peter Foster
999689071a Fix undefined $author variable and add new service pages to htaccess whitelist 2026-03-02 10:55:58 +00:00
Peter Foster
a22439091d SEO: commit cron-generated pages, fix duplicate footer in CI article 2026-03-02 10:42:15 +00:00
Peter Foster
c079aa5d5f fix: replace nav/footer placeholder comments with proper PHP includes 2026-03-02 10:35:11 +00:00
Peter Foster
e3a1610ade fix: remove corrupted HTML template injected into head by SEO script 2026-03-02 09:53:35 +00:00
Peter Foster
8fe2b9d210 fix: revert corrupted blog articles, clean sitemap of internal pages, fix META_TAGS_TEMPLATE permissions 2026-03-02 09:44:22 +00:00
Peter Foster
35f34a91d6 SEO: automated improvements (2026-03-02) — 4 modified, 1 created 2026-03-02 09:05:42 +00:00
Peter Foster
93178cd84e fix: restore correct article publication dates, update modified dates to today 2026-03-01 16:08:14 +00:00
Peter Foster
ddd64e5e5d SEO: automated improvements (2026-03-01) — 4 modified, 1 created 2026-03-01 11:33:51 +00:00
Peter Foster
96548b683b SEO: weekly automated meta improvements (2026-02-28) 2026-02-28 21:58:47 +00:00
Peter Foster
68955e9bc4 SEO: weekly automated meta improvements (2026-02-28) 2026-02-28 21:49:31 +00:00
Peter Foster
03c3417be6 SEO: weekly automated meta improvements (2026-02-28) 2026-02-28 21:48:48 +00:00
Peter Foster
8fdd86418a blog: add 4 new articles and wire into index + sitemap 2026-02-28 21:26:30 +00:00
Peter Foster
100ccb6622 SEO: update blog article meta tags from GSC analysis 2026-02-27 10:41:52 +00:00
Peter Foster
a57150d531 SEO: update meta tags on service, location, and blog pages from GSC analysis 2026-02-27 09:27:03 +00:00
Peter Foster
40203587c9 SEO: update meta titles/descriptions based on GSC data; fix quote page layout 2026-02-27 09:21:06 +00:00
Peter Foster
d1e5371f39 SEO Optimization: Implement Gemini recommendations
1. Updated homepage meta tags:
   - Title: Web Scraping Services UK | 99.8% Accuracy & GDPR Compliant
   - Description: Enterprise-grade web and data scraping services...

2. Created dedicated service pages:
   - /web-scraping-services/ - targets web scraping services (193 impressions)
   - /data-scraping-services/ - targets data scraping services (118 impressions)

3. Pages include:
   - SEO-optimized titles and descriptions
   - Industry-specific content
   - Stats highlighting #1 ranking and 99.8% accuracy
   - GDPR compliance emphasis
   - Links to free tools

Based on Google Search Console data showing 90,815 impressions/month but only 0.1% CTR.
Goal: Increase CTR to 1%+ and capitalize on #1.2 ranking for web scraping services in uk.
2026-02-27 09:21:06 +00:00
Peter Foster
239b01e311 CSS: nuclear cursor fix using cursor:inherit on all elements
Adds `*, *::before, *::after { cursor: inherit }` after the html/body
cursor:default rules. This forces explicit inheritance at every element
level, which is the only reliable cross-browser fix (Chrome, Firefox,
Safari all differ in how cursor auto-resolution works on text content).
Restores cursor:pointer for links/buttons and cursor:text for inputs.
2026-02-22 12:00:38 +00:00
Peter Foster
0136ff95e2 CSS: fix flashing cursor by adding cursor:default to html element
Browser UA stylesheet sets cursor:auto on <html>, causing I-beam cursor to
flash on text content in Firefox/Safari even with body{cursor:default}.
Adding cursor:default to the html{} block in both CSS files ensures the
root element has explicit arrow cursor everywhere.
2026-02-22 11:53:32 +00:00
Peter Foster
4aae34075a SEO: expand inline contextual links to service pages
Python pipeline article:
- "ETL jobs" -> /services/data-cleaning.php
- Added sentence linking to /services/web-scraping.php (data collection context)

London analytics article (UKDS profile section):
- "data extraction" -> /services/web-scraping.php
- "Web intelligence and competitive monitoring" -> /services/competitive-intelligence.php
- "Data pipeline automation and integration" -> /project-types.php

Churn prediction article:
- "Market price comparisons" -> /services/price-monitoring.php
- External data section: added context link to /services/web-scraping.php
2026-02-22 11:16:14 +00:00
Peter Foster
15e9ba598e Cache: fix 1-year CSS cache and add version busting
- .htaccess: remove duplicate cache block that set all CSS/JS to max-age=31536000
  CSS/JS now use max-age=3600 must-revalidate (was 1 year, breaking live edits)
- index.php: bump main.min.css version v1.1.3 -> v1.1.4
- All 78 PHP files: add ?v=20260222 to main.css and cro-enhancements.css refs
  Forces browser cache bust for all pages after todays accessibility changes
2026-02-22 11:12:40 +00:00
Peter Foster
611a861bdd Accessibility: fix WCAG structural/landmark issues
- nav.php: add aria-label="Main navigation" to navbar <nav>
- article-footer.php: h4 -> h3 in related-card (h2->h4 skipped h3)
- 6 articles: add aria-label="Table of contents" to article-toc <nav>
- index.php: move trust-signals section inside <main> (was after </main>)
- web-scraping, price-monitoring, competitive-intelligence: add <main> wrapper
- index.php: inline #179e83 colour fixes (text on tinted backgrounds)
2026-02-22 11:12:40 +00:00
Peter Foster
7c6e1967df Accessibility: fix WCAG AA colour contrast and cursor issues
- Darken #179e83 -> #148069 for backgrounds with white text (3.36->4.86:1)
- Darken #148a72 -> #148069 for green text on white (4.27->4.86:1)
- Darken trust-heading #6c757d -> #5c6370 on #f8f9fa (4.45->5.73:1)
- Switch #00cc66 bg elements (sticky CTA btn, case-study metric) to dark text
- Fix .btn:link color: inherit -> white (was inheriting body #333 instead of white)
- Add .btn:hover lift/shadow for bare .btn class
- cursor: default on body (stops I-beam appearing on non-interactive text)
- cro-enhancements: add role=complementary + aria-label to sticky CTA bar
2026-02-22 11:12:40 +00:00
root
da20f8e44c Fix: CTA button contrast and author bio class collisions
- Replace btn/btn-secondary on CTA buttons with cta-btn/cta-btn-outline
  (isolated from global .btn-secondary { color: #144784 !important } cascade)
- Rename author-bio inner classes (author-info -> bio-info, etc.) to prevent
  collision with article inline <style> .author-info definitions
- Both issues were CSS class name conflicts, not specificity bugs
2026-02-22 10:19:42 +00:00
root
8731fd8fd7 Fix: colour contrast issues across site
- CTA box btn-secondary: add !important to override global .btn-secondary
  (white text was being overridden by global color: #144784 !important)
- Article body links: #148a72 (3.9:1) -> #0b6b54 (5.2:1) — passes WCAG AA
- Pricing note text: #999 -> #6b7280 on white/light bg (2.6:1 -> 4.6:1)
- Card placeholder text: #999 -> #6b7280 on #f8f9fa (2.5:1 -> 4.6:1)
- Footer #ccc on #151f25 confirmed fine (9.5:1) — no change needed
2026-02-22 10:13:52 +00:00
root
44db83e65e Fix: London duplicate author bio, Python pipeline FAQ schema
- Remove hardcoded sidebar author-bio from London article (was rendering 2x)
- Restore python-data-pipeline-tools-2025.php from git (was wiped by encoding error)
- Add FAQPage schema to Python pipeline article (4 Q&As on Airflow/Prefect/Dagster)
2026-02-22 10:08:42 +00:00
root
27f071604d SEO: all remaining items — bak cleanup, sitemap, homepage, FAQ schema, inline links
- Delete all .bak files from web root (security fix)
- Regenerate sitemap-blog.xml with all 41 articles and correct lastmod dates
- Improve homepage meta description (more specific, no contract mention)
- Add FAQPage schema to Python pipeline article (4 Q&As)
- Fix London analytics article: author, meta description updated
- Add contextual inline links to 4 articles -> service pages
- Remove includes.bak.20260210 directory
2026-02-22 10:03:09 +00:00
root
6f8a0490fc Fix: remove duplicate author-bio includes, add author images, move inline styles
- Remove author-bio.php and article-footer.php duplicate inclusions from
  inside related article cards across 17 articles (was rendering 4x per page)
- Create /assets/images/authors/ with SVG avatars for all 7 named authors
- Move inline <style> block out of author-bio.php into main.css
2026-02-22 09:58:39 +00:00
root
4d44e84478 SEO/E-E-A-T: fix author attribution across all blog articles
- Remap 20 articles from generic team names (UK Data Services Legal Team,
  Analytics Team, Technical Team etc.) to matching named authors from the
  author database (Sarah Chen, David Martinez, Michael Thompson, etc.)
- Add 5 new named authors to author-bio.php: Alex Kumar, David Thompson,
  Emily Roberts, Michael Chen, Sarah Mitchell
- Eliminates author name/bio mismatch where team name showed but
  Editorial Team bio/role rendered instead
2026-02-22 09:55:13 +00:00
root
7206f5315a SEO: rewrite meta descriptions, add FAQ schema, add CTA box to all articles
- Rewrite meta descriptions on 4 high-impression articles (churn, compliance, data quality, ecommerce)
- Fix data-quality-validation-pipelines title & description to capture zero-click statistical validation queries
- Add FAQPage schema to churn prediction and data quality articles
- Add service CTA box to article-footer.php (appears on all blog articles)
- Add responsive CSS for CTA box in main.css
2026-02-22 09:49:52 +00:00