Files
odoo-expertos.com/seo-audit-2026-05-27/OPPORTUNITIES-2026-05-28.md
T
2026-08-28 10:11:11 -03:00

16 KiB

Opportunities Scan (post-W1..W11) — odoo-expertos

Date: 2026-05-28. Source: seo+blog opportunity sub-agent (Sonnet, WebFetch-grounded). Consumed by goals/W5b.txt, W12.txt, W13.txt — those tell the fix agents to read this file for concrete targets.


1. Top 10 AI-Search Opportunity Pages

Ranked by: "best/review/vs" query intent + existing structural strength + GSC crawl signal.

# URL Current Weakness Concrete Fix AI-Cite
1 /odoo-hosting/odoo4projects-hosting-review-2026/ 3,222 words, strong schema, but "847 reviews" aggregate is unsourced — fabricated, kills trust Replace aggregate with linked G2/Capterra URL; add Capterra Odoo-category benchmark; add 40-60w TL;DR at top 7
2 /odoo-hosting/mejor-hosting-odoo-2026/ 1,347 words (below blog floor 1,500); H2s declarative not question-led; no inline source attribution Expand to 1,800+ words; convert 3 H2s to questions; one sourced stat per H2 opening sentence 6
3 /odoo-hosting/mejores-proveedores-hosting-odoo-2026/ 2,775 words but "three-month evaluation by our team" has no methodology URL; pricing claims unsourced; no TL;DR Add methodology disclosure box; link 3+ price data points to public provider pricing pages; add TL;DR capsule 6
4 /odoo-hosting/comparativa-precios-odoo-2026/ 2,527 words, table present, "70% Ahorro Potencial" is an unsourced superlative (QRG flag); no visible datePublished in body Replace 70% with a sourced TCO example (link Odoo.sh public pricing vs VPS); add visible byline + date 6
5 /odoo-hosting/cloudpepper-vs-odoo-sh-2026/ 2,556 words, "2,864 Reseñas Verificadas" has no source — fabricated social proof; radar chart is D3/JS so invisible to crawlers Delete the fabricated review count; link a G2/Capterra page; add HTML <table> fallback for the radar data 6
6 /odoo-hosting/opiniones-hosting-odoo-2026/ 2,295 words; claims "2,800 opiniones" from G2/Capterra/Trustpilot with no links; Review schema present but no reviewUrl; no table Add 3 direct links to source platforms; populate reviewUrl on each Review item; add provider-rating comparison table 5
7 /odoo-hosting/odoo-vs-sap-hosting-2026/ 2,354 words; "85% Ahorro en TCO" is the first visible stat and is unsourced; "Guía de Migración" H2 has 1-2 sentences per step Source the TCO claim (Panorama Consulting / Gartner / SAP public pricing); expand migration H2 to 250+ words with numbered steps 5
8 /odoo-hosting/alternativas-odoo-sh-2026/ 2,016 words; zero sourced stats; "0EUR Coste Migración" unattributed; ItemList schema has no url per item Add a source link per alternative (provider pricing page); populate ItemList url; add a direct-answer opening paragraph 4
9 /odoo-hosting/odoo-community-vs-enterprise-hosting-2026/ 2,220 words; partially sourced (G2/Trustpilot); BUT "Dr. María Elena Rodríguez" author is fabricated — destroys AI citability Replace fabricated byline per W7 pattern (use "Equipo Odoo Expertos"); add inLanguage: es to Article schema; remove "Dr." prefix 5
10 /odoo-ia/alternativas-odoo-ia-comparativas-2025/ 1,949 words; "340% mejora" unattributed; first-person fabricated loss narrative ("perdí $180,000") — QRG low-trust signal; no table; no FAQ Remove the fabricated loss narrative; cite a real third-party migration case; add comparison <table> with <thead>; add FAQPage schema 3

Excluded but noted: /odoo-hosting/odoo-vs-zoho-books-hosting-2025/ — only 1,643 words + fabricated "$50,000 loss" + 120+ char title. Belongs in §2 (rewrite-from-scratch) rather than deepen-in-place.


2. Top 20 Thin-Content Rewrite Priorities

ES-root pages from gsc/crawled-not-indexed.txt. Fixing the ES canonical fixes the PT/FR duplicate signal simultaneously.

