From 7f2b7b2f96b18834a484c1fc5ed1dcfc42f4e85e Mon Sep 17 00:00:00 2001 From: ianmuchyri Date: Mon, 8 Jun 2026 13:56:42 +0300 Subject: [PATCH 1/6] update SEO Signed-off-by: ianmuchyri --- astro.config.mjs | 33 ++++++++++++++++++++--- public/robots.txt | 2 +- src/layouts/Layout.astro | 6 +++-- src/pages/blog/[...slug].astro | 35 ++++++++++++++++++++++++ src/pages/blog/index.astro | 2 +- src/pages/company/about.astro | 34 +++++++++++++++++++++++- src/pages/company/careers.astro | 4 +-- src/pages/company/contact.astro | 4 +-- src/pages/index.astro | 32 ++++++++++++++++++++++ src/pages/industries/[slug].astro | 15 +++++++++++ src/pages/industries/index.astro | 2 +- src/pages/products/cocos-ai.astro | 44 ++++++++++++++++++++++++++++--- src/pages/products/cube-ai.astro | 39 ++++++++++++++++++++++++++- src/pages/products/prism-ai.astro | 39 ++++++++++++++++++++++++++- src/pages/projects/index.astro | 2 +- src/pages/solutions/[slug].astro | 15 +++++++++++ 16 files changed, 288 insertions(+), 20 deletions(-) diff --git a/astro.config.mjs b/astro.config.mjs index 6a2ac06..d198b76 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -12,11 +12,36 @@ export default defineConfig({ integrations: [ tailwind(), sitemap({ - filenameBase: "sitemap", // This will output sitemap.xml - changefreq: "hourly", - priority: 1.0, + filenameBase: "sitemap", + filter: (page) => + ![ + "/cube/privacy/", + "/cube/terms/", + "/prism/privacy/", + "/prism/terms/", + ].some((path) => page.endsWith(path)), serialize(item) { - item.lastmod = new Date().toISOString(); // Sets all pages to the build time + item.lastmod = new Date().toISOString(); + + if (item.url === "https://www.ultraviolet.rs/") { + item.changefreq = "weekly"; + item.priority = 1.0; + } else if (/\/products\//.test(item.url)) { + item.changefreq = "monthly"; + item.priority = 0.9; + } else if (/\/solutions\/|\/industries\//.test(item.url)) { + item.changefreq = "monthly"; + item.priority = 0.8; + } else if (/\/blog\//.test(item.url)) { + item.changefreq = "monthly"; + item.priority = 0.7; + } else if (/\/projects\//.test(item.url)) { + item.changefreq = "monthly"; + item.priority = 0.6; + } else { + item.changefreq = "monthly"; + item.priority = 0.5; + } return item; }, diff --git a/public/robots.txt b/public/robots.txt index 50590a0..cd2126f 100644 --- a/public/robots.txt +++ b/public/robots.txt @@ -1,3 +1,3 @@ User-agent: * Allow: / -Sitemap: https://ultraviolet.rs/sitemap.xml +Sitemap: https://www.ultraviolet.rs/sitemap.xml diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index 2d31add..5887a13 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -32,7 +32,6 @@ const resolveMetaUrl = (value: string | undefined) => { const canonicalUrl = resolveMetaUrl(canonical ?? Astro.url.pathname); const ogImageUrl = resolveMetaUrl(ogImage); -console.log("og image url: ", ogImageUrl); --- @@ -58,11 +57,12 @@ console.log("og image url: ", ogImageUrl); {ogImageUrl && } {ogImageUrl && } - + + {ogImageUrl && } @@ -92,6 +92,8 @@ console.log("og image url: ", ogImageUrl); + + diff --git a/src/pages/blog/[...slug].astro b/src/pages/blog/[...slug].astro index 2dcfa8d..d1e0450 100644 --- a/src/pages/blog/[...slug].astro +++ b/src/pages/blog/[...slug].astro @@ -58,33 +58,61 @@ function getPostAuthors(p: typeof post): { name: string; picture?: string }[] { is:inline slot="head" type="application/ld+json" - set:html={JSON.stringify({ - "@context": "https://schema.org", - "@type": "Article", - headline: post.data.title, - description: post.data.excerpt || post.data.description, - image: coverImage ? `https://www.ultraviolet.rs${coverImage}` : undefined, - datePublished: new Date(post.data.date).toISOString(), - dateModified: new Date(post.data.date).toISOString(), - author: authors.map((a) => ({ - "@type": "Person", - name: a.name, - ...(a.picture ? { image: a.picture } : {}), - })), - publisher: { - "@type": "Organization", - name: "Ultraviolet", - url: "https://www.ultraviolet.rs", - logo: { - "@type": "ImageObject", - url: "https://www.ultraviolet.rs/img/logos/ultraviolet.png", + set:html={JSON.stringify([ + { + "@context": "https://schema.org", + "@type": "Article", + headline: post.data.title, + description: post.data.excerpt || post.data.description, + image: coverImage + ? `https://www.ultraviolet.rs${coverImage}` + : undefined, + datePublished: new Date(post.data.date).toISOString(), + dateModified: new Date(post.data.date).toISOString(), + author: authors.map((a) => ({ + "@type": "Person", + name: a.name, + ...(a.picture ? { image: a.picture } : {}), + })), + publisher: { + "@type": "Organization", + name: "Ultraviolet", + url: "https://www.ultraviolet.rs", + logo: { + "@type": "ImageObject", + url: "https://www.ultraviolet.rs/img/logos/ultraviolet.png", + }, + }, + mainEntityOfPage: { + "@type": "WebPage", + "@id": `https://www.ultraviolet.rs/blog/${post.slug}`, }, }, - mainEntityOfPage: { - "@type": "WebPage", - "@id": `https://www.ultraviolet.rs/blog/${post.slug}`, + { + "@context": "https://schema.org", + "@type": "BreadcrumbList", + itemListElement: [ + { + "@type": "ListItem", + position: 1, + name: "Home", + item: "https://www.ultraviolet.rs/", + }, + { + "@type": "ListItem", + position: 2, + name: "Blog", + item: "https://www.ultraviolet.rs/blog/", + }, + { + "@type": "ListItem", + position: 3, + name: post.data.title, + item: `https://www.ultraviolet.rs/blog/${post.slug}`, + }, + ], }, - })} + ])} />
diff --git a/src/pages/company/about.astro b/src/pages/company/about.astro index 2934d7e..93d53bb 100644 --- a/src/pages/company/about.astro +++ b/src/pages/company/about.astro @@ -96,7 +96,7 @@ const focus = [ built in the open.`} + h1={`The company that builds
sovereign AI infrastructure.`} sub="Ultraviolet is a European company headquartered in Belgrade, Serbia, building open-source confidential computing and sovereign AI — so organizations can use frontier AI without surrendering their data." primaryLabel="Contact us" primaryHref="/company/contact" diff --git a/src/pages/company/contact.astro b/src/pages/company/contact.astro index 2690f8b..9900140 100644 --- a/src/pages/company/contact.astro +++ b/src/pages/company/contact.astro @@ -15,7 +15,8 @@ import ProductCTA from "../../components/ProductCTA.astro"; sovereign AI infrastructure.`} + h1={`Deploy private AI on your terms — talk to us.`} sub="Questions about confidential computing, sovereign AI deployments, pilots, or procurement? Reach out — we'd love to help you put AI to work on your own terms." primaryLabel="info@ultraviolet.rs" primaryHref="mailto:info@ultraviolet.rs" diff --git a/src/pages/index.astro b/src/pages/index.astro index 622899c..15c1a96 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -16,7 +16,7 @@ import FinalCTA from "../components/FinalCTA.astro"; ---