14 KiB
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:
<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:
<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:
<script src="script.js" defer></script>
2. Missing Preconnect
Severity: Info Page: /odoo-hosting Missing: cdnjs.cloudflare.com
Fix: Add preconnect hint:
<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:
- Add author bylines to articles
- Add publication dates to content
- Create/promote About Us page
- Add credentials and expertise indicators
- 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:
[crawler]
respect_robots = false
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
Priority Action Plan
Critical (Fix First)
- Shorten title tags to 50-60 characters
- Add Open Graph tags to all homepages
- Add
<main>landmark to all pages - Fix heading hierarchy (no skipped levels)
High Impact
- Reduce keyword density (odoo, hosting)
- Expand thin content pages (/en, /de, /ar)
- Move charset declaration to start of head
- Add preconnect for cdnjs.cloudflare.com
Medium Priority
- Add async/defer to blocking scripts
- Fix identical link text issue
- Minify inline CSS
- Ensure focus visibility styles
Long-term (E-E-A-T)
- Add author bylines to articles
- Add publication dates
- Enhance About page
- Add testimonials/case studies
Next Steps
- Run full audit with 500+ pages for complete coverage
- Implement critical fixes
- Re-audit to verify improvements
- 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#implementationselect#complexityselect#currentSysteminput[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:
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)
- Check leaked secrets - VERIFIED: False positive (Spanish words)
- Fix 3 broken internal links - FIXED: Created en/fr/pt odoo-hosting index.html files
- Move meta tags from body to head - FIXED: 306 files updated (meta→span for itemprop)
P1 - High Priority (This Week)
- Fix accessibility form labels - FIXED: 36 elements across 10 pages (ES/EN/DE)
- Fix 465 structured data errors - ANALYZED (see details below)
- Fix 46 broken external links - FIXED: 17 odoo.com/page/* URLs, remaining are third-party
- 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:
- Add
"image"field to all Article schemas - Add
"mainEntityOfPage"to all Article schemas - Remove microdata breadcrumbs OR fix missing item URLs
- Add
"url"to Offer objects in ItemList schemas
P2 - Medium Priority
- Add
<main>landmark to all pages - IN PROGRESS - Shorten title tags (1,826 warnings)
- Add Open Graph tags
- Fix heading hierarchy
P3 - Lower Priority
- Performance optimizations (1,160 warnings)
- Content improvements (732 warnings)
- 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