# URL Current Weakness Proposed Angle Words AI Query
1 /odoo/odoo-hosting-cloud-infraestructura-2025/ ~610 total words; H2s are 1-2 sentences (confirmed in audit) Definitive infra guide: RAM/CPU/disk minimums per Odoo version, provider table, cost breakdown 1800 "infraestructura odoo cloud 2025"
2 /odoo-hosting/hosting-odoo-gratis-gratuito-2025/ Crawled-not-indexed ES root (03.05.26); templated "free hosting" page Honest free-vs-paid breakdown: what free actually gives (community trial, Odoo.sh 15-day), hard limits, when to upgrade 1600 "hosting odoo gratis"
3 /odoo/odoo-compras-gestion-proveedores-2025/ Crawled-not-indexed ES root (31.03.26); 400-word boilerplate on a high-volume module topic Step-by-step Purchase module setup, RFQ workflow, approval rules, 3-way matching explained 1800 "odoo gestión de compras"
4 /odoo/odoo-argentina-implementacion-local-2025/ Crawled-not-indexed ES root; geo page with no local specifics Argentina: AFIP localization, electronic invoice (ARCA), peso currency handling, local partners 1600 "odoo argentina implementación"
5 /odoo-hosting/odoo-vs-zoho-books-hosting-2025/ 1,643 words, fabricated loss narrative, 120-char title, hype framing Neutral feature/pricing comparison: Zoho Books vs Odoo for LATAM SMBs, localization + hosting flexibility 1800 "odoo vs zoho books"
6 /odoo-hosting/odoo-gratis-vs-pago-diferencias-2025/ In duplicate-canonical GSC list (FR/PT flagged); ES root likely templated Concrete feature matrix Community vs Enterprise by module, with exact pricing from odoo.com pricelist 1600 "odoo gratis vs pago"
7 /odoo-ia/que-es-odoo-ia-guia-basica-2025/ Crawled-not-indexed ES root (27.04.26); "basic" suggests shallow intro Structured explainer: Odoo AI features by module (ChatGPT connector, OCR, predictive reordering) + version availability table 1800 "qué es odoo ia"
8 /odoo-hosting/servidor-dedicado-odoo-2026/ Crawled-not-indexed ES root (11.04.26); 400-word skeleton Spec guide: hardware for 50/100/500 users, Hetzner/OVH/AWS prices, PostgreSQL tuning basics 1600 "servidor dedicado odoo"
9 /odoo-hosting/managed-odoo-hosting-2026/ Crawled-not-indexed ES root (31.03.26); high commercial intent query What "managed" means: SLA comparison table, who manages what, pricing per tier 1600 "managed odoo hosting"
10 /odoo-hosting/odoo-docker-hosting-2026/ Crawled-not-indexed ES root (04.04.26); technical, specific Docker Compose walkthrough for Odoo 17/18, multi-container architecture, prod vs dev config 1800 "odoo docker hosting"
11 /odoo-hosting/hosting-odoo-mexico-2026/ Crawled-not-indexed ES root (01.04.26); geo page no local specifics Mexico: SAT CFDI e-invoice, Odoo partner list MX, latency for US-border hosting 1600 "hosting odoo méxico"
12 /odoo-hosting/migracion-hosting-odoo-2026/ Crawled-not-indexed ES root (29.03.26); high commercial intent Step-by-step migration checklist: backup, filestore export, DB restore, domain cutover, post-migration validation 1800 "migración hosting odoo"
13 /odoo-hosting/vps-odoo-hosting-2026/ Crawled-not-indexed ES root (31.03.26); generic VPS page VPS sizing by user count, Ubuntu 22.04 recs, Nginx reverse proxy, SSL config 1800 "vps odoo hosting"
14 /odoo-hosting/hosting-hibrido-odoo-2026/ Crawled-not-indexed ES root (31.03.26); niche but uncontested Define hybrid: on-prem DB + cloud app tier; regulated-data use case; cost model 1500 "hosting híbrido odoo"
15 /odoo-hosting/hosting-odoo-argentina-2026/ Crawled-not-indexed ES root (31.03.26) Argentina: data residency, peso invoicing, local providers (Cloudflare LatAm PoP), ARBA localization 1600 "hosting odoo argentina"
16 /odoo-hosting/hosting-odoo-sin-tarjeta-2026/ Crawled-not-indexed ES root (01.04.26); pure trial-intent List every free-trial option (Odoo.sh 15-day, Online demo, Odoo4projects trial), limits, upgrade paths 1400 "hosting odoo sin tarjeta"
17 /odoo-hosting/hosting-odoo-economico-2026/ Crawled-not-indexed DE/ES variants; price-sensitive buyer Tiered buyer guide: <30€, 30-80€, 80-200€, named providers per tier 1600 "hosting odoo económico"
18 /odoo-hosting/odoo-enterprise-hosting-2026/ Crawled-not-indexed ES/EN/DE/FR variants; high-value Enterprise-specific intent Enterprise hosting requirements: min SLA, dedicated support, GDPR, SAP migration path, price range 1800 "odoo enterprise hosting"
19 /odoo-hosting/hosting-odoo-mensual-2026/ Crawled-not-indexed across 5 language variants Monthly vs annual for 8 providers, contract flexibility, what's included, cancellation terms 1400 "hosting odoo mensual"
20 /odoo-hosting/odoo-on-premise-2026/ Crawled-not-indexed FR/DE variants; top-of-funnel decision 3-year TCO model: on-prem (hardware + sysadmin + upgrades) vs managed cloud, with decision flowchart 1800 "odoo on premise vs cloud"

3. Content-Derived Unique Title + Meta Generator (kills the 194 duplicate titles properly)

Why W5 did not solve this

W5 appended slug + lang as a suffix. The 194 duplicates remain because the underlying templated stem was identical across pages — only the appended suffix changed. Two pages with title stem "Guía Odoo Hosting" become "Guía Odoo Hosting — slug-A | es" and "Guía Odoo Hosting — slug-A | en" which are still semantically duplicate (and SERP-truncated).

The rule (run as a Node.js or Python codemod over all /index.html)

Pseudocode:

for each file in glob("**/index.html"):
  dom = parse(file)
  h1_text  = dom.querySelector("h1").innerText.trim()
  first_h2 = dom.querySelector("article h2, main h2").innerText.trim()
  sentences = extractSentences(dom.querySelector("article p, main p").innerText)
  sent1 = sentences[0]
  sent2 = sentences[1]

  # title (50-60 chars)
  h1_short = truncateAtWord(h1_text, 40)
  h2_tag   = extractNounPhrase(first_h2, maxChars=15)
  skipTags = {"Contenido","Resumen","Introducción"}
  if h2_tag and h2_tag not in skipTags:
    candidate = f"{h1_short}: {h2_tag} | Odoo Expertos"
  else:
    candidate = f"{h1_short} | Odoo Expertos"
  title = enforceMaxChars(candidate, 60)

  # meta (140-160 chars)
  combined = (sent1 + " " + sent2).strip()
  meta = combined if len(combined) <= 160 else (truncateAtWord(sent1, 140) + ".")

  # uniqueness gate
  if title in TITLE_REGISTRY:
    disambiguator = firstUniqueNoun(sent2, exclude=title)
    title = enforceMaxChars(f"{h1_short} {disambiguator} | Odoo Expertos", 60)

  TITLE_REGISTRY.add(title); META_REGISTRY.add(meta)
  dom.setTitle(title); dom.setMeta("description", meta)
  writeFile(file, dom.serialize())

Key regex for first body paragraph (excludes boilerplate):

const bodyP = Array.from(document.querySelectorAll('article p, main > p, .content p'))
  .filter(p => p.closest('nav,header,.toc,.breadcrumb,script,style') === null)
  .map(p => p.innerText.trim())
  .filter(p => p.length > 60)[0] || '';

5 worked examples

Ex 1/odoo-hosting/mejor-hosting-odoo-2026/

  • New title (55c): Mejor Hosting Odoo 2026: Panorama | Odoo Expertos
  • New meta (158c): El mercado de hosting para Odoo evolucionó en 2026. Con Odoo 18 e IA integrada, las opciones van desde 29€/mes hasta enterprise gestionado.

Ex 2/odoo-hosting/cloudpepper-vs-odoo-sh-2026/

  • New title (58c): Cloudpepper vs Odoo.sh 2026: Precios | Odoo Expertos
  • New meta (155c): La elección entre Cloudpepper y Odoo.sh determina costos y funcionalidad de tu Odoo. Comparamos precios, rendimiento y soporte para empresas en 2026.

Ex 3/odoo-hosting/odoo-community-vs-enterprise-hosting-2026/

  • New title (60c): Odoo Community vs Enterprise: Diferencias Clave 2026
  • New meta (148c): La decisión entre Community y Enterprise afecta costos de hosting, RAM necesaria y capacidades operativas. Guía con tabla de funciones y precios 2026.

