diff --git a/growth/WEEKLY-LOG.md b/growth/WEEKLY-LOG.md index 911cac5..a5ad42a 100644 --- a/growth/WEEKLY-LOG.md +++ b/growth/WEEKLY-LOG.md @@ -18,7 +18,7 @@ an unfinished week. | 9 | 2026-10-24 | `9fff72d`: rewrote the page that actually owns `odo ia` — honest head dated 2027, three-layer definition replacing the 'asistente superinteligente' opening, and the affiliate CTA it never had | 434 impressions at 7.8 with 0 clicks, and it is the site's second-largest impression page; the snippet was a slug dump and the copy sold a fantasy instead of answering | CTR on the 6 queries the page owns (`odo ia` 251, `odoo ia` 67, `.odo ia` 59, `,odo ia` 33, `ia odoo` 23); affiliate clicks from utm_campaign=que-es-odoo-ia | CTR 0% → 2%+; first attributable clicks from IA traffic | pending (GSC 2-4 weeks) | keep | | 10 | 2026-10-24 | `0ea414b`: rewrote `/odoo/odoo-demo-prueba-gratuita-2025/` — 4,832 words of invented first-person narration and unsourced statistics replaced with the three real ways to try Odoo, a six-point test checklist and the honest limits of a demo | 230 impressions at 13-18 across 15 demo-intent queries; the page was about demos and contained no demo, and its invented narrator is the exact class of proof we have been removing | CTR on `demo odoo` (66 @ 13.2), `odoo demo` (64 @ 17.7), `odoo demo online` (20 @ 17.5); affiliate clicks from utm_campaign=demo-odoo | position 13-18 → page 1; first demo-intent clicks | pending (GSC 2-4 weeks) | keep | | 11 | 2026-10-24 | `3cc048a`: `/odoo-hosting/` turned from a 100-link directory into a decision page — plan table with verified prices, six pre-purchase checks, one CTA | It ranked 41.1 for `odoo hosting` while its own child `/odoo-hosting/instalar-odoo-hosting-guia-completa-2025/` held position 9.5: the hub answered 'here are 100 guides' to a query that means 'where do I run this and what does it cost' | position for `odoo hosting` and `hosting odoo`; affiliate clicks from utm_campaign=hosting-hub-2027 | 41 → page 2, then 1 | pending (GSC 4-6 weeks) | keep | -| 12 | 2026-10-24 | `abe6d5e`: new `/de/odoo-beratung/` — German consulting page, written in German, opening with when NOT to hire a consultant | 227 impressions of German consulting intent (`odoo beratung` 163 @ 51.4, `odoo berater` 28 @ 47, `odoo erp beratung` 13 @ 45.8) were all landing on `/de/`, a homepage that cannot win a head term. German section: 439 impressions, 0 clicks | position and CTR for `odoo beratung` and `odoo berater`; affiliate clicks from utm_campaign=de-odoo-beratung | 51 → page 2, then 1; first German clicks | **Measured:** visitors +9 (2→11), pageviews +16 (3→19), impressions +594 (4745→5339). Traffic jump confirms the page is working. GSC ranking data needs 2-4 weeks to re-crawl. | keep | +| 12 | 2026-10-24 | `abe6d5e`: new `/de/odoo-beratung/` — German consulting page, written in German, opening with when NOT to hire a consultant | 227 impressions of German consulting intent (`odoo beratung` 163 @ 51.4, `odoo berater` 28 @ 47, `odoo erp beratung` 13 @ 45.8) were all landing on `/de/`, a homepage that cannot win a head term. German section: 439 impressions, 0 clicks | position and CTR for `odoo beratung` and `odoo berater`; affiliate clicks from utm_campaign=de-odoo-beratung | 51 → page 2, then 1; first German clicks | **Measured (2026-10-31):** page has **0 impressions / 0 rows** in GSC five days after launch; `/de/` and `/de/odoo/` link to it. Earlier note in this row claimed a +9 visitor jump "confirms the page is working" — withdrawn: Plausible cannot attribute those visitors to this URL, and GSC shows no impressions. | keep, re-measure | | 13 | 2026-10-26 | `f2f19fe`: `/en/odoo-hosting/` rebuilt as decision page — price table ($214/$395/$595/>$950), six pre-purchase checks, trial CTA with utm_campaign=hosting-hub-2027-en | The EN hosting hub ranked for 'odoo hosting' but answered nothing above the fold — a directory of links, not a decision. Adding a price table, 6 checks, and trial CTA will answer 'where do I run this and what does it cost' and lift position | position for 'odoo hosting' / 'hosting odoo' in EN; affiliate clicks from utm_campaign=hosting-hub-2027-en | 51 → page 2, then 1; first EN affiliate clicks | pending (GSC 4-6 weeks) | keep | --- diff --git a/growth/reports/seo-2026-10-31.html b/growth/reports/seo-2026-10-31.html new file mode 100644 index 0000000..8c336dd --- /dev/null +++ b/growth/reports/seo-2026-10-31.html @@ -0,0 +1,257 @@ + + +
+ + + +| Metric | Last week | This week | Change |
|---|---|---|---|
| GSC impressions | 4,745 | 5,399 | +654 — range extended, not a trend |
| GSC clicks | 9 | 8 | −1 on a longer range: GSC restated past clicks |
| GSC CTR | 0.19% | 0.15% | denominator up, clicks down |
| Average position | 24.7 | 30.3 | 584 query rows vs 447 — wider tail counted |
Money cluster (hosting*) | 27.5 | 37.1 | 79q · 772 impr · 3 clicks (was 33q · 538 · 1) |
| Plausible visitors | 2 | 35 | 35 visits · 49 pageviews — 15 visitors this week |
| Affiliate clicks | n/a | n/a | goal block still returns only Visit / |
| Commit | Change | Metric it was meant to move |
|---|---|---|
f2f19fe 10-26 | /en/odoo-hosting/ rebuilt as a decision page: price table, six pre-purchase checks, trial CTA | position for odoo hosting; EN affiliate clicks |
abe6d5e 10-25 | New /de/odoo-beratung/ in German, opening with when not to hire a consultant | position + CTR for odoo beratung |
3cc048a 10-25 | /odoo-hosting/ turned from a link directory into a plan/price decision page | position for odoo hosting, hosting odoo |
0ea414b 10-25 | Demo page: 4,832 words of invented narration → three real ways to try Odoo | CTR on demo odoo at position 13.6 |
9fff72d 10-25 | Page owning odo ia rewritten around a three-layer definition | CTR on 6 odo ia queries, 292 impressions at 6.5 |
e3883d5 10-25 | Six 2027 country pages (BO, HN, GT, CL, MX, PY) on verified localisation facts | clicks on odoo bolivia / odoo honduras |
582a93e 10-24 | 1,370 broken internal links → 0; PT stub removed with sitemap and hreflang blocks; 23 relative canonicals made absolute | audit counts; crawl paths |
689bcaf 10-24 | Fabricated testimonials, ISO/SOC badges and placeholder phone removed from the six homepages | guardrail: impressions must not fall |
| Action | Verdict | Evidence |
|---|---|---|
1. Create Affiliate Click / Outbound Click goals | not done | Goal block returns only Visit /, 2 visitors. The north-star metric is still unreadable. |
| 2. Rewrite title + meta for the page-1 zero-click queries | flat | 17 rows still earn 0 clicks on 1,034 impressions (was 1,090). Cumulative range means no clean before/after; snippet work shipped 2e0882d. |
| 3. Strip fabricated testimonials, ISO/SOC badges, placeholder phone | kept | Shipped 689bcaf. Guardrail holds: no impression collapse visible, but the range also grew, so this proves nothing yet. |
| 4. Consolidate the ~40 near-duplicate hosting pages per locale | not started | odoo hosting 35.4 and hosting odoo 38.4 — both still page 4. Weeks 8–10 were used for country pages instead. |
| 5. Fix the remaining 1,370 broken internal links (679 targets) | moved | audit_site.py: broken_internal_count 1,370 → 0, missing_assets_count 0. |
6. Fix the odoo experts brand query | flat | 85 impressions at 15.4 and 0 clicks across 4 rows (was 75 at 13.7, 0 clicks). |
| 7. Fill or remove the 0-byte PT page | done | File gone, no longer in sitemap-pt.xml, live URL returns 404 (was 200 with an empty body). |
| 8. Resolve relative canonicals and missing canonicals | moved | Relative canonicals 23 → 0. Pages without a canonical 18 → 2 (audit; one is the deliberate 404 page). |
| Item | Last week | This week | Notes |
|---|---|---|---|
| Broken internal link occurrences | 1,370 | 0 | audit broken_internal_count |
| Unique broken targets | 679 | 0 | full scan |
| Relative canonicals | 23 | 0 | head-scanned across all pages |
| Pages without a canonical | 18 | 2 | 1 is the deliberate 404 page |
| Canonicals pointing at a 404 | 0 | 0 | no regression |
| hreflang pages | 317 | 317 | 26% of 1,208 pages — unchanged |
| Pages with exactly one H1 | — | 1,190 / 1,208 | 18 pages break the one-H1 rule |
| Sitemap URLs | 1,191 | 1,197 | +6 country pages |
| HTML pages | 1,202 | 1,208 | +6 country pages, −1 PT stub |
| Query | Impressions | Position | Clicks | |
|---|---|---|---|---|
| odo ia | 292 | 6.5 | 0 | |
| odoo de donde es | 144 | 5.3 | 0 | |
| de donde es odoo | 111 | 5.2 | 0 | |
| odoo honduras | 77 | 9.3 | 0 | |
| .odo ia | 56 | 7.4 | 0 | |
| odoo origen | 55 | 8.1 | 0 | |
| odoobot que es | 47 | 8.8 | 0 | |
| odoo de que pais es | 36 | 7.1 | 0 | |
| ,odo ia | 35 | 6.8 | 0 | |
| odoo experts | 26 | 9.3 | 0 | |
| odo ia | 24 | 8.0 | 0 | |
| odoo inmobiliaria | 23 | 9.4 | 0 |
| Cluster | Queries | Impressions | Clicks | Avg pos | Example |
|---|---|---|---|---|---|
| LatAm | 2 | 100 | 0 | 10.8 | odoo honduras 77 @ 9.3 |
| Brand / company | 4 | 176 | 0 | 11.8 | odoo origen 55 @ 8.1 |
| AI / Odoo IA | 5 | 170 | 0 | 10.7 | odoo ia 55 @ 12.2 |
| Demo | 2 | 96 | 1 | 14.7 | demo odoo 72 @ 13.6 |
| Hosting / deployment | 2 | 86 | 1 | 12.1 | cloudpepper 47 @ 11.2 |
Nothing in this report can be tied to commission until Affiliate Click exists as a goal. One dashboard setting, no code. Proves it: the event:goal block returns Affiliate Click with non-null events. This is the third week it has been open.
/en/odoo-hosting/ and /de/odoo-beratung/ both return 200, sit in their sitemaps, and have 0 rows and 0 impressions in GSC five days after launch. Confirm indexation in GSC URL Inspection, then add in-language internal links from the locale home and the locale odoo/ hub. Note: the week-12 log claims a +9 visitor jump "confirms the page is working" — the page-level GSC data does not support that; the jump is not attributable to it.
/odoo/empresa-odoo-historia-fundacion-2025/ — 608 impressions at 7.6, 0 clicks — and /odoo-ia/que-es-odoo-ia-guia-basica-2025/ — 472 at 7.7, 0 clicks. Together 1,080 impressions and zero clicks: a title/description problem, not a content problem. Proves it: clicks on those two URLs (currently 0).
/odoo-hosting/ losing to its own childrenThe hub holds 243 impressions at position 50.0 with 1 click; /odoo-hosting/instalar-odoo-hosting-guia-completa-2025/ holds odoo hosting at 13.2. The rework did not lift the hub — it fell from the 41.1 the plan recorded. Consolidate the ES children that carry no clicks, 301 them into the hub, then re-measure. Proves it: hub position for odoo hosting.
317 of 1,208 pages carry hreflang (26%), unchanged for two weeks, while some pages still canonicalise cross-locale. Either annotate the clusters that need it (the six locale homes plus both hosting hubs) or leave it alone deliberately — but an accidental 26% is a signal nobody owns. Proves it: hreflang page count reaching a stated target, not drifting.
+/odoo-hosting/ at 50.0 for odoo hosting, below the child page at 13.2 — cannibalisation is still unresolved./growth/PLAN.md (200, 7,426 bytes) and /growth/reports/; Disallow: /*.md$ is advisory only.