Website — SEO & Meta Tags
How It Works
All per-page SEO metadata is centralised in src/seo.js. Each route has a defined title, description, and canonical URL. Pages read from this file and inject the values into <head> using @vueuse/head.
seo.js Structure
js
// src/seo.js
const BASE_URL = 'https://semalink.africa'
export const SEO = {
'/': {
title: "Sema Link — Africa's Most Reliable SMS Gateway",
description: 'Send SMS with guaranteed delivery reports across Kenya, Tanzania, and Uganda...',
canonical: `${BASE_URL}/`,
},
'/pricing': {
title: 'SMS Pricing — Affordable Rates from KES 0.80/SMS | Sema Link',
description: '...',
canonical: `${BASE_URL}/pricing`,
},
// ... one entry per route
}
export function getPageSeo(path) {
return SEO[path] ?? {
title: "Sema Link — Africa's Most Reliable SMS Gateway",
description: 'Guaranteed SMS delivery across Kenya, Tanzania, and Uganda.',
canonical: `${BASE_URL}${path}`,
}
}Adding SEO for a New Page
When you add a new route, add a matching entry in seo.js:
js
'/new-page': {
title: 'Page Title | Sema Link',
description: 'A concise description under 160 characters for search engines.',
canonical: `${BASE_URL}/new-page`,
},Open Graph / Social Sharing
The OG image used for all social share previews is public/og-image.png (1200×630px). It is referenced in index.html as a global default. Individual pages can override it if needed.
Pages & Their SEO
| Route | Title |
|---|---|
/ | Sema Link — Africa's Most Reliable SMS Gateway |
/pricing | SMS Pricing — Affordable Rates from KES 0.80/SMS |
/api | API Documentation — SMS Gateway REST API |
/about | About Sema Link — Built for East Africa's Fastest-Growing Businesses |
/legal/privacy | Privacy Policy |
/legal/terms | Terms of Service |
/legal/acceptable-use | Acceptable Use Policy |
/legal/gdpr | GDPR & ODPC Compliance |
Static Files for SEO
| File | Purpose |
|---|---|
public/robots.txt | Tells search engines which pages to crawl |
public/sitemap.xml | XML sitemap — submit to Google Search Console |
public/og-image.png | Social share image (1200×630px) |