Ex 4/odoo-hosting/comparativa-precios-odoo-2026/

  • New title (57c): Precios Hosting Odoo 2026: 15 Proveedores | Expertos
  • New meta (152c): Desde 12€/mes en VPS hasta 500€ en enterprise: comparamos precios reales de 15 proveedores de hosting Odoo en 2026 con análisis de costos ocultos y TCO.

Ex 5/odoo-hosting/odoo4projects-hosting-review-2026/

  • New title (55c): Odoo4projects Review 2026: Análisis | Odoo Expertos
  • New meta (156c): Odoo4projects: desde 29€/mes, usuarios ilimitados, IA integrada y soporte en español. Review completa con precios, pros/contras y comparación con Odoo.sh.

4. Cluster grouping for the 13 existing vs/review slugs

Cluster A — "Best Hosting Picker" (commercial / navigational)

Pillar: /odoo-hosting/mejor-hosting-odoo-2026/ Targets: "mejor hosting odoo", "hosting odoo recomendado", "qué hosting usar para odoo"

Spokes (exist, need deepening):

  • /odoo-hosting/mejores-proveedores-hosting-odoo-2026/ (ranked list)
  • /odoo-hosting/mejores-proveedores-hosting-odoo-2025/ (historical — see §5: 301 to 2026 or archive)
  • /odoo-hosting/opiniones-hosting-odoo-2026/ (social proof)
  • /odoo-hosting/odoo4projects-hosting-review-2026/ (deep-dive single provider)
  • /odoo-hosting/comparativa-precios-odoo-2026/ (price angle)

Pillar links to all 5 spokes; each spoke links back to pillar + 2 siblings.

Cluster B — "Head-to-Head Comparisons" (commercial / decision)

Pillar: /odoo-hosting/odoo-community-vs-enterprise-hosting-2026/ Targets: "odoo community vs enterprise", "qué edición odoo elegir"

Spokes:

  • /odoo-hosting/odoo-vs-sap-hosting-2026/ (cross-ERP)
  • /odoo-hosting/odoo-vs-zoho-books-hosting-2025/ (cross-category)
  • /odoo-hosting/cloudpepper-vs-odoo-sh-2026/ (provider-vs-provider)
  • /odoo-hosting/odoo-gratis-vs-pago-diferencias-2025/ (free vs paid licensing)

Pillar choice rationale: users can't choose a provider before they've chosen an edition.

Cluster C — "Alternatives & Escape Routes" (informational / commercial)

Pillar: /odoo-hosting/alternativas-odoo-sh-2026/ Targets: "alternativas odoo sh", "opciones hosting odoo"

Spokes:

  • /odoo-ia/alternativas-odoo-ia-comparativas-2025/ (AI-specific alternatives; dual-link to Cluster B is fine)
  • /odoo-hosting/odoo-gratis-vs-pago-diferencias-2025/ (shared with Cluster B)

Thinner cluster — candidates to add once content quality is up: "odoo sh review 2026", "self-hosted odoo vs odoo sh", "cloudpepper review 2026" (none exist as ES-root yet).


5. Cannibalization flags

Direct cannibalization to consolidate or 301:

  • /odoo-hosting/mejores-proveedores-hosting-odoo-2026/ vs …-2025/ — same query, year-separated; both crawled-not-indexed. Action: keep 2026, 301 the 2025 slug to 2026, archive 2025 content as a "market evolution" section inside the 2026 page.

  • /odoo-hosting/mejor-hosting-odoo-2026/ vs /odoo-hosting/mejores-proveedores-hosting-odoo-2026/ — heavy SERP overlap; both crawled-not-indexed. Action: explicit differentiation — "mejor" = single buyer's-choice recommendation; "mejores-proveedores" = ranked list with methodology. Make the pillar/spoke link relationship explicit.

  • /odoo-hosting/opiniones-hosting-odoo-2026/ vs review sections of …/odoo4projects-hosting-review-2026/ — no true cannibalization, but the opiniones page must link to the review page for every provider it mentions (currently zero cross-links).

  • /odoo-hosting/odoo-gratis-vs-pago-diferencias-2025/ — hosting-located but the query is also served by licensing content in /odoo/. Action: narrow this page to hosting cost implications only; move general licensing differences to an /odoo/ article with a cross-link.

  • /odoo-ia/alternativas-odoo-ia-comparativas-2025/ — once rewritten (§2 #10), scope strictly to AI-specific alternatives (SAP AI, MS Dynamics AI), not general Odoo alternatives — otherwise will compete with Cluster B pillar once that gains authority.