2026-08-04-seo-audit.md
countries/tn/reports/2026-08-04-seo-audit.md
SEO Audit — tunisie-electricite.com — 2026-08-04
Diffed against reports/2026-07-27-seo-audit.md. git log origin/develop --since=2026-07-27 -- sites/tunisie-electricite.com departments/tunisia-energy returns exactly one commit: 0e8a25f69b9 (PR #13445, merged 2026-07-30) — a route-only refactor, no content/template changes. All page scores below are carried forward and re-verified live (titles/meta re-measured, not eyeballed) rather than assumed unchanged.
Note on methodology: this run's first pass measured title/meta length with bash ${#var}, which counts bytes under this environment's POSIX locale, not characters — it silently inflated every accented title by ~5 chars (e.g. raccordement-gaz showed as 81 instead of 76). Re-measured everything with node's native (UTF-16) .length instead, which matches the character count editors/SERPs use. Always use node for length checks here, never bash ${#var} — the locale is POSIX, not UTF-8.
1. Live site health
All 16 checked URLs returned 200 OK. First-hit latency was higher than the 07-27 run (homepage 3.3s, several pages 1–2s) but this reads as cold cache, not degradation: cf-cache-status: HIT observed on repeat requests and cache-control: max-age=14400 is set fleet-wide. Not flagged as an issue.
| URL | Status |
|---|---|
/, /tarifs, /tarifs-gaz, /steg, /coupures, /annuaire, /sitemap.xml, /robots.txt |
200 |
/steg/coupures, /steg/facture, /steg/numero-vert, /steg/raccordement, /steg/raccordement-gaz, /steg/service-client, /steg/solaire, /mentions-legales |
200 |
robots.txt unchanged: allows /coupures/*, correctly references /sitemap.xml.
2. Page audits (13 static pages — unchanged since 07-27, re-verified live)
| Page | Score | Note |
|---|---|---|
/tarifs |
95 | title 65, meta 140 |
/tarifs-gaz |
93 | title 64, meta 159 |
/coupures |
92 | title 66, meta 156 |
/steg |
91 | title 52, meta 157 |
/steg/numero-vert |
90 | title 57, meta 148 |
/steg/service-client |
88 | title 61, meta 146 |
/steg/facture |
87 | title 56, meta 153 |
/steg/raccordement |
86 | title 56, meta 149 |
/steg/raccordement-gaz |
84 | title 76 chars (>65) — unresolved, open in PR #12649 |
/mentions-legales |
82 | meta 159, low-priority legal page |
/steg/solaire |
82 | title 71 chars (>65) — unresolved, open in PR #12649 |
/steg/coupures |
80 | still no on-page schema beyond breadcrumb |
/ (homepage) |
76 | title 56, meta 148 fine — still zero structured data, fix open in PR #12649 |
Directory templates (/annuaire/*, 1+24+261 = 286 pages): unchanged, ~85/100, BreadcrumbList confirmed present.
3. Directory spot-check (5 pages, exceeded the usual 3)
/annuaire/zaghouan, /zaghouan/bir-mcherga, /annuaire/bizerte, /bizerte/menzel-jemil, /annuaire/gabes — all 200, unique title/H1 with real agency data, BreadcrumbList JSON-LD present on all. No issues.
4. Good news — a long-tracked tech-debt item got fixed independently
The Closure-route route:cache issue (/annuaire, /annuaire/{gouvernorat}, /{gouvernorat}/{delegation}, /{gouvernorat} in routes/web.php) — flagged in this audit for 4 consecutive runs since 07-03 as out-of-scope-for-this-skill tech debt — was fixed via PR #13445 (merged 2026-07-30, unrelated to any countryos PR): all 4 routes now go through TunisieElectriciteComRoutesController, with the per-request static-cache memoization correctly preserved. Verified live: routes still resolve correctly (§3). This is the first of the long-open items to get closed since tracking started.
5. Fix-tracking — PR #12649 still open, unreviewed, 8 days
countryos/tn/2026-07-27-seo-fixes (PR #12649) is still draft, 0 reviews, opened 2026-07-27 — it contains the mechanical fixes for 4 of last run's 5 top actions (sitemap generators for the 374 /coupures/* pages, title/meta template rewrites for coupures/_gouvernorat.blade.php / _municipalite.blade.php, homepage Organization/WebSite JSON-LD, and the 2 static-page title trims). None of these are live yet — confirmed by re-checking production:
sitemap.xml: still 0/coupures/URLs (299 total, 24/annuaire/governorate entries present).- Homepage: still 0
application/ld+jsonblocks. /steg/raccordement-gaz//steg/solaire: titles still 76 / 71 chars.- Sampled
/coupures/sfax(title 66) and/coupures/tunis/carthage(title 71): both still over the 65-char guideline, confirming the template fix hasn't landed.
Per the skill's chain rule, no new tn:seo-fixes trigger this run — an open PR from the same source already covers these items; stacking a second PR would just split review attention. The PR itself needs human review/merge, not another audit cycle.
Top actions (ranked by impact/effort — unchanged from 07-27, tracked in PR #12649 unless noted)
- [Mechanical, in PR #12649] Add
/coupures/{gouvernorat}and/coupures/{gouvernorat}/{municipality}tositemap.xml— 374 pages still undiscoverable via sitemap. - [Mechanical, in PR #12649] Shorten title/meta templates in
coupures/_gouvernorat.blade.php/_municipalite.blade.php— 100% of 374 pages still exceed both length guidelines. - [Mechanical, in PR #12649] Add Organization/WebSite JSON-LD to the homepage — still the only static page with zero structured data.
- [Mechanical, in PR #12649] Trim
/steg/raccordement-gaz(76) and/steg/solaire(71) titles. - [Non-mechanical] ogImage site-wide (0/13 static + 0/374 outage pages) — flagged 4th run now, needs a
/generate-article-imagepass, not a text edit.
Also still open: FAQ accordions missing on 5 /steg/* pages (flagged 4th run, non-mechanical/content-structure work).
Chain decision
All currently-mechanical top actions are already captured in the open, unreviewed PR #12649. Per the skill's rule, did not trigger a new tn:seo-fixes task this run — the blocker is human review of the existing PR, not a missing fix. No new action needed until #12649 is merged or closed.