Add JSON-LD schemas: FAQ, HowTo, BlogPosting, Person, AggregateRating
- PricingPage: FAQPage schema from existing FAQ array - HomePage: HowTo schema with 5-step process (Challenge Briefing → Scaling) - BlogPostPage: BlogPosting schema with headline, dates, author, publisher - AboutPage: Person schema for Vadym Samoilenko (CEO & Founder) - index.html: LocalBusiness + AggregateRating schema (5.0/5, 5 reviews) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
2fb3fce608
commit
a3040d9852
5 changed files with 123 additions and 0 deletions
25
index.html
25
index.html
|
|
@ -136,6 +136,31 @@
|
|||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- Structured Data: LocalBusiness + AggregateRating -->
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "LocalBusiness",
|
||||
"name": "AImpress Ltd",
|
||||
"url": "https://ai-impress.com",
|
||||
"image": "https://ai-impress.com/logo/webclip-256x256.png",
|
||||
"address": {
|
||||
"@type": "PostalAddress",
|
||||
"streetAddress": "Suite 6065 Unit 3a, 34-35 Hatton Garden",
|
||||
"addressLocality": "London",
|
||||
"postalCode": "EC1N 8DX",
|
||||
"addressCountry": "GB"
|
||||
},
|
||||
"aggregateRating": {
|
||||
"@type": "AggregateRating",
|
||||
"ratingValue": "5.0",
|
||||
"reviewCount": "5",
|
||||
"bestRating": "5",
|
||||
"worstRating": "1"
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
|
|
|
|||
|
|
@ -158,6 +158,21 @@ const AboutPage = () => {
|
|||
},
|
||||
})}</script>
|
||||
</Helmet>
|
||||
<Helmet>
|
||||
<script type="application/ld+json">{JSON.stringify({
|
||||
'@context': 'https://schema.org',
|
||||
'@type': 'Person',
|
||||
name: 'Vadym Samoilenko',
|
||||
jobTitle: 'CEO & Founder',
|
||||
worksFor: {
|
||||
'@type': 'Organization',
|
||||
name: 'AImpress Ltd',
|
||||
url: 'https://ai-impress.com',
|
||||
},
|
||||
image: 'https://ai-impress.com/founder-vadym.png',
|
||||
sameAs: ['https://www.linkedin.com/in/vadym-samoilenko/'],
|
||||
})}</script>
|
||||
</Helmet>
|
||||
|
||||
{/* Hero */}
|
||||
<section className="about-hero">
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import { useState, useEffect } from 'react';
|
||||
import { useParams, Link } from 'react-router-dom';
|
||||
import { motion } from 'framer-motion';
|
||||
import { Helmet } from 'react-helmet-async';
|
||||
import SEO from '../components/SEO';
|
||||
import { useTranslation } from '../i18n';
|
||||
import type { BlogPostFull } from '../types/blog';
|
||||
|
|
@ -72,6 +73,33 @@ const BlogPostPage: React.FC = () => {
|
|||
image={post.coverImage || undefined}
|
||||
type="article"
|
||||
/>
|
||||
<Helmet>
|
||||
<script type="application/ld+json">{JSON.stringify({
|
||||
'@context': 'https://schema.org',
|
||||
'@type': 'BlogPosting',
|
||||
headline: post.title,
|
||||
description: post.excerpt || post.title,
|
||||
datePublished: post.date,
|
||||
image: post.coverImage || 'https://ai-impress.com/logo/webclip-256x256.png',
|
||||
author: {
|
||||
'@type': 'Organization',
|
||||
name: 'AImpress Ltd',
|
||||
url: 'https://ai-impress.com',
|
||||
},
|
||||
publisher: {
|
||||
'@type': 'Organization',
|
||||
name: 'AImpress Ltd',
|
||||
logo: {
|
||||
'@type': 'ImageObject',
|
||||
url: 'https://ai-impress.com/logo/webclip-256x256.png',
|
||||
},
|
||||
},
|
||||
mainEntityOfPage: {
|
||||
'@type': 'WebPage',
|
||||
'@id': `https://ai-impress.com/blog/${slug}`,
|
||||
},
|
||||
})}</script>
|
||||
</Helmet>
|
||||
<Link to="/blog" className="blog-post-back">{t('blogPost.back')}</Link>
|
||||
|
||||
{post.coverImage && (
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
import { Helmet } from 'react-helmet-async';
|
||||
import SEO from '../components/SEO';
|
||||
import Hero from '../components/Hero';
|
||||
import Benefits from '../components/Benefits';
|
||||
|
|
@ -14,6 +15,46 @@ const HomePage: React.FC = () => {
|
|||
return (
|
||||
<main>
|
||||
<SEO />
|
||||
<Helmet>
|
||||
<script type="application/ld+json">{JSON.stringify({
|
||||
'@context': 'https://schema.org',
|
||||
'@type': 'HowTo',
|
||||
name: 'How AImpress Automates Your Business',
|
||||
description: 'Our proven 5-step process to implement AI and automation solutions for SMEs.',
|
||||
step: [
|
||||
{
|
||||
'@type': 'HowToStep',
|
||||
position: 1,
|
||||
name: 'Challenge Briefing',
|
||||
text: 'We start with a discovery call to understand your business challenges, goals, and current workflows.',
|
||||
},
|
||||
{
|
||||
'@type': 'HowToStep',
|
||||
position: 2,
|
||||
name: 'Process Audit',
|
||||
text: 'We map your existing processes to identify automation opportunities and calculate potential ROI.',
|
||||
},
|
||||
{
|
||||
'@type': 'HowToStep',
|
||||
position: 3,
|
||||
name: 'Solution Design',
|
||||
text: 'We design a tailored automation architecture using AI tools and platforms best suited to your needs.',
|
||||
},
|
||||
{
|
||||
'@type': 'HowToStep',
|
||||
position: 4,
|
||||
name: 'Implementation',
|
||||
text: 'We build and integrate your automation solutions, with full testing and quality assurance.',
|
||||
},
|
||||
{
|
||||
'@type': 'HowToStep',
|
||||
position: 5,
|
||||
name: 'Scaling & Optimisation',
|
||||
text: 'We monitor performance, train your team, and continuously optimise your automations for maximum impact.',
|
||||
},
|
||||
],
|
||||
})}</script>
|
||||
</Helmet>
|
||||
<Hero />
|
||||
<Benefits />
|
||||
<Banner1 />
|
||||
|
|
|
|||
|
|
@ -140,6 +140,20 @@ const PricingPage = () => {
|
|||
},
|
||||
})}</script>
|
||||
</Helmet>
|
||||
<Helmet>
|
||||
<script type="application/ld+json">{JSON.stringify({
|
||||
'@context': 'https://schema.org',
|
||||
'@type': 'FAQPage',
|
||||
mainEntity: faq.map(item => ({
|
||||
'@type': 'Question',
|
||||
name: item.q,
|
||||
acceptedAnswer: {
|
||||
'@type': 'Answer',
|
||||
text: item.a,
|
||||
},
|
||||
})),
|
||||
})}</script>
|
||||
</Helmet>
|
||||
|
||||
{/* Hero */}
|
||||
<section className="pricing-hero">
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue