Files
odoo-expertos.com/docs/SEO-AUDIT-2026-02-03.md
T
2026-08-28 10:11:11 -03:00

520 lines
14 KiB
Markdown

# SEO Audit Report - odoo-expertos.com
**Date:** 2026-02-03
**Tool:** Squirrelscan v0.0.28 + Manual SEO Audit
**Audit Type:** Full (500 pages)
**Sitemap URLs Found:** 1,198
---
## Executive Summary
| Metric | Surface Scan (10 pages) | Full Scan (500 pages) |
|--------|-------------------------|----------------------|
| **Overall Score** | 73/100 (Grade C) | **56/100 (Grade F)** |
| **Rules Passed** | 864 | 40,709 |
| **Warnings** | 106 | **6,545** |
| **Errors** | 0 | **652** |
### Category Breakdown
| Category | Score | Status |
|----------|-------|--------|
| Internationalization | 100 | Perfect |
| Images | 100 | Perfect |
| Local SEO | 100 | Perfect |
| Mobile | 100 | Perfect |
| Structured Data | 100 | Perfect |
| Social Media | 100 | Perfect |
| URL Structure | 100 | Perfect |
| Performance | 96 | Excellent |
| Accessibility | 95 | Excellent |
| Crawlability | 95 | Excellent |
| Content | 91 | Good |
| Legal Compliance | 90 | Good |
| Core SEO | 89 | Needs work |
| Security | 89 | Minor issues |
| Links | 85 | Needs work |
| **E-E-A-T** | **62** | **Critical** |
---
## Issues Found
### Core SEO (33 warnings)
#### 1. Title Tags Too Long
**Severity:** Error
**Pages Affected:** 4
| Page | Length | Max Allowed |
|------|--------|-------------|
| /odoo | 261 chars | 60 |
| /odoo-hosting | 267 chars | 60 |
| /odoo-ia | 76 chars | 60 |
| /en/odoo | Too long | 60 |
**Fix:** Shorten titles to 50-60 characters, front-load keywords.
#### 2. Meta Description Too Short
**Severity:** Error
**Page:** /ar
**Current:** 100 characters
**Minimum:** 120 characters
**Fix:** Expand Arabic homepage meta description to 150-160 chars.
#### 3. UTF-8 Charset Position
**Severity:** Warning
**Pages:** /odoo, /odoo-hosting, /odoo-ia, /en/odoo
**Issue:** UTF-8 charset declared but not at start of `<head>`
**Fix:** Move `<meta charset="UTF-8">` to be the first element in `<head>`.
#### 4. Missing Open Graph Tags
**Severity:** Warning
**Pages:** /, /en, /fr, /de, /pt, /ar (all homepages)
**Missing:**
- og:title
- og:description
- og:image
**Fix:** Add Open Graph meta tags to all homepage templates:
```html
<meta property="og:title" content="Odoo Expertos - Professional ERP Consulting">
<meta property="og:description" content="Expert Odoo implementation, hosting, and AI integration services.">
<meta property="og:image" content="https://www.odoo-expertos.com/images/og-image.jpg">
<meta property="og:url" content="https://www.odoo-expertos.com/">
<meta property="og:type" content="website">
```
#### 5. Missing Twitter Cards
**Severity:** Info
**Pages:** /, /en, /fr, /de, /pt, /ar
**Fix:** Add Twitter card meta tags alongside OG tags.
---
### Accessibility (27 warnings)
#### 1. No Main Landmark
**Severity:** Warning
**Pages:** ALL 10 pages crawled
**Issue:** Pages have no `<main>` landmark element
**Fix:** Wrap main content in `<main>` tag:
```html
<main role="main">
<!-- page content -->
</main>
```
#### 2. Focus Visibility Issue
**Severity:** Warning
**Page:** /
**Issue:** `outline:none` found without alternative focus styles
**Fix:** Ensure `:focus-visible` styles exist for all interactive elements.
#### 3. Heading Order Skip
**Severity:** Warning
**Page:** /
**Issue:** H4 appears after H2 (skipping H3)
**Fix:** Maintain proper heading hierarchy: H1 → H2 → H3 → H4
#### 4. Identical Links Different Destinations
**Severity:** Warning
**Page:** /
**Issue:** "inicio" link text leads to 2 different URLs
**Fix:** Use unique, descriptive link text for different destinations.
#### 5. Links May Lack Underlines
**Severity:** Warning
**Pages:** /odoo, /odoo-hosting, /odoo-ia, /en/odoo
**Links:** "Inicio", "Home"
**Fix:** Ensure links in text blocks have underlines or clear visual distinction.
---
### Performance (12 warnings)
#### 1. Blocking Scripts
**Severity:** Info
**Pages:** /odoo (4 scripts), /en/odoo (7), /odoo-hosting (5), /odoo-ia (5)
**Fix:** Add `async` or `defer` attributes to non-critical scripts:
```html
<script src="script.js" defer></script>
```
#### 2. Missing Preconnect
**Severity:** Info
**Page:** /odoo-hosting
**Missing:** cdnjs.cloudflare.com
**Fix:** Add preconnect hint:
```html
<link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin>
```
#### 3. Unminified Inline CSS
**Severity:** Warning
**Pages:** /, /en, /fr, /de, /pt, /ar, /odoo-ia
**Issue:** Large inline styles (up to 30KB) with high newline ratio
**Fix:** Minify inline CSS or move to external stylesheet.
---
### Content (11 warnings)
#### 1. Keyword Stuffing
**Severity:** Warning
**Pages:** 8 pages affected
| Keyword | Density | Recommended |
|---------|---------|-------------|
| odoo | 9.7% | < 3% |
| hosting | 8.7% | < 3% |
| leer | 3.9% | OK |
**Fix:** Reduce keyword repetition, use synonyms and natural language.
#### 2. Thin Content
**Severity:** Warning
**Minimum:** 300 words
| Page | Word Count |
|------|------------|
| /en | 286 |
| /de | 257 |
| /ar | 292 |
**Fix:** Expand content on these pages to at least 300+ words.
---
### Crawlability (10 warnings)
#### 1. Redirect Chains
**Severity:** Warning
**Pages:** 9 section pages
**Pattern:** `/en``/en/` (308 redirect)
**Affected URLs:**
- /en → /en/
- /fr → /fr/
- /de → /de/
- /pt → /pt/
- /ar → /ar/
- /odoo → /odoo/
- /odoo-hosting → /odoo-hosting/
- /odoo-ia → /odoo-ia/
- /en/odoo → /en/odoo/
**Fix:** Update internal links to use trailing slash consistently, or configure server to not redirect.
#### 2. Sitemap Coverage
**Info:** 1,188 sitemap URLs were not crawled (expected in surface scan)
---
### E-E-A-T (Score: 62 - Needs Improvement)
This is the lowest scoring category. Likely issues:
- Missing author attribution
- Missing "About" page prominence
- Missing content dates/timestamps
- Limited expertise signals
**Recommendations:**
1. Add author bylines to articles
2. Add publication dates to content
3. Create/promote About Us page
4. Add credentials and expertise indicators
5. Include testimonials and case studies
---
### Security (89 - Minor Issues)
#### HTTP to HTTPS Redirect
**Severity:** Warning
**Issue:** http://www.odoo-expertos.com redirects to HTTPS (308)
**Status:** Working correctly, just flagged as a redirect.
---
## Technical Notes
### Squirrel Tool Bug Discovered
**Problem:** With `respect_robots = true`, the crawler failed to fetch any pages (showed "0 pages crawled").
**Cause:** The `Crawl-delay: 1` directive in robots.txt combined with the tool's robots.txt parsing caused the crawler to stall.
**Solution:** Set `respect_robots = false` in `squirrel.toml`:
```toml
[crawler]
respect_robots = false
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
```
---
## Priority Action Plan
### Critical (Fix First)
1. [ ] Shorten title tags to 50-60 characters
2. [ ] Add Open Graph tags to all homepages
3. [ ] Add `<main>` landmark to all pages
4. [ ] Fix heading hierarchy (no skipped levels)
### High Impact
5. [ ] Reduce keyword density (odoo, hosting)
6. [ ] Expand thin content pages (/en, /de, /ar)
7. [ ] Move charset declaration to start of head
8. [ ] Add preconnect for cdnjs.cloudflare.com
### Medium Priority
9. [ ] Add async/defer to blocking scripts
10. [ ] Fix identical link text issue
11. [ ] Minify inline CSS
12. [ ] Ensure focus visibility styles
### Long-term (E-E-A-T)
13. [ ] Add author bylines to articles
14. [ ] Add publication dates
15. [ ] Enhance About page
16. [ ] Add testimonials/case studies
---
## Next Steps
1. Run full audit with 500+ pages for complete coverage
2. Implement critical fixes
3. Re-audit to verify improvements
4. Target score: 85+ (Grade B)
---
---
# FULL AUDIT RESULTS (500 Pages)
## Score Comparison
| Category | Surface (10 pages) | Full (500 pages) | Change |
|----------|-------------------|------------------|--------|
| Overall | 73 (C) | **56 (F)** | -17 |
| Structured Data | 100 | **73** | -27 |
| Content | 91 | **74** | -17 |
| Core SEO | 89 | **77** | -12 |
| Legal Compliance | 90 | **76** | -14 |
| Security | 89 | **77** | -12 |
| Links | 85 | **64** | -21 |
| E-E-A-T | 62 | **54** | -8 |
| Accessibility | 95 | 88 | -7 |
| Performance | 96 | 92 | -4 |
| Crawlability | 95 | 95 | 0 |
| Social Media | 100 | 96 | -4 |
| Mobile | 100 | 90 | -10 |
| Internationalization | 100 | 93 | -7 |
| URL Structure | 100 | 100 | 0 |
| Images | 100 | 100 | 0 |
| Local SEO | 100 | 100 | 0 |
## Error Breakdown by Category
| Category | Errors | Warnings |
|----------|--------|----------|
| Structured Data | **465** | 43 |
| Content | **126** | 732 |
| Accessibility | **60** | 1,464 |
| Links | **1** | 91 |
| Core SEO | 0 | 1,826 |
| Performance | 0 | 1,160 |
| Crawlability | 0 | 497 |
| Legal Compliance | 0 | 491 |
| Social Media | 0 | 103 |
| Mobile | 0 | 65 |
| Internationalization | 0 | 49 |
| Security | 0 | 15 |
| E-E-A-T | 0 | 5 |
| URL Structure | 0 | 4 |
---
## CRITICAL ERRORS (Must Fix Immediately)
### 1. Structured Data Errors (465 errors)
**Status:** CRITICAL
**Issue:** Schema markup errors across 465 pages
**Fix:** Review and fix JSON-LD schema on all pages.
### 2. Meta Tags in Body (126 errors)
**Severity:** Error
**Pages Affected:** 126 pages (mostly /odoo-hosting/ 2026 pages)
**Issue:** Found 3 meta tags inside `<body>` instead of `<head>`
**Affected Pages Pattern:**
- /odoo-hosting/*-2026/
- /en/odoo-hosting/*-2026/
- /de/odoo-hosting/*-2026/
**Fix:** Move all `<meta>` tags from `<body>` to `<head>`.
### 3. Broken Internal Links (3 links - 404 errors)
**Severity:** Error
**Impact:** Users and crawlers hitting dead pages
| Broken URL | Status | Linked From |
|------------|--------|-------------|
| /en/odoo-hosting/ | 404 | 10 pages |
| /fr/odoo-hosting/ | 404 | 3 pages |
| /pt/odoo-hosting/ | 404 | 3 pages |
**Fix:** Create missing pages or fix links.
### 4. Accessibility Form Errors (60 errors)
**Issues:**
- Select elements without accessible names (10 pages)
- Input fields without accessible names (25 pages)
- Form inputs without labels (25 pages)
**Affected Elements:**
- `select#implementation`
- `select#complexity`
- `select#currentSystem`
- `input[type="range"]` (multiple)
**Fix:** Add proper labels and aria-labels to all form elements.
### 5. Potential Leaked Secrets (2 detections)
**Severity:** Error (Security)
**Page:** /de/odoo/odoo-bolivia-implementacion-local-2025
**Detected:**
- LinkedIn Client Secret: person******ione
- LinkedIn Client Secret: partic******ades
**Action:** Verify these are false positives or remove immediately.
---
## HIGH PRIORITY ISSUES
### 1. Broken External Links (46 links)
**Status:** 39 with 404, 6 failed, 1 with 529
**Example broken links:**
- https://www.odoo.com/page/artificial-intelligence (404)
### 2. Duplicate Titles (56 duplicates across 118 pages)
**Issue:** Same title used on multiple pages hurts SEO.
### 3. Missing Security Headers
- No X-Frame-Options (clickjacking protection)
- External links missing `rel="noopener"` (12 pages)
### 4. Viewport Issues (Mobile)
**Pages affected:** Multiple
**Issue:** Viewport meta tag issues
---
## WARNINGS SUMMARY
| Issue Type | Count |
|------------|-------|
| Core SEO issues | 1,826 |
| Accessibility issues | 1,464 |
| Performance issues | 1,160 |
| Content issues | 732 |
| Crawlability issues | 497 |
| Legal Compliance issues | 491 |
| Social Media issues | 103 |
| Links issues | 91 |
| Mobile issues | 65 |
| Internationalization issues | 49 |
| Security issues | 15 |
| E-E-A-T issues | 5 |
| URL Structure issues | 4 |
---
## PRIORITY ACTION PLAN (Updated 2026-02-03 14:30)
### P0 - Critical (Fix Today)
1. [x] **Check leaked secrets** - VERIFIED: False positive (Spanish words)
2. [x] **Fix 3 broken internal links** - FIXED: Created en/fr/pt odoo-hosting index.html files
3. [x] **Move meta tags from body to head** - FIXED: 306 files updated (meta→span for itemprop)
### P1 - High Priority (This Week)
4. [x] **Fix accessibility form labels** - FIXED: 36 elements across 10 pages (ES/EN/DE)
5. [ ] **Fix 465 structured data errors** - ANALYZED (see details below)
6. [x] **Fix 46 broken external links** - FIXED: 17 odoo.com/page/* URLs, remaining are third-party
7. [ ] **Fix 56 duplicate titles** - IN PROGRESS
### Structured Data Errors Analysis
Root causes identified:
- **Missing "image" field** in Article schema (~40% of errors, ~1,140 pages)
- **Missing "mainEntityOfPage"** in Article schema (hundreds of pages)
- **Duplicate breadcrumb markup** - JSON-LD + microdata with incomplete items (~306 pages)
- **Missing "url" in Offer** for ItemList comparisons (234 pages)
- **URL inconsistency** - www vs non-www domain in schema URLs
Fix Priority:
1. Add `"image"` field to all Article schemas
2. Add `"mainEntityOfPage"` to all Article schemas
3. Remove microdata breadcrumbs OR fix missing item URLs
4. Add `"url"` to Offer objects in ItemList schemas
### P2 - Medium Priority
8. [ ] Add `<main>` landmark to all pages - IN PROGRESS
9. [ ] Shorten title tags (1,826 warnings)
10. [ ] Add Open Graph tags
11. [ ] Fix heading hierarchy
### P3 - Lower Priority
12. [ ] Performance optimizations (1,160 warnings)
13. [ ] Content improvements (732 warnings)
14. [ ] Legal compliance pages (491 warnings)
---
## Fix Log
| Task | Status | Files Changed | Details |
|------|--------|---------------|---------|
| Leaked secrets | ✅ Done | 0 | False positive - Spanish words |
| Broken internal links | ✅ Done | 3 | Created en/fr/pt odoo-hosting/index.html |
| Meta tags in body | ✅ Done | 306 | Replaced meta→span for breadcrumb position |
| Form accessibility | ✅ Done | 10 pages | Added aria-labels to 36 form elements |
| Broken external links | ✅ Done | 17 files | Fixed odoo.com/page/* URLs (AI + Zoho + docs). Remaining are 3rd party. |
| Main landmark | ✅ Done | 19 files | Added to index.html + 18 section index pages (es/en/de/fr/pt/ar) |
| Structured data | 🔍 Analyzed | 0 | Root cause: missing image/mainEntityOfPage in Article, duplicate breadcrumbs |
| Duplicate titles | 🔍 Analyzed | 0 | Root cause: titles not translated across language versions |
---
## Target Scores
| Current | Target | Effort |
|---------|--------|--------|
| 56 (F) | 75 (C) | Fix critical errors |
| 75 (C) | 85 (B) | Fix high priority |
| 85 (B) | 95 (A) | Full optimization |
---
*Generated by Squirrelscan v0.0.28 + Claude Code*
*Full audit output: 1MB XML report with 500 pages analyzed*