From c14a227ac7b61f656ba58b279f9e1bc6f2182383 Mon Sep 17 00:00:00 2001 From: popovskik Date: Wed, 5 Aug 2026 16:10:38 +0200 Subject: [PATCH] changes.txt #2: AI/crawler discovery files (llms.txt + links-for-bots) Add tools/build_botlinks.py which regenerates, from the pages already on disk: - /llms.txt llmstxt.org-style Markdown index (English, with descriptions) - /links-for-bots/ a lightweight fully-linked crawl hub covering EN/MK/SI Re-run `python tools/build_botlinks.py` after adding or removing pages; it only reads each page's and meta description, so it stays current automatically. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --- links-for-bots/index.html | 326 ++++++++++++++++++++++++++++++++++++++ llms.txt | 94 +++++++++++ tools/build_botlinks.py | 208 ++++++++++++++++++++++++ 3 files changed, 628 insertions(+) create mode 100644 links-for-bots/index.html create mode 100644 llms.txt create mode 100644 tools/build_botlinks.py diff --git a/links-for-bots/index.html b/links-for-bots/index.html new file mode 100644 index 00000000..92c888c9 --- /dev/null +++ b/links-for-bots/index.html @@ -0,0 +1,326 @@ +<!doctype html> +<html lang="en"> +<head> +<meta charset="utf-8"> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<title>Links for bots — MSOS + + + + + + +

Links for bots

+

A plain, fully-linked index of every page on msosorg.com, for search engines and AI crawlers. + See also /llms.txt and /sitemap.xml.

+ +
+

English (en)

+

Main pages

+ +

Student guide

+ +

Blog

+ +

News

+ +

Events & projects

+ +

Get to know Slovenia

+ +

Get to know Macedonia

+ +
+
+

Македонски (mk)

+

Main pages

+ +

Student guide

+ +

Blog

+ +

News

+ +

Events & projects

+ +

Get to know Slovenia

+ +

Get to know Macedonia

+ +
+
+

Slovenščina (si)

+

Main pages

+ +

Student guide

+ +

Blog

+ +

News

+ +

Events & projects

+ +

Get to know Slovenia

+ +

Get to know Macedonia

