GEO: FAQPage/NGO/Event schema + autonomous generation for new projects
Generative Engine Optimization pass so AI answer engines (ChatGPT, Gemini, Perplexity, AI Overviews) can confidently identify and cite MSOS. Schema (tools/seo_inject.py, propagated to all 231 pages): - FAQPage JSON-LD parsed from the /faq/ Q&A blocks (33 Q&A x EN/MK/SI) - Organization upgraded to NGO with entity-disambiguation fields: alternateName (all spellings), description, areaServed Slovenia, knowsLanguage, and foundingDate 2023-03-05 - Event JSON-LD on all 9 /projects/ recap pages (date + real location) Autonomous for future content (no code edits to add a project): - Event/Article dates auto-read from the English page's publish date; event city auto-detected from the body (Slovenian-city whitelist). ARTICLE_DATES/PROJECT_LOCATIONS are now optional overrides only. (Auto-detect corrected Paint & Wine to Nova Gorica.) - build_listings.py: auto-date fallback so undated new content still lists - pre-commit hook now runs seo_inject.py --all --sitemap first, then listings/botlinks, and re-stages changed pages (idempotent) Docs: docs/geo-offsite-worklist.md - copy-paste-ready off-site plan (Wikidata, Wikipedia fixes, directories, Google Business, AI-visibility tests). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
43847ba935
commit
0d49293693
239 files changed
+825
-319
No files matched your search
+84
@@ -85,6 +85,48 @@
|
||||
<xhtml:link rel="alternate" hreflang="sl" href="https://msosorg.com/si/blog/"/>
|
||||
<xhtml:link rel="alternate" hreflang="x-default" href="https://msosorg.com/en/blog/"/>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://msosorg.com/en/blog/ad-futura-scholarship-slovenia-2026/</loc>
|
||||
<xhtml:link rel="alternate" hreflang="en" href="https://msosorg.com/en/blog/ad-futura-scholarship-slovenia-2026/"/>
|
||||
<xhtml:link rel="alternate" hreflang="mk" href="https://msosorg.com/mk/blog/ad-futura-scholarship-slovenia-2026/"/>
|
||||
<xhtml:link rel="alternate" hreflang="sl" href="https://msosorg.com/si/blog/ad-futura-scholarship-slovenia-2026/"/>
|
||||
<xhtml:link rel="alternate" hreflang="x-default" href="https://msosorg.com/en/blog/ad-futura-scholarship-slovenia-2026/"/>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://msosorg.com/mk/blog/ad-futura-scholarship-slovenia-2026/</loc>
|
||||
<xhtml:link rel="alternate" hreflang="en" href="https://msosorg.com/en/blog/ad-futura-scholarship-slovenia-2026/"/>
|
||||
<xhtml:link rel="alternate" hreflang="mk" href="https://msosorg.com/mk/blog/ad-futura-scholarship-slovenia-2026/"/>
|
||||
<xhtml:link rel="alternate" hreflang="sl" href="https://msosorg.com/si/blog/ad-futura-scholarship-slovenia-2026/"/>
|
||||
<xhtml:link rel="alternate" hreflang="x-default" href="https://msosorg.com/en/blog/ad-futura-scholarship-slovenia-2026/"/>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://msosorg.com/si/blog/ad-futura-scholarship-slovenia-2026/</loc>
|
||||
<xhtml:link rel="alternate" hreflang="en" href="https://msosorg.com/en/blog/ad-futura-scholarship-slovenia-2026/"/>
|
||||
<xhtml:link rel="alternate" hreflang="mk" href="https://msosorg.com/mk/blog/ad-futura-scholarship-slovenia-2026/"/>
|
||||
<xhtml:link rel="alternate" hreflang="sl" href="https://msosorg.com/si/blog/ad-futura-scholarship-slovenia-2026/"/>
|
||||
<xhtml:link rel="alternate" hreflang="x-default" href="https://msosorg.com/en/blog/ad-futura-scholarship-slovenia-2026/"/>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://msosorg.com/en/blog/how-i-coped-with-leaving-home/</loc>
|
||||
<xhtml:link rel="alternate" hreflang="en" href="https://msosorg.com/en/blog/how-i-coped-with-leaving-home/"/>
|
||||
<xhtml:link rel="alternate" hreflang="mk" href="https://msosorg.com/mk/blog/how-i-coped-with-leaving-home/"/>
|
||||
<xhtml:link rel="alternate" hreflang="sl" href="https://msosorg.com/si/blog/how-i-coped-with-leaving-home/"/>
|
||||
<xhtml:link rel="alternate" hreflang="x-default" href="https://msosorg.com/en/blog/how-i-coped-with-leaving-home/"/>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://msosorg.com/mk/blog/how-i-coped-with-leaving-home/</loc>
|
||||
<xhtml:link rel="alternate" hreflang="en" href="https://msosorg.com/en/blog/how-i-coped-with-leaving-home/"/>
|
||||
<xhtml:link rel="alternate" hreflang="mk" href="https://msosorg.com/mk/blog/how-i-coped-with-leaving-home/"/>
|
||||
<xhtml:link rel="alternate" hreflang="sl" href="https://msosorg.com/si/blog/how-i-coped-with-leaving-home/"/>
|
||||
<xhtml:link rel="alternate" hreflang="x-default" href="https://msosorg.com/en/blog/how-i-coped-with-leaving-home/"/>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://msosorg.com/si/blog/how-i-coped-with-leaving-home/</loc>
|
||||
<xhtml:link rel="alternate" hreflang="en" href="https://msosorg.com/en/blog/how-i-coped-with-leaving-home/"/>
|
||||
<xhtml:link rel="alternate" hreflang="mk" href="https://msosorg.com/mk/blog/how-i-coped-with-leaving-home/"/>
|
||||
<xhtml:link rel="alternate" hreflang="sl" href="https://msosorg.com/si/blog/how-i-coped-with-leaving-home/"/>
|
||||
<xhtml:link rel="alternate" hreflang="x-default" href="https://msosorg.com/en/blog/how-i-coped-with-leaving-home/"/>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://msosorg.com/en/blog/how-to-open-slovenian-bank-account/</loc>
|
||||
<xhtml:link rel="alternate" hreflang="en" href="https://msosorg.com/en/blog/how-to-open-slovenian-bank-account/"/>
|
||||
@@ -148,6 +190,48 @@
|
||||
<xhtml:link rel="alternate" hreflang="sl" href="https://msosorg.com/si/blog/study-in-north-macedonia-government-scholarship-2026-2027/"/>
|
||||
<xhtml:link rel="alternate" hreflang="x-default" href="https://msosorg.com/en/blog/study-in-north-macedonia-government-scholarship-2026-2027/"/>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://msosorg.com/en/blog/welcome-days-slovenian-universities-2026-2027/</loc>
|
||||
<xhtml:link rel="alternate" hreflang="en" href="https://msosorg.com/en/blog/welcome-days-slovenian-universities-2026-2027/"/>
|
||||
<xhtml:link rel="alternate" hreflang="mk" href="https://msosorg.com/mk/blog/welcome-days-slovenian-universities-2026-2027/"/>
|
||||
<xhtml:link rel="alternate" hreflang="sl" href="https://msosorg.com/si/blog/welcome-days-slovenian-universities-2026-2027/"/>
|
||||
<xhtml:link rel="alternate" hreflang="x-default" href="https://msosorg.com/en/blog/welcome-days-slovenian-universities-2026-2027/"/>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://msosorg.com/mk/blog/welcome-days-slovenian-universities-2026-2027/</loc>
|
||||
<xhtml:link rel="alternate" hreflang="en" href="https://msosorg.com/en/blog/welcome-days-slovenian-universities-2026-2027/"/>
|
||||
<xhtml:link rel="alternate" hreflang="mk" href="https://msosorg.com/mk/blog/welcome-days-slovenian-universities-2026-2027/"/>
|
||||
<xhtml:link rel="alternate" hreflang="sl" href="https://msosorg.com/si/blog/welcome-days-slovenian-universities-2026-2027/"/>
|
||||
<xhtml:link rel="alternate" hreflang="x-default" href="https://msosorg.com/en/blog/welcome-days-slovenian-universities-2026-2027/"/>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://msosorg.com/si/blog/welcome-days-slovenian-universities-2026-2027/</loc>
|
||||
<xhtml:link rel="alternate" hreflang="en" href="https://msosorg.com/en/blog/welcome-days-slovenian-universities-2026-2027/"/>
|
||||
<xhtml:link rel="alternate" hreflang="mk" href="https://msosorg.com/mk/blog/welcome-days-slovenian-universities-2026-2027/"/>
|
||||
<xhtml:link rel="alternate" hreflang="sl" href="https://msosorg.com/si/blog/welcome-days-slovenian-universities-2026-2027/"/>
|
||||
<xhtml:link rel="alternate" hreflang="x-default" href="https://msosorg.com/en/blog/welcome-days-slovenian-universities-2026-2027/"/>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://msosorg.com/en/blog/where-to-search-for-accommodation-in-slovenia/</loc>
|
||||
<xhtml:link rel="alternate" hreflang="en" href="https://msosorg.com/en/blog/where-to-search-for-accommodation-in-slovenia/"/>
|
||||
<xhtml:link rel="alternate" hreflang="mk" href="https://msosorg.com/mk/blog/where-to-search-for-accommodation-in-slovenia/"/>
|
||||
<xhtml:link rel="alternate" hreflang="sl" href="https://msosorg.com/si/blog/where-to-search-for-accommodation-in-slovenia/"/>
|
||||
<xhtml:link rel="alternate" hreflang="x-default" href="https://msosorg.com/en/blog/where-to-search-for-accommodation-in-slovenia/"/>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://msosorg.com/mk/blog/where-to-search-for-accommodation-in-slovenia/</loc>
|
||||
<xhtml:link rel="alternate" hreflang="en" href="https://msosorg.com/en/blog/where-to-search-for-accommodation-in-slovenia/"/>
|
||||
<xhtml:link rel="alternate" hreflang="mk" href="https://msosorg.com/mk/blog/where-to-search-for-accommodation-in-slovenia/"/>
|
||||
<xhtml:link rel="alternate" hreflang="sl" href="https://msosorg.com/si/blog/where-to-search-for-accommodation-in-slovenia/"/>
|
||||
<xhtml:link rel="alternate" hreflang="x-default" href="https://msosorg.com/en/blog/where-to-search-for-accommodation-in-slovenia/"/>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://msosorg.com/si/blog/where-to-search-for-accommodation-in-slovenia/</loc>
|
||||
<xhtml:link rel="alternate" hreflang="en" href="https://msosorg.com/en/blog/where-to-search-for-accommodation-in-slovenia/"/>
|
||||
<xhtml:link rel="alternate" hreflang="mk" href="https://msosorg.com/mk/blog/where-to-search-for-accommodation-in-slovenia/"/>
|
||||
<xhtml:link rel="alternate" hreflang="sl" href="https://msosorg.com/si/blog/where-to-search-for-accommodation-in-slovenia/"/>
|
||||
<xhtml:link rel="alternate" hreflang="x-default" href="https://msosorg.com/en/blog/where-to-search-for-accommodation-in-slovenia/"/>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://msosorg.com/en/cookie-policy/</loc>
|
||||
<xhtml:link rel="alternate" hreflang="en" href="https://msosorg.com/en/cookie-policy/"/>
|
||||
|
||||
Reference in new issue
Block a user