SEO: add BlogPosting schema, fix HTML heads, clean stale content

- Create includes/blog-article-head.php with full HTML head + BlogPosting
  JSON-LD schema (Organization author, OG/Twitter tags)
- Wire blog-article-head.php into all 6 blog articles (were missing DOCTYPE/head)
- Rewrite blog/search.php: only real articles, standard includes, noindex
- Simplify author-bio.php: remove invented fictional authors, org entry only
- Sitemap: add lastmod 2026-03-21, add case-studies and faq URLs
- Fix faq.php page title (redundant AI Automation duplicate removed)
This commit is contained in:
Peter Foster
2026-03-21 12:51:04 +00:00
parent f21e80793b
commit 63fb1fd099
11 changed files with 225 additions and 537 deletions

View File

@@ -10,7 +10,7 @@ $article = [
'read_time' => '7 min read', 'read_time' => '7 min read',
'excerpt' => 'Manual data work costs professional services firms far more than they typically account for. Here is how to calculate the true figure — and why the ROI case for automation is usually compelling.', 'excerpt' => 'Manual data work costs professional services firms far more than they typically account for. Here is how to calculate the true figure — and why the ROI case for automation is usually compelling.',
]; ];
include($_SERVER['DOCUMENT_ROOT'] . '/includes/meta-tags.php'); include($_SERVER['DOCUMENT_ROOT'] . '/includes/blog-article-head.php');
include($_SERVER['DOCUMENT_ROOT'] . '/includes/nav.php'); include($_SERVER['DOCUMENT_ROOT'] . '/includes/nav.php');
?> ?>
<main> <main>

View File

@@ -10,7 +10,7 @@ $article = [
'read_time' => '8 min read', 'read_time' => '8 min read',
'excerpt' => 'Modern AI extraction pipelines can turn stacks of PDFs and Word documents into clean, queryable data. Here is how the technology actually works, in plain terms.', 'excerpt' => 'Modern AI extraction pipelines can turn stacks of PDFs and Word documents into clean, queryable data. Here is how the technology actually works, in plain terms.',
]; ];
include($_SERVER['DOCUMENT_ROOT'] . '/includes/meta-tags.php'); include($_SERVER['DOCUMENT_ROOT'] . '/includes/blog-article-head.php');
include($_SERVER['DOCUMENT_ROOT'] . '/includes/nav.php'); include($_SERVER['DOCUMENT_ROOT'] . '/includes/nav.php');
?> ?>
<main> <main>

View File

@@ -10,7 +10,7 @@ $article = [
'read_time' => '7 min read', 'read_time' => '7 min read',
'excerpt' => 'Due diligence is one of the most document-heavy tasks in legal practice. AI extraction systems can now handle the bulk of this work — here is how it works in practice.', 'excerpt' => 'Due diligence is one of the most document-heavy tasks in legal practice. AI extraction systems can now handle the bulk of this work — here is how it works in practice.',
]; ];
include($_SERVER['DOCUMENT_ROOT'] . '/includes/meta-tags.php'); include($_SERVER['DOCUMENT_ROOT'] . '/includes/blog-article-head.php');
include($_SERVER['DOCUMENT_ROOT'] . '/includes/nav.php'); include($_SERVER['DOCUMENT_ROOT'] . '/includes/nav.php');
?> ?>
<main> <main>

View File

@@ -10,7 +10,7 @@ $article = [
'read_time' => '8 min read', 'read_time' => '8 min read',
'excerpt' => 'GDPR compliance is a legitimate concern when deploying AI automation in UK legal and consultancy firms. Here is a clear-eyed look at the real issues and how to address them.', 'excerpt' => 'GDPR compliance is a legitimate concern when deploying AI automation in UK legal and consultancy firms. Here is a clear-eyed look at the real issues and how to address them.',
]; ];
include($_SERVER['DOCUMENT_ROOT'] . '/includes/meta-tags.php'); include($_SERVER['DOCUMENT_ROOT'] . '/includes/blog-article-head.php');
include($_SERVER['DOCUMENT_ROOT'] . '/includes/nav.php'); include($_SERVER['DOCUMENT_ROOT'] . '/includes/nav.php');
?> ?>
<main> <main>

View File

@@ -10,7 +10,7 @@ $article = [
'read_time' => '7 min read', 'read_time' => '7 min read',
'excerpt' => 'Junior analysts at consultancy firms spend a disproportionate amount of time on desk research that could be largely automated. Here is what that looks like in practice.', 'excerpt' => 'Junior analysts at consultancy firms spend a disproportionate amount of time on desk research that could be largely automated. Here is what that looks like in practice.',
]; ];
include($_SERVER['DOCUMENT_ROOT'] . '/includes/meta-tags.php'); include($_SERVER['DOCUMENT_ROOT'] . '/includes/blog-article-head.php');
include($_SERVER['DOCUMENT_ROOT'] . '/includes/nav.php'); include($_SERVER['DOCUMENT_ROOT'] . '/includes/nav.php');
?> ?>
<main> <main>

View File

@@ -10,7 +10,7 @@ $article = [
'read_time' => '6 min read', 'read_time' => '6 min read',
'excerpt' => 'The term AI agent gets used a lot, but what does it actually mean for a law firm or consultancy? Here is a clear, jargon-free explanation with practical examples.', 'excerpt' => 'The term AI agent gets used a lot, but what does it actually mean for a law firm or consultancy? Here is a clear, jargon-free explanation with practical examples.',
]; ];
include($_SERVER['DOCUMENT_ROOT'] . '/includes/meta-tags.php'); include($_SERVER['DOCUMENT_ROOT'] . '/includes/blog-article-head.php');
include($_SERVER['DOCUMENT_ROOT'] . '/includes/nav.php'); include($_SERVER['DOCUMENT_ROOT'] . '/includes/nav.php');
?> ?>
<main> <main>

