0% 5h quota used · resets in 2h live · 08/09/2026 12:12 CEST

2026-08-04-seo-audit.md

countries/tn/reports/2026-08-04-seo-audit.md

seo-audit tn written 04/08/2026 12:11 ← previous seo-audit next seo-audit →

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+json blocks.
  • /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)

  1. [Mechanical, in PR #12649] Add /coupures/{gouvernorat} and /coupures/{gouvernorat}/{municipality} to sitemap.xml — 374 pages still undiscoverable via sitemap.
  2. [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.
  3. [Mechanical, in PR #12649] Add Organization/WebSite JSON-LD to the homepage — still the only static page with zero structured data.
  4. [Mechanical, in PR #12649] Trim /steg/raccordement-gaz (76) and /steg/solaire (71) titles.
  5. [Non-mechanical] ogImage site-wide (0/13 static + 0/374 outage pages) — flagged 4th run now, needs a /generate-article-image pass, 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.