Commit Graph
10 Commits
Author SHA1 Message Date
oliver 89bb7b7cba i18n: publish the bootcamp page in DE + ES, cluster the EN page, price 465.00
- add de|es/odoo-erp-automation-bootcamp/index.html (build-i18n.py from the
  translator's files; canonical + hreflang cluster + top-bar selector)
- EN bootcamp page gains the four hreflang alternates (was asymmetric)
- price 790 -> 465.00 across all three pages (JSON-LD offers.price, the three
  buy-button labels, the bc-price sentence); the three buy forms stay
  byte-identical apart from the label language
- sitemap.xml: +/de/ and /es/odoo-erp-automation-bootcamp/; llms.txt: Languages
  section names the new pages
2026-10-24 22:38:21 +00:00
oliver b69e4ceaed i18n phase 2: publish DE + ES for odoo-hosting-2027.html and support.html
Four new pages, built from the verified translator output with work/i18n/build-i18n.py,
plus the same hreflang cluster and top-bar language selector on the two English pages.
Same recipe as the homepage pilot (main 937dbd4 / 06beab4); nothing else touched.

- de|es/odoo-hosting-2027.html, de|es/support.html: per-language canonical, the full
  hreflang cluster (en-US, de, es, x-default -> EN), /static/lang.js, and the switcher
  slot placed in the page's own top bar (.cmp-topbar on the 2027 page, .blog-header on
  support.html) with the per-shape CSS hook from I18N-BUILD-PLAN.md §3.
- odoo-hosting-2027.html, support.html: same cluster, same selector, so the cluster is
  symmetric (asymmetric hreflang is discarded by Google). support.html's canonical and
  og:url were still on the capitalised ODOO4projects.com host; the build normalises them
  to the lowercase form the rest of the site and sitemap.xml use.
- Internal links: the build's rebase step now also localises a root-absolute page link
  (/support.html#contact in the translator's 2027 pages) once that page exists in the
  language. /de/support.html, /de/odoo-hosting-2027.html, /de/, /de/#pricing and
  /de/#trialCard are local; /legal.html stays on the EN route because the legal pages
  are not translated (lawyer review pending).
- sitemap.xml: +4 URLs, lastmod 2026-10-24, priority reused from the EN entry (2027 -> 0.9,
  support.html -> 0.6 fallback, it has no EN entry). 17 -> 21 <loc>, no duplicates.
- llms.txt: the ## Languages section now names the mirrored pages.

Checks: verify-html.py PROBLEMS: 0; node --check static/lang.js OK; test-lang.js 31/31;
test-build.py 64/64 (was 43; +21 for the four built pages and the root-absolute rule);
check-links.py on the four new pages BROKEN/MISPLACED: 0.
2026-10-24 21:56:08 +00:00
oliver 0f5fb95b12 Publish the Odoo Bootcamp page at /odoo-erp-automation-bootcamp/ (fixes the ranking 404)
New directory page built from the copywriter's reviewed copy (webmaster/out copy:
/root/workspace/copywriter/out/2026-10-24-bootcamp-page-copy.md), with the four
placeholders resolved: Thursdays 16:00-17:00 (UTC-3), first session Thursday
8 January 2026 (ten sessions, last 12 March 2026), no price printed (price is
confirmed on registration, offers omitted from JSON-LD), booking CTA is
/support.html#contact.

- odoo-erp-automation-bootcamp/index.html: standalone landing page in the CI
  (midnight/brass/cream, Marcellus+Inter, page-scoped CSS, non-blocking
  style.css, no third-party JS), 8 H2 sections from the copy, Course + FAQPage
  JSON-LD, footer from index.html with the language-switcher slot.
- sitemap.xml: 16 -> 17 <loc> entries (lastmod 2026-10-24, priority 0.9).
- llms.txt: one line for the bootcamp under Key pages.

Verified: verify-html.py PROBLEMS 0 (FILES extended with the new page),
node --check script.js OK, no console errors at 1280/375, no horizontal
overflow at 375.
2026-10-24 21:33:25 +00:00
oliver 937dbd4dbf Publish German and Spanish homepage (/de/, /es/) with hreflang cluster and language switcher
Homepage pilot of the website i18n project. Adds the translated homepage for DE and
ES, the shared selector at /static/lang.js, and the hreflang cluster on all three
language versions (EN included, or the cluster is asymmetric and ignored).

