Add technical SEO foundation, MK/SI about-us + timeline, content fixes
SEO (all 201 pages, en/mk/si): - Inject canonical, hreflang (en/mk/sl + x-default), Open Graph, Twitter cards and Organization JSON-LD via idempotent SEO:START/END block - Generate multilingual sitemap.xml (xhtml:link alternates) + robots.txt - Curated meta descriptions for lead-less pages (home, become-a-member, faq, news hub, my-route); every page now has a description - Absolute URLs target final domain msosorg.com, not the temp host - Add reusable tools/seo_inject.py (+ README) Content fixes: - Translate about-us and timeline-and-milestones into MK + SI, wire up their pages, and repair the previously-dead "Who We Are" nav links across all mk/si pages - Remove duplicate en/projects/makedonska-studentska-vecer-vo-ljubljana (unreferenced; already covered by macedonian-student-night-in-ljubljana) Locale correctness: - Normalise Slovene pages to <html lang="sl"> (correct ISO 639-1) - Map sl->si in main.js so the language-switcher highlight and newsletter i18n keep working on Slovene pages (data-lang="si" still maps to /si/) MK/SI translations and descriptions are AI-drafted; flag for native review. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
31487ad83e
commit
b393859467
208 files changed
+8319
-1388
No files matched your search
@@ -4,7 +4,28 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>A Table Full of Macedonia - MSOS</title>
|
||||
|
||||
<!-- SEO:START -->
|
||||
<meta name="description" content="The food matters, but so do the order of the plates, the people around them, and the fact that nobody leaves after the first course.">
|
||||
<link rel="canonical" href="https://msosorg.com/en/get-to-know-macedonia/a-table-full-of-macedonia/">
|
||||
<link rel="alternate" hreflang="en" href="https://msosorg.com/en/get-to-know-macedonia/a-table-full-of-macedonia/">
|
||||
<link rel="alternate" hreflang="mk" href="https://msosorg.com/mk/get-to-know-macedonia/a-table-full-of-macedonia/">
|
||||
<link rel="alternate" hreflang="sl" href="https://msosorg.com/si/get-to-know-macedonia/a-table-full-of-macedonia/">
|
||||
<link rel="alternate" hreflang="x-default" href="https://msosorg.com/en/get-to-know-macedonia/a-table-full-of-macedonia/">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Macedonian Student Organisation in Slovenia">
|
||||
<meta property="og:title" content="A Table Full of Macedonia - MSOS">
|
||||
<meta property="og:description" content="The food matters, but so do the order of the plates, the people around them, and the fact that nobody leaves after the first course.">
|
||||
<meta property="og:url" content="https://msosorg.com/en/get-to-know-macedonia/a-table-full-of-macedonia/">
|
||||
<meta property="og:image" content="https://msosorg.com/images/macedonia-food-shared-table-hero.jpg">
|
||||
<meta property="og:locale" content="en_GB">
|
||||
<meta property="og:locale:alternate" content="mk_MK">
|
||||
<meta property="og:locale:alternate" content="sl_SI">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="A Table Full of Macedonia - MSOS">
|
||||
<meta name="twitter:description" content="The food matters, but so do the order of the plates, the people around them, and the fact that nobody leaves after the first course.">
|
||||
<meta name="twitter:image" content="https://msosorg.com/images/macedonia-food-shared-table-hero.jpg">
|
||||
<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"Macedonian Student Organisation in Slovenia","alternateName":"MSOS","url":"https://msosorg.com/en/","logo":"https://msosorg.com/images/1-logo.png","email":"info@msosorg.com","address":{"@type":"PostalAddress","streetAddress":"Masarykova cesta 24","postalCode":"1000","addressLocality":"Ljubljana","addressCountry":"SI"},"sameAs":["https://www.facebook.com/msos.org","https://www.instagram.com/msosorg_com","https://www.linkedin.com/company/msos-org","https://www.youtube.com/@msosorg"]}</script>
|
||||
<!-- SEO:END -->
|
||||
<!-- Google Fonts -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
|
||||
@@ -4,7 +4,28 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>History You Can Still Walk Through - MSOS</title>
|
||||
|
||||
<!-- SEO:START -->
|
||||
<meta name="description" content="Stobi, Heraclea, Kokino, and Krusevo do not belong to the same century or tell the same story. That is exactly why they belong in the same journey.">
|
||||
<link rel="canonical" href="https://msosorg.com/en/get-to-know-macedonia/history-you-can-still-walk-through/">
|
||||
<link rel="alternate" hreflang="en" href="https://msosorg.com/en/get-to-know-macedonia/history-you-can-still-walk-through/">
|
||||
<link rel="alternate" hreflang="mk" href="https://msosorg.com/mk/get-to-know-macedonia/history-you-can-still-walk-through/">
|
||||
<link rel="alternate" hreflang="sl" href="https://msosorg.com/si/get-to-know-macedonia/history-you-can-still-walk-through/">
|
||||
<link rel="alternate" hreflang="x-default" href="https://msosorg.com/en/get-to-know-macedonia/history-you-can-still-walk-through/">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Macedonian Student Organisation in Slovenia">
|
||||
<meta property="og:title" content="History You Can Still Walk Through - MSOS">
|
||||
<meta property="og:description" content="Stobi, Heraclea, Kokino, and Krusevo do not belong to the same century or tell the same story. That is exactly why they belong in the same journey.">
|
||||
<meta property="og:url" content="https://msosorg.com/en/get-to-know-macedonia/history-you-can-still-walk-through/">
|
||||
<meta property="og:image" content="https://msosorg.com/images/macedonia-heritage-stobi-street-hero.jpg">
|
||||
<meta property="og:locale" content="en_GB">
|
||||
<meta property="og:locale:alternate" content="mk_MK">
|
||||
<meta property="og:locale:alternate" content="sl_SI">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="History You Can Still Walk Through - MSOS">
|
||||
<meta name="twitter:description" content="Stobi, Heraclea, Kokino, and Krusevo do not belong to the same century or tell the same story. That is exactly why they belong in the same journey.">
|
||||
<meta name="twitter:image" content="https://msosorg.com/images/macedonia-heritage-stobi-street-hero.jpg">
|
||||
<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"Macedonian Student Organisation in Slovenia","alternateName":"MSOS","url":"https://msosorg.com/en/","logo":"https://msosorg.com/images/1-logo.png","email":"info@msosorg.com","address":{"@type":"PostalAddress","streetAddress":"Masarykova cesta 24","postalCode":"1000","addressLocality":"Ljubljana","addressCountry":"SI"},"sameAs":["https://www.facebook.com/msos.org","https://www.instagram.com/msosorg_com","https://www.linkedin.com/company/msos-org","https://www.youtube.com/@msosorg"]}</script>
|
||||
<!-- SEO:END -->
|
||||
<!-- Google Fonts -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
|
||||
@@ -4,7 +4,28 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Get to know Macedonia - MSOS</title>
|
||||
|
||||
<!-- SEO:START -->
|
||||
<meta name="description" content="Macedonia is not only a place on the map. It is a table that always has room for one more person, music that brings everyone closer, mountains on the horizon…">
|
||||
<link rel="canonical" href="https://msosorg.com/en/get-to-know-macedonia/">
|
||||
<link rel="alternate" hreflang="en" href="https://msosorg.com/en/get-to-know-macedonia/">
|
||||
<link rel="alternate" hreflang="mk" href="https://msosorg.com/mk/get-to-know-macedonia/">
|
||||
<link rel="alternate" hreflang="sl" href="https://msosorg.com/si/get-to-know-macedonia/">
|
||||
<link rel="alternate" hreflang="x-default" href="https://msosorg.com/en/get-to-know-macedonia/">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Macedonian Student Organisation in Slovenia">
|
||||
<meta property="og:title" content="Get to know Macedonia - MSOS">
|
||||
<meta property="og:description" content="Macedonia is not only a place on the map. It is a table that always has room for one more person, music that brings everyone closer, mountains on the horizon…">
|
||||
<meta property="og:url" content="https://msosorg.com/en/get-to-know-macedonia/">
|
||||
<meta property="og:image" content="https://msosorg.com/images/1-logo.png">
|
||||
<meta property="og:locale" content="en_GB">
|
||||
<meta property="og:locale:alternate" content="mk_MK">
|
||||
<meta property="og:locale:alternate" content="sl_SI">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Get to know Macedonia - MSOS">
|
||||
<meta name="twitter:description" content="Macedonia is not only a place on the map. It is a table that always has room for one more person, music that brings everyone closer, mountains on the horizon…">
|
||||
<meta name="twitter:image" content="https://msosorg.com/images/1-logo.png">
|
||||
<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"Macedonian Student Organisation in Slovenia","alternateName":"MSOS","url":"https://msosorg.com/en/","logo":"https://msosorg.com/images/1-logo.png","email":"info@msosorg.com","address":{"@type":"PostalAddress","streetAddress":"Masarykova cesta 24","postalCode":"1000","addressLocality":"Ljubljana","addressCountry":"SI"},"sameAs":["https://www.facebook.com/msos.org","https://www.instagram.com/msosorg_com","https://www.linkedin.com/company/msos-org","https://www.youtube.com/@msosorg"]}</script>
|
||||
<!-- SEO:END -->
|
||||
<!-- Google Fonts -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
|
||||
+22
-1
@@ -4,7 +4,28 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Music, Dance and the Moments That Bring Us Together - MSOS</title>
|
||||
|
||||
<!-- SEO:START -->
|
||||
<meta name="description" content="In Macedonia, music is often not something performed in front of a room. It is what changes the room and brings people into the same rhythm.">
|
||||
<link rel="canonical" href="https://msosorg.com/en/get-to-know-macedonia/music-dance-and-the-moments-that-bring-us-together/">
|
||||
<link rel="alternate" hreflang="en" href="https://msosorg.com/en/get-to-know-macedonia/music-dance-and-the-moments-that-bring-us-together/">
|
||||
<link rel="alternate" hreflang="mk" href="https://msosorg.com/mk/get-to-know-macedonia/music-dance-and-the-moments-that-bring-us-together/">
|
||||
<link rel="alternate" hreflang="sl" href="https://msosorg.com/si/get-to-know-macedonia/music-dance-and-the-moments-that-bring-us-together/">
|
||||
<link rel="alternate" hreflang="x-default" href="https://msosorg.com/en/get-to-know-macedonia/music-dance-and-the-moments-that-bring-us-together/">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Macedonian Student Organisation in Slovenia">
|
||||
<meta property="og:title" content="Music, Dance and the Moments That Bring Us Together - MSOS">
|
||||
<meta property="og:description" content="In Macedonia, music is often not something performed in front of a room. It is what changes the room and brings people into the same rhythm.">
|
||||
<meta property="og:url" content="https://msosorg.com/en/get-to-know-macedonia/music-dance-and-the-moments-that-bring-us-together/">
|
||||
<meta property="og:image" content="https://msosorg.com/images/macedonia-culture-oro-celebration-hero.jpg">
|
||||
<meta property="og:locale" content="en_GB">
|
||||
<meta property="og:locale:alternate" content="mk_MK">
|
||||
<meta property="og:locale:alternate" content="sl_SI">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Music, Dance and the Moments That Bring Us Together - MSOS">
|
||||
<meta name="twitter:description" content="In Macedonia, music is often not something performed in front of a room. It is what changes the room and brings people into the same rhythm.">
|
||||
<meta name="twitter:image" content="https://msosorg.com/images/macedonia-culture-oro-celebration-hero.jpg">
|
||||
<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"Macedonian Student Organisation in Slovenia","alternateName":"MSOS","url":"https://msosorg.com/en/","logo":"https://msosorg.com/images/1-logo.png","email":"info@msosorg.com","address":{"@type":"PostalAddress","streetAddress":"Masarykova cesta 24","postalCode":"1000","addressLocality":"Ljubljana","addressCountry":"SI"},"sameAs":["https://www.facebook.com/msos.org","https://www.instagram.com/msosorg_com","https://www.linkedin.com/company/msos-org","https://www.youtube.com/@msosorg"]}</script>
|
||||
<!-- SEO:END -->
|
||||
<!-- Google Fonts -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
|
||||
@@ -4,7 +4,28 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Ohrid, More Than a Postcard - MSOS</title>
|
||||
|
||||
<!-- SEO:START -->
|
||||
<meta name="description" content="The lake attracts the first look. The old streets, wooden houses, churches, neighbourhoods, and evening conversations are what make people return.">
|
||||
<link rel="canonical" href="https://msosorg.com/en/get-to-know-macedonia/ohrid-more-than-a-postcard/">
|
||||
<link rel="alternate" hreflang="en" href="https://msosorg.com/en/get-to-know-macedonia/ohrid-more-than-a-postcard/">
|
||||
<link rel="alternate" hreflang="mk" href="https://msosorg.com/mk/get-to-know-macedonia/ohrid-more-than-a-postcard/">
|
||||
<link rel="alternate" hreflang="sl" href="https://msosorg.com/si/get-to-know-macedonia/ohrid-more-than-a-postcard/">
|
||||
<link rel="alternate" hreflang="x-default" href="https://msosorg.com/en/get-to-know-macedonia/ohrid-more-than-a-postcard/">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Macedonian Student Organisation in Slovenia">
|
||||
<meta property="og:title" content="Ohrid, More Than a Postcard - MSOS">
|
||||
<meta property="og:description" content="The lake attracts the first look. The old streets, wooden houses, churches, neighbourhoods, and evening conversations are what make people return.">
|
||||
<meta property="og:url" content="https://msosorg.com/en/get-to-know-macedonia/ohrid-more-than-a-postcard/">
|
||||
<meta property="og:image" content="https://msosorg.com/images/macedonia-ohrid-kaneo-hero.jpg">
|
||||
<meta property="og:locale" content="en_GB">
|
||||
<meta property="og:locale:alternate" content="mk_MK">
|
||||
<meta property="og:locale:alternate" content="sl_SI">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Ohrid, More Than a Postcard - MSOS">
|
||||
<meta name="twitter:description" content="The lake attracts the first look. The old streets, wooden houses, churches, neighbourhoods, and evening conversations are what make people return.">
|
||||
<meta name="twitter:image" content="https://msosorg.com/images/macedonia-ohrid-kaneo-hero.jpg">
|
||||
<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"Macedonian Student Organisation in Slovenia","alternateName":"MSOS","url":"https://msosorg.com/en/","logo":"https://msosorg.com/images/1-logo.png","email":"info@msosorg.com","address":{"@type":"PostalAddress","streetAddress":"Masarykova cesta 24","postalCode":"1000","addressLocality":"Ljubljana","addressCountry":"SI"},"sameAs":["https://www.facebook.com/msos.org","https://www.instagram.com/msosorg_com","https://www.linkedin.com/company/msos-org","https://www.youtube.com/@msosorg"]}</script>
|
||||
<!-- SEO:END -->
|
||||
<!-- Google Fonts -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
|
||||
@@ -4,7 +4,28 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Skopje, A City of Many Layers - MSOS</title>
|
||||
|
||||
<!-- SEO:START -->
|
||||
<meta name="description" content="A city best understood by crossing the river, changing neighbourhoods, and noticing what each period left behind.">
|
||||
<link rel="canonical" href="https://msosorg.com/en/get-to-know-macedonia/skopje-a-city-of-many-layers/">
|
||||
<link rel="alternate" hreflang="en" href="https://msosorg.com/en/get-to-know-macedonia/skopje-a-city-of-many-layers/">
|
||||
<link rel="alternate" hreflang="mk" href="https://msosorg.com/mk/get-to-know-macedonia/skopje-a-city-of-many-layers/">
|
||||
<link rel="alternate" hreflang="sl" href="https://msosorg.com/si/get-to-know-macedonia/skopje-a-city-of-many-layers/">
|
||||
<link rel="alternate" hreflang="x-default" href="https://msosorg.com/en/get-to-know-macedonia/skopje-a-city-of-many-layers/">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Macedonian Student Organisation in Slovenia">
|
||||
<meta property="og:title" content="Skopje, A City of Many Layers - MSOS">
|
||||
<meta property="og:description" content="A city best understood by crossing the river, changing neighbourhoods, and noticing what each period left behind.">
|
||||
<meta property="og:url" content="https://msosorg.com/en/get-to-know-macedonia/skopje-a-city-of-many-layers/">
|
||||
<meta property="og:image" content="https://msosorg.com/images/macedonia-skopje-stone-bridge-hero.jpg">
|
||||
<meta property="og:locale" content="en_GB">
|
||||
<meta property="og:locale:alternate" content="mk_MK">
|
||||
<meta property="og:locale:alternate" content="sl_SI">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Skopje, A City of Many Layers - MSOS">
|
||||
<meta name="twitter:description" content="A city best understood by crossing the river, changing neighbourhoods, and noticing what each period left behind.">
|
||||
<meta name="twitter:image" content="https://msosorg.com/images/macedonia-skopje-stone-bridge-hero.jpg">
|
||||
<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"Macedonian Student Organisation in Slovenia","alternateName":"MSOS","url":"https://msosorg.com/en/","logo":"https://msosorg.com/images/1-logo.png","email":"info@msosorg.com","address":{"@type":"PostalAddress","streetAddress":"Masarykova cesta 24","postalCode":"1000","addressLocality":"Ljubljana","addressCountry":"SI"},"sameAs":["https://www.facebook.com/msos.org","https://www.instagram.com/msosorg_com","https://www.linkedin.com/company/msos-org","https://www.youtube.com/@msosorg"]}</script>
|
||||
<!-- SEO:END -->
|
||||
<!-- Google Fonts -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
|
||||
@@ -4,7 +4,28 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Welcome to Macedonia - MSOS</title>
|
||||
|
||||
<!-- SEO:START -->
|
||||
<meta name="description" content="A country of mountains, open tables, long conversations, and stories that remain close wherever we go.">
|
||||
<link rel="canonical" href="https://msosorg.com/en/get-to-know-macedonia/welcome-to-macedonia/">
|
||||
<link rel="alternate" hreflang="en" href="https://msosorg.com/en/get-to-know-macedonia/welcome-to-macedonia/">
|
||||
<link rel="alternate" hreflang="mk" href="https://msosorg.com/mk/get-to-know-macedonia/welcome-to-macedonia/">
|
||||
<link rel="alternate" hreflang="sl" href="https://msosorg.com/si/get-to-know-macedonia/welcome-to-macedonia/">
|
||||
<link rel="alternate" hreflang="x-default" href="https://msosorg.com/en/get-to-know-macedonia/welcome-to-macedonia/">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Macedonian Student Organisation in Slovenia">
|
||||
<meta property="og:title" content="Welcome to Macedonia - MSOS">
|
||||
<meta property="og:description" content="A country of mountains, open tables, long conversations, and stories that remain close wherever we go.">
|
||||
<meta property="og:url" content="https://msosorg.com/en/get-to-know-macedonia/welcome-to-macedonia/">
|
||||
<meta property="og:image" content="https://msosorg.com/images/macedonia-welcome-skopje-square-hero.jpg">
|
||||
<meta property="og:locale" content="en_GB">
|
||||
<meta property="og:locale:alternate" content="mk_MK">
|
||||
<meta property="og:locale:alternate" content="sl_SI">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Welcome to Macedonia - MSOS">
|
||||
<meta name="twitter:description" content="A country of mountains, open tables, long conversations, and stories that remain close wherever we go.">
|
||||
<meta name="twitter:image" content="https://msosorg.com/images/macedonia-welcome-skopje-square-hero.jpg">
|
||||
<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"Macedonian Student Organisation in Slovenia","alternateName":"MSOS","url":"https://msosorg.com/en/","logo":"https://msosorg.com/images/1-logo.png","email":"info@msosorg.com","address":{"@type":"PostalAddress","streetAddress":"Masarykova cesta 24","postalCode":"1000","addressLocality":"Ljubljana","addressCountry":"SI"},"sameAs":["https://www.facebook.com/msos.org","https://www.instagram.com/msosorg_com","https://www.linkedin.com/company/msos-org","https://www.youtube.com/@msosorg"]}</script>
|
||||
<!-- SEO:END -->
|
||||
<!-- Google Fonts -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
|
||||
Reference in new issue
Block a user