new site
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# Action Plan — odoo-expertos.com SEO Fixes
|
||||
|
||||
**Date:** 2026-05-27 · **Overall health: ~44/100** · Source: `FULL-AUDIT-REPORT.md`
|
||||
|
||||
Ordered by impact ÷ effort. Most high-impact fixes are **template/generator changes** that fan out across ~1,000+ pages — fix the generator, not individual pages.
|
||||
|
||||
---
|
||||
|
||||
## 🔴 CRITICAL — fix immediately (blocks indexing / risks site-wide downgrade)
|
||||
|
||||
| # | Action | Where | Effort |
|
||||
|---|--------|-------|--------|
|
||||
| C1 | **Remove the 3 dead `<loc>` entries** for `/en/odoo-hosting/`, `/fr/odoo-hosting/`, `/pt/odoo-hosting/` from `sitemap-en/fr/pt.xml`. Then **build the missing index pages** (mirror DE/AR). | sitemaps + page generator | Low (purge) / Med (build) |
|
||||
| C2 | **Resolve the EN/DE untranslated-content problem** (400+ pages with `lang="en/de"` serving Spanish/garbled text). Decide: translate, or remove+hreflang-to-ES, or 301 to Spanish canonical. Stop generating Spanish-slug EN/DE pages. | content pipeline | High (decision + execution) |
|
||||
| C3 | **Fix inner-page hreflang**: EN template add `pt`+`ar`; DE template build `es`/`x-default` from the **root** ES URL (no `/de/` prefix). Add full 7-entry hreflang to all **category index** pages (currently zero). | head template | Med |
|
||||
| C4 | **Fix Organization logo + schema host site-wide**: replace dead `www.odooexpertos.com/...logo.png` with one real URL on `www.odoo-expertos.com`; switch all schema `url`/`item` from non-www → www. | schema template | Low |
|
||||
| C5 | **Rebuild the homepage as an authoritative entity page**: factual keyword-led H1, drop combat/fear hype + emoji H2s, source or remove "280% ROI", add Organization JSON-LD (shared `@id`, populated `sameAs`), last-updated date. | homepage | Med |
|
||||
| C6 | **Replace `document.write()` header/footer/eeat** with `insertAdjacentHTML` into a pre-sized placeholder + `defer` the component scripts. | content-page generator | Med |
|
||||
|
||||
---
|
||||
|
||||
## 🟠 HIGH — within ~1 week
|
||||
|
||||
| # | Action | Where | Effort |
|
||||
|---|--------|-------|--------|
|
||||
| H1 | Rewrite category titles to 50–60 chars in the target language (kill the 270–300-char stuffed strings). | category template | Low |
|
||||
| H2 | Add rendered breadcrumb + parent-category link + ≥3 related-article links to article template (fix orphan pages). | article template | Med |
|
||||
| H3 | Add `Article.image` + `mainEntityOfPage` + valid `dateModified`; remove duplicate Microdata `itemtype`; add `BreadcrumbList` to deep pages. | schema template | Med |
|
||||
| H4 | Add author bylines + datePublished/dateModified (visible + schema) to content pages; create real author pages or attribute to the org. | content + author pages | Med |
|
||||
| H5 | Self-host D3 (`/js/d3.v7.min.js`), preload only where used, remove misplaced d3js.org preconnect, defer D3 init until in-viewport. | homepage + D3 pages | Low |
|
||||
| H6 | Trim homepage inline `<style>` 32 KB → <14 KB (move non-critical to `main.min.css`); externalize + `defer` the big inline JS; throttle mousemove with rAF. | homepage | Med |
|
||||
| H7 | Apply async-CSS (`preload…onload`+`<noscript>`) + ~2 KB critical CSS to the content-page template. | content-page generator | Low |
|
||||
| H8 | Fix robots.txt: one group per agent; merge `Disallow: /*?` `/*&` into the FIRST `User-agent: *`; delete the 2nd `*` block, duplicate Bingbot/CCBot, and `/*#`. | robots.txt | Low |
|
||||
| H9 | Expand `llms.txt` (8–12 links per section); regenerate `llms-full.txt` as a genuine per-language content dump. | llms files | Low (scripted) |
|
||||
|
||||
---
|
||||
|
||||
## 🟡 MEDIUM — within ~1 month
|
||||
|
||||
| # | Action |
|
||||
|---|--------|
|
||||
| M1 | Add security headers in `vercel.json` (`X-Content-Type-Options`, `X-Frame-Options`, `Referrer-Policy`). |
|
||||
| M2 | Add long-lived `Cache-Control: max-age=31536000, immutable` for hashed `/css`,`/js`,`/components` (with filename/version hashing). |
|
||||
| M3 | Fix `og:locale` on DE/FR/PT category pages (currently `es_ES`) → `de_DE`/`fr_FR`/`pt_*`. |
|
||||
| M4 | Expand thin article bodies (~400w) to 200–300 words per H2 section. |
|
||||
| M5 | Populate `sameAs` (LinkedIn, YouTube, directories); remove non-functional `?s=` SearchAction or wire real search. |
|
||||
| M6 | Add `Service` schema (homepage) + `FAQPage` where question-H2s exist; add `inLanguage` to ES/DE schema blocks. |
|
||||
| M7 | Create `/contacto/` + `/sobre-nosotros/` pages in primary nav; verify/link Odoo partner badge. |
|
||||
| M8 | Apply "direct-answer-first" 134–167-word passages across content pages (citability). |
|
||||
| M9 | Wrap continuous CSS animations (kenBurns/shimmer) in IntersectionObserver. |
|
||||
|
||||
---
|
||||
|
||||
## 🔵 LOW / backlog
|
||||
- Localized URL slugs for EN/DE (`/en/odoo-ai/`, `/de/odoo-ki/`) with 301s once translated.
|
||||
- Single-hop `http-apex → https-www` redirect.
|
||||
- Off-site entity building (YouTube channel → strongest AI-citation signal; r/Odoo participation; Wikipedia if notable).
|
||||
- Accessible HTML data tables beside D3 charts (AI-crawler + a11y).
|
||||
|
||||
---
|
||||
|
||||
## Verification checklist (after fixes)
|
||||
- [ ] `curl -I` the 3 former-404 category pages → 200; sitemaps contain no 404 `<loc>`.
|
||||
- [ ] hreflang reciprocity passes (EN has pt+ar; DE es/x-default resolve 200) — re-run technical agent.
|
||||
- [ ] Rich Results Test passes for Organization (logo loads) + Article (image present) + Breadcrumb.
|
||||
- [ ] Re-run PageSpeed **with an API key**; confirm LCP ≤2.5s / INP ≤200ms / CLS ≤0.1 on mobile.
|
||||
- [ ] Homepage re-screenshot: factual H1, no combat hype.
|
||||
- [ ] Re-audit: target health ≥70/100.
|
||||
Reference in New Issue
Block a user