Commit Graph

118 Commits

Author SHA1 Message Date
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
root
95fd3ba36e Update index.php and web-scraping service page 2026-02-20 11:25:07 +00:00
root
a26f6632c7 SEO: fix 404 redirects, sitemap cleanup, canonical fix, internal links
- .htaccess: 301 redirect data-analytics-companies-london-top-providers → -compared
- .htaccess: 301 redirect gdpr-compliance-web-scraping-uk-guide → web-scraping-compliance-uk-guide
- sitemap.xml: remove redirecting /services/data-analytics entry
- sitemap.xml: remove duplicate real-time-analytics-streaming (2025) entry
- sitemap.xml: add locations/london, /manchester, /birmingham pages
- real-time-analytics-streaming.php: canonical → real-time-analytics-streaming-data (2026 version)
- data-analytics-companies-london-top-providers-compared.php: internal link to churn article
- python-data-pipeline-tools-2025.php: internal link to churn article
- real-time-analytics-streaming-data.php: internal link to churn article
2026-02-20 11:00:23 +00:00
root
edd491d680 Fix navbar across all pages: add nav include, fonts, active state, spacing, stats, error pages
- Add nav.php include to 5 missing pages (cost-calculator, thank-you, 403, 404, 500)
- Add ErrorDocument directives to .htaccess for custom 403/404/500 pages
- Fix bogus accuracy stats (homepage, web-scraping, location pages)
- Fix invisible CTA buttons on property and financial service pages
- Add Google Fonts (Roboto Slab + Lato) to all pages missing it (tools, blog articles, error pages)
- Add active nav link highlighting (teal underline for current page)
- Improve footer contrast to WCAG AA, equal-height cards, mobile text scaling
- Consistent navbar-to-content spacing across all pages
- Bump cache version to v1.1.3
2026-02-11 07:15:11 +00:00
root
dba4659768 Fix: last navbar.php reference in free-web-scraping-tools-launch article 2026-02-10 22:27:31 +00:00
root
fe70ab53cf Nav refactor: fix remaining pages (tools, services, locations, blog articles)
- Updated 30 additional files to use shared includes/nav.php
- Fixed references to old navbar.php and header.php nav includes
- All 52 pages now use single shared navigation
2026-02-10 22:24:40 +00:00
root
1a8d9b4f9d Site improvements: nav refactor, CSS readability, hover fixes, remove unverified badges
- Refactored navigation: all 44 pages now use shared includes/nav.php
- Added Free Tools link to navigation (was missing from 29+ pages)
- CSS readability: darker body text (#333), secondary text (#555), bolder hero subtitle
- CSS: darkened link colour (#148a72) for WCAG AA compliance
- CSS: increased stat label font size to 1rem
- Fixed industry-card hover white-on-white text bug
- Removed ICO Registered and Cyber Essentials claims (not yet registered)
- Cache version bumped to v1.1.2
2026-02-10 22:21:16 +00:00
root
0598088a86 Fix button contrast issues: add default colors to base .btn class and fix .cta-section .btn text visibility
- Base .btn now defaults to green bg (#148069) with white text
- .cta-section .btn on /tools page now explicitly sets color: white
- Fixes WCAG AA contrast failure where dark grey text (#444) was on dark blue bg (#144784)
- All bare .btn elements across site (tools, blog articles, error pages) now have visible text
2026-02-10 10:40:46 +00:00
root
aadcdf8e3c SEO: Improve meta titles, descriptions & internal links for top 10 pages
- Rewrite meta titles to be more compelling with power words and 2026 dates
- Shorten meta descriptions to ~150 chars with clear CTAs
- Remove double-branding from title tags (was: title | UK Data Services | UK Data Services Blog)
- Update internal cross-links between related scraping/analytics articles
- Focus: top 10 pages by impressions from Google Search Console
2026-02-10 10:25:07 +00:00
root
57ea74ed38 Security cleanup: remove Docker files, test pages, SQL backup; fix admin password 2026-02-08 21:00:46 +00:00