Add article dates, brand OG image, launch SEO checklist

- Add datePublished/dateModified to Article JSON-LD on the 11 dated
  articles (curated once from EN, applied to all languages)
- Replace og-default.jpg with the official brand OG image (1200x630)
- Add docs/launch-seo-checklist.md (go-live steps: redirects, Search
  Console, analytics, rich-result validation, monitoring)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
popovskikandClaude Opus 4.8 committed 2026-08-02 12:38:20 +02:00
1 parent 6e8b8befe6
commit 788084e094
36 files changed
+154 -33

No files matched your search

+99
View File
@@ -0,0 +1,99 @@
# Launch-day SEO checklist
Everything below is **blocked until the site goes live on the final domain
`msosorg.com`** (it can't be done on the temp host `msos.spletnimojster.si`).
Work top to bottom on launch day. The on-page/technical SEO is already done —
this is the "flip the switch" list.
---
## 0. Before you flip the domain
- [ ] **Native-speaker proofread of MK + SI content.** All Macedonian/Slovene
translations (blog post, about-us, timeline, meta descriptions) are
AI-drafted and marked for review. Fix before indexing — quality counts.
- [ ] Decide the **canonical domain**: with-`www` or bare `msosorg.com`.
Everything is currently hard-coded to `https://msosorg.com` (bare, https).
If you want `www`, tell me and I'll re-run the injector with the new base.
## 1. DNS + hosting
- [ ] Point `msosorg.com` DNS to the host.
- [ ] Confirm a valid **HTTPS certificate** (Let's Encrypt / host-provided).
- [ ] Confirm the site loads at `https://msosorg.com/en/` (and `/mk/`, `/si/`).
## 2. Redirects (`.htaccess`)
- [ ] Update the root redirect in `.htaccess` (lines 2–5): change
`msos.spletnimojster.si` → `msosorg.com` so `/` → `/en/` on the real host.
- [ ] Add a **301 from the temp domain to the final domain** so any links /
early indexing on `msos.spletnimojster.si` pass equity to `msosorg.com`:
```apache
RewriteCond %{HTTP_HOST} ^(www\.)?msos\.spletnimojster\.si$ [NC]
RewriteRule ^(.*)$ https://msosorg.com/$1 [R=301,L]
```
- [ ] Pick ONE host form (www vs non-www) and 301 the other to it.
- [ ] (Ask me to make these edits — they're quick.)
## 3. Verify the technical layer resolves on the real domain
- [ ] `https://msosorg.com/robots.txt` loads and lists the sitemap.
- [ ] `https://msosorg.com/sitemap.xml` loads (201 URLs, all `msosorg.com`).
- [ ] Spot-check a page's `<link rel="canonical">` and `hreflang` point to
`https://msosorg.com/...` (they do — just confirm live).
- [ ] Hit a bad URL (e.g. `/en/blog/xxx`) → branded **404** with 404 status
(works once the Apache `ErrorDocument` is live).
## 4. Google Search Console ← most important
- [ ] Add the property (prefer **Domain property** via DNS TXT — covers all
subdomains + http/https).
- [ ] Submit `https://msosorg.com/sitemap.xml`.
- [ ] Use **URL Inspection** on the homepage + a couple key pages → *Request
indexing*.
- [ ] Check **International Targeting** → no hreflang errors.
- [ ] Over the next weeks: watch **Coverage/Pages**, **Core Web Vitals**, and
the **Performance** report.
## 5. Bing Webmaster Tools (optional, ~5 min)
- [ ] Add the site (can import from Search Console) and submit the sitemap.
## 6. Analytics (measure the SEO) — see `docs/` note / ask me to wire it
- [ ] Create the analytics account (GA4 or Plausible — recommendation below).
- [ ] Give me the Measurement ID (GA4) or confirm the domain (Plausible); I add
the snippet to `tools/seo_inject.py` so it lands on all 201 pages at once.
- [ ] Verify real-time hits after deploy.
## 7. Social / rich-result validation
- [ ] **Rich Results Test** (search.google.com/test/rich-results) on a blog,
news, and project URL → Article + BreadcrumbList detected, no errors.
- [ ] **Facebook Sharing Debugger** — paste homepage + a blog URL, click
*Scrape Again* → correct title/description/OG image.
- [ ] **LinkedIn Post Inspector** — same check.
- [ ] Confirm the favicon shows in a browser tab and in Google results.
## 8. Post-launch monitoring (first 2–4 weeks)
- [ ] Watch indexing count climb in Search Console.
- [ ] Fix anything in Coverage (excluded/errors).
- [ ] Re-check Core Web Vitals (image optimization + lazy-loading should keep
these green).
- [ ] Add fresh content (blog/news) — freshness + internal links help.
---
### Notes / gotchas
- **Custom 404** only works on the Apache/LiteSpeed host via `.htaccess`
`ErrorDocument` (already added). The Python dev server ignores it.
- **Re-run after any page add/rename/delete:**
`python tools/seo_inject.py --all --sitemap` (keeps canonical, hreflang and
the sitemap in sync).
- **`images/original/`** (458 MB source masters) is gitignored — keep a
Drive/local backup; it never deploys.
- If the final domain or www-choice differs from `https://msosorg.com`, the
`DOMAIN` constant in `tools/seo_inject.py` must be updated and the injector
re-run — one-line change, ask me.