Skip to content

feat(seo): add an English and Chinese page for people searching for ONLYOFFICE - #203

Merged
chaxus merged 3 commits into
mainfrom
onlyoffice-landing-page
Aug 23, 2026
Merged

feat(seo): add an English and Chinese page for people searching for ONLYOFFICE#203
chaxus merged 3 commits into
mainfrom
onlyoffice-landing-page

Conversation

@chaxus

@chaxus chaxus commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Why a page rather than editing the existing titles

The idea on the table was to work "ONLYOFFICE" into the titles and descriptions the site already has. Measured against what search results actually display, that does not work:

title median / limit description median / limit
en 57 / ~60 chars 184 / ~155
zh-CN 30 / ~30 chars 91 / ~78

Both fields are already at or past the point where they get truncated, so adding ten characters either pushes an existing keyword out or lands in the part nobody sees. And the queries those pages target ("edit docx in browser", "纯前端 在线编辑 word") do not contain the word at all — 7 of 154 descriptions mention ONLYOFFICE today, 0 titles.

A dedicated page has neither problem, and it can answer what that searcher actually wants to know.

What the page says

  • The editors and the x2t converter are the real ones, compiled to WebAssembly; there is no Document Server to install.
  • A whole section on how it differs from ONLYOFFICE Docs — no collaboration, no connectors, no admin, your own memory does the work. Being honest about that is more useful to this reader than a feature list, and it is what makes the page worth ranking.
  • FAQ, including "Is this the official ONLYOFFICE?" answered first, since that is a real query.

English and Chinese only, deliberately. The shell derives hreflang, the OG alternates and the language switch from page.sources, so a two-language page stays correct in two languages — no hreflang pointing at a 404.

Wiring

LANDING_SLUGS + the two markdown sources, plus everything a new landing page has to touch or landing-pages.test.ts goes red: sitemap, llms.txt (and the regenerated llms-full.txt), both homepage footers, both generated-page footers, and the two ignore lists for the generated HTML.

The second commit is bin/sitemap-lastmod.mjs doing its job: every generated page's footer gained a trademark line today, so every route's lastmod moves.

Unit suite: 2697 passing.

chaxus and others added 3 commits August 23, 2026 23:15
… AGPL Section 7 requires

The vendor's AGPL-3.0 headers carry two additional terms under Section 7:
7(b) requires a derivative work to retain the original product logo, and
7(e) declines to grant any rights under trademark law. This build honoured
neither. guards/chrome.ts hid `#header-logo` and the DocEditor config set
`customization.about: false`, which between them left no product mark
anywhere in the interface, and no trademark notice existed in the repository
or on the site.

Both removals were deliberate UI tidy-ups, so a comment would not have held:

- guards/chrome.ts keeps hiding the current-user and co-users widgets (a
  collaboration session a serverless build cannot have) and nothing else.
- `customization.about` goes back to its default. The vendor's own
  `canBrandingExt` check exists to force it back on; this offline build just
  does not enforce it.
- New guard 12 (guards/about-source.ts) appends this build's own two facts to
  the About pane -- that it is a modified version and not an official
  ONLYOFFICE product, and where its source is (Section 13). The pane is
  populated lazily, so it watches for the content rather than writing once.
- NOTICE quotes the terms verbatim, pins the vendor version, and lists every
  change made to the vendor tree (Section 5(a)).
- The eight readmes point at it; all seven site languages carry a trademark
  line in both footers.

Pinned by test/unit/branding-notice.test.ts and test/e2e/vendor-branding.spec.ts.
Reverse-verified twice: restoring the two suppressions turns the three editor
cases red, and dropping the footer notice turns the three page cases red.

Also in passing: /zh/ used to 404 (the real prefix is the BCP-47 /zh-CN/), and
the embed docs never said prominently that `document:open-url` and `?src=`
need CORS on the file's own host.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…NLYOFFICE

Every existing title and description is already at its display budget (English
titles median 57 characters against a ~60 limit, Chinese descriptions median 91
against ~78), so working the word "ONLYOFFICE" into all 154 of them would push
an existing keyword out or land in the truncated tail. And none of the queries
those pages target contain it.

A page of its own does not have that problem. It answers what someone
searching "onlyoffice online free" or "onlyoffice 在线版" actually wants to
know -- that the editors here are the real ones, that there is no Document
Server to install, and, in its own section, everything ONLYOFFICE Docs does
that this build deliberately does not (no collaboration, no connectors, your
own memory does the work).

English and Chinese only, on purpose: the shell derives hreflang, the Open
Graph alternates and the language switch from the sources a page actually has,
so a page in two languages stays correct in two languages.

Both state plainly that this is not an official ONLYOFFICE product, which the
footer trademark line already says on every page.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Every generated page's footer gained a trademark line today, so every
generated route's lastmod moves with it. Two routes are new.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@chaxus
chaxus enabled auto-merge (rebase) August 23, 2026 15:41
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying document with  Cloudflare Pages  Cloudflare Pages

Latest commit: eb7fba8
Status: ✅  Deploy successful!
Preview URL: https://60cc9d54.document-7hm.pages.dev
Branch Preview URL: https://onlyoffice-landing-page.document-7hm.pages.dev

View logs

@chaxus
chaxus merged commit 27b3211 into main Aug 23, 2026
18 checks passed
@chaxus
chaxus deleted the onlyoffice-landing-page branch August 23, 2026 15:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant