// seo.jsx — per-page SEO meta for the SPA.
// Updates
, description, og:*, twitter:*, canonical and
// whenever the active route or language changes.
//
// To edit the copy: change the SEO_META object below.
// To add a new page: add a new key here and a matching route in AppAlt.jsx.
(function () {
const SITE_URL = "https://goldorient.kz";
const OG_IMAGE = SITE_URL + "/assets/ad-landscape.jpg";
const SEO_META = {
main: {
ru: {
path: "/",
title: "Gold Orient Logistics — Грузоперевозки из Китая в Казахстан и Россию",
description:
"Доставка грузов из Китая под ключ: авто, ЖД, авиа и мультимодальные перевозки. Один менеджер на маршрут, фиксированный тариф за кг, страхование груза. Расчёт стоимости за 30 секунд.",
keywords:
"грузоперевозки из Китая, доставка из Китая в Казахстан, доставка из Китая в Россию, логистика Китай Казахстан, карго из Китая, авто перевозки, ЖД перевозки, авиа доставка, мультимодальные перевозки, таможенное оформление, Gold Orient Logistics",
},
kz: {
path: "/kz/",
title: "Gold Orient Logistics — Қытайдан Қазақстан мен Ресейге жүк тасымалы",
description:
"Қытайдан жүк жеткізу қызметі: авто, теміржол, әуе және мультимодалды тасымал. Маршрутта бір менеджер, кг үшін тұрақты тариф, жүкті сақтандыру. 30 секундта есептеу.",
keywords:
"Қытайдан жүк тасымалы, Қытайдан Қазақстанға жеткізу, Қытайдан Ресейге жеткізу, карго Қытай, авто тасымал, теміржол тасымалы, әуе жеткізу, кедендік ресімдеу, Gold Orient Logistics",
},
},
about: {
ru: {
path: "/about-us",
title: "О компании — Gold Orient Logistics | Логистика из Китая в Алматы",
description:
"Gold Orient Logistics — логистическая компания из Алматы. Доставка грузов из Китая в Казахстан и Россию: миссия, команда, преимущества, география маршрутов и цифры в работе.",
keywords:
"о компании Gold Orient Logistics, логистическая компания Алматы, доставка грузов Казахстан, команда логистов, миссия компании, грузоперевозки из Китая",
},
kz: {
path: "/kz/about-us",
title: "Компания туралы — Gold Orient Logistics | Алматыдағы логистика",
description:
"Gold Orient Logistics — Алматыдағы логистикалық компания. Қытайдан Қазақстан мен Ресейге жүк жеткізу: миссия, команда, артықшылықтар және маршруттар географиясы.",
keywords:
"Gold Orient Logistics компаниясы, Алматыдағы логистика, Қытайдан жеткізу, логистикалық команда, компания миссиясы",
},
},
contacts: {
ru: {
path: "/contacts",
title: "Контакты — Gold Orient Logistics | Телефон, WhatsApp, офис в Алматы",
description:
"Свяжитесь с Gold Orient Logistics: офис в Алматы, телефон +7 708 909 88 10, WhatsApp, email info@goldorient.kz. Бесплатный расчёт стоимости доставки из Китая за 30 секунд.",
keywords:
"Gold Orient Logistics контакты, телефон логистической компании, WhatsApp карго Китай, офис Алматы, info@goldorient.kz, расчёт доставки",
},
kz: {
path: "/kz/contacts",
title: "Байланыс — Gold Orient Logistics | Телефон, WhatsApp, Алматы кеңсесі",
description:
"Gold Orient Logistics-пен байланысыңыз: Алматыдағы кеңсе, телефон +7 708 909 88 10, WhatsApp, info@goldorient.kz. Қытайдан жеткізу құнын тегін есептеу — 30 секундта.",
keywords:
"Gold Orient Logistics байланыс, логистикалық компания телефоны, WhatsApp карго Қытай, Алматы кеңсесі, info@goldorient.kz",
},
},
};
// --- DOM helpers --------------------------------------------------------
function upsertMeta(attr, name, content) {
if (!content) return;
let el = document.head.querySelector(`meta[${attr}="${name}"]`);
if (!el) {
el = document.createElement("meta");
el.setAttribute(attr, name);
document.head.appendChild(el);
}
el.setAttribute("content", content);
}
function upsertLink(rel, href, extraAttrs) {
let selector = `link[rel="${rel}"]`;
if (extraAttrs && extraAttrs.hreflang) {
selector += `[hreflang="${extraAttrs.hreflang}"]`;
}
let el = document.head.querySelector(selector);
if (!el) {
el = document.createElement("link");
el.setAttribute("rel", rel);
if (extraAttrs) {
Object.keys(extraAttrs).forEach((k) => el.setAttribute(k, extraAttrs[k]));
}
document.head.appendChild(el);
}
el.setAttribute("href", href);
}
// --- Public API ---------------------------------------------------------
function applySEO(route, lang) {
const langKey = lang === "kz" ? "kz" : "ru";
const page = (SEO_META[route] && SEO_META[route][langKey]) || SEO_META.main[langKey];
const altLangKey = langKey === "ru" ? "kz" : "ru";
const altPage = (SEO_META[route] && SEO_META[route][altLangKey]) || SEO_META.main[altLangKey];
const url = SITE_URL + page.path;
const altUrl = SITE_URL + altPage.path;
//
document.documentElement.setAttribute("lang", langKey === "kz" ? "kk" : "ru");
// Title
document.title = page.title;
// Primary meta
upsertMeta("name", "description", page.description);
upsertMeta("name", "keywords", page.keywords);
upsertMeta("name", "robots", "index, follow");
upsertMeta("name", "author", "Gold Orient Logistics");
// Canonical + hreflang alternates
upsertLink("canonical", url);
upsertLink("alternate", url, { hreflang: langKey === "kz" ? "kk" : "ru" });
upsertLink("alternate", altUrl, { hreflang: altLangKey === "kz" ? "kk" : "ru" });
upsertLink("alternate", SITE_URL + SEO_META[route].ru.path, { hreflang: "x-default" });
// Open Graph
upsertMeta("property", "og:type", "website");
upsertMeta("property", "og:site_name", "Gold Orient Logistics");
upsertMeta("property", "og:locale", langKey === "kz" ? "kk_KZ" : "ru_RU");
upsertMeta("property", "og:locale:alternate", altLangKey === "kz" ? "kk_KZ" : "ru_RU");
upsertMeta("property", "og:url", url);
upsertMeta("property", "og:title", page.title);
upsertMeta("property", "og:description", page.description);
upsertMeta("property", "og:image", OG_IMAGE);
upsertMeta("property", "og:image:width", "1920");
upsertMeta("property", "og:image:height", "1080");
// Twitter
upsertMeta("name", "twitter:card", "summary_large_image");
upsertMeta("name", "twitter:title", page.title);
upsertMeta("name", "twitter:description", page.description);
upsertMeta("name", "twitter:image", OG_IMAGE);
}
window.applySEO = applySEO;
window.SEO_META = SEO_META;
})();