View File

@@ -1,164 +1,74 @@
<?php <?php
// Enhanced security headers
header('Strict-Transport-Security: max-age=31536000; includeSubDomains'); header('Strict-Transport-Security: max-age=31536000; includeSubDomains');
// Get search query
$search_query = isset($_GET['q']) ? trim($_GET['q']) : ''; $search_query = isset($_GET['q']) ? trim($_GET['q']) : '';
$search_query = htmlspecialchars($search_query, ENT_QUOTES, 'UTF-8'); $search_query = htmlspecialchars($search_query, ENT_QUOTES, 'UTF-8');
// SEO and performance optimizations $page_title = $search_query
$page_title = $search_query ? "Search Results for '{$search_query}' | UK AI Automation Blog" : "Search | UK AI Automation Blog"; ? "Search Results for '" . strip_tags($search_query) . "' | UK AI Automation Blog"
$page_description = $search_query ? "Search results for '{$search_query}' in our data intelligence blog." : "Search our expert insights on AI automation, data pipelines, and business intelligence."; : "Search | UK AI Automation Blog";
$canonical_url = "https://ukaiautomation.co.uk/blog/search.php" . ($search_query ? "?q=" . urlencode($search_query) : ""); $page_description = "Search our guides on AI automation for UK law firms and management consultancies.";
$canonical_url = "https://ukaiautomation.co.uk/blog/search";
include($_SERVER['DOCUMENT_ROOT'] . '/includes/meta-tags.php');
// Define all articles with their content for searching
$articles = [ $articles = [
[ [
'title' => 'Complete Guide to AI Automation Compliance in the UK', 'title' => 'How Law Firms Can Automate Due Diligence Document Review',
'url' => 'articles/web-Automation-compliance-uk-guide.php', 'url' => '/blog/articles/due-diligence-automation-law-firms',
'category' => 'Legal & Compliance', 'category' => 'Legal Tech',
'date' => '2025-06-08', 'date' => '2026-03-21',
'excerpt' => 'Navigate the complex landscape of UK data protection laws and ensure your AI Automation activities remain fully compliant with GDPR and industry regulations.', 'excerpt' => 'Due diligence is one of the most document-heavy tasks in legal practice. AI extraction systems can now handle the bulk of this work.',
'read_time' => '12 min read', 'keywords' => 'due diligence automation law firm document review AI legal',
'keywords' => 'AI Automation compliance UK GDPR data protection legal regulations'
],
[
'title' => 'Measuring ROI from Competitive Intelligence Programmes',
'url' => 'articles/competitive-intelligence-roi-metrics.php',
'category' => 'Business Intelligence',
'date' => '2025-06-05',
'excerpt' => 'Learn how to quantify the business value of competitive intelligence initiatives and demonstrate measurable returns on your data investment.',
'read_time' => '8 min read',
'keywords' => 'competitive intelligence ROI metrics business value data investment'
],
[
'title' => 'Advanced Price Monitoring Strategies for UK Retailers',
'url' => 'articles/retail-price-monitoring-strategies.php',
'category' => 'Industry Insights',
'date' => '2025-06-03',
'excerpt' => 'Discover how leading British retailers leverage automated price monitoring to maintain competitive advantage and optimise pricing strategies.',
'read_time' => '10 min read',
'keywords' => 'price monitoring retail UK competitive pricing strategies automation'
],
[
'title' => 'Automation JavaScript-Heavy Sites: Advanced Techniques',
'url' => 'articles/javascript-heavy-sites-Automation.php',
'category' => 'AI Automation',
'date' => '2025-06-01',
'excerpt' => 'Master the challenges of extracting data from dynamic websites using modern browser automation and rendering techniques.',
'read_time' => '6 min read',
'keywords' => 'javascript Automation dynamic websites browser automation rendering'
],
[
'title' => 'Building Robust Data Quality Validation Pipelines',
'url' => 'articles/data-quality-validation-pipelines.php',
'category' => 'Data Analytics',
'date' => '2025-05-29',
'excerpt' => 'Implement comprehensive data validation systems to ensure accuracy and reliability in your data processing workflows.',
'read_time' => '9 min read',
'keywords' => 'data quality validation pipelines accuracy reliability workflows'
],
[
'title' => 'Financial Services Data Transformation Success Story',
'url' => 'articles/financial-services-data-transformation.php',
'category' => 'Case Studies',
'date' => '2025-05-27',
'excerpt' => 'How a leading UK investment firm automated their market data collection and reduced analysis time by 75%.',
'read_time' => '7 min read',
'keywords' => 'financial services data transformation automation market data case study'
],
[
'title' => 'Cloud-Native Automation Architecture for Enterprise Scale',
'url' => 'articles/cloud-native-Automation-architecture.php',
'category' => 'Technology',
'date' => '2025-05-25',
'excerpt' => 'Design scalable, resilient AI Automation infrastructure using modern cloud technologies and containerization.',
'read_time' => '11 min read',
'keywords' => 'cloud native Automation architecture enterprise scalable infrastructure'
],
[
'title' => 'UK Property Market: Data-Driven Investment Insights',
'url' => 'articles/uk-property-market-data-trends.php',
'category' => 'Industry Insights',
'date' => '2025-05-22',
'excerpt' => 'Leverage comprehensive property data analysis to identify emerging investment opportunities across UK markets.',
'read_time' => '8 min read',
'keywords' => 'UK property market data investment insights analysis opportunities'
],
[
'title' => 'GDPR Data Minimisation: Best Practices for Data Teams',
'url' => 'articles/gdpr-data-minimisation-practices.php',
'category' => 'Legal & Compliance',
'date' => '2025-05-20',
'excerpt' => 'Implement effective data minimisation strategies that comply with GDPR requirements while maintaining analytical value.',
'read_time' => '6 min read',
'keywords' => 'GDPR data minimisation compliance best practices analytical value'
], ],
[ [
'title' => 'Research Automation for Management Consultancies', 'title' => 'Research Automation for Management Consultancies',
'url' => 'articles/research-automation-management-consultancy.php', 'url' => '/blog/articles/research-automation-management-consultancy',
'category' => 'Technology', 'category' => 'Consultancy Tech',
'date' => '2025-05-23', 'date' => '2026-03-21',
'excerpt' => 'How management consultancies can automate desk research, competitor monitoring, and market intelligence.', 'excerpt' => 'Junior analysts at consultancy firms spend a disproportionate amount of time on desk research that could be largely automated.',
'read_time' => '11 min read', 'keywords' => 'research automation management consultancy desk research market intelligence',
'keywords' => 'research automation management consultancy market intelligence'
], ],
[ [
'title' => 'Professional Rate Limiting Strategies for AI Automation', 'title' => 'What Is an AI Agent? A Plain-English Guide for Legal and Consultancy Firms',
'url' => 'articles/web-Automation-rate-limiting.php', 'url' => '/blog/articles/what-is-an-ai-agent-professional-services',
'category' => 'AI Automation', 'category' => 'AI Automation',
'date' => '2025-05-20', 'date' => '2026-03-21',
'excerpt' => 'Master advanced rate limiting techniques to ensure respectful and sustainable AI Automation operations.', 'excerpt' => 'The term AI agent gets used a lot, but what does it actually mean for a law firm or consultancy?',
'read_time' => '9 min read', 'keywords' => 'AI agent professional services what is an AI agent law firm consultancy',
'keywords' => 'rate limiting AI Automation professional sustainable techniques'
], ],
[ [
'title' => 'Kubernetes Deployment for Enterprise Automation', 'title' => 'Document Extraction: From Unstructured PDF to Structured Database',
'url' => 'articles/kubernetes-Automation-deployment.php', 'url' => '/blog/articles/document-extraction-pdf-to-database',
'category' => 'Technology', 'category' => 'AI Automation',
'date' => '2025-05-18', 'date' => '2026-03-21',
'excerpt' => 'Deploy and scale AI Automation applications using Kubernetes with best practices for production environments.', 'excerpt' => 'Modern AI extraction pipelines can turn stacks of PDFs and Word documents into clean, queryable data.',
'read_time' => '13 min read', 'keywords' => 'document extraction PDF database AI pipeline OCR',
'keywords' => 'kubernetes deployment enterprise Automation scaling production'
], ],
[ [
'title' => 'UK Cookie Law Compliance for Data Collection', 'title' => 'The Real Cost of Manual Data Work in Legal and Consultancy Firms',
'url' => 'articles/uk-cookie-law-compliance.php', 'url' => '/blog/articles/cost-of-manual-data-work-professional-services',
'category' => 'Legal & Compliance', 'category' => 'Business Case',
'date' => '2025-05-15', 'date' => '2026-03-21',
'excerpt' => 'Navigate UK cookie regulations and ensure compliant data collection practices in your web applications.', 'excerpt' => 'Manual data work costs professional services firms far more than they typically account for.',
'read_time' => '7 min read', 'keywords' => 'manual data work cost ROI automation professional services efficiency',
'keywords' => 'UK cookie law compliance data collection regulations applications'
], ],
[ [
'title' => 'UK E-commerce Data Trends for 2025', 'title' => 'GDPR and AI Automation: What UK Professional Services Firms Need to Know',
'url' => 'articles/ecommerce-trends-uk-2025.php', 'url' => '/blog/articles/gdpr-ai-automation-uk-firms',
'category' => 'Industry Insights', 'category' => 'Compliance',
'date' => '2025-05-12', 'date' => '2026-03-21',
'excerpt' => 'Essential insights into the UK e-commerce market using comprehensive data analysis and market intelligence.', 'excerpt' => 'GDPR compliance is a legitimate concern when deploying AI automation in UK legal and consultancy firms.',
'read_time' => '10 min read', 'keywords' => 'GDPR AI automation UK data protection compliance',
'keywords' => 'UK ecommerce trends 2025 market intelligence data analysis'
], ],
[
'title' => 'Healthcare Research Data Collection Success',
'url' => 'articles/healthcare-research-data-collection.php',
'category' => 'Case Studies',
'date' => '2025-05-10',
'excerpt' => 'How a UK research institution improved data collection efficiency by 60% using automated AI Automation solutions.',
'read_time' => '8 min read',
'keywords' => 'healthcare research data collection automation efficiency case study'
]
]; ];
// Perform search if query exists
$search_results = []; $search_results = [];
if ($search_query) { if ($search_query) {
foreach ($articles as $article) { foreach ($articles as $a) {
$search_text = strtolower($article['title'] . ' ' . $article['excerpt'] . ' ' . $article['keywords'] . ' ' . $article['category']); $haystack = strtolower($a['title'] . ' ' . $a['excerpt'] . ' ' . $a['keywords'] . ' ' . $a['category']);
$query_lower = strtolower($search_query); if (strpos($haystack, strtolower($search_query)) !== false) {
$search_results[] = $a;
if (strpos($search_text, $query_lower) !== false) {
$search_results[] = $article;
} }
} }
} }
@@ -170,271 +80,54 @@ if ($search_query) {
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?php echo htmlspecialchars($page_title); ?></title> <title><?php echo htmlspecialchars($page_title); ?></title>
<meta name="description" content="<?php echo htmlspecialchars($page_description); ?>"> <meta name="description" content="<?php echo htmlspecialchars($page_description); ?>">
<meta name="robots" content="index, follow"> <meta name="robots" content="noindex, follow">
<link rel="canonical" href="<?php echo htmlspecialchars($canonical_url); ?>"> <link rel="canonical" href="<?php echo htmlspecialchars($canonical_url); ?>">
<link rel="icon" type="image/svg+xml" href="/assets/images/favicon.svg">
<!-- Preload critical resources -->
<link rel="preload" href="../assets/css/main.css?v=20260222" as="style">
<link rel="preload" href="../assets/images/ukaiautomation-logo.svg" as="image">
<!-- Open Graph / Social Media -->
<meta property="og:type" content="website">
<meta property="og:url" content="<?php echo htmlspecialchars($canonical_url); ?>">
<meta property="og:title" content="<?php echo htmlspecialchars($page_title); ?>">
<meta property="og:description" content="<?php echo htmlspecialchars($page_description); ?>">
<!-- Favicon -->
<link rel="icon" type="image/svg+xml" href="../assets/images/favicon.svg">
<!-- Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto+Slab:wght@300;400;500;600;700&family=Lato:wght@300;400;500;600;700&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Roboto+Slab:wght@300;400;500;600;700&family=Lato:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/assets/css/main.css?v=20260321">
<!-- Styles -->
<link rel="stylesheet" href="../assets/css/main.css?v=20260222">
</head> </head>
<body> <body>
<!-- Skip to content link for accessibility --> <?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/nav.php'); ?>
<a href="#main-content" class="skip-to-content">Skip to main content</a> <main>
<!-- Navigation -->
<?php include($_SERVER["DOCUMENT_ROOT"] . "/includes/nav.php"); ?>
<!-- Breadcrumb Navigation -->
<div class="breadcrumb">
<nav aria-label="Breadcrumb">
<ol>
<li><a href="../">Home</a></li>
<li><a href="../blog/">Blog</a></li>
<li aria-current="page"><span>Search<?php if ($search_query) echo ': ' . $search_query; ?></span></li>
</ol>
</nav>
</div>
<!-- Main Content -->
<main id="main-content">
<section class="page-hero"> <section class="page-hero">
<div class="container"> <div class="container">
<div class="hero-content"> <h1>Search</h1>
<h1>Search Results</h1>
<?php if ($search_query): ?>
<p class="hero-subtitle">Found <?php echo count($search_results); ?> article<?php echo count($search_results) !== 1 ? 's' : ''; ?> for "<?php echo htmlspecialchars($search_query); ?>"</p>
<?php else: ?>
<p class="hero-subtitle">Enter a search term to find relevant articles</p>
<?php endif; ?>
<!-- Search form -->
<div class="hero-search">
<form method="GET" action=""> <form method="GET" action="">
<input type="search" name="q" value="<?php echo htmlspecialchars($search_query); ?>" placeholder="Search articles..." aria-label="Search blog articles" required> <input type="search" name="q" value="<?php echo htmlspecialchars($search_query); ?>"
<button type="submit" aria-label="Search">🔍</button> placeholder="Search articles..." aria-label="Search blog articles">
<button type="submit">Search</button>
</form> </form>
</div> </div>
</div>
</div>
</section> </section>
<?php if ($search_query): ?> <section class="blog-listing">
<?php if (!empty($search_results)): ?>
<!-- Search Results -->
<section class="blog-recent">
<div class="container"> <div class="container">
<h2>Search Results</h2> <?php if ($search_query): ?>
<p><?php echo count($search_results); ?> result<?php echo count($search_results) !== 1 ? 's' : ''; ?> for &ldquo;<?php echo htmlspecialchars($search_query); ?>&rdquo;</p>
<?php if (!empty($search_results)): ?>
<div class="articles-grid"> <div class="articles-grid">
<?php foreach ($search_results as $article): ?> <?php foreach ($search_results as $a): ?>
<article class="article-card"> <article class="article-card">
<div class="article-meta"> <div class="article-card-meta">
<span class="category"><?php echo htmlspecialchars($article['category']); ?></span> <span class="category"><?php echo htmlspecialchars($a['category']); ?></span>
<time datetime="<?php echo $article['date']; ?>"><?php echo date('j F Y', strtotime($article['date'])); ?></time>
</div>
<h3><a href="<?php echo htmlspecialchars($article['url']); ?>"><?php echo htmlspecialchars($article['title']); ?></a></h3>
<p><?php echo htmlspecialchars($article['excerpt']); ?></p>
<div class="article-footer">
<span class="read-time"><?php echo htmlspecialchars($article['read_time']); ?></span>
<a href="<?php echo htmlspecialchars($article['url']); ?>" class="read-more">Read →</a>
</div> </div>
<h2><a href="<?php echo htmlspecialchars($a['url']); ?>"><?php echo htmlspecialchars($a['title']); ?></a></h2>
<p><?php echo htmlspecialchars($a['excerpt']); ?></p>
<a href="<?php echo htmlspecialchars($a['url']); ?>" class="read-more">Read article &rarr;</a>
</article> </article>
<?php endforeach; ?> <?php endforeach; ?>
</div> </div>
</div>
</section>
<?php else: ?> <?php else: ?>
<!-- No Results --> <p>No articles found. <a href="/blog/">Browse all articles</a>.</p>
<section class="blog-recent">
<div class="container">
<div class="no-results">
<h2>No Results Found</h2>
<p>We couldn't find any articles matching "<strong><?php echo htmlspecialchars($search_query); ?></strong>".</p>
<p>Try searching with different keywords or browse our <a href="../blog/">latest articles</a>.</p>
<h3>Popular Topics:</h3>
<div class="popular-topics">
<a href="?q=web+Automation" class="topic-tag">AI Automation</a>
<a href="?q=data+analytics" class="topic-tag">Data Analytics</a>
<a href="?q=GDPR+compliance" class="topic-tag">GDPR Compliance</a>
<a href="?q=business+intelligence" class="topic-tag">Business Intelligence</a>
<a href="?q=ai-automation" class="topic-tag">AI Automation</a>
<a href="?q=UK+data" class="topic-tag">UK Data</a>
</div>
</div>
</div>
</section>
<?php endif; ?> <?php endif; ?>
<?php else: ?> <?php else: ?>
<!-- Popular Categories --> <p><a href="/blog/">Browse all articles &rarr;</a></p>
<section class="blog-categories"> <?php endif; ?>
<div class="container">
<h2>Browse by Category</h2>
<div class="categories-grid">
<a href="/blog/categories/web-Automation" class="category-card">
<span class="category-icon">🕷️</span>
<h3>AI Automation</h3>
<p>Techniques, tools, and best practices</p>
</a>
<a href="/blog/categories/data-analytics" class="category-card">
<span class="category-icon">📊</span>
<h3>Data Analytics</h3>
<p>Business intelligence insights</p>
</a>
<a href="/blog/categories/compliance" class="category-card">
<span class="category-icon">⚖️</span>
<h3>Legal & Compliance</h3>
<p>UK data protection and GDPR</p>
</a>
<a href="/blog/categories/technology" class="category-card">
<span class="category-icon">⚙️</span>
<h3>Technology</h3>
<p>Latest tools and platforms</p>
</a>
</div>
</div> </div>
</section> </section>
<?php endif; ?> </main>
</main> <?php include($_SERVER['DOCUMENT_ROOT'] . '/includes/footer.php'); ?>
<!-- Footer -->
<footer class="footer">
<div class="container">
<div class="footer-content">
<div class="footer-section">
<div class="footer-logo">
<img src="../assets/images/logo-white.svg" alt="UK AI Automation" loading="lazy">
</div>
<p>Enterprise AI automation services for legal and consultancy firms.</p>
</div>
<div class="footer-section">
<h3>Our Services</h3>
<ul>
<li><a href="../services/competitive-intelligence">Competitive Intelligence</a></li>
<li><a href="../services/price-monitoring">Price Monitoring</a></li>
<li><a href="../services/data-cleaning">Data Cleaning</a></li>
<li><a href="../#services">All Services</a></li>
</ul>
</div>
<div class="footer-section">
<h3>Locations</h3>
<ul>
<li><a href="../locations/london">London</a></li>
<li><a href="../locations/manchester">Manchester</a></li>
<li><a href="../locations/birmingham">Birmingham</a></li>
</ul>
</div>
<div class="footer-section">
<h3>Resources</h3>
<ul>
<li><a href="../blog/">Data Intelligence Blog</a></li>
<li><a href="../case-studies/">Case Studies</a></li>
<li><a href="../about">About UK AI Automation</a></li>
<li><a href="../quote">Request Consultation</a></li>
</ul>
</div>
<div class="footer-section">
<h3>Legal & Support</h3>
<ul>
<li><a href="../privacy-policy">Privacy Policy</a></li>
<li><a href="../terms-of-service">Terms of Service</a></li>
<li><a href="../gdpr-compliance">GDPR Compliance</a></li>
<li><a href="../#contact">Contact & Support</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<p>&copy; <?php echo date('Y'); ?> UK AI Automation. All rights reserved.</p>
<div class="social-links">
<a href="https://linkedin.com/company/ukaiautomation" aria-label="LinkedIn" target="_blank" rel="noopener noreferrer"><img src="../assets/images/icon-linkedin.svg" alt="LinkedIn"></a>
<a href="https://twitter.com/ukaiautomation" aria-label="Twitter" target="_blank" rel="noopener noreferrer"><img src="../assets/images/icon-twitter.svg" alt="Twitter"></a>
</div>
</div>
</div>
</footer>
<!-- Scripts -->
<script src="../assets/js/main.js"></script>
<style>
.no-results {
text-align: center;
padding: 60px 20px;
}
.no-results h2 {
color: #1a1a1a;
margin-bottom: 20px;
}
.no-results p {
color: #666;
margin-bottom: 15px;
font-size: 18px;
}
.no-results h3 {
margin: 40px 0 20px 0;
color: #333;
}
.popular-topics {
display: flex;
flex-wrap: wrap;
gap: 10px;
justify-content: center;
margin-top: 20px;
}
.topic-tag {
background: linear-gradient(135deg, #6d28d9 0%, #7c3aed 100%);
color: white;
padding: 8px 16px;
border-radius: 20px;
text-decoration: none;
font-size: 14px;
transition: transform 0.2s ease;
}
.topic-tag:hover {
transform: translateY(-2px);
text-decoration: none;
color: white;
}
.hero-search form {
display: flex;
align-items: center;
gap: 0;
}
.hero-search input {
flex: 1;
}
</style>
</body> </body>
</html> </html>

View File

@@ -2,7 +2,7 @@
// Enhanced security headers // Enhanced security headers
header('Strict-Transport-Security: max-age=31536000; includeSubDomains'); header('Strict-Transport-Security: max-age=31536000; includeSubDomains');
$page_title = "FAQ | UK AI Automation - AI Automation"; $page_title = "FAQ | UK AI Automation";
$page_description = "Frequently asked questions about our AI automation consulting services for UK legal and consultancy firms."; $page_description = "Frequently asked questions about our AI automation consulting services for UK legal and consultancy firms.";
$canonical_url = "https://ukaiautomation.co.uk/faq"; $canonical_url = "https://ukaiautomation.co.uk/faq";

View File

@@ -1,150 +1,39 @@
<?php <?php
/** /**
* Author Bio Component * Author Bio Component
* Include this in blog articles to display author information with E-E-A-T signals * Displays organisation author credit for E-E-A-T purposes.
*
* Required variables:
* - $article_author (string): Author name
*
* Optional variables:
* - $author_role (string): Author's job title
* - $author_bio (string): Short bio description
* - $author_linkedin (string): LinkedIn URL
*/ */
$author_info = [
// Author database with credentials and bios 'name' => 'UK AI Automation',
$authors = [ 'role' => 'AI Automation Consultancy',
'UK AI Automation Editorial Team' => [ 'bio' => 'UK AI Automation builds document extraction pipelines, research automation tools, and custom AI agents for UK law firms and management consultancies.',
'role' => 'Data Intelligence Experts', 'linkedin' => 'https://www.linkedin.com/company/ukaiautomation',
'bio' => 'Our editorial team comprises data scientists, engineers, and industry analysts with over 50 combined years of experience in AI automation, data pipelines, and business intelligence across UK industries.', 'expertise' => ['AI Automation', 'Document Extraction', 'Research Automation', 'LLMs', 'GDPR Compliance'],
'linkedin' => null, 'image' => '/assets/images/ukaiautomation-logo.svg'
'expertise' => ['AI Automation', 'Data Analytics', 'Business Intelligence', 'GDPR Compliance'],
'image' => '/assets/images/authors/team-avatar.svg'
],
'James Wilson' => [
'role' => 'Senior Data Architect',
'bio' => 'James is a Senior Data Architect with 12+ years of experience in enterprise AI Automation and business intelligence. He holds a Master\'s degree in Computer Science from Imperial College London and is an AWS Solutions Architect Professional.',
'linkedin' => 'https://linkedin.com/company/ukaiautomation',
'expertise' => ['Enterprise Architecture', 'AI Automation', 'Cloud Solutions', 'Data Pipelines'],
'image' => '/assets/images/authors/james-wilson.svg'
],
'Dr. Rachel Singh' => [
'role' => 'Lead Data Scientist',
'bio' => 'Dr. Rachel Singh leads our data science team with expertise in machine learning and AI-powered data extraction. She holds a PhD in Computer Science from University of Cambridge and has published research on NLP and intelligent document processing.',
'linkedin' => 'https://linkedin.com/company/ukaiautomation',
'expertise' => ['Machine Learning', 'NLP', 'AI', 'Computer Vision'],
'image' => '/assets/images/authors/rachel-singh.svg'
],
'Michael Thompson' => [
'role' => 'Technical Lead - AI Automation',
'bio' => 'Michael specialises in large-scale AI automation infrastructure and has designed data extraction systems for FTSE 100 companies.',
'linkedin' => 'https://linkedin.com/company/ukaiautomation',
'expertise' => ['AI Automation', 'Distributed Systems', 'LLMs', 'Data Pipelines'],
'image' => '/assets/images/authors/michael-thompson.svg'
],
'Sarah Chen' => [
'role' => 'Compliance & Data Protection Officer',
'bio' => 'Sarah is a certified Data Protection Officer (GDPR-P) with extensive experience in UK and EU data regulations. She ensures all our data collection practices meet the highest compliance standards.',
'linkedin' => 'https://linkedin.com/company/ukaiautomation',
'expertise' => ['GDPR', 'Data Protection', 'Compliance', 'Privacy'],
'image' => '/assets/images/authors/sarah-chen.svg'
],
'David Martinez' => [
'role' => 'Business Intelligence Consultant',
'bio' => 'David is a certified Tableau and Power BI consultant with 8+ years of experience helping UK businesses transform raw data into actionable insights. He specializes in dashboard design and data visualization.',
'linkedin' => 'https://linkedin.com/company/ukaiautomation',
'expertise' => ['Tableau', 'Power BI', 'Data Visualization', 'BI Strategy'],
'image' => '/assets/images/authors/david-martinez.svg'
],
'Alex Kumar' => [
'role' => 'Senior AI Engineer',
'bio' => 'Alex specialises in data pipeline architecture and workflow orchestration, building production-grade pipelines for UK data teams.',
'linkedin' => 'https://linkedin.com/company/ukaiautomation',
'expertise' => ['AI Automation', 'Airflow', 'Data Pipelines', 'LLMs'],
'image' => '/assets/images/authors/team-avatar.svg'
],
'David Thompson' => [
'role' => 'Data Protection & International Compliance Lead',
'bio' => 'David Thompson specialises in cross-border data transfer compliance, advising UK businesses on GDPR, UK GDPR, SCCs and adequacy decisions. He has over 10 years of experience in international data law.',
'linkedin' => 'https://linkedin.com/company/ukaiautomation',
'expertise' => ['GDPR', 'Data Transfers', 'SCCs', 'UK GDPR'],
'image' => '/assets/images/authors/team-avatar.svg'
],
'Emily Roberts' => [
'role' => 'Data Subject Rights Specialist',
'bio' => 'Emily Roberts is a certified data protection practitioner with expertise in operationalising data subject rights under UK GDPR. She has helped over 40 UK organisations build compliant DSR workflows.',
'linkedin' => 'https://linkedin.com/company/ukaiautomation',
'expertise' => ['GDPR', 'Data Subject Rights', 'Privacy', 'Compliance'],
'image' => '/assets/images/authors/team-avatar.svg'
],
'Michael Chen' => [
'role' => 'Data Engineer & Manufacturing Analytics Specialist',
'bio' => 'Michael Chen is a data engineer with deep expertise in manufacturing analytics and supply chain data transformation. He has designed data systems for UK manufacturers across automotive, FMCG and industrial sectors.',
'linkedin' => 'https://linkedin.com/company/ukaiautomation',
'expertise' => ['Data Engineering', 'Manufacturing Analytics', 'ETL', 'Supply Chain'],
'image' => '/assets/images/authors/team-avatar.svg'
],
'Sarah Mitchell' => [
'role' => 'Fintech Data Analyst',
'bio' => 'Sarah Mitchell is a fintech data analyst with 7 years of experience in UK financial services market intelligence. She specialises in regulatory data analysis, open banking datasets and fintech competitive intelligence.',
'linkedin' => 'https://linkedin.com/company/ukaiautomation',
'expertise' => ['Fintech', 'Market Analysis', 'Open Banking', 'Financial Data'],
'image' => '/assets/images/authors/team-avatar.svg'
],
'Emma Richardson' => [
'role' => 'Industry Analyst',
'bio' => 'Emma covers UK market trends and industry analysis with a focus on retail, property, and e-commerce sectors. She has over 6 years of experience in competitive intelligence and market research.',
'linkedin' => 'https://linkedin.com/company/ukaiautomation',
'expertise' => ['Market Research', 'Competitive Intelligence', 'E-commerce', 'Retail Analytics'],
'image' => '/assets/images/authors/emma-richardson.svg'
]
]; ];
// Get author info
$author_name = isset($article_author) ? $article_author : 'UK AI Automation Editorial Team';
$author_info = isset($authors[$author_name]) ? $authors[$author_name] : $authors['UK AI Automation Editorial Team'];
?> ?>
<div class="author-bio" itemscope itemtype="https://schema.org/Organization">
<div class="author-bio" itemscope itemtype="https://schema.org/Person">
<div class="bio-avatar"> <div class="bio-avatar">
<img src="<?php echo htmlspecialchars($author_info['image']); ?>" <img src="<?php echo htmlspecialchars($author_info['image']); ?>"
alt="<?php echo htmlspecialchars($author_name); ?>" alt="UK AI Automation"
loading="lazy" loading="lazy" width="80" height="80" itemprop="logo">
width="80"
height="80"
itemprop="image">
</div> </div>
<div class="bio-info"> <div class="bio-info">
<h4 class="bio-header">About the Author</h4> <h4 class="bio-header">About the Author</h4>
<p class="bio-name" itemprop="name"><?php echo htmlspecialchars($author_name); ?></p> <p class="bio-name" itemprop="name"><?php echo htmlspecialchars($author_info['name']); ?></p>
<p class="bio-role" itemprop="jobTitle"><?php echo htmlspecialchars($author_info['role']); ?></p> <p class="bio-role" itemprop="description"><?php echo htmlspecialchars($author_info['role']); ?></p>
<p class="bio-description" itemprop="description"><?php echo htmlspecialchars($author_info['bio']); ?></p> <p class="bio-description"><?php echo htmlspecialchars($author_info['bio']); ?></p>
<div class="bio-expertise"> <div class="bio-expertise">
<span class="expertise-label">Expertise:</span> <span class="expertise-label">Expertise:</span>
<?php foreach ($author_info['expertise'] as $skill): ?> <?php foreach ($author_info['expertise'] as $skill): ?>
<span class="expertise-tag"><?php echo htmlspecialchars($skill); ?></span> <span class="expertise-tag"><?php echo htmlspecialchars($skill); ?></span>
<?php endforeach; ?> <?php endforeach; ?>
</div> </div>
<?php if ($author_info['linkedin']): ?>
<div class="bio-social"> <div class="bio-social">
<a href="<?php echo htmlspecialchars($author_info['linkedin']); ?>" <a href="<?php echo htmlspecialchars($author_info['linkedin']); ?>"
target="_blank" target="_blank" rel="noopener noreferrer" itemprop="sameAs" class="linkedin-link">
rel="noopener noreferrer"
itemprop="sameAs"
class="linkedin-link">
<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
<path d="M19 0h-14c-2.761 0-5 2.239-5 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5v-14c0-2.761-2.238-5-5-5zm-11 19h-3v-11h3v11zm-1.5-12.268c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zm13.5 12.268h-3v-5.604c0-3.368-4-3.113-4 0v5.604h-3v-11h3v1.765c1.396-2.586 7-2.777 7 2.476v6.759z"/>
</svg>
Connect on LinkedIn Connect on LinkedIn
</a> </a>
</div> </div>
<?php endif; ?>
</div> </div>
</div> </div>

View File

@@ -0,0 +1,104 @@
<?php
/**
* Blog Article Head
* Outputs full HTML head + BlogPosting schema for blog articles
* Requires: $page_title, $page_description, $canonical_url, $article array
*/
$og_image = 'https://ukaiautomation.co.uk/assets/images/ukaiautomation-og.png';
$base_url = 'https://ukaiautomation.co.uk';
$date_pub = $article['date'] ?? date('Y-m-d');
$category = $article['category'] ?? 'AI Automation';
$schema = [
'@context' => 'https://schema.org',
'@type' => 'BlogPosting',
'@id' => $canonical_url . '#blogposting',
'headline' => $article['title'] ?? $page_title,
'description' => $page_description,
'url' => $canonical_url,
'datePublished' => $date_pub . 'T09:00:00+00:00',
'dateModified' => $date_pub . 'T09:00:00+00:00',
'author' => [
'@type' => 'Organization',
'@id' => $base_url . '/#organization',
'name' => 'UK AI Automation',
'url' => $base_url
],
'publisher' => [
'@type' => 'Organization',
'@id' => $base_url . '/#organization',
'name' => 'UK AI Automation',
'logo' => [
'@type' => 'ImageObject',
'url' => $base_url . '/assets/images/ukaiautomation-logo.svg',
'width' => 300,
'height' => 100
]
],
'image' => [
'@type' => 'ImageObject',
'url' => $og_image,
'width' => 1200,
'height' => 630
],
'mainEntityOfPage'=> [
'@type' => 'WebPage',
'@id' => $canonical_url
],
'isPartOf' => [
'@type' => 'Blog',
'@id' => $base_url . '/blog/#blog',
'name' => 'UK AI Automation Blog'
],
'articleSection' => $category,
'inLanguage' => 'en-GB'
];
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?php echo htmlspecialchars($page_title); ?></title>
<meta name="description" content="<?php echo htmlspecialchars($page_description); ?>">
<meta name="author" content="UK AI Automation">
<meta name="robots" content="index, follow">
<link rel="canonical" href="<?php echo htmlspecialchars($canonical_url); ?>">
<!-- Open Graph -->
<meta property="og:type" content="article">
<meta property="og:url" content="<?php echo htmlspecialchars($canonical_url); ?>">
<meta property="og:title" content="<?php echo htmlspecialchars($article['title'] ?? $page_title); ?>">
<meta property="og:description" content="<?php echo htmlspecialchars($page_description); ?>">
<meta property="og:image" content="<?php echo htmlspecialchars($og_image); ?>">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:site_name" content="UK AI Automation">
<meta property="og:locale" content="en_GB">
<meta property="article:published_time" content="<?php echo htmlspecialchars($date_pub); ?>T09:00:00+00:00">
<meta property="article:section" content="<?php echo htmlspecialchars($category); ?>">
<!-- Twitter Card -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@ukaiautomation">
<meta name="twitter:title" content="<?php echo htmlspecialchars($article['title'] ?? $page_title); ?>">
<meta name="twitter:description" content="<?php echo htmlspecialchars($page_description); ?>">
<meta name="twitter:image" content="<?php echo htmlspecialchars($og_image); ?>">
<!-- BlogPosting Schema -->
<script type="application/ld+json">
<?php echo json_encode($schema, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); ?>
</script>
<!-- Favicon -->
<link rel="icon" type="image/svg+xml" href="/assets/images/favicon.svg">
<!-- Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto+Slab:wght@300;400;500;600;700&family=Lato:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<!-- Styles -->
<link rel="stylesheet" href="/assets/css/main.css?v=20260321">
</head>
<body>

View File

@@ -1,14 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>https://ukaiautomation.co.uk/</loc><changefreq>weekly</changefreq><priority>1.0</priority></url> <url><loc>https://ukaiautomation.co.uk/</loc><lastmod>2026-03-21</lastmod><changefreq>weekly</changefreq><priority>1.0</priority></url>
<url><loc>https://ukaiautomation.co.uk/about</loc><changefreq>monthly</changefreq><priority>0.8</priority></url> <url><loc>https://ukaiautomation.co.uk/about</loc><lastmod>2026-03-21</lastmod><changefreq>monthly</changefreq><priority>0.8</priority></url>
<url><loc>https://ukaiautomation.co.uk/contact</loc><changefreq>monthly</changefreq><priority>0.7</priority></url> <url><loc>https://ukaiautomation.co.uk/contact</loc><lastmod>2026-03-21</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url>
<url><loc>https://ukaiautomation.co.uk/quote</loc><changefreq>monthly</changefreq><priority>0.8</priority></url> <url><loc>https://ukaiautomation.co.uk/quote</loc><lastmod>2026-03-21</lastmod><changefreq>monthly</changefreq><priority>0.8</priority></url>
<url><loc>https://ukaiautomation.co.uk/blog</loc><changefreq>weekly</changefreq><priority>0.9</priority></url> <url><loc>https://ukaiautomation.co.uk/case-studies/</loc><lastmod>2026-03-21</lastmod><changefreq>monthly</changefreq><priority>0.7</priority></url>
<url><loc>https://ukaiautomation.co.uk/blog/articles/due-diligence-automation-law-firms</loc><changefreq>monthly</changefreq><priority>0.8</priority></url> <url><loc>https://ukaiautomation.co.uk/faq</loc><lastmod>2026-03-21</lastmod><changefreq>monthly</changefreq><priority>0.6</priority></url>
<url><loc>https://ukaiautomation.co.uk/blog/articles/research-automation-management-consultancy</loc><changefreq>monthly</changefreq><priority>0.8</priority></url> <url><loc>https://ukaiautomation.co.uk/blog/</loc><lastmod>2026-03-21</lastmod><changefreq>weekly</changefreq><priority>0.9</priority></url>
<url><loc>https://ukaiautomation.co.uk/blog/articles/what-is-an-ai-agent-professional-services</loc><changefreq>monthly</changefreq><priority>0.8</priority></url> <url><loc>https://ukaiautomation.co.uk/blog/articles/due-diligence-automation-law-firms</loc><lastmod>2026-03-21</lastmod><changefreq>monthly</changefreq><priority>0.8</priority></url>
<url><loc>https://ukaiautomation.co.uk/blog/articles/document-extraction-pdf-to-database</loc><changefreq>monthly</changefreq><priority>0.8</priority></url> <url><loc>https://ukaiautomation.co.uk/blog/articles/research-automation-management-consultancy</loc><lastmod>2026-03-21</lastmod><changefreq>monthly</changefreq><priority>0.8</priority></url>
<url><loc>https://ukaiautomation.co.uk/blog/articles/cost-of-manual-data-work-professional-services</loc><changefreq>monthly</changefreq><priority>0.8</priority></url> <url><loc>https://ukaiautomation.co.uk/blog/articles/what-is-an-ai-agent-professional-services</loc><lastmod>2026-03-21</lastmod><changefreq>monthly</changefreq><priority>0.8</priority></url>
<url><loc>https://ukaiautomation.co.uk/blog/articles/gdpr-ai-automation-uk-firms</loc><changefreq>monthly</changefreq><priority>0.8</priority></url> <url><loc>https://ukaiautomation.co.uk/blog/articles/document-extraction-pdf-to-database</loc><lastmod>2026-03-21</lastmod><changefreq>monthly</changefreq><priority>0.8</priority></url>
<url><loc>https://ukaiautomation.co.uk/blog/articles/cost-of-manual-data-work-professional-services</loc><lastmod>2026-03-21</lastmod><changefreq>monthly</changefreq><priority>0.8</priority></url>
<url><loc>https://ukaiautomation.co.uk/blog/articles/gdpr-ai-automation-uk-firms</loc><lastmod>2026-03-21</lastmod><changefreq>monthly</changefreq><priority>0.8</priority></url>
</urlset> </urlset>