feat(press): add link-only press kit for Meet Student Slovenia 2026

Unlisted MK press kit for media covering the 4 Sept 2026 event: fact
sheet, ready-to-quote boilerplate, key messages, downloadable event
photos + logos, and info@ contact. Reuses _press.css with new press-kit
blocks (one-line hero title, centered CTAs, tightened fact columns,
photo download grid).

Keep it link-only: add an UNLISTED mechanism to tools/seo_inject.py so
the page gets robots=noindex,nofollow on every run and is excluded from
sitemap.xml (and not exposed in robots.txt). Without this the pre-commit
SEO injector would make the page indexable and list it publicly.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
popovskikandClaude Opus 4.8 committed 2026-09-01 19:54:34 +02:00
1 parent af97f7144c
commit 9812835d24
3 files changed
+569

No files matched your search

+13
View File
@@ -29,6 +29,15 @@ LANGS = ["en", "mk", "si"]
HREF = {"en": "en", "mk": "mk", "si": "sl"}
OG_LOCALE = {"en": "en_GB", "mk": "mk_MK", "si": "sl_SI"}
# Unlisted / link-only pages, keyed by (lang, path). These get a
# `robots: noindex, nofollow` meta on every run and are kept OUT of sitemap.xml,
# so they are reachable only by someone who has the direct URL (e.g. a press kit
# shared privately with journalists). They are deliberately NOT added to
# robots.txt — a Disallow line there would publicly advertise the secret path.
UNLISTED = {
("mk", "press/meet-student-slovenia-2026"),
}
# Section (first path segment) display names, for Article breadcrumbs.
# Any 2-segment path "section/slug" whose section is here is treated as an article.
SECTION_NAMES = {
@@ -458,6 +467,8 @@ def build_block(lang, path, content):
ogimg = extract_og_image(content)
lines = [START]
if (lang, path) in UNLISTED:
lines.append(' <meta name="robots" content="noindex, nofollow">')
lines.extend(GA_LINES)
if desc:
lines.append(f' <meta name="description" content="{html.escape(desc, quote=True)}">')
@@ -555,6 +566,8 @@ def write_sitemap():
urls = []
for L, fp in all_pages():
path = page_path_of(fp, L)
if (L, path) in UNLISTED:
continue # link-only page: keep it out of the public sitemap
urls.append((L, path))
# group by path so we can emit xhtml:link alternates
from collections import defaultdict