+ +
+ + diff --git a/llms.txt b/llms.txt new file mode 100644 index 00000000..6dc6968e --- /dev/null +++ b/llms.txt @@ -0,0 +1,94 @@ +# MSOS — Macedonian Student Organisation in Slovenia + +> MSOS is the first official Macedonian student organisation in Slovenia. This site helps Macedonian students move to and study in Slovenia — enrolment guides, events, community news and support. Content is student-written and informative; official sources should always be verified. + +Full multilingual crawl index (EN/MK/SI): https://msosorg.com/links-for-bots/ + +## Main pages +- [Macedonian Student Organisation in Slovenia](https://msosorg.com/en/): The first official Macedonian student organisation in Slovenia, support, events, community and a voice for Macedonian students from application to graduation. +- [Our Team, Mission, Vision & Core Values](https://msosorg.com/en/about-us/): MSOS is more than an organization - it is the energy of the team behind it. Our members are the heart and driving force that inspires us, writing this story… +- [MSOS Hub](https://msosorg.com/en/msos-hub/): Discover the MSOS Hub in Ljubljana — the community space of the Macedonian Student Organisation in Slovenia for events, gatherings and student life. +- [Become a member](https://msosorg.com/en/become-a-member/): Join MSOS and find your people in Slovenia. Meet students, attend events, get support and help create projects across the Macedonian student community. +- [Support MSOS](https://msosorg.com/en/support/): Support the Macedonian Student Organisation in Slovenia (MSOS) through a donation or partnership and help fund student events, guidance and community programs. +- [Gallery](https://msosorg.com/en/gallery/): Short answers to the questions Macedonian students ask most about studying and living in Slovenia, applications, residence, work, housing and more. +- [Frequently asked questions](https://msosorg.com/en/faq/): Short answers to the questions Macedonian students ask most about studying and living in Slovenia, applications, residence, work, housing and more. +- [Timeline & Milestones](https://msosorg.com/en/timeline-and-milestones/): Learn more about the company and the team behind it. +- [Official information](https://msosorg.com/en/legal/): Official information about the Macedonian Student Organisation in Slovenia (MSOS): legal registration data, tax number, IBAN and contact details. +- [Privacy Policy](https://msosorg.com/en/privacy-policy/): How the Macedonian Student Organisation in Slovenia collects, uses, and protects your personal data. +- [Cookie Policy](https://msosorg.com/en/cookie-policy/): How this website uses cookies and similar technologies, and how you can control them. + +## Student guide +- [From Macedonia to Slovenia, step by step](https://msosorg.com/en/student-welcome-guide/): Your complete route from a Macedonian secondary school or first degree to enrolled student life in Slovenia. +- [How university study works](https://msosorg.com/en/student-welcome-guide/academic-life/): The academic year, ECTS, grades, exam registration, the referat, learning Slovenian, tutoring, and extracurricular ECTS. +- [Essential administrative tools](https://msosorg.com/en/student-welcome-guide/administrative-basics/): EMŠO, a tax number, SI-PASS, a bank account, and a phone plan unlock almost every other service. +- [You have been accepted, what happens next?](https://msosorg.com/en/student-welcome-guide/admission-and-enrolment/): Admission is not always enrolment. Read the decision, complete enrolment, get your certificate of enrolment, and check any charges. +- [Current application deadlines](https://msosorg.com/en/student-welcome-guide/application-deadlines/): The 2026/2027 bachelor and master periods for Macedonian citizens, by university. Always open the exact current call. +- [Your arrival checklist](https://msosorg.com/en/student-welcome-guide/arrival-checklist/): What to do in the first 72 hours, the first week, and the first month after you reach Slovenia. +- [Applying for a bachelor degree](https://msosorg.com/en/student-welcome-guide/bachelor-application/): The eVŠ process, the document package, the 2026/2027 rounds by university, and why you should apply early. +- [How to choose the right programme](https://msosorg.com/en/student-welcome-guide/choose-a-programme/): Compare the programme first, then the city. Use information days well, and confirm language and aptitude-test requirements early. +- [Your complete journey to Slovenia](https://msosorg.com/en/student-welcome-guide/complete-student-journey/): Nine stages from researching a programme to your first year, with residence, health, and housing handled in parallel. +- [Prepare your documents correctly](https://msosorg.com/en/student-welcome-guide/document-preparation/): One master folder, clear filenames, the difference between original, copy, translation, and legalisation, and basic data protection. +- [How to apply through eVŠ](https://msosorg.com/en/student-welcome-guide/evs-application-guide/): Prepare, log in, enter your previous education, order preferences, upload, and press Submit. A draft is not an application. +- [Healthcare after you arrive](https://msosorg.com/en/student-welcome-guide/healthcare-in-slovenia/): Emergency numbers, what to bring, and student health contacts city by city. +- [Applying for a master degree](https://msosorg.com/en/student-welcome-guide/master-application/): Master admission is faculty-driven. Check field compatibility early, and remember there is no single national deadline. +- [Proving that you can live in Slovenia](https://msosorg.com/en/student-welcome-guide/means-accommodation-address/): How to prove sufficient means, accommodation, and a registered address for your residence permit. +- [Your personal study route](https://msosorg.com/en/student-welcome-guide/my-route/): Your personal study route to Slovenia, follow the Student Welcome Guide steps for Macedonian students, from choosing a programme to enrolment and residence. +- [Official sources and checklists](https://msosorg.com/en/student-welcome-guide/official-sources-and-checklists/): The primary official links behind this guide, grouped by topic, plus the checklists to build and how to manage sources. +- [Preparing to move from Macedonia](https://msosorg.com/en/student-welcome-guide/prepare-to-move/): A month-by-month plan, the documents to keep in your hand luggage, how to travel, and a detailed packing list. +- [Recognition of Macedonian education](https://msosorg.com/en/student-welcome-guide/recognition-of-education/): Recognition decides whether your prior education gives access to the Slovenian programme. For applicants educated abroad, it is part of admission. +- [What happens after the first year?](https://msosorg.com/en/student-welcome-guide/renew-change-graduate/): Annual renewal, repeat and transfer rights, losing status, the post-study route, and leaving Slovenia are all connected. +- [Health insurance from Macedonia](https://msosorg.com/en/student-welcome-guide/rm-si-3-health-insurance/): How the bilateral RM/SI 3 route gives you healthcare access in Slovenia, and what it does not cover. +- [Finding accommodation as a Macedonian degree student](https://msosorg.com/en/student-welcome-guide/student-accommodation/): Subsidised public dorms are usually closed to you on temporary residence. Plan for economic-rate or private housing, and avoid scams. +- [Plan a realistic student budget](https://msosorg.com/en/student-welcome-guide/student-budget/): There is no single national figure. Build a city-based budget, plan for a much larger first month, and use student discounts. +- [How to activate student meals](https://msosorg.com/en/student-welcome-guide/student-meals/): Subsidised meals are open to eligible foreign degree students and exist across Slovenian study centres, not only in Ljubljana. +- [How students are organised in Slovenia](https://msosorg.com/en/student-welcome-guide/student-organisations-and-extracurriculars/): Student organisations, student councils, local clubs, professional societies, university extracurricular programmes, ESN, and communities from home. +- [Temporary residence permit, step by step](https://msosorg.com/en/student-welcome-guide/student-residence-permit/): The documents, the six steps, the one-year validity, and how to renew the temporary residence permit for study. +- [Student public transport](https://msosorg.com/en/student-welcome-guide/student-transport/): National IJPP tickets, city transport, and bicycle sharing. Eligibility does not depend on the distance to your faculty. +- [Working through a student service](https://msosorg.com/en/student-welcome-guide/student-work/): Student work is allowed on the student permit through a napotnica. Regular employment is a different route that needs a work permit. +- [Choose and understand your study city](https://msosorg.com/en/student-welcome-guide/study-cities/): Ljubljana is not the only option. Compare each Slovenian study centre and build your life around the real teaching location. +- [Tuition rules for Macedonian students](https://msosorg.com/en/student-welcome-guide/tuition-and-scholarships/): Full-time public study is generally tuition-free for Macedonian citizens, but this is not a promise that every programme is free. +- [Entry is not the same as residence](https://msosorg.com/en/student-welcome-guide/visa-and-residence-explained/): Short visa-free entry, visa D, and the study residence permit are three different things. Know which one keeps you here legally. +- [Support while living abroad](https://msosorg.com/en/student-welcome-guide/wellbeing-and-community/): Culture shock is normal. Build support in several places, use university counselling, and know your emergency numbers. +- [Where to submit the residence application](https://msosorg.com/en/student-welcome-guide/where-to-apply-for-residence/): The embassy in Skopje or a Slovenian administrative unit: where to submit, and the lawful-stay risk to manage. + +## Blog +- [Blog](https://msosorg.com/en/blog/): Real experiences and practical advice from Macedonian students in Slovenia. New stories are on the way. +- [Study in Slovenia with an Ad futura scholarship: 2026 guide](https://msosorg.com/en/blog/ad-futura-scholarship-slovenia-2026/): Ad futura offers €800 per month for selected master's programmes in Slovenia for Western Balkan students in 2026/2027. Who can apply, eligible study areas, conditions, documents and the 2 September 2026 deadline. +- [How to open a Slovenian bank account as an international student](https://msosorg.com/en/blog/how-to-open-slovenian-bank-account/): A practical guide for Macedonian students: the documents you need, how to choose a bank, using Flik, and keeping your details up to date after you open the account. +- [Learning Slovene: where to start](https://msosorg.com/en/blog/learning-slovene-where-to-start/): A practical guide for Macedonian students: how to set a language goal, free online courses, university options such as Leto plus, learning before you move, and courses versus official exams. +- [Study in North Macedonia with a government scholarship: 2026/2027 guide](https://msosorg.com/en/blog/study-in-north-macedonia-government-scholarship-2026-2027/): The Ministry of Education and Science of North Macedonia offers 50 undergraduate scholarships at public universities for 2026/2027. Who can apply, what is covered, required documents and deadlines. +- [Welcome Days for new students at Slovenia's universities 2026/2027](https://msosorg.com/en/blog/welcome-days-slovenian-universities-2026-2027/): Welcome and orientation activities at the University of Ljubljana, Maribor, Primorska and Nova Gorica for bachelor's, master's and Erasmus students in 2026/2027, with dates and what to prepare. + +## News +- [News and updates](https://msosorg.com/en/news/): Everything new at MSOS in one place, events and projects, blog stories, announcements and official updates for Macedonian students in Slovenia. +- [Proof-of-means amount updated to €507,43 per month](https://msosorg.com/en/news/proof-of-means-updated-2026/): If you are applying for or renewing a student residence permit in Slovenia, you must prove you have enough money to support yourself. That requirement is tied… + +## Events & projects +- [Projects](https://msosorg.com/en/projects/): The events, projects and moments that bring the Macedonian student community in Slovenia together. +- [Humanitarian Sports Tournament: Playing with Heart, Together for Kočani](https://msosorg.com/en/projects/humanitarian-tournament-in-maribor/): Over 200 students gathered in Maribor, raising €1.000 through sport to support families hit by the Kočani tragedy. +- [In Memory of Frosina Kulakova](https://msosorg.com/en/projects/in-memory-of-frosina-kulakova/): On February 8, 2025, Macedonian students in Ljubljana gathered for a peaceful public event to honor the memory of Frosina Kulakova, who tragically lost her… +- [In Memory of the Victims of the Kochani Tragedy](https://msosorg.com/en/projects/in-memory-of-the-kochani-victims/): On March 21, 2025, more than 600 people gathered at Kongresni trg in Ljubljana for a peaceful public gathering to honor the victims of the tragic fire in Kochani. +- [Macedonian Student Night in Ljubljana](https://msosorg.com/en/projects/macedonian-student-night-in-ljubljana/): From an idea to a party with 500 students, that's how our story began! +- [Meet Student Slovenia 2023](https://msosorg.com/en/projects/meet-student-slovenia-2023/): Through honest first-hand stories, future students received support for their first step towards their new home. +- [Meet Student Slovenia 2024](https://msosorg.com/en/projects/meet-student-slovenia-2024/): When student stories turn into the first step towards a new home. +- [Morning Coffee in front of CTK, 2024: Coffee, burek, and lots of smiles](https://msosorg.com/en/projects/morning-coffee-in-front-of-ctk/): When exams somehow become easier with Saturday morning coffee, burek, and good company in at CTK! +- [Paint & Wine at Sunset, Celebrating Women’s Day with Art & Music](https://msosorg.com/en/projects/paint-and-wine-at-sunset/): Paint, wine, and music brought students together in Gorizia to celebrate Women’s Day and mark the first MSOS Nova Gorica event. +- [Cheering for Macedonia, Watching Handball Together in Slovenia](https://msosorg.com/en/projects/watching-handball-together-in-slovenia/): From Ljubljana to Maribor, Macedonian students filled cafés with chants, flags, and laughter while watching the national handball team. + +## Get to know Slovenia +- [Get to know Slovenia](https://msosorg.com/en/get-to-know-slovenia/): Slovenia may be small on the map, but there is a lot to discover between the Alps, the Adriatic coast, green rivers, old towns, and quiet places that quickly… +- [A First Taste of Slovenian Food](https://msosorg.com/en/get-to-know-slovenia/a-first-taste-of-slovenian-food/): Start with štruklji, jota, žlikrofi, frika, bograč, and potica. Together they reveal a cuisine shaped by regions rather than one fixed menu. +- [Lake Bled Beyond the Famous View](https://msosorg.com/en/get-to-know-slovenia/lake-bled-beyond-the-famous-view/): The island is the image everyone knows. The full character of Bled appears when you walk around the lake and let the view keep changing. +- [Ljubljana Through Our Eyes](https://msosorg.com/en/get-to-know-slovenia/ljubljana-through-our-eyes/): Not a complete guide to the city, but a collection of places and routines through which many of us began to feel at home. +- [Slovenian Habits That May Surprise You](https://msosorg.com/en/get-to-know-slovenia/slovenian-habits-that-may-surprise-you/): Not rules that describe every person, but small patterns many of us noticed while learning how everyday life works. +- [Slovenia's Stories in Stone and Tradition](https://msosorg.com/en/get-to-know-slovenia/slovenias-stories-in-stone-and-tradition/): Heritage is not one castle or museum. It can be a bridge used every day, a river disappearing underground, a mining town shaped by mercury, or knowledge passed… +- [Welcome to Slovenia](https://msosorg.com/en/get-to-know-slovenia/welcome-to-slovenia/): A small country of many landscapes, quiet discoveries, and places that slowly begin to feel like home. + +## Get to know Macedonia +- [Get to know Macedonia](https://msosorg.com/en/get-to-know-macedonia/): 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… +- [A Table Full of Macedonia](https://msosorg.com/en/get-to-know-macedonia/a-table-full-of-macedonia/): 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. +- [History You Can Still Walk Through](https://msosorg.com/en/get-to-know-macedonia/history-you-can-still-walk-through/): 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. +- [Music, Dance and the Moments That Bring Us Together](https://msosorg.com/en/get-to-know-macedonia/music-dance-and-the-moments-that-bring-us-together/): 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. +- [Ohrid, More Than a Postcard](https://msosorg.com/en/get-to-know-macedonia/ohrid-more-than-a-postcard/): The lake attracts the first look. The old streets, wooden houses, churches, neighbourhoods, and evening conversations are what make people return. +- [Skopje, A City of Many Layers](https://msosorg.com/en/get-to-know-macedonia/skopje-a-city-of-many-layers/): A city best understood by crossing the river, changing neighbourhoods, and noticing what each period left behind. +- [Welcome to Macedonia](https://msosorg.com/en/get-to-know-macedonia/welcome-to-macedonia/): A country of mountains, open tables, long conversations, and stories that remain close wherever we go. diff --git a/tools/build_botlinks.py b/tools/build_botlinks.py new file mode 100644 index 00000000..ee17c434 --- /dev/null +++ b/tools/build_botlinks.py @@ -0,0 +1,208 @@ +#!/usr/bin/env python3 +""" +build_botlinks.py -- AI / crawler discovery files for msosorg.com + +Generates two things from the pages that already exist on disk, so they stay +current automatically whenever a page is added or removed: + + 1. /llms.txt an llmstxt.org-style Markdown index (English) + 2. /links-for-bots/index.html a single, lightweight, fully-linked crawl hub + covering EN / MK / SI + +Run after adding or removing pages: + + python tools/build_botlinks.py + +It only reads each page's and <meta name="description">, so it never +depends on the visual markup and is safe to re-run (idempotent). +""" +import io, os, re + +ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +BASE = "https://msosorg.com" +LANGS = ("en", "mk", "si") +LANG_LABEL = {"en": "English", "mk": "Македонски", "si": "Slovenščina"} + +# (top-level directory under a language, human label). Order = display order. +SECTIONS = [ + ("student-welcome-guide", "Student guide"), + ("blog", "Blog"), + ("news", "News"), + ("projects", "Events & projects"), + ("get-to-know-slovenia", "Get to know Slovenia"), + ("get-to-know-macedonia", "Get to know Macedonia"), +] +# Single top-level pages (their own index.html directly under the language dir). +MAIN_PAGES = [ + "about-us", "msos-hub", "become-a-member", "support", "gallery", + "faq", "timeline-and-milestones", "legal", "privacy-policy", "cookie-policy", +] + +TITLE_RE = re.compile(r"<title>(.*?)", re.DOTALL | re.I) +DESC_RE = re.compile(r'", ">") + .replace('"', """)) + + +def build_llms_txt(): + """English llmstxt.org-style index.""" + data = collect("en") + lines = [] + lines.append("# MSOS — Macedonian Student Organisation in Slovenia") + lines.append("") + lines.append("> MSOS is the first official Macedonian student organisation in Slovenia. " + "This site helps Macedonian students move to and study in Slovenia — " + "enrolment guides, events, community news and support. Content is " + "student-written and informative; official sources should always be verified.") + lines.append("") + lines.append(f"Full multilingual crawl index (EN/MK/SI): {BASE}/links-for-bots/") + lines.append("") + # preferred section order for llms.txt + order = ["Main pages", "Student guide", "Blog", "News", "Events & projects", + "Get to know Slovenia", "Get to know Macedonia"] + for label in order: + rows = data.get(label) + if not rows: + continue + lines.append(f"## {label}") + for title, url, desc in rows: + if desc: + lines.append(f"- [{title}]({url}): {desc}") + else: + lines.append(f"- [{title}]({url})") + lines.append("") + txt = "\n".join(lines).rstrip() + "\n" + io.open(os.path.join(ROOT, "llms.txt"), "w", encoding="utf-8", newline="\n").write(txt) + return sum(len(v) for v in data.values()) + + +def build_links_page(): + """A single lightweight HTML hub linking every page, grouped by language + section.""" + blocks = [] + total = 0 + for lang in LANGS: + data = collect(lang) + order = ["Main pages", "Student guide", "Blog", "News", "Events & projects", + "Get to know Slovenia", "Get to know Macedonia"] + secs = [] + for label in order: + rows = data.get(label) + if not rows: + continue + items = "\n".join( + f'
  • {esc(t)}{(" — " + esc(d)) if d else ""}
  • ' + for t, u, d in rows + ) + total += len(rows) + secs.append(f'

    {esc(label)}

    \n ') + blocks.append( + f'
    \n

    {LANG_LABEL[lang]} ({lang})

    \n' + + "\n".join(secs) + "\n
    " + ) + + body = "\n".join(blocks) + html = f""" + + + + +Links for bots — MSOS + + + + + + +

    Links for bots

    +

    A plain, fully-linked index of every page on msosorg.com, for search engines and AI crawlers. + See also /llms.txt and /sitemap.xml.

    + +{body} + + +""" + out_dir = os.path.join(ROOT, "links-for-bots") + os.makedirs(out_dir, exist_ok=True) + io.open(os.path.join(out_dir, "index.html"), "w", encoding="utf-8", newline="\n").write(html) + return total + + +if __name__ == "__main__": + n1 = build_llms_txt() + n2 = build_links_page() + print(f"llms.txt written ({n1} English pages listed)") + print(f"links-for-bots/index.html ({n2} links across EN/MK/SI)")