- de/index.html, es/index.html: translator output plus the i18n build (html lang,
  self-referencing canonical, hreflang cluster, lang.js tag, switcher slot in the footer).
- index.html: same cluster + lang.js tag + switcher slot; canonical and og:url
  normalised to the lowercase host.
- static/lang.js: the tested selector (client-side language choice, auto-detect on the
  EN homepage only, once per session; a stored choice or ?lang= always wins).
- sitemap.xml: /de/ and /es/ (priority 1.0, lastmod 2026-10-24).
- llms.txt: new '## Languages' section.

Two gaps in the build recipe were closed while building: a mirrored page cannot use
root-relative source paths (style.css, images/* would resolve to /de/style.css -> 404),
so the build now re-points assets at the site root and keeps page links on the EN route
until the language page exists; and og:url is now this page's own URL instead of the
EN one inherited from the source. Not built yet: support.html, odoo-hosting-2027.html,
the blog, the bootcamp page, the legal pages.
2026-10-24 21:22:13 +00:00
oliver 62d9d76bde Add supplied post images to two posts and to the blog overview cards
- blog/posts/odoo-19-to-20-invoice-migration-with-n8n-and-mcp.html: in-post image
  much.png + og:image
- blog/posts/track-the-oca-modules-you-actually-use.html: in-post image
  oca_module_status.png + og:image
- blog/index.json: optional "image" key on those two entries only (text splice)
- script.js: renderBlog() draws .blog-thumb only when the entry carries an image
- style.css: .blog-thumb rule
- sitemap.xml: lastmod 2026-10-24 for the invoice-migration post

Built by profile webmaster (run 20261024_094206_5c4f28, verified PROBLEMS: 0 /
node --check OK); committed by olchi after that run died on an OpenRouter 402.
2026-10-24 09:46:13 +00:00
oliver 7b9db81e82 Publish blog post: Track the OCA Modules You Actually Use — Without Refreshing GitHub Every Day 2026-10-24 08:57:30 +00:00
oliver 76e5645585 Publish blog post: This is how i updated my Invoices from Odoo 19 to Odoo 20 with n8n and much MCP 2026-10-23 09:25:02 +00:00
oliver 93511e893d fix(site): correct prices, drop every discount claim and repair trial copy
Applies the 16 findings the user answered in projects/active/odoo-hosting-2027-landing/
decisions-2026-10-21-user.md, using the wording from
copywriter/out/site-fix-wording-2026-10-21.md.

index.html: Powerhouse 535 -> 595 in the card and in the JSON-LD Offer; delete the
three Save 8%/9%/10% badges and the empty badge div on the Empire card; replace the
'Save 15% with yearly billing' line and the coupon message text (ids kept - script.js
reads them); delete the FREE TRIAL coupon input block; qualify the checkout line as
'Card required to buy, not to start'; fix 'redundant slots' to the real rotating-slot
model; drop the 'coupon codes for startups and NGOs' promise; add Privacy and Terms to
the footer.

email/trial-confirmation.html: stop promising backups, domain mapping and SSL on the
trial (the trial has none); state what the trial is not; copyright 2024 -> 2026;
repoint Privacy/Terms from the 404 /legal/privacy and /legal/terms to the new pages.

support.html: state that custom and OCA modules install from On the Rise up and that
Side Hustle has no module installation.

odoo/upsell.html: '4 weeks free' -> '30 days free'.

blog: the backup speed-run no longer sends readers to a non-existent hosting
dashboard; my-first-post loses the 30-day refund promise and the dashboard domain
step; community-vs-enterprise-cost quotes $214/year instead of $19.40/month;
odoocommunity-agents drops 'per-seat licensing' from the body and both meta
descriptions.

sitemap.xml: add /privacy.html and /terms.html.
llms.txt: publish the Powerhouse price and list the two new pages.

Evidence: every old string verified gone and every new string present in the working
tree; 12 HTML files tag-balanced; JSON-LD and sitemap XML valid.
2026-10-21 23:05:22 +00:00
oliver db919fc8c2 feat(landing): add Odoo Hosting 2027 comparison page
New page odoo-hosting-2027.html (feature + lifetime-cost comparison tables,
Odoo Online exclusion, Enterprise growth path, JSON-LD). Links it from the
homepage pricing CTA, adds it to sitemap.xml, adds llms.txt for AI-SEO.
2026-10-21 22:20:45 +00:00
oliver feaa5e6f62 update 2026-06-24 08:27:22 -03:00